-Updated Avtk::RadialStatus, updated LooperClip logic to send 0 on stop

This commit is contained in:
Harry van Haaren 2013-08-22 02:13:14 +01:00
parent 75b48edae2
commit 29c5d3b83a
3 changed files with 28 additions and 13 deletions

View file

@ -41,6 +41,8 @@ class RadialStatus : public Fl_Slider
label = _label;
previousAngle = -1;
_r = 1.0;
_g = 0.48;
_b = 0.0;
@ -53,11 +55,16 @@ class RadialStatus : public Fl_Slider
mouseOver = false;
}
bool _recording;
void recording(bool r){_recording = r; redraw();}
bool mouseOver;
bool highlight;
int x, y, w, h;
const char* label;
int previousAngle;
float _r, _g, _b; // foreground colour
float _bgr, _bgg, _bgb; // background colour
float _outr, _outg, _outb; // outline colour
@ -78,7 +85,11 @@ class RadialStatus : public Fl_Slider
void draw()
{
if (damage() & FL_DAMAGE_ALL)
// check that its a new "segment" to redraw
int newAngle = (value() * 16);
if (damage() & FL_DAMAGE_ALL &&
previousAngle != newAngle )
{
cairo_t *cr = Fl::cairo_cc();
@ -87,7 +98,7 @@ class RadialStatus : public Fl_Slider
int xc = (w) / 2.f;
int yc = (h) / 2.f;
float angle = value();
float angle = newAngle / 16.f;
/*
// draw background quadrants
@ -99,18 +110,21 @@ class RadialStatus : public Fl_Slider
}
*/
if ( angle > 0.001 )
cairo_set_line_cap ( cr, CAIRO_LINE_CAP_ROUND );
//cairo_move_to( cr, x + xc, y + yc );
cairo_arc( cr, x + xc, y + yc, xc - 10, -(3.1415/2), angle * 6.28 - (3.1415/2) );
cairo_set_source_rgba (cr, 0.0, 0.0, 0.0, 0.8 );
cairo_set_line_width(cr, 13.2);
cairo_stroke_preserve(cr);
cairo_set_source_rgba (cr, 1.0, 0.48, 0.0, 1 );
cairo_set_line_width(cr, 8.2);
cairo_stroke(cr);
// recording?
if ( _recording )
{
cairo_set_line_cap ( cr, CAIRO_LINE_CAP_ROUND );
//cairo_move_to( cr, x + xc, y + yc );
cairo_arc( cr, x + xc, y + yc, xc - 10, -(3.1415/2), angle * 6.28 - (3.1415/2) );
cairo_set_source_rgba (cr, 0.0, 0.0, 0.0, 0.8 );
cairo_set_line_width(cr, 13.2);
cairo_stroke_preserve(cr);
cairo_set_source_rgba (cr, 1.0, 0.48, 0.0, 1 );
cairo_set_line_width(cr, 8.2);
cairo_stroke(cr);
}
// inside circle

View file

@ -149,6 +149,8 @@ void LooperClip::bar()
_recording = false;
_queueStop = false;
change = true;
// set "progress" to zero, as we're stopped!
jack->getControllerUpdater()->setTrackSceneProgress(track, scene, 0 );
}
else if ( _queueRecord )
{

View file

@ -58,7 +58,6 @@ void TrackOutput::process(unsigned int nframes, Buffers* buffers)
// call process() up the chain
previousInChain->process( nframes, buffers );
// run the meter
dbMeter.process( nframes, trackBuffer, trackBuffer );