Move _inter_position out of FilmViewer.
authorCarl Hetherington <cth@carlh.net>
Wed, 20 Nov 2019 22:36:56 +0000 (23:36 +0100)
committerCarl Hetherington <cth@carlh.net>
Wed, 8 Jan 2020 20:56:47 +0000 (21:56 +0100)
src/wx/film_viewer.h
src/wx/gl_video_view.cc
src/wx/gl_video_view.h
src/wx/simple_video_view.cc
src/wx/simple_video_view.h

index 93a31198135f0854e87f80056095f411b844d852..5c2f7cb11b174860be1e6ec767aa1bd45928011e 100644 (file)
@@ -126,9 +126,6 @@ public:
        dcp::Size inter_size () const {
                return _inter_size;
        }
        dcp::Size inter_size () const {
                return _inter_size;
        }
-       Position<int> inter_position () const {
-               return _inter_position;
-       }
        bool outline_content () const {
                return _outline_content;
        }
        bool outline_content () const {
                return _outline_content;
        }
@@ -180,7 +177,6 @@ private:
        bool _coalesce_player_changes;
        std::list<int> _pending_player_changes;
 
        bool _coalesce_player_changes;
        std::list<int> _pending_player_changes;
 
-       Position<int> _inter_position;
        dcp::Size _inter_size;
 
        /** Size of our output (including padding if we have any) */
        dcp::Size _inter_size;
 
        /** Size of our output (including padding if we have any) */
index 55c6cc9699f45f08f3a069efff293b7020c68d69..93a53b4111a1472113c7501041efc69942cee950 100644 (file)
@@ -140,7 +140,7 @@ GLVideoView::update ()
 }
 
 void
 }
 
 void
-GLVideoView::draw ()
+GLVideoView::draw (Position<int> inter_position)
 {
        glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
        check_gl_error ("glClear");
 {
        glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
        check_gl_error ("glClear");
@@ -232,7 +232,6 @@ GLVideoView::draw ()
        if (_viewer->outline_content()) {
                glColor3ub (255, 0, 0);
                glBegin (GL_LINE_LOOP);
        if (_viewer->outline_content()) {
                glColor3ub (255, 0, 0);
                glBegin (GL_LINE_LOOP);
-               Position<int> inter_position = _viewer->inter_position ();
                dcp::Size inter_size = _viewer->inter_size ();
                glVertex2f (inter_position.x, inter_position.y + (canvas_size.GetHeight() - out_size.height) / 2);
                glVertex2f (inter_position.x + inter_size.width, inter_position.y + (canvas_size.GetHeight() - out_size.height) / 2);
                dcp::Size inter_size = _viewer->inter_size ();
                glVertex2f (inter_position.x, inter_position.y + (canvas_size.GetHeight() - out_size.height) / 2);
                glVertex2f (inter_position.x + inter_size.width, inter_position.y + (canvas_size.GetHeight() - out_size.height) / 2);
@@ -305,6 +304,7 @@ try
                _one_shot = false;
                lm.unlock ();
 
                _one_shot = false;
                lm.unlock ();
 
+               Position<int> inter_position;
                if (length() != dcpomatic::DCPTime()) {
                        dcpomatic::DCPTime const next = position() + one_video_frame();
 
                if (length() != dcpomatic::DCPTime()) {
                        dcpomatic::DCPTime const next = position() + one_video_frame();
 
@@ -316,8 +316,9 @@ try
 
                        get_next_frame (false);
                        set_image (player_video().first->image(bind(&PlayerVideo::force, _1, AV_PIX_FMT_RGB24), false, true));
 
                        get_next_frame (false);
                        set_image (player_video().first->image(bind(&PlayerVideo::force, _1, AV_PIX_FMT_RGB24), false, true));
+                       inter_position = player_video().first->inter_position();
                }
                }
-               draw ();
+               draw (inter_position);
 
                while (time_until_next_frame() < 5) {
                        get_next_frame (true);
 
                while (time_until_next_frame() < 5) {
                        get_next_frame (true);
index 162438a5b49565af1391c462d0349ee53f409ab2..01434d56915b0e8a03688c59a6075dbbb0c05f52 100644 (file)
@@ -20,6 +20,7 @@
 
 #include "video_view.h"
 #include "lib/signaller.h"
 
 #include "video_view.h"
 #include "lib/signaller.h"
+#include "lib/position.h"
 #include <wx/wx.h>
 #include <wx/glcanvas.h>
 #include <dcp/util.h>
 #include <wx/wx.h>
 #include <wx/glcanvas.h>
 #include <dcp/util.h>
@@ -50,7 +51,7 @@ public:
        }
 
 private:
        }
 
 private:
-       void draw ();
+       void draw (Position<int> inter_position);
        void thread ();
        void request_one_shot ();
        void create ();
        void thread ();
        void request_one_shot ();
        void create ();
index 33e2834c5bba8820855d3eeba336455c87dbae4c..6a8a863d71c22a961bb7a62708d48b74782d1fb8 100644 (file)
@@ -125,12 +125,11 @@ SimpleVideoView::paint ()
        }
 
        if (_viewer->outline_content()) {
        }
 
        if (_viewer->outline_content()) {
-               Position<int> inter_position = _viewer->inter_position ();
                dcp::Size inter_size = _viewer->inter_size ();
                wxPen p (wxColour (255, 0, 0), 2);
                dc.SetPen (p);
                dc.SetBrush (*wxTRANSPARENT_BRUSH);
                dcp::Size inter_size = _viewer->inter_size ();
                wxPen p (wxColour (255, 0, 0), 2);
                dc.SetPen (p);
                dc.SetBrush (*wxTRANSPARENT_BRUSH);
-               dc.DrawRectangle (inter_position.x, inter_position.y + (panel_size.GetHeight() - out_size.height) / 2, inter_size.width, inter_size.height);
+               dc.DrawRectangle (_inter_position.x, _inter_position.y + (panel_size.GetHeight() - out_size.height) / 2, inter_size.width, inter_size.height);
        }
         _viewer->state_timer().unset();
 }
        }
         _viewer->state_timer().unset();
 }
@@ -249,7 +248,7 @@ SimpleVideoView::display_player_video ()
        _viewer->ImageChanged (player_video().first);
        _viewer->_state_timer.unset ();
 
        _viewer->ImageChanged (player_video().first);
        _viewer->_state_timer.unset ();
 
-       _viewer->_inter_position = player_video().first->inter_position ();
+       _inter_position = player_video().first->inter_position ();
        _viewer->_inter_size = player_video().first->inter_size ();
 
        _viewer->refresh_view ();
        _viewer->_inter_size = player_video().first->inter_size ();
 
        _viewer->refresh_view ();
index e8bb932e44ad3933c769c770ecaea3413b60436f..f318e778b36db9517812aa90a0b4cdb5d0d6c469 100644 (file)
@@ -19,6 +19,7 @@
 */
 
 #include "video_view.h"
 */
 
 #include "video_view.h"
+#include "lib/position.h"
 #include <wx/wx.h>
 
 class FilmViewer;
 #include <wx/wx.h>
 
 class FilmViewer;
@@ -48,4 +49,5 @@ private:
        wxPanel* _panel;
        boost::shared_ptr<const Image> _image;
        wxTimer _timer;
        wxPanel* _panel;
        boost::shared_ptr<const Image> _image;
        wxTimer _timer;
+       Position<int> _inter_position;
 };
 };