MyGUI  3.2.1
MyGUI_LayerItem.h
Go to the documentation of this file.
00001 /*
00002  * This source file is part of MyGUI. For the latest info, see http://mygui.info/
00003  * Distributed under the MIT License
00004  * (See accompanying file COPYING.MIT or copy at http://opensource.org/licenses/MIT)
00005  */
00006 
00007 #ifndef __MYGUI_LAYER_ITEM_H__
00008 #define __MYGUI_LAYER_ITEM_H__
00009 
00010 #include "MyGUI_Prerequest.h"
00011 #include "MyGUI_LayerManager.h"
00012 #include "MyGUI_ILayer.h"
00013 #include "MyGUI_ILayerNode.h"
00014 #include "MyGUI_ILayerItem.h"
00015 #include "MyGUI_ISubWidget.h"
00016 
00017 namespace MyGUI
00018 {
00019 
00020     class MYGUI_EXPORT LayerItem :
00021         public ILayerItem
00022     {
00023     public:
00024         LayerItem();
00025         virtual ~LayerItem();
00026 
00027         ILayer* getLayer() const;
00028         ILayerNode* getLayerNode() const;
00029 
00030         virtual void attachItemToNode(ILayer* _layer, ILayerNode* _node);
00031         virtual void detachFromLayer();
00032         virtual void upLayerItem();
00033 
00034         void setRenderItemTexture(ITexture* _texture);
00035 
00036         void addChildItem(LayerItem* _item);
00037         void removeChildItem(LayerItem* _item);
00038 
00039         void addChildNode(LayerItem* _item);
00040         void removeChildNode(LayerItem* _item);
00041 
00042         void addRenderItem(ISubWidget* _item);
00043         void removeAllRenderItems();
00044 
00045         void saveLayerItem();
00046         void restoreLayerItem();
00047 
00048     protected:
00049         void attachToLayerItemNode(ILayerNode* _node, bool _deep);
00050         void detachFromLayerItemNode(bool _deep);
00051 
00052     private:
00053         // актуально для рутового виджета
00054         ILayer* mLayer;
00055         // конкретный айтем находящийся в слое
00056         ILayerNode* mLayerNode;
00057         ILayerNode* mSaveLayerNode;
00058 
00059         typedef std::vector<LayerItem*> VectorLayerItem;
00060         // список наших детей айтемов
00061         VectorLayerItem mLayerItems;
00062         // список наших узлов
00063         VectorLayerItem mLayerNodes;
00064 
00065         // вектор всех детей сабскинов
00066         VectorSubWidget mDrawItems;
00067 
00068         ITexture* mTexture;
00069     };
00070 
00071 } // namespace MyGUI
00072 
00073 #endif // __MYGUI_LAYER_ITEM_H__