Crazy Eddies GUI System: CEGUIFalagard_xmlHandler.h Source File

Crazy Eddies GUI System 0.7.6

- Main Page
- Related Pages
- Namespaces
- Classes
- Files

- File List

CEGUIFalagard_xmlHandler.h

    00001 /***********************************************************************
    00002     filename:   CEGUIFalagard_xmlHandler.h
    00003     created:    Fri Jun 17 2005
    00004     author:     Paul D Turner <paul@cegui.org.uk>
    00005 *************************************************************************/
    00006 /***************************************************************************
    00007  *   Copyright (C) 2004 - 2006 Paul D Turner & The CEGUI Development Team
    00008  *
    00009  *   Permission is hereby granted, free of charge, to any person obtaining
    00010  *   a copy of this software and associated documentation files (the
    00011  *   "Software"), to deal in the Software without restriction, including
    00012  *   without limitation the rights to use, copy, modify, merge, publish,
    00013  *   distribute, sublicense, and/or sell copies of the Software, and to
    00014  *   permit persons to whom the Software is furnished to do so, subject to
    00015  *   the following conditions:
    00016  *
    00017  *   The above copyright notice and this permission notice shall be
    00018  *   included in all copies or substantial portions of the Software.
    00019  *
    00020  *   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
    00021  *   EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
    00022  *   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
    00023  *   IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
    00024  *   OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
    00025  *   ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
    00026  *   OTHER DEALINGS IN THE SOFTWARE.
    00027  ***************************************************************************/
    00028 #ifndef _CEGUIFalagard_xmlHandler_h_
    00029 #define _CEGUIFalagard_xmlHandler_h_
    00030
    00031 #include "../CEGUIChainedXMLHandler.h"
    00032 #include "../CEGUIcolour.h"
    00033 #include "CEGUIFalDimensions.h"
    00034 #include "../CEGUIWindow.h"
    00035 #include <vector>
    00036
    00037 // Start of CEGUI namespace section
    00038 namespace CEGUI
    00039 {
    00040     // forward refs
    00041     class WidgetLookManager;
    00042     class WidgetLookFeel;
    00043     class WidgetComponent;
    00044     class ImagerySection;
    00045     class StateImagery;
    00046     class LayerSpecification;
    00047     class SectionSpecification;
    00048     class ImageryComponent;
    00049     class ComponentArea;
    00050     class Dimension;
    00051     class TextComponent;
    00052     class NamedArea;
    00053     class FrameComponent;
    00054     class PropertyLinkDefinition;
    00055
    00060     class Falagard_xmlHandler : public ChainedXMLHandler
    00061     {
    00062     public:
    00067         Falagard_xmlHandler(WidgetLookManager* mgr);
    00068
    00073         ~Falagard_xmlHandler();
    00074
    00075     protected:
    00076         /*************************************************************************
    00077             ChainedXMLHandler base class overrides
    00078         *************************************************************************/
    00079         void elementStartLocal(const String& element,
    00080                                const XMLAttributes& attributes);
    00081         void elementEndLocal(const String& element);
    00082
    00083     private:
    00084         /*************************************************************************
    00085             Typedefs
    00086         *************************************************************************/
    00088         typedef void (Falagard_xmlHandler::*ElementStartHandler)(const XMLAttributes& attributes);
    00090         typedef void (Falagard_xmlHandler::*ElementEndHandler)();
    00092         typedef std::map<String, ElementStartHandler, String::FastLessCompare> ElementStartHandlerMap;
    00094         typedef std::map<String, ElementEndHandler, String::FastLessCompare> ElementEndHandlerMap;
    00095
    00096         /*************************************************************************
    00097             Implementation Constants
    00098         *************************************************************************/
    00099         // element names
    00100         static const String FalagardElement;
    00101         static const String WidgetLookElement;
    00102         static const String ChildElement;
    00103         static const String ImagerySectionElement;
    00104         static const String StateImageryElement;
    00105         static const String LayerElement;
    00106         static const String SectionElement;
    00107         static const String ImageryComponentElement;
    00108         static const String TextComponentElement;
    00109         static const String FrameComponentElement;
    00110         static const String AreaElement;
    00111         static const String ImageElement;
    00112         static const String ColoursElement;
    00113         static const String VertFormatElement;
    00114         static const String HorzFormatElement;
    00115         static const String VertAlignmentElement;
    00116         static const String HorzAlignmentElement;
    00117         static const String PropertyElement;
    00118                 static const String DimElement;
    00119                 static const String UnifiedDimElement;
    00120         static const String AbsoluteDimElement;
    00121         static const String ImageDimElement;
    00122         static const String WidgetDimElement;
    00123         static const String FontDimElement;
    00124         static const String PropertyDimElement;
    00125         static const String TextElement;
    00126         static const String ColourPropertyElement;
    00127         static const String ColourRectPropertyElement;
    00128         static const String NamedAreaElement;
    00129         static const String PropertyDefinitionElement;
    00130         static const String PropertyLinkDefinitionElement;
    00131         static const String PropertyLinkTargetElement;
    00132         static const String DimOperatorElement;
    00133         static const String VertFormatPropertyElement;
    00134         static const String HorzFormatPropertyElement;
    00135         static const String AreaPropertyElement;
    00136         static const String ImagePropertyElement;
    00137         static const String TextPropertyElement;
    00138         static const String FontPropertyElement;
    00139         static const String ColourElement;
    00140         // attribute names
    00141         static const String TopLeftAttribute;
    00142         static const String TopRightAttribute;
    00143         static const String BottomLeftAttribute;
    00144         static const String BottomRightAttribute;
    00145         static const String ImagesetAttribute;
    00146         static const String ImageAttribute;
    00147         static const String TypeAttribute;
    00148         static const String NameAttribute;
    00149         static const String PriorityAttribute;
    00150         static const String SectionNameAttribute;
    00151         static const String NameSuffixAttribute;
    00152         static const String RendererAttribute;
    00153         static const String LookAttribute;
    00154         static const String ScaleAttribute;
    00155         static const String OffsetAttribute;
    00156         static const String ValueAttribute;
    00157         static const String DimensionAttribute;
    00158         static const String WidgetAttribute;
    00159         static const String StringAttribute;
    00160         static const String FontAttribute;
    00161         static const String InitialValueAttribute;
    00162         static const String ClippedAttribute;
    00163         static const String OperatorAttribute;
    00164         static const String PaddingAttribute;
    00165         static const String LayoutOnWriteAttribute;
    00166         static const String RedrawOnWriteAttribute;
    00167         static const String TargetPropertyAttribute;
    00168         static const String ControlPropertyAttribute;
    00169         static const String ColourAttribute;
    00170         static const String PropertyAttribute;
    00171         static const String ControlValueAttribute;
    00172         static const String ControlWidgetAttribute;
    00173
    00174         static const String HelpStringAttribute;
    00175
    00176         /*************************************************************************
    00177             helper methods
    00178         **************************************************************************/
    00179         static argb_t hexStringToARGB(const String& str);
    00180
    00181         /*************************************************************************
    00182             implementation methods
    00183         **************************************************************************/
    00184         void assignAreaDimension(Dimension& dim);
    00185         void assignColours(const ColourRect& colours);
    00186
    00191         void doBaseDimStart(const BaseDim* dim);
    00192
    00197         void elementFalagardStart(const XMLAttributes& attributes);
    00198
    00203         void elementWidgetLookStart(const XMLAttributes& attributes);
    00204
    00209         void elementChildStart(const XMLAttributes& attributes);
    00210
    00215         void elementImagerySectionStart(const XMLAttributes& attributes);
    00216
    00221         void elementStateImageryStart(const XMLAttributes& attributes);
    00222
    00227         void elementLayerStart(const XMLAttributes& attributes);
    00228
    00233         void elementSectionStart(const XMLAttributes& attributes);
    00234
    00239         void elementImageryComponentStart(const XMLAttributes& attributes);
    00240
    00245         void elementTextComponentStart(const XMLAttributes& attributes);
    00246
    00251         void elementFrameComponentStart(const XMLAttributes& attributes);
    00252
    00257         void elementAreaStart(const XMLAttributes& attributes);
    00258
    00263         void elementImageStart(const XMLAttributes& attributes);
    00264
    00269         void elementColoursStart(const XMLAttributes& attributes);
    00270
    00275         void elementVertFormatStart(const XMLAttributes& attributes);
    00276
    00281         void elementHorzFormatStart(const XMLAttributes& attributes);
    00282
    00287         void elementVertAlignmentStart(const XMLAttributes& attributes);
    00288
    00293         void elementHorzAlignmentStart(const XMLAttributes& attributes);
    00294
    00299         void elementPropertyStart(const XMLAttributes& attributes);
    00300
    00305         void elementDimStart(const XMLAttributes& attributes);
    00306
    00311         void elementUnifiedDimStart(const XMLAttributes& attributes);
    00312
    00317         void elementAbsoluteDimStart(const XMLAttributes& attributes);
    00318
    00323         void elementImageDimStart(const XMLAttributes& attributes);
    00324
    00329         void elementWidgetDimStart(const XMLAttributes& attributes);
    00330
    00335         void elementFontDimStart(const XMLAttributes& attributes);
    00336
    00341         void elementPropertyDimStart(const XMLAttributes& attributes);
    00342
    00347         void elementTextStart(const XMLAttributes& attributes);
    00348
    00353         void elementColourPropertyStart(const XMLAttributes& attributes);
    00354
    00359         void elementColourRectPropertyStart(const XMLAttributes& attributes);
    00360
    00365         void elementNamedAreaStart(const XMLAttributes& attributes);
    00366
    00371         void elementPropertyDefinitionStart(const XMLAttributes& attributes);
    00372
    00377         void elementPropertyLinkDefinitionStart(const XMLAttributes& attributes);
    00378
    00383         void elementDimOperatorStart(const XMLAttributes& attributes);
    00384
    00389         void elementVertFormatPropertyStart(const XMLAttributes& attributes);
    00390
    00395         void elementHorzFormatPropertyStart(const XMLAttributes& attributes);
    00396
    00401         void elementAreaPropertyStart(const XMLAttributes& attributes);
    00402
    00407         void elementImagePropertyStart(const XMLAttributes& attributes);
    00408
    00413         void elementTextPropertyStart(const XMLAttributes& attributes);
    00414
    00419         void elementFontPropertyStart(const XMLAttributes& attributes);
    00420
    00425         void elementColourStart(const XMLAttributes& attributes);
    00426
    00428         void elementPropertyLinkTargetStart(const XMLAttributes& attributes);
    00429
    00431         void elementAnimationDefinitionStart(const XMLAttributes& attributes);
    00432
    00437         void elementFalagardEnd();
    00438
    00443         void elementWidgetLookEnd();
    00444
    00449         void elementChildEnd();
    00450
    00455         void elementImagerySectionEnd();
    00456
    00461         void elementStateImageryEnd();
    00462
    00467         void elementLayerEnd();
    00468
    00473         void elementSectionEnd();
    00474
    00479         void elementImageryComponentEnd();
    00480
    00485         void elementTextComponentEnd();
    00486
    00491         void elementFrameComponentEnd();
    00492
    00497         void elementAreaEnd();
    00498
    00503         void elementNamedAreaEnd();
    00504
    00509         void elementAnyDimEnd();
    00510
    00512         void elementPropertyLinkDefinitionEnd();
    00513
    00518         void registerElementStartHandler(const String& element, ElementStartHandler handler);
    00519
    00524         void registerElementEndHandler(const String& element, ElementEndHandler handler);
    00525
    00526         /*************************************************************************
    00527             Implementation Data
    00528         *************************************************************************/
    00529         WidgetLookManager* d_manager;
    00530
    00531         // these are used to implement the handler without using a huge
    00532         // if / else if /else construct, we just register the element name, and
    00533         // handler member function, and everything else is done using those
    00534         // mappings.
    00535         ElementStartHandlerMap  d_startHandlersMap;
    00536         ElementEndHandlerMap    d_endHandlersMap;
    00537
    00538         // these hold pointers to various objects under construction.
    00539         WidgetLookFeel*     d_widgetlook;
    00540         WidgetComponent*    d_childcomponent;
    00541         ImagerySection*     d_imagerysection;
    00542         StateImagery*       d_stateimagery;
    00543         LayerSpecification* d_layer;
    00544         SectionSpecification* d_section;
    00545         ImageryComponent*   d_imagerycomponent;
    00546         ComponentArea*   d_area;
    00547         Dimension       d_dimension;
    00548         TextComponent*  d_textcomponent;
    00549         NamedArea*      d_namedArea;
    00550         FrameComponent*  d_framecomponent;
    00551
    00552         std::vector<BaseDim*>    d_dimStack;
    00553
    00554         PropertyLinkDefinition* d_propertyLink;
    00555     };
    00556
    00557 } // End of  CEGUI namespace section
    00558
    00559
    00560 #endif  // end of guard _CEGUIFalagard_xmlHandler_h_
    00561