mirror of
https://github.com/vale981/openAV-Luppp
synced 2025-03-05 09:01:39 -05:00
-Refactoring ClipSelector, now using Clip class for all state
This commit is contained in:
parent
46224b4250
commit
b06d4f73ef
1 changed files with 45 additions and 33 deletions
|
@ -46,11 +46,33 @@ class ClipState
|
|||
public:
|
||||
ClipState()
|
||||
{
|
||||
loaded = false;
|
||||
_loaded = false;
|
||||
name = "";
|
||||
}
|
||||
|
||||
bool loaded;
|
||||
void load(std::string n = "")
|
||||
{
|
||||
_loaded = true;
|
||||
name = n;
|
||||
}
|
||||
void play(){_playing = true;}
|
||||
void stop(){_playing = false;}
|
||||
void queue(){_queued = true;}
|
||||
void stopQueue(){_queued = false;}
|
||||
void record(){_recording = true;}
|
||||
void stopRecord(){_recording = false;}
|
||||
|
||||
bool loaded(){return _loaded;}
|
||||
bool playing(){return _playing;}
|
||||
bool queued() {return _queued;}
|
||||
bool recording(){return _recording;}
|
||||
std::string getName(){return name;}
|
||||
|
||||
private:
|
||||
bool _loaded;
|
||||
bool _playing;
|
||||
bool _queued;
|
||||
bool _recording;
|
||||
std::string name;
|
||||
};
|
||||
|
||||
|
@ -71,11 +93,6 @@ class ClipSelector : public Fl_Button
|
|||
|
||||
highlight = false;
|
||||
mouseOver = false;
|
||||
|
||||
playingClip = -1;
|
||||
queuedClip = -1;
|
||||
recordingClip = -1;
|
||||
stopQueuedClip = -1;
|
||||
}
|
||||
|
||||
|
||||
|
@ -84,11 +101,6 @@ class ClipSelector : public Fl_Button
|
|||
static const int numClips = 10;
|
||||
ClipState clips[numClips];
|
||||
|
||||
int playingClip;
|
||||
int queuedClip;
|
||||
int recordingClip;
|
||||
int stopQueuedClip;
|
||||
|
||||
bool mouseOver;
|
||||
bool highlight;
|
||||
int x, y, w, h;
|
||||
|
@ -104,8 +116,7 @@ class ClipSelector : public Fl_Button
|
|||
**/
|
||||
void loadClip( int clip, std::string name = "" )
|
||||
{
|
||||
clips[clip].loaded = true;
|
||||
clips[clip].name = name;
|
||||
clips[clip].load(name);
|
||||
}
|
||||
|
||||
/** converts the Looper::State into the UI represnted ClipSelector state.
|
||||
|
@ -116,27 +127,25 @@ class ClipSelector : public Fl_Button
|
|||
switch(s)
|
||||
{
|
||||
case Looper::STATE_PLAYING:
|
||||
playingClip = clipNum;
|
||||
printf("clipSelector setState() clip %i = CLIP_PLAYING\n", clipNum);
|
||||
break;
|
||||
case Looper::STATE_PLAY_QUEUED:
|
||||
queuedClip = clipNum;
|
||||
clips[clipNum].queue();
|
||||
printf("clipSelector setState() clip %i = CLIP_QUEUED\n", clipNum);
|
||||
break;
|
||||
case Looper::STATE_RECORDING:
|
||||
recordingClip = clipNum;
|
||||
clips[clipNum].record();
|
||||
printf("clipSelector setState() clip %i = CLIP_RECORDING\n", clipNum);
|
||||
break;
|
||||
case Looper::STATE_RECORD_QUEUED:
|
||||
|
||||
clips[clipNum].queue();
|
||||
printf("clipSelector setState() clip %i = CLIP_QUEUED\n", clipNum);
|
||||
break;
|
||||
case Looper::STATE_STOPPED:
|
||||
stopQueuedClip = -1;
|
||||
clips[clipNum].stop();
|
||||
printf("clipSelector setState() clip %i = STATE_STOPPED\n", clipNum);
|
||||
break;
|
||||
case Looper::STATE_STOP_QUEUED:
|
||||
//clips[clipNum].state = ClipState::CLIP_QUEUED;
|
||||
printf("clipSelector setState() clip %i = CLIP_QUEUED\n", clipNum);
|
||||
break;
|
||||
}
|
||||
|
@ -172,7 +181,7 @@ class ClipSelector : public Fl_Button
|
|||
|
||||
cairo_rectangle( cr, x+1, drawY, clipHeight - 2, clipHeight - 4 );
|
||||
|
||||
if ( i == recordingClip )
|
||||
if ( clips[i].recording() )
|
||||
{
|
||||
cairo_set_source_rgba(cr, 1.f, 0 / 255.f , 0 / 255.f, 1.f);
|
||||
cairo_fill(cr);
|
||||
|
@ -180,7 +189,7 @@ class ClipSelector : public Fl_Button
|
|||
cairo_set_source_rgba(cr, 0, 0, 0, 1.f);
|
||||
cairo_fill(cr);
|
||||
}
|
||||
else if ( i == playingClip )
|
||||
else if ( clips[i].playing() )
|
||||
{
|
||||
cairo_set_source_rgba(cr, 0.0, 1.0, 0, 1.f );
|
||||
cairo_fill(cr);
|
||||
|
@ -191,6 +200,7 @@ class ClipSelector : public Fl_Button
|
|||
cairo_set_source_rgba(cr, 0, 0, 0, 1.f);
|
||||
cairo_fill(cr);
|
||||
}
|
||||
/*
|
||||
else if ( i == stopQueuedClip )
|
||||
{
|
||||
cairo_set_source_rgba(cr, 0 / 255.f, 0 / 255.f , 0 / 255.f, 1.0);
|
||||
|
@ -199,7 +209,8 @@ class ClipSelector : public Fl_Button
|
|||
cairo_set_source_rgba(cr, 1, 1, 1, 0.6);
|
||||
cairo_fill(cr);
|
||||
}
|
||||
else if ( i == queuedClip )
|
||||
*/
|
||||
else if ( clips[i].queued() )
|
||||
{
|
||||
cairo_set_source_rgba( cr, 0 / 255.f, 153 / 255.f , 255 / 255.f , 1 );
|
||||
cairo_fill(cr);
|
||||
|
@ -211,7 +222,7 @@ class ClipSelector : public Fl_Button
|
|||
cairo_set_line_width(cr, 2.8f);
|
||||
cairo_stroke(cr);
|
||||
}
|
||||
else if ( clips[i].loaded )
|
||||
else if ( clips[i].loaded() )
|
||||
{
|
||||
cairo_set_source_rgba(cr, 1.0, 0.6, 0, 1.f);
|
||||
cairo_fill(cr);
|
||||
|
@ -239,7 +250,7 @@ class ClipSelector : public Fl_Button
|
|||
cairo_move_to( cr, x + clipHeight + 10, drawY + 16 );
|
||||
cairo_set_source_rgba( cr, 255 / 255.f, 255 / 255.f , 255 / 255.f , 1 );
|
||||
cairo_set_font_size( cr, 10 );
|
||||
cairo_show_text( cr, clips[i].name.c_str() );
|
||||
cairo_show_text( cr, clips[i].getName().c_str() );
|
||||
|
||||
drawY += clipHeight;
|
||||
}
|
||||
|
@ -280,7 +291,7 @@ class ClipSelector : public Fl_Button
|
|||
int clipNum = ( (Fl::event_y() ) - y ) / clipHeight;
|
||||
if (clipNum >= numClips)
|
||||
clipNum = numClips -1; // fix for clicking the lowest pixel
|
||||
printf("clip number %i. Playing %i, rec %i, Q %i, StopQ, %i\n" , clipNum, recordingClip, queuedClip, stopQueuedClip );
|
||||
//printf("clip number %i. Playing %i, rec %i, Q %i, StopQ, %i\n" , clipNum, recordingClip, queuedClip, stopQueuedClip );
|
||||
|
||||
|
||||
// handle right clicks: popup menu
|
||||
|
@ -331,13 +342,14 @@ class ClipSelector : public Fl_Button
|
|||
}
|
||||
else if ( strcmp(m->label(), "Record") == 0 )
|
||||
{
|
||||
recordingClip = clipNum;
|
||||
//recordingClip = clipNum;
|
||||
EventLooperState e = EventLooperState( ID, clipNum, Looper::STATE_RECORD_QUEUED);
|
||||
writeToDspRingbuffer( &e );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
// decide action to take based on current state of clip
|
||||
if ( clipNum == queuedClip )
|
||||
{
|
||||
|
@ -347,17 +359,17 @@ class ClipSelector : public Fl_Button
|
|||
{
|
||||
EventLooperState e = EventLooperState( ID, clipNum, Looper::STATE_STOP_QUEUED);
|
||||
writeToDspRingbuffer( &e );
|
||||
playingClip = -1;
|
||||
stopQueuedClip = clipNum;
|
||||
//playingClip = -1;
|
||||
//stopQueuedClip = clipNum;
|
||||
printf("stopping clip now: playingClip == %i", clipNum );
|
||||
}
|
||||
else if ( clipNum == recordingClip )
|
||||
{
|
||||
EventLooperState e = EventLooperState( ID, clipNum, Looper::STATE_STOP_QUEUED);
|
||||
writeToDspRingbuffer( &e );
|
||||
recordingClip = -1;
|
||||
stopQueuedClip = -1;
|
||||
clips[clipNum].loaded = true;
|
||||
//recordingClip = -1;
|
||||
//stopQueuedClip = -1;
|
||||
//clips[clipNum].loaded = true;
|
||||
}
|
||||
else if ( clipNum == stopQueuedClip )
|
||||
{
|
||||
|
@ -380,7 +392,7 @@ class ClipSelector : public Fl_Button
|
|||
printf("avtk clipSelector handle click: no state triggered");
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
switch( clips[clipNum].state )
|
||||
{
|
||||
case ClipState::CLIP_EMPTY:
|
||||
|
|
Loading…
Add table
Reference in a new issue