Ejemplo n.º 1
0
void Fl_Diamond_Box::draw(int x, int y, int w, int h,
Fl_Color c, Fl_Flags f) const
{
    int x1 = x+w/2;
    if (w&1) w--; else {w -= 2; x++;}
    int y1 = y+h/2;
    if (h&1) h--; else {h -= 2; y++;}
    const char* s = (f & FL_VALUE) ? down->data() : data();
    char buf[26]; if (f&FL_INACTIVE && Fl_Style::draw_boxes_inactive)
    {
        fl_to_inactive(s, buf); s = buf;
    }
    const char* t;
    if (*s == '2')
    {
        t = s+1; s += 3;
    }
    else
    {
        t = s+2;
    }
    while (*s && *t && w > 0 && h > 0)
    {
        // draw upper-right line:
        fl_color(*s++ + (FL_GRAY_RAMP-'A'));
        fl_line(x+w, y1, x1, y);
        // draw upper-left line:
        fl_color(*s++ + (FL_GRAY_RAMP-'A'));
        fl_line(x1, y, x, y1);
        if (*s)
           s += 2;
        // draw lower-left line:
        fl_color(*t++ + (FL_GRAY_RAMP-'A'));
        fl_line(x, y1, x1, y+h);
        // draw lower-right line:
        fl_color(*t++ + (FL_GRAY_RAMP-'A'));
        fl_line(x1, y+h, x+w, y1);
        t += 2;
        x++; y++; w -= 2; h -= 2;
    }
    if (w > 0 && h > 0 && !(f & FL_INVISIBLE))
    {
        // draw the interior, assumming the edges are the same thickness
        // as the normal square box:
        fl_newpath();
        fl_vertex(x, y1);
        fl_vertex(x1, y);
        fl_vertex(x+w,y1);
        fl_vertex(x1,y+h);
        fl_color(c);
        fl_fill_stroke(c);
    }
}
Ejemplo n.º 2
0
static void rbox(int x, int y, int w, int h, Fl_Color fill, Fl_Color line)
{
    // figure out diameter of circles for corners:
    float d = w*(4/5.0f);
    float d1 = h*(4/5.0f);
    if (d1 < d) d = d1;
    if (d > 30) d = 30;
    float X = float(x);
    float Y = float(y);
    w--;
    h--;
    fl_arc(X, Y, d, d, 90, 180);
    fl_arc(X, Y+h-d, d, d, 180, 270);
    fl_arc(X+w-d, Y+h-d, d, d, 270, 360);
    fl_arc(X+w-d, Y, d, d, 0, 90);
    fl_color(fill);
    fl_fill_stroke(line);
}
Ejemplo n.º 3
0
 void draw() {
   fl_push_clip(0, 0, w(), h());
   fl_color(FL_DARK3);
   fl_rectf(0, 0, w(), h());
   fl_push_matrix();
   //    if (args[6]) {
     fl_translate(w()/2.0f, h()/2.0f);
     fl_rotate(args[6]);
     fl_translate(-w()/2.0f, -h()/2.0f);
     //}
   fl_arc(args[0],args[1],args[2],args[3],args[4],args[5]);
   fl_closepath();
   fl_arc(120,120,40,40,0,-360);
   fl_ellipse(20,20,args[2],args[3]); // hardware circle
   fl_color(FL_WHITE);
   fl_fill_stroke(FL_RED);
   fl_pop_matrix();
   fl_pop_clip();
 }
Ejemplo n.º 4
0
void Fl_Dial::draw()
{
    int X = 0; int Y = 0; int W = w(); int H = h();
    if (!(type() == FILL && box() == FL_OVAL_BOX))
    {
        if (damage()&FL_DAMAGE_ALL) draw_box();
        box()->inset(X,Y,W,H);
    }
    Fl_Color fillcolor = selection_color();
    Fl_Color linecolor = highlight_color();
    if (!active_r())
    {
        fillcolor = fl_inactive(fillcolor);
        linecolor = fl_inactive(linecolor);
    }
    double angle = (a2-a1)*(value()-minimum())/(maximum()-minimum()) + a1;
    if (type() == FILL)
    {
        if (damage()&FL_DAMAGE_EXPOSE && box() == FL_OVAL_BOX)
        {
            fl_push_clip(0, 0, w(), h());
            parent()->draw_group_box();
            fl_pop_clip();
        }
        fl_color(color());
        fl_pie(X, Y, W-1, H-1, 270-a1, angle > a1 ? 360+270-angle : 270-360-angle);
        fl_color(fillcolor);
        fl_pie(X, Y, W-1, H-1, 270-angle, 270-a1);
        if (box() == FL_OVAL_BOX)
        {
            fl_ellipse(X, Y, W-1, H-1);
            fl_color(linecolor); fl_stroke();
        }
    }
    else
    {
        if (!(damage()&FL_DAMAGE_ALL))
        {
            fl_ellipse(X+1, Y+1, W-2, H-2);
            fl_color(color()); fl_fill();
        }
        fl_push_matrix();
        fl_translate(X+W/2-.5, Y+H/2-.5);
        fl_scale(W-1, H-1);
        fl_rotate(45-angle);
        if (type() == LINE)
        {
            fl_vertex(0.0,   0.0);
            fl_vertex(-0.04, 0.0);
            fl_vertex(-0.25, 0.25);
            fl_vertex(0.0,   0.04);
        }
        else
        {
            fl_circle(-0.20, 0.20, 0.07);
        }
        fl_color(fillcolor); fl_fill_stroke(linecolor);
        fl_pop_matrix();
    }
    if (focused())
    {
        fl_ellipse(X+2, Y+2, W-5, H-5);
        fl_color(linecolor);
        fl_line_style(FL_DASH);
        fl_stroke();
        fl_line_style(0);
    }
}