Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

CEGUIFalDimensions.h

Go to the documentation of this file.
00001 /************************************************************************
00002     filename:   CEGUIFalDimensions.h
00003     created:    Mon Jun 13 2005
00004     author:     Paul D Turner <paul@cegui.org.uk>
00005 *************************************************************************/
00006 /*************************************************************************
00007     Crazy Eddie's GUI System (http://www.cegui.org.uk)
00008     Copyright (C)2004 - 2005 Paul D Turner (paul@cegui.org.uk)
00009  
00010     This library is free software; you can redistribute it and/or
00011     modify it under the terms of the GNU Lesser General Public
00012     License as published by the Free Software Foundation; either
00013     version 2.1 of the License, or (at your option) any later version.
00014  
00015     This library is distributed in the hope that it will be useful,
00016     but WITHOUT ANY WARRANTY; without even the implied warranty of
00017     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00018     Lesser General Public License for more details.
00019  
00020     You should have received a copy of the GNU Lesser General Public
00021     License along with this library; if not, write to the Free Software
00022     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00023 *************************************************************************/
00024 #ifndef _CEGUIFalDimensions_h_
00025 #define _CEGUIFalDimensions_h_
00026 
00027 #include "falagard/CEGUIFalEnums.h"
00028 #include "CEGUIString.h"
00029 #include "CEGUIUDim.h"
00030 
00031 // Start of CEGUI namespace section
00032 namespace CEGUI
00033 {
00038     class CEGUIEXPORT BaseDim
00039     {
00040     public:
00041         BaseDim();
00042 
00043         virtual ~BaseDim();
00044 
00056         float getValue(const Window& wnd) const;
00057 
00075         float getValue(const Window& wnd, const Rect& container) const;
00076 
00089         BaseDim* clone() const;
00090 
00099         DimensionOperator getDimensionOperator() const;
00100 
00112         void setDimensionOperator(DimensionOperator op);
00113 
00121         const BaseDim* getOperand() const;
00122 
00134         void setOperand(const BaseDim& operand);
00135 
00146         void writeXMLToStream(OutStream& out_stream) const;
00147 
00148     protected:
00154         virtual float getValue_impl(const Window& wnd) const = 0;
00155 
00161         virtual float getValue_impl(const Window& wnd, const Rect& container) const = 0;
00162 
00169         virtual BaseDim* clone_impl() const = 0;
00170 
00177         virtual void writeXMLElementName_impl(OutStream& out_stream) const = 0;
00178 
00185         virtual void writeXMLElementAttributes_impl(OutStream& out_stream) const = 0;
00186 
00187     private:
00188         DimensionOperator   d_operator;
00189         BaseDim*            d_operand;
00190     };
00191 
00192 
00197     class CEGUIEXPORT AbsoluteDim : public BaseDim
00198     {
00199     public:
00207         AbsoluteDim(float val);
00208 
00213         void setValue(float val);
00214 
00215     protected:
00216         // Implementation of the base class interface
00217         float getValue_impl(const Window& wnd) const;
00218         float getValue_impl(const Window& wnd, const Rect& container) const;
00219         void writeXMLElementName_impl(OutStream& out_stream) const;
00220         void writeXMLElementAttributes_impl(OutStream& out_stream) const;
00221 
00222         BaseDim* clone_impl() const;
00223 
00224     private:
00225         float d_val;    
00226     };
00227 
00228 
00233     class CEGUIEXPORT ImageDim : public BaseDim
00234     {
00235     public:
00250         ImageDim(const String& imageset, const String& image, DimensionType dim);
00251 
00265         void setSourceImage(const String& imageset, const String& image);
00266 
00278         void setSourceDimension(DimensionType dim);
00279 
00280     protected:
00281         // Implementation of the base class interface
00282         float getValue_impl(const Window& wnd) const;
00283         float getValue_impl(const Window& wnd, const Rect& container) const;
00284         void writeXMLElementName_impl(OutStream& out_stream) const;
00285         void writeXMLElementAttributes_impl(OutStream& out_stream) const;
00286         BaseDim* clone_impl() const;
00287 
00288     private:
00289         String d_imageset;      
00290         String d_image;         
00291         DimensionType d_what;   
00292     };
00293 
00294 
00304     class CEGUIEXPORT WidgetDim : public BaseDim
00305     {
00306     public:
00318         WidgetDim(const String& name, DimensionType dim);
00319 
00330         void setWidgetName(const String& name);
00331 
00343         void setSourceDimension(DimensionType dim);
00344 
00345     protected:
00346         // Implementation of the base class interface
00347         float getValue_impl(const Window& wnd) const;
00348         float getValue_impl(const Window& wnd, const Rect& container) const;
00349         void writeXMLElementName_impl(OutStream& out_stream) const;
00350         void writeXMLElementAttributes_impl(OutStream& out_stream) const;
00351         BaseDim* clone_impl() const;
00352 
00353     private:
00354         String d_widgetName;    
00355         DimensionType d_what;   
00356     };
00357 
00358 
00363     class CEGUIEXPORT UnifiedDim : public BaseDim
00364     {
00365     public:
00378         UnifiedDim(const UDim& value, DimensionType dim);
00379 
00380     protected:
00381         // Implementation of the base class interface
00382         float getValue_impl(const Window& wnd) const;
00383         float getValue_impl(const Window& wnd, const Rect& container) const;
00384         void writeXMLElementName_impl(OutStream& out_stream) const;
00385         void writeXMLElementAttributes_impl(OutStream& out_stream) const;
00386         BaseDim* clone_impl() const;
00387 
00388     private:
00389         UDim d_value;           
00390         DimensionType d_what;   
00391     };
00392 
00397     class CEGUIEXPORT FontDim : public BaseDim
00398     {
00399     public:
00422         FontDim(const String& name, const String& font, const String& text, FontMetricType metric, float padding = 0);
00423 
00424     protected:
00425         // Implementation of the base class interface
00426         float getValue_impl(const Window& wnd) const;
00427         float getValue_impl(const Window& wnd, const Rect& container) const;
00428         void writeXMLElementName_impl(OutStream& out_stream) const;
00429         void writeXMLElementAttributes_impl(OutStream& out_stream) const;
00430         BaseDim* clone_impl() const;
00431 
00432     private:
00433         String  d_font;          
00434         String  d_text;          
00435         String  d_childSuffix;   
00436         FontMetricType d_metric; 
00437         float   d_padding;       
00438     };
00439 
00444     class CEGUIEXPORT PropertyDim : public BaseDim
00445     {
00446     public:
00458         PropertyDim(const String& name, const String& property);
00459 
00460     protected:
00461         // Implementation of the base class interface
00462         float getValue_impl(const Window& wnd) const;
00463         float getValue_impl(const Window& wnd, const Rect& container) const;
00464         void writeXMLElementName_impl(OutStream& out_stream) const;
00465         void writeXMLElementAttributes_impl(OutStream& out_stream) const;
00466         BaseDim* clone_impl() const;
00467 
00468     private:
00469         String d_property;      
00470         String  d_childSuffix;  
00471     };
00472 
00481     class CEGUIEXPORT Dimension
00482     {
00483     public:
00488         Dimension();
00489 
00494         ~Dimension();
00495 
00506         Dimension(const BaseDim& dim, DimensionType type);
00507 
00512         Dimension(const Dimension& other);
00513 
00518         Dimension& operator=(const Dimension& other);
00519 
00527         const BaseDim& getBaseDimension() const;
00528 
00539         void setBaseDimension(const BaseDim& dim);
00540 
00548         DimensionType getDimensionType() const;
00549 
00560         void setDimensionType(DimensionType type);
00561 
00572         void writeXMLToStream(OutStream& out_stream) const;
00573 
00574     private:
00575         BaseDim*        d_value;    
00576         DimensionType   d_type;     
00577     };
00578 
00579 
00589     class CEGUIEXPORT ComponentArea
00590     {
00591     public:
00603         Rect getPixelRect(const Window& wnd) const;
00604 
00619         Rect getPixelRect(const Window& wnd, const Rect& container) const;
00620 
00631         void writeXMLToStream(OutStream& out_stream) const;
00632 
00641         bool isAreaFetchedFromProperty() const;
00642 
00650         const String& getAreaPropertySource() const;
00651 
00662         void setAreaPropertySource(const String& property);
00663 
00664 
00665         Dimension d_left;   
00666         Dimension d_top;    
00667         Dimension d_right_or_width;     
00668         Dimension d_bottom_or_height;   
00669 
00670     private:
00671         String  d_areaProperty;         
00672     };
00673 
00674 } // End of  CEGUI namespace section
00675 
00676 
00677 #endif  // end of guard _CEGUIFalDimensions_h_

Generated on Wed Sep 7 09:56:31 2005 for Crazy Eddies GUI System by  doxygen 1.4.3