src/GUITexCoordDescriptor.cpp

Go to the documentation of this file.
00001 #include "glwx.h"
00002 
00003 Tuple2i textureGUIDimensions(256,256);
00004 
00005 void GUITexCoordDescriptor::setTextureWidth(int width)
00006 {
00007   textureGUIDimensions.x = clamp(width, 8, 1024);
00008 }
00009 
00010 void GUITexCoordDescriptor::setTextureHeight(int height)
00011 {  
00012   textureGUIDimensions.y = clamp(height, 8, 1024);
00013 }
00014 
00015 GUITexCoordDescriptor::GUITexCoordDescriptor(int widgetTypeArg)
00016 {
00017   texCoords.set(0.0f,0.0f,1.0f,1.0f);
00018   widgetType = widgetTypeArg;
00019 }
00020 
00021 GUITexCoordDescriptor::GUITexCoordDescriptor(const GUITexCoordDescriptor &copy)
00022 {
00023   this->operator=(copy);
00024 }
00025 
00026 GUITexCoordDescriptor &GUITexCoordDescriptor::operator =(const GUITexCoordDescriptor &copy)
00027 {
00028 
00029   if(this != &copy)
00030   {
00031     texCoords  = copy.texCoords;
00032     widgetType = copy.widgetType;
00033   } 
00034   return *this;
00035 }
00036 
00037 void GUITexCoordDescriptor::setType(int type)
00038 {
00039   switch(type)
00040   {
00041     case WT_SLIDER :
00042     case WT_BUTTON:
00043     case WT_CHECK_BOX:
00044     case WT_CHECK_BOX_MARK:
00045     case WT_RADIO_BUTTON:
00046     case WT_CHECK_RB_MARK:
00047       widgetType = type;
00048     break;
00049     default: widgetType = WT_UNKNOWN;
00050   }
00051 }
00052 
00053 void GUITexCoordDescriptor::setType(const std::string &type)
00054 {
00055   if(!type.size())
00056   {
00057     Logger::writeErrorLog("NULL GUITexCoordDescriptor type");
00058     return;
00059   }
00060 
00061   if(type == "MATERIAL_SURFACE"){ widgetType = WT_MATERIAL_SURFACE; return; }
00062   if(type == "CHECK_BOX_MARK")  { widgetType = WT_CHECK_BOX_MARK;   return; }
00063   if(type == "CHECK_RB_MARK")   { widgetType = WT_CHECK_RB_MARK;    return; }
00064   if(type == "RADIO_BUTTON")    { widgetType = WT_RADIO_BUTTON;     return; }
00065   if(type == "SEPARATOR")       { widgetType = WT_SEPARATOR;        return; }
00066   if(type == "CHECK_BOX")       { widgetType = WT_CHECK_BOX;        return; }
00067   if(type == "TEXT_AREA")       { widgetType = WT_TEXT_AREA;        return; }
00068   if(type == "BUTTON")          { widgetType = WT_BUTTON;           return; }
00069   if(type == "SLIDER")          { widgetType = WT_SLIDER;           return; }
00070   if(type == "PANEL")           { widgetType = WT_PANEL;            return; }
00071   if(type == "LABEL")           { widgetType = WT_LABEL;            return; }
00072 
00073   Logger::writeErrorLog(std::string("Unknow GUITexCoordDescriptor type -> ") + type);
00074   widgetType = WT_UNKNOWN;
00075 }
00076 
00077 int GUITexCoordDescriptor::getType()
00078 {
00079   return widgetType;
00080 }
00081 
00082 void GUITexCoordDescriptor::loadXMLSettings(const TiXmlElement *element)
00083 {
00084   if(!XMLArbiter::inspectElementInfo(element, "TexCoordsDesc"))
00085     return;
00086 
00087   std::string name;
00088   int         xStart        = 0,
00089               yStart        = 0,
00090               xEnd          = 0,
00091               yEnd          = 0;
00092 
00093   xStart = XMLArbiter::fillComponents1i(element, "xStart", xStart);
00094   yStart = XMLArbiter::fillComponents1i(element, "yStart", yStart);
00095  
00096   xEnd = XMLArbiter::fillComponents1i(element, "xEnd", xEnd);
00097   yEnd = XMLArbiter::fillComponents1i(element, "yEnd", yEnd);
00098    
00099   setTexCoords(xStart/float(textureGUIDimensions.x), yStart/float(textureGUIDimensions.y),
00100                xEnd  /float(textureGUIDimensions.x), yEnd  /float(textureGUIDimensions.y));
00101   setType(element->Attribute("type"));
00102 }
00103 
00104 int GUITexCoordDescriptor::getTextureWidth()
00105 {
00106   return textureGUIDimensions.x;
00107 }
00108 
00109 int GUITexCoordDescriptor::getTextureHeight()
00110 {
00111   return textureGUIDimensions.y;
00112 }
00113 
00114 void GUITexCoordDescriptor::setTexCoords(float x, float y, float z, float w)
00115 {
00116   texCoords.set(clamp(x,0.0f, 1.0f), clamp(y,0.0f, 1.0f),
00117                 clamp(z,0.0f, 1.0f), clamp(w,0.0f, 1.0f));
00118 }
00119 
00120 void GUITexCoordDescriptor::setTexCoords(const Tuple4f& texCoordsArg)
00121 {
00122   texCoords =  texCoordsArg;
00123 };
00124 
00125 const Tuple4f &GUITexCoordDescriptor::getTexCoords()
00126 {
00127   return texCoords;
00128 }

Generated on Wed Dec 5 20:32:03 2007 for GLWX by  doxygen 1.5.3