MyGUI  3.2.1
MyGUI_RenderItem.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_RENDER_ITEM_H__
00008 #define __MYGUI_RENDER_ITEM_H__
00009 
00010 #include "MyGUI_Prerequest.h"
00011 #include "MyGUI_ISubWidget.h"
00012 #include "MyGUI_IVertexBuffer.h"
00013 #include "MyGUI_VertexData.h"
00014 #include "MyGUI_IRenderTarget.h"
00015 
00016 namespace MyGUI
00017 {
00018 
00019     typedef std::pair<ISubWidget*, size_t> DrawItemInfo;
00020     typedef std::vector<DrawItemInfo> VectorDrawItem;
00021 
00022     class MYGUI_EXPORT RenderItem
00023     {
00024     public:
00025         RenderItem();
00026         virtual ~RenderItem();
00027 
00028         void renderToTarget(IRenderTarget* _target, bool _update);
00029 
00030         void setTexture(ITexture* _value);
00031         ITexture* getTexture();
00032 
00033         void setManualRender(bool _value);
00034         bool getManualRender() const;
00035 
00036         void addDrawItem(ISubWidget* _item, size_t _count);
00037         void removeDrawItem(ISubWidget* _item);
00038         void reallockDrawItem(ISubWidget* _item, size_t _count);
00039 
00040         void outOfDate();
00041         bool isOutOfDate() const;
00042 
00043         size_t getNeedVertexCount() const;
00044         size_t getVertexCount() const;
00045 
00046         bool getCurrentUpdate() const;
00047         Vertex* getCurrentVertexBuffer() const;
00048 
00049         void setLastVertexCount(size_t _count);
00050 
00051         IRenderTarget* getRenderTarget();
00052 
00053         void setNeedCompression(bool _compression);
00054         bool getNeedCompression() const;
00055 
00056     private:
00057 #if MYGUI_DEBUG_MODE == 1
00058         std::string mTextureName;
00059 #endif
00060 
00061         ITexture* mTexture;
00062 
00063         size_t mNeedVertexCount;
00064 
00065         bool mOutOfDate;
00066         VectorDrawItem mDrawItems;
00067 
00068         // колличество отрендренных реально вершин
00069         size_t mCountVertex;
00070 
00071         bool mCurrentUpdate;
00072         Vertex* mCurrentVertex;
00073         size_t mLastVertexCount;
00074 
00075         IVertexBuffer* mVertexBuffer;
00076         IRenderTarget* mRenderTarget;
00077 
00078         bool mNeedCompression;
00079         bool mManualRender;
00080     };
00081 
00082 } // namespace MyGUI
00083 
00084 #endif // __MYGUI_RENDER_ITEM_H__