summaryrefslogtreecommitdiff
path: root/src/Fl_Light_Button.cxx
diff options
context:
space:
mode:
authorMichael R Sweet <michael.r.sweet@gmail.com>1998-10-06 18:21:25 +0000
committerMichael R Sweet <michael.r.sweet@gmail.com>1998-10-06 18:21:25 +0000
commitf9039b2ae21988783feae9b362818e7923e82d14 (patch)
tree6d6fe3679d73448758f9794e7d4d4f6b22a4adad /src/Fl_Light_Button.cxx
parent67e89232f9ba067825a158734a09e0fa21aacbe3 (diff)
Initial revision
git-svn-id: file:///fltk/svn/fltk/trunk@2 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'src/Fl_Light_Button.cxx')
-rw-r--r--src/Fl_Light_Button.cxx47
1 files changed, 47 insertions, 0 deletions
diff --git a/src/Fl_Light_Button.cxx b/src/Fl_Light_Button.cxx
new file mode 100644
index 000000000..dcf7400f5
--- /dev/null
+++ b/src/Fl_Light_Button.cxx
@@ -0,0 +1,47 @@
+// Fl_Light_Button.C
+
+// Subclass of Fl_Button where the "box" indicates whether it is
+// pushed or not, and the "down box" is drawn small and square on
+// the left to indicate the current state.
+
+// The default down_box of zero draws a rectangle designed to look
+// just like Flame's buttons.
+
+#include <FL/Fl.H>
+#include <FL/Fl_Light_Button.H>
+#include <FL/fl_draw.H>
+
+void Fl_Light_Button::draw() {
+ if (box()) draw_box(this==Fl::pushed() ? down(box()) : box(), color());
+ Fl_Color col = value() ? selection_color() : color();
+ int d = h()/6;
+ int W = w()<h() ? w() : h();
+ if (down_box()) {
+ // draw other down_box() styles:
+ draw_box(down_box(), x()+d, y()+d+1, W-2*d-2, W-2*d-2, col);
+ } else {
+ // if down_box() is zero, draw light button style:
+ int hh = h()-2*d;
+ int ww = hh/2+1;
+ int xx = d*2;
+ if (w()<ww+2*xx) xx = (w()-ww)/2;
+ draw_box(FL_THIN_DOWN_BOX, x()+xx, y()+d, ww, hh, col);
+ }
+ draw_label(x()+W-d, y(), w()-W+d, h());
+}
+
+int Fl_Light_Button::handle(int event) {
+ switch (event) {
+ case FL_RELEASE:
+ if (box()) redraw();
+ default:
+ return Fl_Button::handle(event);
+ }
+}
+
+Fl_Light_Button::Fl_Light_Button(int x, int y, int w, int h, const char* l)
+: Fl_Button(x, y, w, h, l) {
+ type(FL_TOGGLE_BUTTON);
+ selection_color(FL_YELLOW);
+ align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
+}