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_RENDER_ITEM_H_
8 #define MYGUI_RENDER_ITEM_H_
9 
10 #include "MyGUI_Prerequest.h"
11 #include "MyGUI_ISubWidget.h"
12 #include "MyGUI_IVertexBuffer.h"
13 #include "MyGUI_VertexData.h"
14 #include "MyGUI_IRenderTarget.h"
15 
16 namespace MyGUI
17 {
18 
19 	typedef std::pair<ISubWidget*, size_t> DrawItemInfo;
20 	typedef std::vector<DrawItemInfo> VectorDrawItem;
21 
22 	class MYGUI_EXPORT RenderItem
23 	{
24 	public:
25 		RenderItem();
26 		virtual ~RenderItem();
27 
28 		void renderToTarget(IRenderTarget* _target, bool _update);
29 
30 		void setTexture(ITexture* _value);
31 		ITexture* getTexture();
32 
33 		void setManualRender(bool _value);
34 		bool getManualRender() const;
35 
36 		void addDrawItem(ISubWidget* _item, size_t _count);
37 		void removeDrawItem(ISubWidget* _item);
38 		void reallockDrawItem(ISubWidget* _item, size_t _count);
39 
40 		void outOfDate();
41 		bool isOutOfDate() const;
42 
43 		size_t getNeedVertexCount() const;
44 		size_t getVertexCount() const;
45 
46 		bool getCurrentUpdate() const;
47 		Vertex* getCurrentVertexBuffer() const;
48 
49 		void setLastVertexCount(size_t _count);
50 
51 		IRenderTarget* getRenderTarget();
52 
53 		void setNeedCompression(bool _compression);
54 		bool getNeedCompression() const;
55 
56 	private:
57 #if MYGUI_DEBUG_MODE == 1
58 		std::string mTextureName;
59 #endif
60 
61 		ITexture* mTexture;
62 
63 		size_t mNeedVertexCount;
64 
65 		bool mOutOfDate;
66 		VectorDrawItem mDrawItems;
67 
68 		// колличество отрендренных реально вершин
69 		size_t mCountVertex;
70 
71 		bool mCurrentUpdate;
72 		Vertex* mCurrentVertex;
73 		size_t mLastVertexCount;
74 
75 		IVertexBuffer* mVertexBuffer;
76 		IRenderTarget* mRenderTarget;
77 
78 		bool mNeedCompression;
79 		bool mManualRender;
80 	};
81 
82 } // namespace MyGUI
83 
84 #endif // MYGUI_RENDER_ITEM_H_
85