MyGUI  3.2.1
MyGUI_Canvas.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_CANVAS_H__
8 #define __MYGUI_CANVAS_H__
9 
10 #include "MyGUI_Prerequest.h"
11 #include "MyGUI_Widget.h"
12 #include "MyGUI_ITexture.h"
13 
14 namespace MyGUI
15 {
16 
22  public Widget,
24  {
26 
27  public:
28  Canvas();
29 
30  struct Event
31  {
32  Event( bool _textureChanged, bool _widgetResized, bool _requested ) :
33  textureChanged( _textureChanged ),
34  widgetResized( _widgetResized ),
35  requested( _requested )
36  {
37  }
38 
41 
43  bool requested;
44  };
45 
48 
54  {
59  // Размер указаный при создании текстуры увеличиваеться до степени двойки и больше не меняется.
60  // Текстура всегда растягиваеться во весь виджет.
62 
71  // Размер указаный при создании текстуры игнорируется.
72  // Текстура всегда больше размера окна и кратна степени двойки.
73  // Если размер виджета становится больше чем размер текстуры, текстура пересоздается.
74  // Текстура всегда отображатся пиксель в пиксель на виджет, образуя рабочую область текстуры.
76 
84  // Размер указаный при создании текстуры игнорируется.
85  // Текстура всегда больше размера окна и кратна степени двойки.
86  // Если размер виджета становится больше чем размер текстуры, текстура пересоздается.
87  // Текстура всегда растягиваеться во весь виджет.
88  TRM_PT_VIEW_ALL
89  };
90 
91  public:
93  void createTexture(TextureResizeMode _resizeMode, TextureUsage _usage = getDefaultTextureUsage(), PixelFormat _format = getDefaultTextureFormat());
94 
96  void createTexture(int _width, int _height, TextureResizeMode _resizeMode, TextureUsage _usage = getDefaultTextureUsage(), PixelFormat _format = getDefaultTextureFormat());
97 
99  void createTexture(const IntSize& _size, TextureResizeMode _resizeMode, TextureUsage _usage = getDefaultTextureUsage(), PixelFormat _format = getDefaultTextureFormat());
100 
102  void destroyTexture();
103 
105  void updateTexture();
106 
108  void* lock(TextureUsage _usage = TextureUsage::Write);
109 
111  void unlock();
112 
114  bool isLocked() const;
115 
117  int getTextureRealWidth() const;
118 
120  int getTextureRealHeight() const;
121 
123  IntSize getTextureRealSize() const;
124 
126  int getTextureSrcWidth() const;
127 
129  int getTextureSrcHeight() const;
130 
132  IntSize getTextureSrcSize() const;
133 
135  PixelFormat getTextureFormat() const;
136 
138  const std::string& getTextureName() const;
139 
141  virtual void setSize(const IntSize& _value);
143  virtual void setCoord(const IntCoord& _value);
144 
146  void setSize(int _width, int _height);
148  void setCoord(int _left, int _top, int _width, int _height);
149 
151  TextureResizeMode getResizeMode() const;
152 
154  void setResizeMode(TextureResizeMode _value);
155 
157  bool isTextureSrcSize() const;
158 
160  bool isTextureCreated() const;
161 
163  bool isTextureManaged() const;
164 
166  ITexture* getTexture() const;
167 
169  void setTextureManaged(bool _value);
170 
172  static TextureUsage getDefaultTextureUsage();
173 
175  static PixelFormat getDefaultTextureFormat();
176 
177  /*events:*/
183 
190 
191  protected:
192  virtual void shutdownOverride();
193  virtual void initialiseOverride();
194 
196  void _destroyTexture(bool _sendEvent);
197 
199  void validate(int& _width, int& _height, TextureUsage& _usage, PixelFormat& _format) const;
200 
202  void createExactTexture(int _width, int _height, TextureUsage _usage, PixelFormat _format);
203 
205  bool checkCreate(int _width, int _height) const;
206 
208  void resize(const IntSize& _size);
209 
211  void correctUV();
212 
214  void frameAdvise(bool _advise);
215 
217  void frameEntered(float _time);
218 
219  virtual void textureInvalidate(ITexture* _texture);
220 
221  void _setUVSet(const FloatRect& _rect);
222 
223  protected:
226 
229 
231  std::string mGenTexName;
232 
235 
238 
241 
244 
246  };
247 
248 } // namespace MyGUI
249 
250 #endif // __MYGUI_CANVAS_H__