GLWCheckBox.cpp

Go to the documentation of this file.
00001 ////////////////////////////////////////////////////////////////////////////////
00002 //    Scorched3D (c) 2000-2009
00003 //
00004 //    This file is part of Scorched3D.
00005 //
00006 //    Scorched3D is free software; you can redistribute it and/or modify
00007 //    it under the terms of the GNU General Public License as published by
00008 //    the Free Software Foundation; either version 2 of the License, or
00009 //    (at your option) any later version.
00010 //
00011 //    Scorched3D is distributed in the hope that it will be useful,
00012 //    but WITHOUT ANY WARRANTY; without even the implied warranty of
00013 //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00014 //    GNU General Public License for more details.
00015 //
00016 //    You should have received a copy of the GNU General Public License
00017 //    along with Scorched3D; if not, write to the Free Software
00018 //    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
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                 // Draw check mark
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 }

Generated on Mon Feb 16 15:14:45 2009 for Scorched3D by  doxygen 1.5.3