#include "lib/image_content.h"
#include "lib/timer.h"
#include "lib/audio_content.h"
-#include "lib/caption_content.h"
+#include "lib/text_content.h"
#include "lib/video_content.h"
#include "lib/atmos_mxf_content.h"
#include <wx/graphics.h>
_main_canvas->Bind (wxEVT_SCROLLWIN_PAGEDOWN, boost::bind (&Timeline::scrolled, this, _1));
_main_canvas->Bind (wxEVT_SCROLLWIN_THUMBTRACK, boost::bind (&Timeline::scrolled, this, _1));
- film_changed (Film::CONTENT);
+ film_change (CHANGE_TYPE_DONE, Film::CONTENT);
SetMinSize (wxSize (640, 4 * pixels_per_track() + 96));
- _film_changed_connection = film->Changed.connect (bind (&Timeline::film_changed, this, _1));
- _film_content_changed_connection = film->ContentChanged.connect (bind (&Timeline::film_content_changed, this, _2, _3));
+ _film_changed_connection = film->Change.connect (bind (&Timeline::film_change, this, _1, _2));
+ _film_content_change_connection = film->ContentChange.connect (bind (&Timeline::film_content_change, this, _1, _3, _4));
setup_scrollbars ();
_labels_canvas->ShowScrollbars (wxSHOW_SB_NEVER, wxSHOW_SB_NEVER);
}
void
-Timeline::film_changed (Film::Property p)
+Timeline::film_change (ChangeType type, Film::Property p)
{
+ if (type != CHANGE_TYPE_DONE) {
+ return;
+ }
+
if (p == Film::CONTENT || p == Film::REEL_TYPE || p == Film::REEL_LENGTH) {
ensure_ui_thread ();
recreate_views ();
_views.push_back (shared_ptr<TimelineView> (new TimelineAudioContentView (*this, i)));
}
- if (i->caption) {
- _views.push_back (shared_ptr<TimelineView> (new TimelineTextContentView (*this, i)));
+ BOOST_FOREACH (shared_ptr<TextContent> j, i->text) {
+ _views.push_back (shared_ptr<TimelineView> (new TimelineTextContentView (*this, i, j)));
}
if (dynamic_pointer_cast<AtmosMXFContent> (i)) {
}
void
-Timeline::film_content_changed (int property, bool frequent)
+Timeline::film_content_change (ChangeType type, int property, bool frequent)
{
+ if (type != CHANGE_TYPE_DONE) {
+ return;
+ }
+
ensure_ui_thread ();
if (property == AudioContentProperty::STREAMS) {
recreate_views ();
+ } else if (property == ContentProperty::POSITION || property == ContentProperty::LENGTH) {
+ _reels_view->force_redraw ();
} else if (!frequent) {
setup_scrollbars ();
Refresh ();
/* Tracks are:
Video (mono or left-eye)
Video (right-eye)
- Subtitle 1
- Subtitle 2
- Subtitle N
+ Text 1
+ Text 2
+ Text N
Atmos
Audio 1
Audio 2
_tracks = max (_tracks, 1);
- /* Subtitle */
+ /* Texts */
- int const subtitle_tracks = place<TimelineTextContentView> (_views, _tracks);
+ int const text_tracks = place<TimelineTextContentView> (_views, _tracks);
/* Atmos */
_labels_view->set_3d (have_3d);
_labels_view->set_audio_tracks (audio_tracks);
- _labels_view->set_subtitle_tracks (subtitle_tracks);
+ _labels_view->set_text_tracks (text_tracks);
_labels_view->set_atmos (have_atmos);
_time_axis_view->set_y (tracks());
void
Timeline::force_redraw (dcpomatic::Rect<int> const & r)
{
- RefreshRect (wxRect (r.x, r.y, r.width, r.height), false);
+ _main_canvas->RefreshRect (wxRect (r.x, r.y, r.width, r.height), false);
}
shared_ptr<const Film>