MyGUI  3.4.1
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 
23  public ILayerNode
24  {
26 
27  public:
28  explicit LayerNode(ILayer* _layer, ILayerNode* _parent = nullptr);
29  ~LayerNode() override;
30 
31  // леер, которому мы принадлежим
32  ILayer* getLayer() const override;
33 
34  // возвращает отца или nullptr
35  ILayerNode* getParent() const override;
36 
37  // создаем дочерний нод
38  ILayerNode* createChildItemNode() override;
39  // удаляем дочерний нод
40  void destroyChildItemNode(ILayerNode* _node) override;
41 
42  // поднимаем дочерний нод
43  void upChildItemNode(ILayerNode* _node) override;
44 
45  // список детей
46  EnumeratorILayerNode getEnumerator() const override;
47 
48  size_t getLayerNodeCount() const override;
49 
50  ILayerNode* getLayerNodeAt(size_t _index) const override;
51 
52  // добавляем айтем к ноду
53  void attachLayerItem(ILayerItem* _item) override;
54  // удаляем айтем из нода
55  void detachLayerItem(ILayerItem* _item) override;
56 
57  // добавляет саб айтем и возвращает рендер айтем
58  RenderItem* addToRenderItem(ITexture* _texture, bool _firstQueue, bool _manualRender) override;
59  // необходимо обновление нода
60  void outOfDate(RenderItem* _item) override;
61 
62  // возвращает виджет по позиции
63  ILayerItem* getLayerItemByPoint(int _left, int _top) const override;
64 
65  // рисует леер
66  void renderToTarget(IRenderTarget* _target, bool _update) override;
67 
68  void resizeView(const IntSize& _viewSize) override;
69 
70  float getNodeDepth() const override;
71 
72  bool isOutOfDate() const;
73 
74  protected:
75  // push all empty buffers to the end of buffers list
76  void updateCompression();
77  RenderItem* addToRenderItemFirstQueue(ITexture* _texture, bool _manualRender);
78  RenderItem* addToRenderItemSecondQueue(ITexture* _texture, bool _manualRender);
79  protected:
80  // two render queues, for subskins and text
81  // first queue keep render order based on order of creation
82  // second queue ignore creation order and always merge render items with same texture
85 
87 
88  // root widgets list
89  // overlapping layers have only one item here
91 
93 
96  bool mOutOfDate;
98  float mDepth;
99  };
100 
101 } // namespace MyGUI
102 
103 #endif // MYGUI_LAYER_NODE_H_
#define MYGUI_EXPORT
#define MYGUI_RTTI_DERIVED(DerivedType)
Definition: MyGUI_RTTI.h:48
VectorRenderItem mSecondRenderItems
VectorLayerItem mLayerItems
VectorRenderItem mFirstRenderItems
ILayerNode * mParent
VectorILayerNode mChildItems
std::vector< RenderItem * > VectorRenderItem
std::vector< ILayerNode * > VectorILayerNode
std::vector< ILayerItem * > VectorLayerItem