MyGUI  3.2.0
MyGUI_LayerNode.h
Go to the documentation of this file.
1 
6 /*
7  This file is part of MyGUI.
8 
9  MyGUI is free software: you can redistribute it and/or modify
10  it under the terms of the GNU Lesser General Public License as published by
11  the Free Software Foundation, either version 3 of the License, or
12  (at your option) any later version.
13 
14  MyGUI is distributed in the hope that it will be useful,
15  but WITHOUT ANY WARRANTY; without even the implied warranty of
16  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17  GNU Lesser General Public License for more details.
18 
19  You should have received a copy of the GNU Lesser General Public License
20  along with MyGUI. If not, see <http://www.gnu.org/licenses/>.
21 */
22 #ifndef __MYGUI_LAYER_NODE_H__
23 #define __MYGUI_LAYER_NODE_H__
24 
25 #include "MyGUI_Prerequest.h"
26 #include "MyGUI_ILayer.h"
27 #include "MyGUI_ILayerNode.h"
28 #include "MyGUI_RenderItem.h"
29 
30 namespace MyGUI
31 {
32 
33  class LayerItem;
34  typedef std::vector<RenderItem*> VectorRenderItem;
35  typedef std::vector<ILayerItem*> VectorLayerItem;
36 
38  public ILayerNode
39  {
41 
42  public:
43  explicit LayerNode(ILayer* _layer, ILayerNode* _parent = nullptr);
44  virtual ~LayerNode();
45 
46  // леер, которому мы принадлежим
47  virtual ILayer* getLayer() const;
48 
49  // возвращает отца или nullptr
50  virtual ILayerNode* getParent() const;
51 
52  // создаем дочерний нод
53  virtual ILayerNode* createChildItemNode();
54  // удаляем дочерний нод
55  virtual void destroyChildItemNode(ILayerNode* _node);
56 
57  // поднимаем дочерний нод
58  virtual void upChildItemNode(ILayerNode* _node);
59 
60  // список детей
61  virtual EnumeratorILayerNode getEnumerator() const;
62 
63  // добавляем айтем к ноду
64  virtual void attachLayerItem(ILayerItem* _item);
65  // удаляем айтем из нода
66  virtual void detachLayerItem(ILayerItem* _item);
67 
68  // добавляет саб айтем и возвращает рендер айтем
69  virtual RenderItem* addToRenderItem(ITexture* _texture, bool _firstQueue, bool _manualRender);
70  // необходимо обновление нода
71  virtual void outOfDate(RenderItem* _item);
72 
73  // возвращает виджет по позиции
74  virtual ILayerItem* getLayerItemByPoint(int _left, int _top) const;
75 
76  // рисует леер
77  virtual void renderToTarget(IRenderTarget* _target, bool _update);
78 
79  virtual void resizeView(const IntSize& _viewSize);
80 
81  bool isOutOfDate() const;
82 
83  protected:
84  void updateCompression();
85 
86  protected:
87  // список двух очередей отрисовки, для сабскинов и текста
88  VectorRenderItem mFirstRenderItems;
89  VectorRenderItem mSecondRenderItems;
90 
91  // список всех рутовых виджетов
92  // у перекрывающегося слоя здесь только один
93  VectorLayerItem mLayerItems;
94 
95  // список такиж как мы, для построения дерева
96  VectorILayerNode mChildItems;
97 
98  ILayerNode* mParent;
99  ILayer* mLayer;
100  bool mOutOfDate;
101  };
102 
103 } // namespace MyGUI
104 
105 #endif // __MYGUI_LAYER_NODE_H__
std::vector< ILayerNode * > VectorILayerNode
std::vector< ILayerItem * > VectorLayerItem
#define MYGUI_RTTI_DERIVED(DerivedType)
Definition: MyGUI_RTTI.h:88
#define MYGUI_EXPORT
std::vector< RenderItem * > VectorRenderItem