00001
00002
00003
00004
00005
00006
00007 #include "QLookAndFeel.h"
00008 #include "tga.h"
00009 #include <GL/glut.h>
00010 #include <iostream>
00011 using namespace std;
00012
00013
00014
00015
00016 void QLookAndFeel::drawBevel( float x , float y , float w , float h , QBevelState state )
00017 {
00018 glBegin(GL_LINES);
00019 switch (state)
00020 {
00021 case bsUp: BevelRaisedColor->setAsCurrent();
00022 break;
00023 case bsDown:BevelLoweredColor->setAsCurrent();
00024 break;
00025 case bsDisabled : BevelDisabledColor->setAsCurrent();
00026 break;
00027 }
00028
00029
00030 glVertex2f(x,y+h);
00031 glVertex2f(x,y);
00032
00033 glVertex2f(x,y);
00034 glVertex2f(x+w,y);
00035
00036 switch (state)
00037 {
00038 case bsDown: BevelRaisedColor->setAsCurrent();
00039 break;
00040 case bsUp: BevelLoweredColor->setAsCurrent();
00041 break;
00042 case bsDisabled : BevelDisabledColor->setAsCurrent();
00043 break;
00044 }
00045
00046 glVertex2f(x+w,y);
00047 glVertex2f(x+w,y+h);
00048
00049 glVertex2f(x+w,y+h);
00050 glVertex2f(x,y+h);
00051
00052 glEnd();
00053 }
00054
00055
00056 void QLookAndFeel::drawRect( float x , float y , float w , float h )
00057 {
00058 glVertex2f(x,y+h);
00059 glVertex2f(x,y);
00060 glVertex2f(x+w,y);
00061 glVertex2f(x+w,y+h);
00062 }
00063
00064
00065 void QLookAndFeel::drawTexture( unsigned int texID , int width , int height )
00066 {
00067 glEnable(GL_BLEND);
00068 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
00069
00070 glEnable(GL_TEXTURE_2D);
00071 glBindTexture(GL_TEXTURE_2D, texID);
00072 glBegin(GL_QUADS);
00073 glTexCoord2f(0.0, 0.0); glVertex2i(0, height);
00074 glTexCoord2f(0.0, 1.0); glVertex2i(0, 0);
00075 glTexCoord2f(1.0, 1.0); glVertex2i(width, 0);
00076 glTexCoord2f(1.0, 0.0); glVertex2i(width, height);
00077 glEnd();
00078 glDisable(GL_TEXTURE_2D);
00079
00080 glDisable(GL_BLEND);
00081 }
00082
00083
00084 void QLookAndFeel::drawCheckBox( bool checked )
00085 {
00086 BackGroundColor->setAsCurrent();
00087 if (checked)
00088 drawTexture(CheckBoxCheckedTexID,16,16);
00089 else
00090 drawTexture(CheckBoxTexID,16,16);
00091 }
00092
00093
00094 void QLookAndFeel::drawRadioButton( bool checked )
00095 {
00096 BackGroundColor->setAsCurrent();
00097 if (checked)
00098 {
00099 drawTexture(RadioButtonCheckedTexID,16,16);
00100 }
00101 else
00102 {
00103 drawTexture(RadioButtonTexID,16,16);
00104 }
00105 }
00106
00107
00108 void QLookAndFeel::drawCloseButton( bool down , int width , int height )
00109 {
00110 if (down)
00111 drawTexture(CloseButtonDownTexID,width,height);
00112 else
00113 drawTexture(CloseButtonTexID,width,height);
00114 }
00115
00116
00117 void QLookAndFeel::drawMaximizeButton( bool down , int width , int height )
00118 {
00119 if (down)
00120 drawTexture(MaximizeButtonDownTexID,width,height);
00121 else
00122 drawTexture(MaximizeButtonTexID,width,height);
00123 }
00124
00125
00126 void QLookAndFeel::Init()
00127 {
00128
00129 Font->getColor()->set(0,0,0,1);
00130 Font->setSize(16);
00131 BackGroundColor->set(0.8,0.8,0.8,1);
00132 BevelLoweredColor->set(0.5,0.5,0.5,1);
00133 BevelRaisedColor->set(1,1,1,1);
00134 BevelDisabledColor->set(0.7,0.7,0.7,1);
00135 HighlightColor->set(198.0/255.0,245.0/255.0,1.0,1.0);
00136 DisabledColor->set(0.5,0.5,0.5,1.0);
00137
00138 CheckBoxTexID = createTexture("checkbox.tga");
00139 CheckBoxCheckedTexID = createTexture("checkboxchecked.tga");
00140 RadioButtonTexID = createTexture("radio.tga");
00141 RadioButtonCheckedTexID = createTexture("radiochecked.tga");
00142 CloseButtonTexID = createTexture("closebutton.tga");
00143 CloseButtonDownTexID = createTexture("closebutton_down.tga");
00144 MaximizeButtonTexID = createTexture("maximizebutton.tga");
00145 MaximizeButtonDownTexID = createTexture("maximizebutton_down.tga");
00146 }
00147
00148
00149 void QLookAndFeel::CleanUp()
00150 {
00151 glDeleteTextures(1,&CheckBoxTexID);
00152 glDeleteTextures(1,&CheckBoxCheckedTexID);
00153 glDeleteTextures(1,&RadioButtonTexID);
00154 glDeleteTextures(1,&RadioButtonCheckedTexID);
00155 glDeleteTextures(1,&CloseButtonTexID);
00156 glDeleteTextures(1,&CloseButtonDownTexID);
00157 glDeleteTextures(1,&MaximizeButtonTexID);
00158 glDeleteTextures(1,&MaximizeButtonDownTexID);
00159
00160 }
00161
00162
00163 QColor* QLookAndFeel::getBackGroundColor()
00164 {
00165 return BackGroundColor;
00166 }
00167
00168
00169 QColor* QLookAndFeel::getDisabledColor()
00170 {
00171 return DisabledColor;
00172 }
00173
00174
00175 QColor* QLookAndFeel::getBevelRaisedColor()
00176 {
00177 return BevelRaisedColor;
00178 }
00179
00180
00181 QColor* QLookAndFeel::getBevelLoweredColor()
00182 {
00183 return BevelLoweredColor;
00184 }
00185
00186
00187 QColor* QLookAndFeel::getBevelDisabledColor()
00188 {
00189 return BevelDisabledColor;
00190 }
00191
00192
00193 QColor* QLookAndFeel::getHighlightColor()
00194 {
00195 return HighlightColor;
00196 }
00197
00198
00199 QFont* QLookAndFeel::getFont()
00200 {
00201 return Font;
00202 }
00203
00204
00205
00206
00207 void QLookAndFeel::print()
00208 {
00209 cout << "Class : QLookAndFeel" << endl;
00210 }
00211
00212
00213
00214
00215 QLookAndFeel::QLookAndFeel( )
00216 {
00217 CheckBoxTexID = 0;
00218 CheckBoxCheckedTexID = 0;
00219 RadioButtonCheckedTexID = 0;
00220 RadioButtonTexID = 0;
00221 CloseButtonTexID = 0;
00222 CloseButtonDownTexID = 0;
00223 MaximizeButtonTexID = 0;
00224 MaximizeButtonDownTexID = 0;
00225 RestoreButtonTexID = 0;
00226 RestoreButtonDownTexID = 0;
00227 MinimizeButtonTexID = 0;
00228 MinimizeButtonDownTexID = 0;
00229 BackGroundColor = new QColor;
00230 DisabledColor = new QColor;
00231 BevelRaisedColor = new QColor;
00232 BevelLoweredColor = new QColor;
00233 BevelDisabledColor = new QColor;
00234 HighlightColor = new QColor;
00235 Font = new QFont;
00236 Init();
00237 }
00238
00239
00240
00241
00242 QLookAndFeel::~QLookAndFeel()
00243 {
00244 delete Font;
00245 delete HighlightColor;
00246 delete BevelDisabledColor;
00247 delete BevelLoweredColor;
00248 delete BevelRaisedColor;
00249 delete DisabledColor;
00250 delete BackGroundColor;
00251 CleanUp();
00252 }
00253
00254
00255
00256