00001 #ifndef PLAYTRANSPORT_H
00002 #define PLAYTRANSPORT_H
00003
00004 #include "edl.inc"
00005 #include "guicast.h"
00006 #include "mwindow.inc"
00007 #include "playbackengine.inc"
00008 #include "playtransport.inc"
00009
00010 #define PLAY_MODE 0
00011 #define PAUSE_MODE 1
00012 #define PAUSEDOWN_MODE 2
00013
00014 class PlayTransport
00015 {
00016 public:
00017 PlayTransport(MWindow *mwindow, BC_WindowBase *subwindow, int x, int y);
00018 ~PlayTransport();
00019
00020 int create_objects();
00021 void reposition_buttons(int x, int y);
00022
00023 virtual void goto_start();
00024 virtual void goto_end();
00025
00026 void set_slider(BC_Slider *slider);
00027
00028 void set_engine(PlaybackEngine *engine);
00029 static int get_transport_width(MWindow *mwindow);
00030 int flip_vertical(int vertical, int &x, int &y);
00031 int keypress_event();
00032 void handle_transport(int command, int wait_tracking = 0, int use_inout = 0);
00033
00034 int pause_transport();
00035 int reset_transport();
00036 int get_w();
00037
00038 virtual EDL* get_edl();
00039
00040
00041 int reverse;
00042 float speed;
00043
00044 PTransportButton *active_button;
00045 PlayButton *forward_play;
00046 FramePlayButton *frame_forward_play;
00047 ReverseButton *reverse_play;
00048 FrameReverseButton *frame_reverse_play;
00049 FastReverseButton *fast_reverse;
00050 FastPlayButton *fast_play;
00051 RewindButton *rewind_button;
00052 StopButton *stop_button;
00053 EndButton *end_button;
00054 MWindow *mwindow;
00055 BC_WindowBase *subwindow;
00056 BC_Slider *slider;
00057 PlaybackEngine *engine;
00058 int status;
00059 int x, y;
00060 };
00061
00062
00063
00064 class PTransportButton : public BC_Button
00065 {
00066 public:
00067 PTransportButton(MWindow *mwindow, PlayTransport *transport, int x, int y, VFrame **data);
00068 virtual ~PTransportButton();
00069 virtual int set_mode(int mode);
00070
00071 int mode;
00072 MWindow *mwindow;
00073 PlayTransport *transport;
00074 };
00075
00076 class RewindButton : public PTransportButton
00077 {
00078 public:
00079 RewindButton(MWindow *mwindow, PlayTransport *transport, int x, int y);
00080 int handle_event();
00081 };
00082
00083 class FastReverseButton : public PTransportButton
00084 {
00085 public:
00086 FastReverseButton(MWindow *mwindow, PlayTransport *transport, int x, int y);
00087 int handle_event();
00088 };
00089
00090 class ReverseButton : public PTransportButton
00091 {
00092 public:
00093 ReverseButton(MWindow *mwindow, PlayTransport *transport, int x, int y);
00094 int handle_event();
00095 };
00096
00097 class FrameReverseButton : public PTransportButton
00098 {
00099 public:
00100 FrameReverseButton(MWindow *mwindow, PlayTransport *transport, int x, int y);
00101 int handle_event();
00102 };
00103
00104 class PlayButton : public PTransportButton
00105 {
00106 public:
00107 PlayButton(MWindow *mwindow, PlayTransport *transport, int x, int y);
00108 int handle_event();
00109 };
00110
00111 class FramePlayButton : public PTransportButton
00112 {
00113 public:
00114 FramePlayButton(MWindow *mwindow, PlayTransport *transport, int x, int y);
00115 int handle_event();
00116 };
00117
00118 class FastPlayButton : public PTransportButton
00119 {
00120 public:
00121 FastPlayButton(MWindow *mwindow, PlayTransport *transport, int x, int y);
00122 int handle_event();
00123 };
00124
00125
00126
00127 class EndButton : public PTransportButton
00128 {
00129 public:
00130 EndButton(MWindow *mwindow, PlayTransport *transport, int x, int y);
00131 int handle_event();
00132 };
00133
00134 class StopButton : public PTransportButton
00135 {
00136 public:
00137 StopButton(MWindow *mwindow, PlayTransport *transport, int x, int y);
00138 int handle_event();
00139 };
00140
00141 #endif