void SpectrumView::draw ( void ) { //Clear Widget Fl_Box::draw(); int W = w() - padding_right; int H = h() - padding_bottom; if ( !_bands ) { analyze_data( W ); } //Draw grid fl_color(fl_color_add_alpha(fl_rgb_color( 100,100,100), 50 )); draw_semilog(); fl_push_clip( x(),y(),W,H); fl_color(fl_color_add_alpha( selection_color(), 20 )); fl_push_matrix(); fl_translate( x(), y() + 2 ); fl_scale( W,H- 2 ); fl_begin_polygon(); fl_vertex(0.0,1.0); draw_curve(); fl_vertex(1.0,1.0); fl_end_polygon(); fl_color(fl_color_add_alpha( selection_color(), 100 )); fl_begin_line(); fl_line_style(FL_SOLID,2); /* fl_vertex(0.0,1.0); */ draw_curve(); /* fl_vertex(1.0,1.0); */ fl_end_line(); fl_pop_matrix(); fl_line_style(FL_SOLID,0); fl_pop_clip(); }
void Track::draw ( void ) { fl_push_clip( x(), y(), w(), h() ); Fl_Color saved_color = color(); if ( ! Track::colored_tracks ) color( FL_GRAY ); if ( _selected ) { Fl_Color c = color(); color( FL_RED ); Fl_Group::draw(); color( c ); } else Fl_Group::draw(); if ( ((Track_Header*)child(0))->input_connector_handle == receptive_to_drop ) { Fl_Widget *o = ((Track_Header*)child(0))->input_connector_handle; fl_draw_box( FL_OVAL_BOX, o->x(), o->y(), o->w(), o->h(), fl_color_add_alpha( FL_GREEN, 127 ) ); } if ( ! Track::colored_tracks ) color( saved_color ); fl_pop_clip(); }
void Sequence_Region::draw_box ( void ) { Fl_Color c = selected() ? selection_color() : box_color(); fl_draw_box( box(), line_x(), y(), abs_w(), h(), fl_color_add_alpha( c, 127 ) ); }
void SpectrumView::draw_semilog ( void ) { int W = w() - padding_right; int H = h() - padding_bottom; char label[50]; fl_line_style(FL_SOLID,0); fl_font( FL_HELVETICA_ITALIC, 7 ); //Db grid is easy, it is just a linear spacing for(int i=0; i<16; ++i) { int level = y()+H*i/16.0; fl_line(x(), level, x()+W, level); float value = (1-i/16.0)*(_dbmax-_dbmin) + _dbmin; sprintf(label, "%.1f", value); fl_draw(label, x() + 4, level + 3, w() - 8, 7, FL_ALIGN_LEFT ); } //The frequency grid is defined with points at //10,11,12,...,18,19,20,30,40,50,60,70,80,90,100,200,400,... //Thus we find each scale that we cover and draw the nine lines unique to //that scale float lb = 1.0f / logf( 10 ); const int min_base = logf(_fmin)*lb; const int max_base = logf(_fmax)*lb; const float b = logf(_fmin)*lb; const float a = logf(_fmax)*lb-b; for(int i=min_base; i<=max_base; ++i) { for(int j=1; j<10; ++j) { const float freq = pow(10.0, i)*j; const float xloc = (logf(freq)*lb-b)/a; if(xloc<1.0 && xloc > -0.001) { fl_line(xloc*W+x(), y(), xloc*W+x(), y()+H); if ( j == 1 || j == 2 || j == 5 ) { sprintf(label, "%0.f%s", freq < 1000.0 ? freq : freq / 1000.0, freq < 1000.0 ? "" : "k" ); int sx = x() + xloc*W + 1; if ( sx < x() * W - 20 ) fl_draw(label, sx, y()+h()); } } } } /* draw 0dB line */ { fl_line_style(FL_DASH,0); float i = ((_dbmax-_dbmin)+_dbmin) / (_dbmax-_dbmin); int level = y()+H*i; fl_color(fl_color_add_alpha(fl_rgb_color(240,240,240), 60 )); fl_line(x(), level, x()+W, level); fl_line_style(FL_SOLID,0); } }
void JACK_Module::draw ( void ) { Module::draw(); if ( this == receptive_to_drop ) { Fl_Widget *o = input_connection_handle; fl_draw_box( FL_OVAL_BOX, o->x(), o->y(), o->w(), o->h(), fl_color_add_alpha( FL_GREEN, 127 ) ); } }
void Controller_Module::draw ( void ) { Fl_Group::draw(); draw_box(x(),y(),w(),h()); if ( learn_mode() ) { fl_rectf( x(),y(),w(),h(), fl_color_add_alpha( FL_MAGENTA, 50 ) ); } }
void Fl_DialX::draw ( void ) { int X,Y,S; { int ox, oy, ww, hh, side; ox = x(); oy = y(); ww = w(); hh = h(); if (ww > hh) { side = hh; ox = ox + (ww - side) / 2; } else { side = ww; oy = oy + (hh - side) / 2; } side = w() > h() ? hh : ww; X = ox; Y = oy; S = side; } draw_box(); draw_label(); double angle = ( angle2() - angle1() ) * ( value() - minimum()) / ( maximum() - minimum() ) + angle1(); fl_draw_box( box(), X, Y, S, S, color() ); /* shrink a bit */ int OX = x(); int OY = y(); X += S / 8; Y += S / 8; int OS = S; S -= S / 4; fl_line_style( FL_SOLID, S / 12 ); /* background arc */ fl_color( fl_darker( color() ) ); fl_arc( X, Y, S, S, 270 - angle1(), 270 - angle2() ); /* foreground arc */ fl_color( selection_color() ); fl_arc( X, Y, S, S, 270 - angle1(), 270 - angle ); fl_line_style( FL_SOLID, 0 ); if ( active_r() ) { int W = OS; int H = OS; fl_push_matrix(); fl_translate(OX+W/2, OY+H/2); fl_scale(W, H); fl_rotate(310+angle); fl_color( fl_color_add_alpha( FL_WHITE, 127 )); fl_begin_polygon(); fl_circle(-0.26, 0.26, 0.12); fl_end_polygon(); fl_color( FL_WHITE ); fl_begin_polygon(); fl_circle(-0.26, 0.26, 0.06); fl_end_polygon(); fl_pop_matrix(); } fl_color( fl_contrast( labelcolor(), color() ) ); if ( Fl::belowmouse() == this ) { char s[10]; fl_font( FL_HELVETICA, 10 ); snprintf( s, sizeof( s ), "%.1f", value() ); fl_color( FL_FOREGROUND_COLOR ); fl_draw( s, X, Y, S, S, FL_ALIGN_CENTER ); } }
void Track::init ( void ) { _row = 0; _sequence = NULL; _name = NULL; _selected = false; _size = 1; record_ds = NULL; playback_ds = NULL; labeltype( FL_NO_LABEL ); // clear_visible_focus(); Fl_Group::size( timeline->w(), height() ); Track *o = this; o->box( FL_FLAT_BOX ); { Track_Header *o = new Track_Header( x(), y(), w(), h() ); name_field = o->name_input; record_button = o->rec_button; mute_button = o->mute_button; solo_button = o->solo_button; menu_button = o->menu_button; show_all_takes_button = o->show_all_takes_button; overlay_controls_button = o->overlay_controls_button; name_field->callback( cb_button, this ); record_button->callback( cb_button, this ); mute_button->callback( cb_button, this ); solo_button->callback( cb_button, this ); show_all_takes_button->callback( cb_button, this ); overlay_controls_button->callback( cb_button, this ); menu_button->callback( cb_button, this ); resizable( o ); // o->color( (Fl_Color)53 ); } { /* this pack holds the active sequence, annotation sequence, control sequences and takes */ Fl_Pack *o = pack = new Fl_Pack( x(), y(), w(), h() ); o->type( Fl_Pack::VERTICAL ); o->labeltype( FL_NO_LABEL ); /* o->resize( x() + width(), y(), w() - width(), h() ); */ /* resizable( o ); */ { Fl_Pack *o = annotation = new Fl_Pack( 0, 0, pack->w(), 1 ); o->type( Fl_Pack::VERTICAL ); o->end(); } { { Fl_Group *o = controls_heading = new Fl_Group( 0, 0, pack->w(), 10 ); o->box( FL_FLAT_BOX ); o->color( fl_color_add_alpha( fl_rgb_color( 1,1,1 ), 127 ) ); { Fl_Box *o = new Fl_Box( 0,0, Track::width(), 10 ); o->label( "Controls" ); o->align( FL_ALIGN_RIGHT | FL_ALIGN_INSIDE ); o->labelsize( 10 ); } o->hide(); o->end(); o->resizable( 0 ); } { Fl_Sometimes_Pack *o = control = new Fl_Sometimes_Pack( 0, 0, pack->w(), 1 ); o->spacing( 1 ); o->box( FL_NO_BOX ); o->color( FL_BACKGROUND_COLOR ); o->type( Fl_Pack::VERTICAL ); o->pack( true ); o->hide(); o->align( FL_ALIGN_TOP | FL_ALIGN_LEFT ); o->end(); } } { { Fl_Group *o = takes_heading = new Fl_Group( 0, 0, pack->w(), 10 ); o->box( FL_FLAT_BOX ); o->color( fl_color_add_alpha( fl_rgb_color( 1,1,1 ), 127 ) ); { Fl_Box *o = new Fl_Box( 0,0, Track::width(), 10 ); o->label( "Takes" ); o->align( FL_ALIGN_RIGHT | FL_ALIGN_INSIDE ); o->labelsize( 10 ); } o->hide(); o->end(); o->resizable( 0 ); } { Fl_Pack *o = takes = new Fl_Pack( 0, 0, pack->w(), 1 ); o->type( Fl_Pack::VERTICAL ); o->end(); o->hide(); o->align( FL_ALIGN_TOP | FL_ALIGN_LEFT ); } } o->end(); } end(); }
void Fl_Canvas::DrawWires() { fl_line_style( FL_SOLID, 2 ); for(vector<CanvasWire>::iterator i=m_WireVec.begin(); i!=m_WireVec.end(); i++) { Fl_DeviceGUI* SourceDevice = FindDevice(i->OutputID); Fl_DeviceGUI* DestDevice = FindDevice(i->InputID); if (!SourceDevice || !DestDevice) { SpiralInfo::Alert("Cant find source or dest device while drawing wires"); return; } Fl_Color col = (Fl_Color) WIRE_COL0; switch (SourceDevice->GetPortType(i->OutputPort+SourceDevice->GetInfo()->NumInputs)) { case 0: col = (Fl_Color) WIRE_COL0; break; case 1: col = (Fl_Color) WIRE_COL1; break; case 2: col = (Fl_Color) WIRE_COL2; break; case 3: col = (Fl_Color) WIRE_COL3; break; case 4: col = (Fl_Color) WIRE_COL4; break; default: col = (Fl_Color) WIRE_COL0; } fl_color(col); #ifdef NTK_MAJOR_VERSION fl_color( fl_color_add_alpha( fl_color(), 127 ) ); #endif double ep1_x, ep1_y, ep2_x, ep2_y, ep1_mix_x, ep1_new_x, ep1_mid_x, ep2_mid_x, ep2_new_x, ep1_mid_y, ep2_mid_y; ep1_x = SourceDevice->GetPortX(i->OutputPort+SourceDevice->GetInfo()->NumInputs); ep1_y = SourceDevice->GetPortY(i->OutputPort+SourceDevice->GetInfo()->NumInputs); ep1_mid_y = ep1_y + 7.5; ep2_x = DestDevice->GetPortX(i->InputPort); ep2_y = DestDevice->GetPortY(i->InputPort); ep2_mid_y = 7.5 + ep2_y; ep1_mid_x = fabs(ep1_x-ep2_x)/2; ep1_new_x = ep1_x+ep1_mid_x; ep2_mid_x = fabs(ep1_x-ep2_x)/2; ep2_new_x = ep2_x-ep2_mid_x; fl_begin_line(); fl_curve( ep1_x, ep1_y, ep1_new_x, ep1_mid_y, ep2_new_x, ep2_mid_y, ep2_x, ep2_y ); fl_end_line(); /* fl_line(SourceDevice->GetPortX(i->OutputPort+SourceDevice->GetInfo()->NumInputs), */ /* SourceDevice->GetPortY(i->OutputPort+SourceDevice->GetInfo()->NumInputs), */ /* DestDevice->GetPortX(i->InputPort), */ /* DestDevice->GetPortY(i->InputPort)); */ } DrawIncompleteWire(); fl_line_style( FL_SOLID, 0 ); }
void Module::draw_label ( int tx, int ty, int tw, int th ) { bbox( tx, ty, tw, th ); if ( ! label() ) return; char *lab = strdup( label() ); Fl_Color c = fl_contrast( FL_FOREGROUND_COLOR, color() ); fl_color( active_r() && ! bypass() ? c : fl_inactive(c) ); fl_font( FL_HELVETICA, labelsize() ); char *di = strstr( lab, " -" ); if ( ! di ) di = strstr( lab, " " ); if ( di ) *di = '\0'; int LW = fl_width( lab ); char *s = NULL; bool initial = true; if ( LW > tw ) { s = new char[strlen(lab) + 1]; char *sp = s; const char *lp = lab; for ( ; *lp; ++lp ) { bool skip = false; switch ( *lp ) { case ' ': initial = true; skip = false; break; case 'i': case 'e': case 'o': case 'u': case 'a': skip = ! initial; initial = false; break; default: skip = false; initial = false; break; } if ( ! skip ) *(sp++) = *lp; } *sp = '\0'; } fl_draw( s ? s : lab, tx, ty, tw, th, align() | FL_ALIGN_CLIP ); if ( bypass() ) { fl_color( fl_color_add_alpha( fl_color(), 127 ) ); fl_line_style( FL_SOLID, 2 ); fl_line( tx, ty + th * 0.5, tx + tw, ty + th * 0.5 ); fl_line_style( FL_SOLID, 0 ); } free(lab); if ( s ) delete[] s; }
void Panner::draw ( void ) { int tw, th, tx, ty; bbox( tx, ty, tw, th ); fl_push_clip( x(),y(),w(),h() ); draw_the_box( tx, ty, tw, th ); // draw_box(); draw_label(); /* if ( _bypassed ) */ /* { */ /* draw_box(); */ /* fl_color( 0 ); */ /* fl_font( FL_HELVETICA, 12 ); */ /* fl_draw( "(bypass)", x(), y(), w(), h(), FL_ALIGN_CENTER ); */ /* goto done; */ /* } */ /* tx += b; */ /* ty += b; */ /* tw -= b * 2; */ /* th -= b * 2; */ fl_line_style( FL_SOLID, 1 ); fl_color( FL_WHITE ); for ( unsigned int i = 0; i < _points.size(); i++ ) { Point *p = &_points[i]; if ( ! p->visible ) continue; Fl_Color c = fl_color_add_alpha( p->color, 100 ); fl_color(c); int px, py, pw, ph; point_bbox( p, &px, &py, &pw, &ph ); { float po = 5; fl_push_clip( px - ( po * 12 ), py - ( po * 12 ), pw + ( po * 24 ), ph + (po * 24 )); fl_pie( px + 5, py + 5, pw - 10, ph - 10, 0, 360 ); fl_pie( px, py, pw, ph, 0, 360 ); fl_pop_clip(); if ( projection() == POLAR ) { fl_color( fl_color_average( fl_rgb_color( 127,127,127 ), p->color, 0.50 ) ); fl_begin_loop(); fl_circle( tx + tw/2, ty + th/2, tw/2.0f * ( ( p->radius() / range() ))); fl_end_loop(); } } const char *s = p->label; fl_color( fl_color_add_alpha( fl_rgb_color( 220,255,255 ), 127 ) ); fl_font( FL_HELVETICA_BOLD_ITALIC, 10 ); fl_draw( s, px + 20, py + 1, 50, ph - 1, FL_ALIGN_LEFT ); if ( tw > 100 ) { char pat[50]; snprintf( pat, sizeof(pat), "%.1f°:%.1f° %.1fm", p->azimuth(), p->elevation(), p->radius() ); // fl_color( fl_color_add_alpha( fl_rgb_color( 220,255,255 ), 127 ) ); fl_font( FL_COURIER, 9 ); fl_draw( pat, px + 20, py + 15, 50, ph - 1, FL_ALIGN_LEFT | FL_ALIGN_WRAP ); /* fl_font( FL_HELVETICA_ITALIC, 9 ); */ /* snprintf(pat, sizeof(pat), "range: %.1f meters", range() ); */ /* fl_draw( pat, tx, ty, tw, th, FL_ALIGN_LEFT | FL_ALIGN_BOTTOM | FL_ALIGN_INSIDE ); */ /* if ( _projection == POLAR ) */ /* { */ /* fl_draw( "Polar perspective; azimuth, elevation and radius input. Right click controls radius.", tx, ty, tw, th, FL_ALIGN_BOTTOM | FL_ALIGN_RIGHT | FL_ALIGN_INSIDE ); */ /* } */ /* else */ /* { */ /* fl_draw( "Polar orthographic; angle and distance input.", tx, ty, tw, th, FL_ALIGN_BOTTOM | FL_ALIGN_RIGHT | FL_ALIGN_INSIDE ); */ /* } */ } } if ( tw > 200 ) draw_children(); fl_line_style( FL_SOLID, 0 ); fl_pop_clip(); }