00001 #ifndef TRACKING_H 00002 #define TRACKING_H 00003 00004 #include <sys/time.h> 00005 #include <sys/types.h> 00006 #include <unistd.h> 00007 00008 #include "condition.inc" 00009 #include "mwindow.inc" 00010 #include "mwindowgui.inc" 00011 #include "playbackengine.inc" 00012 #include "thread.h" 00013 #include "bctimer.h" 00014 00015 class Tracking : public Thread 00016 { 00017 public: 00018 Tracking(MWindow *mwindow); 00019 virtual ~Tracking(); 00020 00021 void create_objects(); 00022 virtual int start_playback(double new_position); 00023 virtual int stop_playback(); 00024 00025 // Called by the tracker to get the current position 00026 virtual PlaybackEngine* get_playback_engine(); 00027 virtual double get_tracking_position(); 00028 // Update position displayed 00029 virtual void update_tracker(double position); 00030 // Update meters 00031 virtual void update_meters(int64_t position); 00032 virtual void stop_meters(); 00033 int get_pixel(double position); 00034 00035 // Erase cursor if it's visible. Called by start_playback 00036 // Draw new cursor at last_position if invisible 00037 virtual void draw(); 00038 00039 00040 00041 void run(); 00042 00043 // Values to return from playback_engine to update_meter . 00044 // Use ArrayList to simplify module counting 00045 ArrayList<double> module_levels; 00046 int state; 00047 00048 00049 00050 00051 00052 00053 00054 00055 00056 00057 void show_playback_cursor(int64_t position); 00058 int view_follows_playback; 00059 // Delay until startup 00060 Condition *startup_lock; 00061 MWindow *mwindow; 00062 MWindowGUI *gui; 00063 double last_position; 00064 int follow_loop; 00065 int64_t current_offset; 00066 int reverse; 00067 int double_speed; 00068 Timer timer; 00069 // Pixel of last drawn cursor 00070 int pixel; 00071 // Cursor is visible 00072 int visible; 00073 }; 00074 00075 #endif
1.4.4