X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fedit.C;h=9eb0d9d8f885aedabd0c9aac3d745a6b9a97e64d;hb=418e8644335db47143bc421f11be2c2e68901d45;hp=3658922df6d816a62cc1486e396072d7900649fd;hpb=101d92b4c50a831fb00edd65df57de41b408c7b6;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/cinelerra/edit.C b/cinelerra-5.1/cinelerra/edit.C index 3658922d..9eb0d9d8 100644 --- a/cinelerra-5.1/cinelerra/edit.C +++ b/cinelerra-5.1/cinelerra/edit.C @@ -33,6 +33,7 @@ #include "plugin.h" #include "mainsession.h" #include "nestededls.h" +#include "strack.h" #include "trackcanvas.h" #include "tracks.h" #include "transition.h" @@ -83,6 +84,8 @@ void Edit::reset() user_title[0] = 0; nested_edl = 0; is_plugin = 0; + hard_left = 0; + hard_right = 0; } Indexable* Edit::get_source() @@ -136,6 +139,8 @@ int Edit::copy(int64_t start, file->tag.set_property("STARTSOURCE", startsource_in_selection); file->tag.set_property("CHANNEL", (int64_t)channel); file->tag.set_property("LENGTH", length_in_selection); + file->tag.set_property("HARD_LEFT", hard_left); + file->tag.set_property("HARD_RIGHT", hard_right); if(user_title[0]) file->tag.set_property("USER_TITLE", user_title); //printf("Edit::copy 5\n"); @@ -229,7 +234,9 @@ void Edit::detach_transition() int Edit::silence() { - return asset || nested_edl ? 0 : 1; + return (track->data_type != TRACK_SUBTITLE ? + asset || nested_edl : + *((SEdit *)this)->get_text()) ? 0 : 1; } @@ -240,6 +247,8 @@ void Edit::copy_from(Edit *edit) this->startsource = edit->startsource; this->startproject = edit->startproject; this->length = edit->length; + this->hard_left = edit->hard_left; + this->hard_right = edit->hard_right; strcpy (this->user_title, edit->user_title); if(edit->transition) @@ -315,6 +324,8 @@ int Edit::identical(Edit &edit) this->startsource == edit.startsource && this->startproject == edit.startproject && this->length == edit.length && + this->hard_left == edit.hard_left && + this->hard_right == edit.hard_right && this->transition == edit.transition && this->channel == edit.channel); return result; @@ -372,8 +383,8 @@ int Edit::dump(FILE *fp) fprintf(fp," TRANSITION %p\n", transition); transition->dump(fp); } - fprintf(fp," startsource %jd startproject %jd length %jd\n", - startsource, startproject, length); fflush(fp); + fprintf(fp," startsource %jd startproject %jd hard lt/rt %d/%d length %jd\n", + startsource, startproject, hard_left, hard_right, length); fflush(fp); return 0; } @@ -381,6 +392,8 @@ int Edit::load_properties(FileXML *file, int64_t &startproject) { startsource = file->tag.get_property("STARTSOURCE", (int64_t)0); length = file->tag.get_property("LENGTH", (int64_t)0); + hard_left = file->tag.get_property("HARD_LEFT", (int64_t)0); + hard_right = file->tag.get_property("HARD_RIGHT", (int64_t)0); user_title[0] = 0; file->tag.get_property("USER_TITLE", user_title); this->startproject = startproject; @@ -713,13 +726,17 @@ int Edit::shift_end_out(int edit_mode, next->startproject += cut_length; next->startsource += cut_length; next->length -= cut_length; -//printf("Edit::shift_end_out 2 %d\n", cut_length); +//printf("Edit::shift_end_out %d cut_length=%d\n", __LINE__, cut_length); } else { +//printf("Edit::shift_end_out %d cut_length=%d next->length=%d\n", __LINE__, cut_length, next->length); cut_length = next->length; + next->startproject += next->length; + next->startsource += next->length; next->length = 0; length += cut_length; +//track->dump(); } } else