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