re/open mixer window fixes
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / track.C
index 91bf401afb22a675bd22c2092aec9927a01f2a1e..af7b6cdb5b37788ab0ad335bda6d391ddbe0f49b 100644 (file)
@@ -57,6 +57,7 @@ Track::Track(EDL *edl, Tracks *tracks) : ListItem<Track>()
        this->edl = edl;
        this->tracks = tracks;
        y_pixel = 0;
+       data_h = 64;
        expand_view = 0;
        draw = 1;
        gang = 1;
@@ -92,6 +93,7 @@ int Track::copy_settings(Track *track)
        this->nudge = track->nudge;
        this->mixer_id = track->mixer_id;
        this->play = track->play;
+       this->data_h = track->data_h;
        this->track_w = track->track_w;
        this->track_h = track->track_h;
        this->masks = track->masks;
@@ -207,7 +209,7 @@ int Track::vertical_span(Theme *theme)
        if( show_titles() )
                result += theme->get_image("title_bg_data")->get_h();
        if( show_assets() )
-               result += edl->local_session->zoom_track;
+               result += data_h;
        if( expand_view )
                result += plugin_set.total * theme->get_image("plugin_bg_data")->get_h();
        result = MAX(result, theme->title_h);
@@ -321,6 +323,7 @@ int Track::load(FileXML *file, int track_offset, uint32_t load_flags)
        nudge = file->tag.get_property("NUDGE", nudge);
        mixer_id = file->tag.get_property("MIXER_ID", mixer_id);
        expand_view = file->tag.get_property("EXPAND", expand_view);
+       data_h = file->tag.get_property("DATA_H", data_h);
        track_w = file->tag.get_property("TRACK_W", track_w);
        track_h = file->tag.get_property("TRACK_H", track_h);
        masks = file->tag.get_property("MASKS", masks);
@@ -856,12 +859,6 @@ int Track::dump(FILE *fp)
        return 0;
 }
 
-
-Track::Track() : ListItem<Track>()
-{
-       y_pixel = 0;
-}
-
 // ======================================== accounting
 
 int Track::number_of()
@@ -871,16 +868,6 @@ int Track::number_of()
 
 
 
-
-
-
-
-
-
-
-
-
-
 // ================================================= editing
 
 int Track::select_auto(AutoConf *auto_conf, int cursor_x, int cursor_y)
@@ -1025,6 +1012,7 @@ int Track::copy(int copy_flags, double start, double end,
        file->tag.set_property("GANG", gang);
        file->tag.set_property("DRAW", draw);
        file->tag.set_property("EXPAND", expand_view);
+       file->tag.set_property("DATA_H", data_h);
        file->tag.set_property("TRACK_W", track_w);
        file->tag.set_property("TRACK_H", track_h);
        file->tag.set_property("MASKS", masks);
@@ -1795,26 +1783,21 @@ int64_t Track::frame_align(int64_t position, int round)
        return position;
 }
 
-int Track::plugin_exists(Plugin *plugin)
+Plugin *Track::plugin_exists(int plugin_id)
 {
-       for(int number = 0; number < plugin_set.size(); number++)
-       {
-               PluginSet *ptr = plugin_set.get(number);
-               for(Plugin *current_plugin = (Plugin*)ptr->first;
-                       current_plugin;
-                       current_plugin = (Plugin*)current_plugin->next)
-               {
-                       if(current_plugin == plugin) return 1;
+       for( int i=0; i<plugin_set.size(); ++i ) {
+               PluginSet *set = plugin_set.get(i);
+               Plugin *plugin = (Plugin*)set->first;
+               for( ; plugin; plugin=(Plugin*)plugin->next ) {
+                       if( plugin->orig_id == plugin_id )
+                               return plugin;
                }
        }
-
-       for(Edit *current = edits->first; current; current = NEXT)
-       {
-               if(current->transition &&
-                       (Plugin*)current->transition == plugin) return 1;
+       for( Edit *current=edits->first; current; current=NEXT ) {
+               Plugin *plugin = (Plugin *)current->transition;
+               if( plugin && plugin->orig_id == plugin_id )
+                       return plugin;
        }
-
-
        return 0;
 }
 
@@ -1868,3 +1851,11 @@ void Track::set_camera(float x, float y, float z)
        set_fauto_xyz(AUTOMATION_CAMERA_X, x, y, z);
 }
 
+int Track::index_in(Mixer *mixer)
+{
+       if( !mixer || mixer_id < 0 ) return -1;
+       int k = mixer->mixer_ids.size();
+       while( --k >= 0 && mixer_id != mixer->mixer_ids[k] );
+       return k;
+}
+