示例#1
0
static void default_glyph(const Fl_Widget* widget, int glyph,
    int x,int y,int w,int h, Fl_Flags flags)
{
    // h = (h+1)&(~1); // even only
    Fl_Boxtype box = widget->button_box();
    box->draw(x, y, w, h, widget->button_color(), flags);
    box->inset(x, y, w, h);
    if (flags & FL_VALUE)
    {
        Fl_Color color = (box == FL_NO_BOX && (flags&FL_SELECTED)) ?
            widget->selection_text_color() : widget->text_color();
        fl_color(fl_inactive(color, flags));
        int d = h/6;
        fl_ellipse(x+d, y+d, h-d-d-1, h-d-d-1);
        fl_fill();
    }
}
示例#2
0
文件: arc.cpp 项目: GustavoMOG/efltk
 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();
 }
示例#3
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);
    }
}