aboutsummaryrefslogtreecommitdiff
path: root/src/lib/FL/Fl_Image_Toggle_Button.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/FL/Fl_Image_Toggle_Button.cxx')
-rw-r--r--src/lib/FL/Fl_Image_Toggle_Button.cxx92
1 files changed, 92 insertions, 0 deletions
diff --git a/src/lib/FL/Fl_Image_Toggle_Button.cxx b/src/lib/FL/Fl_Image_Toggle_Button.cxx
new file mode 100644
index 0000000..df006c8
--- /dev/null
+++ b/src/lib/FL/Fl_Image_Toggle_Button.cxx
@@ -0,0 +1,92 @@
1#include <FL/Fl_Image_Toggle_Button.H>
2#include <FL/Fl_Image.H>
3#include <FL/fl_draw.H>
4#ifndef NULL
5#define NULL 0
6#endif
7void Fl_Image_Toggle_Button::up_image(Fl_Image* p_upimage)
8{
9 upimage=p_upimage;
10}
11
12void Fl_Image_Toggle_Button::down_image(Fl_Image* p_downimage)
13{
14 downimage=p_downimage;
15}
16
17Fl_Image* Fl_Image_Toggle_Button::up_image()
18{
19 return upimage;
20}
21
22Fl_Image* Fl_Image_Toggle_Button::down_image()
23{
24 return downimage;
25}
26
27Fl_Image_Toggle_Button::Fl_Image_Toggle_Button(int a,int b,int c,int d,const char* e):Fl_Toggle_Button(a,b,c,d,e)
28{
29 upimage=NULL;
30 downimage=NULL;
31 Fl_Toggle_Button::clear_visible_focus();
32}
33
34Fl_Image_Toggle_Button::Fl_Image_Toggle_Button(int a,int b,int c,int d):Fl_Toggle_Button(a,b,c,d)
35{
36 upimage=NULL;
37 downimage=NULL;
38 Fl_Toggle_Button::clear_visible_focus();
39}
40
41
42void Fl_Image_Toggle_Button::draw()
43{
44 // begin - Fl_Button::draw() (box section)
45 if (type() == FL_HIDDEN_BUTTON) return;
46 Fl_Color col = value() ? selection_color() : color();
47
48
49 draw_box(value() ? (down_box()?down_box():fl_down(box())) : box(), col);
50 // end - Fl_Button::draw() (box section)
51
52 // begin - modification to render up/down image
53 Fl_Boxtype box_;
54 Fl_Image* pic_;
55
56 if(value())
57 {
58 box_ = (down_box())? down_box() : fl_down(box());
59 pic_ = downimage;
60 }
61 else
62 {
63 box_ = box();
64 pic_ = upimage;
65 }
66
67 if(pic_)
68 {
69 int xx = x() + Fl::box_dx(box_);
70 int yy = y() + Fl::box_dy(box_);
71 int ww = w() - Fl::box_dw(box_);
72 int hh = h() - Fl::box_dh(box_);
73 int xpos = (ww - pic_->w()) / 2;
74 int ypos = (hh - pic_->h()) / 2;
75
76 fl_push_clip(xx, yy, ww, hh);
77 pic_->draw(xx + xpos, yy + ypos);
78 fl_pop_clip();
79 }
80 // end- modification to render up/down image
81
82 // begin - Fl_Button::draw() (label section)
83 if (labeltype() == FL_NORMAL_LABEL && value()) {
84 Fl_Color c = Fl_Button::labelcolor();
85 labelcolor(fl_contrast(c, col));
86 draw_label();
87 labelcolor(c);
88 } else draw_label();
89 if (Fl::focus() == this) draw_focus();
90 // end - Fl_Button::draw() (label section)
91}
92