00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include <GLW/GLWCheckBox.h>
00022 #include <GLEXT/GLState.h>
00023
00024 GLWCheckBoxI::~GLWCheckBoxI()
00025 {
00026
00027 }
00028
00029 REGISTER_CLASS_SOURCE(GLWCheckBox);
00030
00031 GLWCheckBox::GLWCheckBox(float x, float y, bool startState) :
00032 GLWidget(x, y, 20.0f, 20.0f), state_(startState), handler_(0)
00033 {
00034 }
00035
00036 GLWCheckBox::~GLWCheckBox()
00037 {
00038 }
00039
00040 void GLWCheckBox::setHandler(GLWCheckBoxI *handler)
00041 {
00042 handler_ = handler;
00043 }
00044
00045 void GLWCheckBox::draw()
00046 {
00047 float halfW = h_ / 2.0f;
00048 glLineWidth(1.0f);
00049 glBegin(GL_LINE_LOOP);
00050 drawShadedRoundBox(x_, y_, w_, h_, halfW, false);
00051 glEnd();
00052
00053 if (state_)
00054 {
00055
00056 glColor3f(0.2f, 0.2f, 0.2f);
00057 glBegin(GL_TRIANGLE_FAN);
00058 glVertex2f(x_ + halfW, y_ + halfW);
00059 drawCircle(16, -1, x_ + halfW, y_ + halfW, halfW - 3.0f);
00060 glEnd();
00061 }
00062 GLWidget::draw();
00063 }
00064
00065 void GLWCheckBox::mouseDown(int button, float x, float y, bool &skipRest)
00066 {
00067 if (x > x_ && x<x_+w_ &&
00068 y > y_ && y<y_+h_)
00069 {
00070 state_ = !state_;
00071 skipRest = true;
00072 if (handler_) handler_->stateChange(state_, getId());
00073 }
00074 GLWidget::mouseDown(button, x, y, skipRest);
00075 }