diff options
Diffstat (limited to 'SrcUnix/espws-2.0/CheckButton.cxx')
-rw-r--r-- | SrcUnix/espws-2.0/CheckButton.cxx | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/SrcUnix/espws-2.0/CheckButton.cxx b/SrcUnix/espws-2.0/CheckButton.cxx new file mode 100644 index 0000000..3fad85e --- /dev/null +++ b/SrcUnix/espws-2.0/CheckButton.cxx @@ -0,0 +1,113 @@ +// +// "$Id: CheckButton.cxx,v 1.10 2000/01/04 13:45:50 mike Exp $" +// +// CheckButton routines for the Common UNIX Printing System (CUPS). +// +// Copyright 1997-2000 by Easy Software Products. +// +// These coded instructions, statements, and computer programs are the +// property of Easy Software Products and are protected by Federal +// copyright law. Distribution and use rights are outlined in the file +// "LICENSE.txt" which should have been included with this file. If this +// file is missing or damaged please contact Easy Software Products +// at: +// +// Attn: CUPS Licensing Information +// Easy Software Products +// 44141 Airport View Drive, Suite 204 +// Hollywood, Maryland 20636-3111 USA +// +// Voice: (301) 373-9603 +// EMail: cups-info@cups.org +// WWW: http://www.cups.org +// +// Contents: +// + +// +// Include necessary header files... +// + +#include <FL/Fl.H> +#include "CheckButton.h" +#include <FL/fl_draw.H> + + +// +// CheckButton is a subclass of Fl_Button like Fl_Check_Button, only the +// toggle and radio images are more like Microsoft Windows. +// + + +// +// 'CheckButton::draw()' - Draw the check button. +// + +void CheckButton::draw() +{ + int size, // Size of button... + offset; // Box Y offset... + + size = labelsize(); + offset = (h() - size) / 2; + + if (type() == FL_RADIO_BUTTON) + { + // Draw the radio "hole"... + draw_box(FL_ROUND_DOWN_BOX, x(), y() + offset, size, size, FL_WHITE); + + // Then the check... + if (value()) + { + fl_color(active_r() ? FL_BLACK : FL_GRAY); + + if (size > 14) + fl_pie(x() + 5, y() + offset + 5, size - 10, size - 10, 0.0, 360.0); + else + { + // Small circles don't draw well with some X servers... + fl_rect(x() + 6, y() + offset + 5, 2, 4); + fl_rect(x() + 5, y() + offset + 6, 4, 2); + } + } + } + else + { + // Draw the check "box"... + draw_box(FL_DOWN_BOX, x(), y() + offset, size, size, FL_WHITE); + + // Then the check... + if (value()) + { + fl_color(active_r() ? FL_BLACK : FL_GRAY); + fl_line(x() + 3, y() + offset + 3, + x() + size - 4, y() + offset + size - 4); + fl_line(x() + 4, y() + offset + 3, + x() + size - 3, y() + offset + size - 4); + fl_line(x() + 3, y() + offset + size - 4, + x() + size - 4, y() + offset + 3); + fl_line(x() + 4, y() + offset + size - 4, + x() + size - 3, y() + offset + 3); + } + } + + // Finally, the label... + draw_label(x() + 5 * size / 4, y(), w() - 5 * size / 4, h()); +} + + +// +// 'CheckButton::CheckButton()' - Construct a CheckButton widget. +// + +CheckButton::CheckButton(int x, int y, int w, int h, const char* l) +: Fl_Button(x, y, w, h, l) +{ + type(FL_TOGGLE_BUTTON); + align(FL_ALIGN_LEFT | FL_ALIGN_INSIDE); +} + + +// +// End of "$Id: CheckButton.cxx,v 1.10 2000/01/04 13:45:50 mike Exp $". +// |