Crazy Eddie's GUI System  0.8.4
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Pages
TreeItem.h
1 /***********************************************************************
2  created: 5-13-07
3  author: Jonathan Welch (Based on Code by David Durant)
4  *************************************************************************/
5 /***************************************************************************
6  * Copyright (C) 2004 - 2006 Paul D Turner & The CEGUI Development Team
7  *
8  * Permission is hereby granted, free of charge, to any person obtaining
9  * a copy of this software and associated documentation files (the
10  * "Software"), to deal in the Software without restriction, including
11  * without limitation the rights to use, copy, modify, merge, publish,
12  * distribute, sublicense, and/or sell copies of the Software, and to
13  * permit persons to whom the Software is furnished to do so, subject to
14  * the following conditions:
15  *
16  * The above copyright notice and this permission notice shall be
17  * included in all copies or substantial portions of the Software.
18  *
19  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
20  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
21  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
22  * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
23  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
24  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
25  * OTHER DEALINGS IN THE SOFTWARE.
26  ***************************************************************************/
27 #ifndef _CEGUITreeItem_h_
28 #define _CEGUITreeItem_h_
29 
30 #include "../Base.h"
31 #include "../String.h"
32 #include "../ColourRect.h"
33 #include "../BasicRenderedStringParser.h"
34 
35 #if defined(_MSC_VER)
36 # pragma warning(push)
37 # pragma warning(disable : 4251)
38 #endif
39 
40 // Start of CEGUI namespace section
41 namespace CEGUI
42 {
57 class CEGUIEXPORT TreeItem : public
58  AllocatedObject<TreeItem>
59 {
60 public:
61  typedef std::vector<TreeItem*
62  CEGUI_VECTOR_ALLOC(TreeItem*)> LBItemList;
63 
64  /*************************************************************************
65  Constants
66  *************************************************************************/
68  static const Colour DefaultTextColour;
71 
72  /*************************************************************************
73  Construction and Destruction
74  *************************************************************************/
79  TreeItem(const String& text, uint item_id = 0, void* item_data = 0,
80  bool disabled = false, bool auto_delete = true);
81 
86  virtual ~TreeItem(void);
87 
88  /*************************************************************************
89  Accessors
90  *************************************************************************/
101  const Font* getFont(void) const;
102 
110  ColourRect getTextColours(void) const
111  { return d_textCols; }
112 
113  /*************************************************************************
114  Manipulator methods
115  *************************************************************************/
126  void setFont(const Font* font);
127 
139  void setFont(const String& font_name);
140 
151  void setTextColours(const ColourRect& cols)
152  { d_textCols = cols; d_renderedStringValid = false; }
153 
177  void setTextColours(Colour top_left_colour, Colour top_right_colour,
178  Colour bottom_left_colour, Colour bottom_right_colour);
179 
190  void setTextColours(Colour col)
191  { setTextColours(col, col, col, col); }
192 
203  const String& getText() const {return d_textLogical;}
204 
206  const String& getTextVisual() const;
207 
216  const String& getTooltipText(void) const
217  { return d_tooltipText; }
218 
229  uint getID(void) const
230  { return d_itemID; }
231 
243  void* getUserData(void) const
244  { return d_itemData; }
245 
254  bool isSelected(void) const
255  { return d_selected; }
256 
265  bool isDisabled(void) const
266  { return d_disabled; }
267 
281  bool isAutoDeleted(void) const
282  { return d_autoDelete; }
283 
294  const Window* getOwnerWindow(void)
295  { return d_owner; }
296 
304  ColourRect getSelectionColours(void) const
305  { return d_selectCols; }
306 
307 
315  const Image* getSelectionBrushImage(void) const
316  { return d_selectBrush; }
317 
318 
319  /*************************************************************************
320  Manipulators
321  *************************************************************************/
335  void setText(const String& text);
336 
348  void setTooltipText(const String& text)
349  { d_tooltipText = text; }
350 
364  void setID(uint item_id)
365  { d_itemID = item_id; }
366 
380  void setUserData(void* item_data)
381  { d_itemData = item_data; }
382 
394  void setSelected(bool setting)
395  { d_selected = setting; }
396 
408  void setDisabled(bool setting)
409  { d_disabled = setting; }
410 
426  void setAutoDeleted(bool setting)
427  { d_autoDelete = setting; }
428 
441  void setOwnerWindow(const Window* owner)
442  { d_owner = owner; }
443 
454  void setSelectionColours(const ColourRect& cols)
455  { d_selectCols = cols; }
456 
457 
481  void setSelectionColours(Colour top_left_colour,
482  Colour top_right_colour,
483  Colour bottom_left_colour,
484  Colour bottom_right_colour);
485 
496  void setSelectionColours(Colour col)
497  { setSelectionColours(col, col, col, col); }
498 
499 
510  void setSelectionBrushImage(const Image* image)
511  { d_selectBrush = image; }
512 
513 
524  void setSelectionBrushImage(const String& name);
525 
534  void setButtonLocation(Rectf& buttonOffset)
535  { d_buttonLocation = buttonOffset; }
536 
537  Rectf& getButtonLocation(void)
538  { return d_buttonLocation; }
539 
540  bool getIsOpen(void)
541  { return d_isOpen; }
542 
543  void toggleIsOpen(void)
544  { d_isOpen = !d_isOpen; }
545 
546  TreeItem *getTreeItemFromIndex(size_t itemIndex);
547 
548  size_t getItemCount(void) const
549  { return d_listItems.size(); }
550 
551  LBItemList &getItemList(void)
552  { return d_listItems; }
553 
554  void addItem(TreeItem* item);
555  void removeItem(const TreeItem* item);
556 
557  void setIcon(const Image &theIcon)
558  { d_iconImage = &theIcon; }
559 
560  /*************************************************************************
561  Abstract portion of interface
562  *************************************************************************/
570  virtual Sizef getPixelSize(void) const;
571 
589  virtual void draw(GeometryBuffer& buffer, const Rectf& targetRect,
590  float alpha, const Rectf* clipper) const;
591 
604  virtual bool handleFontRenderSizeChange(const Font* const font);
605 
606  /*************************************************************************
607  Operators
608  *************************************************************************/
613  virtual bool operator<(const TreeItem& rhs) const
614  { return getText() < rhs.getText(); }
615 
620  virtual bool operator>(const TreeItem& rhs) const
621  { return getText() > rhs.getText(); }
622 
623 protected:
624  /*************************************************************************
625  Implementation methods
626  *************************************************************************/
632  ColourRect getModulateAlphaColourRect(const ColourRect& cols,
633  float alpha) const;
634 
640  Colour calculateModulatedAlphaColour(Colour col, float alpha) const;
641 
643  void parseTextString() const;
644 
645  /*************************************************************************
646  Implementation Data
647  *************************************************************************/
650 
653  mutable bool d_bidiDataValid;
657  uint d_itemID;
659  void* d_itemData;
669  const Window* d_owner;
677  const Font* d_font;
681  LBItemList d_listItems;
683  bool d_isOpen;
689  mutable bool d_renderedStringValid;
690 };
691 
692 } // End of CEGUI namespace section
693 
694 #if defined(_MSC_VER)
695 # pragma warning(pop)
696 #endif
697 
698 #endif // end of guard _CEGUITreeItem_h_