Credit Andrew - fix vorbis audio which was scratchy and ensure aging plugin does...
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / mtimebar.C
index 8889cc87b47391b048175cf9c329f7377c6e453d..41ce4132a7ac3b200af1c5990aaaf962909129ad 100644 (file)
@@ -53,6 +53,8 @@ MTimeBar::MTimeBar(MWindow *mwindow,
 {
        this->gui = gui;
        this->pane = 0;
+// *** CONTEXT_HELP ***
+       context_help_set_keyword("Time Format section");
 }
 
 MTimeBar::MTimeBar(MWindow *mwindow,
@@ -65,6 +67,8 @@ MTimeBar::MTimeBar(MWindow *mwindow,
 {
        this->gui = mwindow->gui;
        this->pane = pane;
+// *** CONTEXT_HELP ***
+       context_help_set_keyword("Time Format section");
 }
 
 void MTimeBar::create_objects()
@@ -101,10 +105,11 @@ void MTimeBar::stop_transport()
        gui->stop_transport("MTimeBar::stop_transport");
 }
 
-#define TEXT_MARGIN 4
-#define TICK_SPACING 5
-#define LINE_MARGIN 3
-#define TICK_MARGIN 16
+#define TEXT_MARGIN xS(4)
+#define TICK_SPACING xS(5)
+#define LINE_MARGIN yS(3)
+#define TICK_MARGIN yS(16)
+
 void MTimeBar::draw_time()
 {
 
@@ -307,6 +312,7 @@ void MTimeBar::draw_time()
                }
 
                case TIME_FRAMES:
+               case TIME_TIMECODE:
                case TIME_HMSF:
 // One frame per text mark
                        if(frame_seconds >= min_time)
@@ -362,11 +368,14 @@ void MTimeBar::draw_time()
 
 // Set tick interval
        tick_interval = text_interval;
+       double timecode_offset = 0;
 
        switch(mwindow->edl->session->time_format)
        {
-               case TIME_HMSF:
+               case TIME_TIMECODE:
+                       timecode_offset = mwindow->get_timecode_offset(); // fall thru
                case TIME_FEET_FRAMES:
+               case TIME_HMSF:
                case TIME_FRAMES:
                        if(frame_seconds / time_per_pixel > TICK_SPACING)
                                tick_interval = frame_seconds;
@@ -394,12 +403,13 @@ void MTimeBar::draw_time()
                        mwindow->edl->session->time_format,
                        sample_rate,
                        mwindow->edl->session->frame_rate,
-                       mwindow->edl->session->frames_per_foot);
+                       mwindow->edl->session->frames_per_foot,
+                       timecode_offset);
                set_color(get_resources()->default_text_color);
                set_font(MEDIUMFONT);
 
                draw_text(pixel + TEXT_MARGIN, get_text_ascent(MEDIUMFONT), string);
-               draw_line(pixel, LINE_MARGIN, pixel, get_h() - 2);
+               draw_line(pixel, LINE_MARGIN, pixel, get_h() - yS(2));
 
                double position2 = start_position + text_interval * (iteration + 1);
                int pixel2 = (int64_t)(position2 / time_per_pixel) -
@@ -413,7 +423,7 @@ void MTimeBar::draw_time()
                                mwindow->edl->local_session->view_start[pane->number];
                        if(labs(pixel - pixel1) > 1 &&
                                labs(pixel - pixel2) > 1)
-                               draw_line(pixel, TICK_MARGIN, pixel, get_h() - 2);
+                               draw_line(pixel, TICK_MARGIN, pixel, get_h() - yS(2));
                }
                iteration++;
        }
@@ -657,10 +667,6 @@ void MTimeBar::activate_timeline()
 }
 
 
-
-
-
-
 TimeBarPopupItem::TimeBarPopupItem(MWindow *mwindow,
        TimeBarPopup *menu,
        const char *text,
@@ -683,11 +689,7 @@ int TimeBarPopupItem::handle_event()
 
 
 TimeBarPopup::TimeBarPopup(MWindow *mwindow)
- : BC_PopupMenu(0,
-               0,
-               0,
-               "",
-               0)
+ : BC_PopupMenu(0, 0, 0, "", 0)
 {
        this->mwindow = mwindow;
 }
@@ -700,47 +702,28 @@ TimeBarPopup::~TimeBarPopup()
 void TimeBarPopup::create_objects()
 {
        add_item(items[0] = new TimeBarPopupItem(mwindow,
-               this,
-               TIME_HMS_TEXT,
-               TIME_HMS));
+               this, TIME_HMS_TEXT, TIME_HMS));
        add_item(items[1] = new TimeBarPopupItem(mwindow,
-               this,
-               TIME_HMSF_TEXT,
-               TIME_HMSF));
+               this, TIME_HMSF_TEXT, TIME_HMSF));
        add_item(items[2] = new TimeBarPopupItem(mwindow,
-               this,
-               TIME_FRAMES_TEXT,
-               TIME_FRAMES));
+               this, TIME_TIMECODE_TEXT, TIME_TIMECODE));
        add_item(items[3] = new TimeBarPopupItem(mwindow,
-               this,
-               TIME_SAMPLES_TEXT,
-               TIME_SAMPLES));
+               this, TIME_FRAMES_TEXT, TIME_FRAMES));
        add_item(items[4] = new TimeBarPopupItem(mwindow,
-               this,
-               TIME_SAMPLES_HEX_TEXT,
-               TIME_SAMPLES_HEX));
+               this, TIME_SAMPLES_TEXT, TIME_SAMPLES));
        add_item(items[5] = new TimeBarPopupItem(mwindow,
-               this,
-               TIME_SECONDS_TEXT,
-               TIME_SECONDS));
+               this, TIME_SAMPLES_HEX_TEXT, TIME_SAMPLES_HEX));
        add_item(items[6] = new TimeBarPopupItem(mwindow,
-               this,
-               TIME_FEET_FRAMES_TEXT,
-               TIME_FEET_FRAMES));
+               this, TIME_SECONDS_TEXT, TIME_SECONDS));
+       add_item(items[7] = new TimeBarPopupItem(mwindow,
+               this, TIME_FEET_FRAMES_TEXT, TIME_FEET_FRAMES));
 }
 
 void TimeBarPopup::update()
 {
-       for(int i = 0; i < TOTAL_TIMEFORMATS; i++)
-       {
-               if(items[i]->value == mwindow->edl->session->time_format)
-               {
-                       items[i]->set_checked(1);
-               }
-               else
-               {
-                       items[i]->set_checked(0);
-               }
+       int time_format = mwindow->edl->session->time_format;
+       for( int i=0; i<TOTAL_TIMEFORMATS; ++i ) {
+               items[i]->set_checked(items[i]->value == time_format);
        }
 }