src/GUILabel.cpp

Go to the documentation of this file.
00001 #include "glwx.h"
00002 
00003 GUILabel::GUILabel(const std::string &ls,
00004                    const std::string &callback) :  GUIAlphaElement(callback)
00005 {
00006   setDimensions(40, 5);
00007   setLabelString(ls);
00008   widgetType = WT_LABEL;
00009 }
00010 
00011 bool GUILabel::loadXMLSettings(const TiXmlElement *element)
00012 {
00013   if(!XMLArbiter::inspectElementInfo(element, "Label"))
00014     return Logger::writeErrorLog("Need a Label node in the xml file");
00015 
00016   return  GUIAlphaElement::loadXMLSettings(element);
00017 }
00018 
00019 void GUILabel::render(float clockTick)
00020 {
00021   if(!parent || !visible)
00022     return;
00023 
00024   Tuple2i center = getCenter();
00025 
00026   if(label.needUpdating())
00027     parent->forceUpdate(true);
00028 
00029   switch(anchor)
00030   {
00031     case AT_CORNERLU: label.print(windowBounds.x, windowBounds.y); break;
00032     case AT_CORNERLD: label.print(windowBounds.x, windowBounds.y - label.getHeight()); break;
00033     case AT_CORNERRU: label.print(windowBounds.z, windowBounds.y); break;
00034     case AT_CORNERRD: label.print(windowBounds.z, windowBounds.y - label.getHeight()); break;
00035     default: label.printCenteredXY(center.x, center.y);
00036   }
00037 }
00038 
00039 const Tuple4i &GUILabel::getWindowBounds()
00040 {
00041   if(parent && update)
00042   {
00043     int height       = 0,
00044         width        = 0;
00045     label.computeDimensions();
00046 
00047     if(dimensions.x > 1)
00048       width  = dimensions.x  < label.getWidth() ? label.getWidth() : (int)dimensions.x;
00049     else
00050       width  = getWidth()    < label.getWidth() ? label.getWidth() : getWidth();
00051  
00052     if(dimensions.x > 1)
00053       height  = dimensions.y  < label.getHeight() ? label.getHeight() : (int)dimensions.y;
00054     else
00055       height  = getHeight()   < label.getHeight() ? label.getHeight() : getHeight();
00056 
00057     dimensions.set(float(width),  float(height));
00058     GUIRectangle::computeWindowBounds();
00059   }
00060   return windowBounds;
00061 }

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