| @@ -32,59 +32,72 @@ | |||
| * dimensions of real FLTK widgets are limited to 16-bits, which is | |||
| * far too little for our purposes */ | |||
| class Region | |||
| /* Base class for virtual widget on a track */ | |||
| class TrackWidget | |||
| { | |||
| Track *_track; /* track this region belongs to */ | |||
| protected: | |||
| Clip *_clip; /* clip this region represents */ | |||
| Track *_track; /* track this region belongs to */ | |||
| nframes_t _offset; /* where on the timeline */ | |||
| nframes_t _start; /* first sample from clip */ | |||
| nframes_t _end; /* last sample from clip */ | |||
| float _scale; /* amplitude adjustment */ | |||
| bool _selected; | |||
| Fl_Color _color; /* color of waveform */ | |||
| Fl_Color _box_color; /* color of background (box) */ | |||
| static Fl_Color _selection_color; | |||
| static Fl_Color selection_color ( void ) { return _selection_color; } | |||
| static void selection_color ( Fl_Color v ) { _selection_color = v; } | |||
| enum trim_e { NO, LEFT, RIGHT }; | |||
| void trim ( enum trim_e t, int X ); | |||
| void init ( void ); | |||
| public: | |||
| Region ( const Region & rhs ); | |||
| Region ( Clip *c ); | |||
| Fl_Group * parent ( void ) const { return _track; } | |||
| int y ( void ) const { return _track->y(); } | |||
| int h ( void ) const { return _track->h(); } | |||
| int x ( void ) const { return _track->x() + timeline.ts_to_x( _offset - timeline.xoffset ); } | |||
| int w ( void ) const { return timeline.ts_to_x( _end - _start ); } | |||
| Fl_Group * parent ( void ) const { return _track; } | |||
| Fl_Color color ( void ) { return _color; } | |||
| Fl_Color box_color ( void ) { return _box_color; } | |||
| int handle ( int m ); | |||
| void draw ( int X, int Y, int W, int H ); | |||
| void resize ( void ); | |||
| Track * track ( void ) const { return _track; } | |||
| void track ( Track *t ) { _track = t; } | |||
| nframes_t offset ( void ) const { return _offset; } | |||
| void offset ( nframes_t o ) { _offset = o; } | |||
| void end ( nframes_t v ) { _end = v; } | |||
| nframes_t end ( void ) const { return _end; } | |||
| void start ( nframes_t v ) { _start = v; } | |||
| nframes_t start ( void ) const { return _start; } | |||
| nframes_t length ( void ) const { return _end - _start; } | |||
| }; | |||
| class Region : public TrackWidget | |||
| { | |||
| Clip *_clip; /* clip this region represents */ | |||
| float _scale; /* amplitude adjustment */ | |||
| static Fl_Color _selection_color; | |||
| static Fl_Color selection_color ( void ) { return _selection_color; } | |||
| static void selection_color ( Fl_Color v ) { _selection_color = v; } | |||
| enum trim_e { NO, LEFT, RIGHT }; | |||
| void trim ( enum trim_e t, int X ); | |||
| void init ( void ); | |||
| public: | |||
| Region ( const Region & rhs ); | |||
| Region ( Clip *c ); | |||
| int handle ( int m ); | |||
| void draw ( int X, int Y, int W, int H ); | |||
| void resize ( void ); | |||
| void end ( nframes_t v ) { _end = v; } | |||
| }; | |||