MyGUI: MyGUI_LayerNode.h Source File

MyGUI 3.2.2

MyGUI_LayerNode.h
Go to the documentation of this file.
1 /*
2 * This source file is part of MyGUI. For the latest info, see http://mygui.info/
3 * Distributed under the MIT License
4 * (See accompanying file COPYING.MIT or copy at http://opensource.org/licenses/MIT)
5 */
6
7 #ifndef MYGUI_LAYER_NODE_H_
8 #define MYGUI_LAYER_NODE_H_
9
10 #include "MyGUI_Prerequest.h"
11 #include "MyGUI_ILayer.h"
12 #include "MyGUI_ILayerNode.h"
13 #include "MyGUI_RenderItem.h"
14
15 namespace MyGUI
16 {
17
18 class LayerItem;
19 typedef std::vector<RenderItem*> VectorRenderItem;
20 typedef std::vector<ILayerItem*> VectorLayerItem;
21
22 class MYGUI_EXPORT LayerNode :
23 public ILayerNode
24 {
25 MYGUI_RTTI_DERIVED( LayerNode )
26
27 public:
28 explicit LayerNode(ILayer* _layer, ILayerNode* _parent = nullptr);
29 virtual ~LayerNode();
30
31 // леер, которому мы принадлежим
32 virtual ILayer* getLayer() const;
33
34 // возвращает отца или nullptr
35 virtual ILayerNode* getParent() const;
36
37 // создаем дочерний нод
38 virtual ILayerNode* createChildItemNode();
39 // удаляем дочерний нод
40 virtual void destroyChildItemNode(ILayerNode* _node);
41
42 // поднимаем дочерний нод
43 virtual void upChildItemNode(ILayerNode* _node);
44
45 // список детей
46 virtual EnumeratorILayerNode getEnumerator() const;
47
48 virtual size_t getLayerNodeCount() const;
49
50 virtual ILayerNode* getLayerNodeAt(size_t _index) const;
51
52 // добавляем айтем к ноду
53 virtual void attachLayerItem(ILayerItem* _item);
54 // удаляем айтем из нода
55 virtual void detachLayerItem(ILayerItem* _item);
56
57 // добавляет саб айтем и возвращает рендер айтем
58 virtual RenderItem* addToRenderItem(ITexture* _texture, bool _firstQueue, bool _manualRender);
59 // необходимо обновление нода
60 virtual void outOfDate(RenderItem* _item);
61
62 // возвращает виджет по позиции
63 virtual ILayerItem* getLayerItemByPoint(int _left, int _top) const;
64
65 // рисует леер
66 virtual void renderToTarget(IRenderTarget* _target, bool _update);
67
68 virtual void resizeView(const IntSize& _viewSize);
69
70 virtual float getNodeDepth();
71
72 bool isOutOfDate() const;
73
74 protected:
75 void updateCompression();
76 RenderItem* addToRenderItemFirstQueue(ITexture* _texture, bool _manualRender);
77 RenderItem* addToRenderItemSecondQueue(ITexture* _texture, bool _manualRender);
78 protected:
79 // two render queues, for subskins and text
80 // first queue keep render order based on order of creation
81 // second queue ignore creation order and always merge render items with same texture
82 VectorRenderItem mFirstRenderItems;
83 VectorRenderItem mSecondRenderItems;
84
85 // список всех рутовых виджетов
86 // у перекрывающегося слоя здесь только один
87 VectorLayerItem mLayerItems;
88
89 // список такиж как мы, для построения дерева
90 VectorILayerNode mChildItems;
91
92 ILayerNode* mParent;
93 ILayer* mLayer;
94 bool mOutOfDate;
95 float mDepth;
96 };
97
98 } // namespace MyGUI
99
100 #endif // MYGUI_LAYER_NODE_H_
MyGUI::LayerNode::mChildItems
VectorILayerNode mChildItems
Definition: MyGUI_LayerNode.h:90
MyGUI::LayerNode::mParent
ILayerNode * mParent
Definition: MyGUI_LayerNode.h:92
MyGUI::LayerItem
Definition: MyGUI_LayerItem.h:20
MyGUI::LayerNode::mSecondRenderItems
VectorRenderItem mSecondRenderItems
Definition: MyGUI_LayerNode.h:83
MyGUI::ILayerNode
Definition: MyGUI_ILayerNode.h:27
MyGUI::VectorILayerNode
std::vector< ILayerNode * > VectorILayerNode
Definition: MyGUI_ILayerNode.h:22
MyGUI::VectorLayerItem
std::vector< ILayerItem * > VectorLayerItem
Definition: MyGUI_LayerNode.h:20
MyGUI::LayerNode::mFirstRenderItems
VectorRenderItem mFirstRenderItems
Definition: MyGUI_LayerNode.h:82
MyGUI::RenderItem
Definition: MyGUI_RenderItem.h:22
MyGUI::ILayer
Definition: MyGUI_ILayer.h:21
MyGUI::LayerNode
Definition: MyGUI_LayerNode.h:22
MyGUI::VectorRenderItem
std::vector< RenderItem * > VectorRenderItem
Definition: MyGUI_LayerNode.h:18
MyGUI::LayerNode::mDepth
float mDepth
Definition: MyGUI_LayerNode.h:95
MyGUI::LayerNode::mLayer
ILayer * mLayer
Definition: MyGUI_LayerNode.h:93
MyGUI::LayerNode::mLayerItems
VectorLayerItem mLayerItems
Definition: MyGUI_LayerNode.h:87
MyGUI_Prerequest.h
MyGUI::LayerNode::mOutOfDate
bool mOutOfDate
Definition: MyGUI_LayerNode.h:94
MYGUI_RTTI_DERIVED
#define MYGUI_RTTI_DERIVED(DerivedType)
Definition: MyGUI_RTTI.h:65
MyGUI_ILayerNode.h
MyGUI::Enumerator
Definition: MyGUI_Enumerator.h:48
MyGUI::types::TSize< int >
MyGUI_RenderItem.h
MyGUI::ITexture
Definition: MyGUI_ITexture.h:26
MYGUI_EXPORT
#define MYGUI_EXPORT
Definition: MyGUI_Platform.h:103
MyGUI_ILayer.h
MyGUI
Definition: MyGUI_ActionController.h:14
MyGUI::ILayerItem
Definition: MyGUI_ILayerItem.h:18
MyGUI::IRenderTarget
Definition: MyGUI_IRenderTarget.h:20