Crazy Eddies GUI System: CEGUITreeItem.h Source File

Crazy Eddies GUI System 0.7.6

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

- File List

CEGUITreeItem.h

    00001 /***********************************************************************
    00002     filename:  CEGUITreeItem.h
    00003     created:   5-13-07
    00004     author:    Jonathan Welch (Based on Code by David Durant)
    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 _CEGUITreeItem_h_
    00029 #define _CEGUITreeItem_h_
    00030
    00031 #include "../CEGUIBase.h"
    00032 #include "../CEGUIString.h"
    00033 #include "../CEGUIColourRect.h"
    00034 #include "../CEGUIBasicRenderedStringParser.h"
    00035
    00036 #if defined(_MSC_VER)
    00037 #   pragma warning(push)
    00038 #   pragma warning(disable : 4251)
    00039 #endif
    00040
    00041 // Start of CEGUI namespace section
    00042 namespace CEGUI
    00043 {
    00058 class CEGUIEXPORT TreeItem
    00059 {
    00060 public:
    00061     typedef std::vector<TreeItem*>  LBItemList;
    00062
    00063     /*************************************************************************
    00064         Constants
    00065      *************************************************************************/
    00067     static const colour DefaultTextColour;
    00069     static const colour DefaultSelectionColour;
    00070
    00071     /*************************************************************************
    00072         Construction and Destruction
    00073      *************************************************************************/
    00078     TreeItem(const String& text, uint item_id = 0, void* item_data = 0,
    00079              bool disabled = false, bool auto_delete = true);
    00080
    00085     virtual ~TreeItem(void);
    00086
    00087     /*************************************************************************
    00088         Accessors
    00089      *************************************************************************/
    00100     Font* getFont(void) const;
    00101
    00109     ColourRect getTextColours(void) const
    00110     { return d_textCols; }
    00111
    00112     /*************************************************************************
    00113         Manipulator methods
    00114      *************************************************************************/
    00125     void setFont(Font* font);
    00126
    00138     void setFont(const String& font_name);
    00139
    00150     void setTextColours(const ColourRect& cols)
    00151     { d_textCols = cols; d_renderedStringValid = false; }
    00152
    00176     void setTextColours(colour top_left_colour, colour top_right_colour,
    00177                         colour bottom_left_colour, colour bottom_right_colour);
    00178
    00189     void setTextColours(colour col)
    00190     { setTextColours(col, col, col, col); }
    00191
    00202     const String& getText() const {return d_textLogical;}
    00203
    00205     const String& getTextVisual() const;
    00206
    00215     const String& getTooltipText(void) const
    00216     { return d_tooltipText; }
    00217
    00228     uint getID(void) const
    00229     { return d_itemID; }
    00230
    00242     void* getUserData(void) const
    00243     { return d_itemData; }
    00244
    00253     bool isSelected(void) const
    00254     { return d_selected; }
    00255
    00264     bool isDisabled(void) const
    00265     { return d_disabled; }
    00266
    00280     bool isAutoDeleted(void) const
    00281     { return d_autoDelete; }
    00282
    00293     const Window* getOwnerWindow(void)
    00294     { return d_owner; }
    00295
    00303     ColourRect getSelectionColours(void) const
    00304     { return d_selectCols; }
    00305
    00306
    00314     const Image* getSelectionBrushImage(void) const
    00315     { return d_selectBrush; }
    00316
    00317
    00318     /*************************************************************************
    00319         Manipulators
    00320      *************************************************************************/
    00334     void setText(const String& text);
    00335
    00347     void setTooltipText(const String& text)
    00348     { d_tooltipText = text; }
    00349
    00363     void setID(uint item_id)
    00364     { d_itemID = item_id; }
    00365
    00379     void setUserData(void* item_data)
    00380     { d_itemData = item_data; }
    00381
    00393     void setSelected(bool setting)
    00394     { d_selected = setting; }
    00395
    00407     void setDisabled(bool setting)
    00408     { d_disabled = setting; }
    00409
    00425     void setAutoDeleted(bool setting)
    00426     { d_autoDelete = setting; }
    00427
    00440     void setOwnerWindow(const Window* owner)
    00441     { d_owner = owner; }
    00442
    00453     void setSelectionColours(const ColourRect& cols)
    00454     { d_selectCols = cols; }
    00455
    00456
    00480     void setSelectionColours(colour top_left_colour,
    00481                              colour top_right_colour,
    00482                              colour bottom_left_colour,
    00483                              colour bottom_right_colour);
    00484
    00495     void setSelectionColours(colour col)
    00496     { setSelectionColours(col, col, col, col); }
    00497
    00498
    00509     void setSelectionBrushImage(const Image* image)
    00510     { d_selectBrush = image; }
    00511
    00512
    00526     void setSelectionBrushImage(const String& imageset, const String& image);
    00527
    00536     void setButtonLocation(Rect &buttonOffset)
    00537     { d_buttonLocation = buttonOffset; }
    00538
    00539     Rect &getButtonLocation(void)
    00540     { return d_buttonLocation; }
    00541
    00542     bool getIsOpen(void)
    00543     { return d_isOpen; }
    00544
    00545     void toggleIsOpen(void)
    00546     { d_isOpen = !d_isOpen; }
    00547
    00548     TreeItem *getTreeItemFromIndex(size_t itemIndex);
    00549
    00550     size_t getItemCount(void) const
    00551     { return d_listItems.size(); }
    00552
    00553     LBItemList &getItemList(void)
    00554     { return d_listItems; }
    00555
    00556     void addItem(TreeItem* item);
    00557     void removeItem(const TreeItem* item);
    00558
    00559     void setIcon(const Image &theIcon)
    00560     { d_iconImage = (Image *) & theIcon; }
    00561
    00562     /*************************************************************************
    00563         Abstract portion of interface
    00564      *************************************************************************/
    00572     virtual Size getPixelSize(void) const;
    00573
    00591     virtual void draw(GeometryBuffer& buffer, const Rect& targetRect,
    00592                       float alpha, const Rect* clipper) const;
    00593
    00594     /*************************************************************************
    00595         Operators
    00596      *************************************************************************/
    00601     virtual bool operator<(const TreeItem& rhs) const
    00602     { return getText() < rhs.getText(); }
    00603
    00608     virtual bool operator>(const TreeItem& rhs) const
    00609     { return getText() > rhs.getText(); }
    00610
    00611 protected:
    00612     /*************************************************************************
    00613         Implementation methods
    00614      *************************************************************************/
    00620     ColourRect getModulateAlphaColourRect(const ColourRect& cols,
    00621                                           float alpha) const;
    00622
    00628     colour calculateModulatedAlphaColour(colour col, float alpha) const;
    00629
    00631     void parseTextString() const;
    00632
    00633     /*************************************************************************
    00634         Implementation Data
    00635      *************************************************************************/
    00637     String               d_textLogical;
    00638
    00639     BiDiVisualMapping* d_bidiVisualMapping;
    00641     mutable bool d_bidiDataValid;
    00643     String d_tooltipText;
    00645     uint d_itemID;
    00647     void* d_itemData;
    00649     bool d_selected;
    00651     bool d_disabled;
    00653     bool d_autoDelete;
    00655     Rect d_buttonLocation;
    00657     const Window* d_owner;
    00659     ColourRect d_selectCols;
    00661     const Image* d_selectBrush;
    00663     ColourRect d_textCols;
    00665     Font* d_font;
    00667     Image* d_iconImage;
    00669     LBItemList d_listItems;
    00671     bool d_isOpen;
    00673     static BasicRenderedStringParser d_stringParser;
    00675     mutable RenderedString  d_renderedString;
    00677     mutable bool d_renderedStringValid;
    00678 };
    00679
    00680 } // End of  CEGUI namespace section
    00681
    00682 #if defined(_MSC_VER)
    00683 #   pragma warning(pop)
    00684 #endif
    00685
    00686 #endif   // end of guard _CEGUITreeItem_h_