00001 #ifndef TRANSPORTQUE_H 00002 #define TRANSPORTQUE_H 00003 00004 #include "canvas.inc" 00005 #include "condition.inc" 00006 #include "edl.inc" 00007 #include "preferences.inc" 00008 #include "transportque.inc" 00009 00010 class TransportCommand 00011 { 00012 public: 00013 TransportCommand(); 00014 ~TransportCommand(); 00015 00016 void reset(); 00017 // Get the direction based on the command 00018 int get_direction(); 00019 float get_speed(); 00020 void copy_from(TransportCommand *command); 00021 TransportCommand& operator=(TransportCommand &command); 00022 // Get the range to play back from the EDL 00023 void set_playback_range(EDL *edl = 0, int use_inout = 0); 00024 00025 // Adjust playback range with in/out points for rendering 00026 void adjust_playback_range(); 00027 00028 int single_frame(); 00029 EDL* get_edl(); 00030 void delete_edl(); 00031 void new_edl(); 00032 00033 int command; 00034 int change_type; 00035 // lowest numbered second in playback range 00036 double start_position; 00037 // highest numbered second in playback range 00038 double end_position; 00039 int infinite; 00040 // Position used when starting playback 00041 double playbackstart; 00042 // Send output to device 00043 int realtime; 00044 // Use persistant starting point 00045 int resume; 00046 00047 private: 00048 // Copied to render engines 00049 EDL *edl; 00050 }; 00051 00052 class TransportQue 00053 { 00054 public: 00055 TransportQue(); 00056 ~TransportQue(); 00057 00058 int send_command(int command, 00059 // The change type is ORed to accumulate changes. 00060 int change_type, 00061 EDL *new_edl, 00062 int realtime, 00063 // Persistent starting point 00064 int resume = 0, 00065 int use_inout = 0); 00066 void update_change_type(int change_type); 00067 00068 TransportCommand command; 00069 Condition *input_lock, *output_lock; 00070 }; 00071 00072 #endif
1.4.4