MyGUI  3.2.1
MyGUI_ImageBox.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_IMAGE_BOX_H__
8 #define __MYGUI_IMAGE_BOX_H__
9 
10 #include "MyGUI_Prerequest.h"
11 #include "MyGUI_Widget.h"
12 #include "MyGUI_ResourceImageSet.h"
13 #include "MyGUI_ImageInfo.h"
14 
15 namespace MyGUI
16 {
17 
22  public Widget
23  {
25 
26  public:
27  ImageBox();
28 
29  //------------------------------------------------------------------------------//
30  // The simple interface
31  //------------------------------------------------------------------------------//
32 
33  /* Set texture and size of image _tile
34  @param _texture file name or texture name
35  @param _coord - part of texture where we take tiles
36  @param _tile size
37  */
38  void setImageInfo(const std::string& _texture, const IntCoord& _coord, const IntSize& _tile);
39 
40  /* Set texture
41  @param _texture file name or texture name
42  */
43  void setImageTexture(const std::string& _value);
44 
46  void setImageRect(const IntRect& _value);
47 
49  void setImageCoord(const IntCoord& _value);
50 
52  void setImageTile(const IntSize& _value);
53 
66  void setImageIndex(size_t _index);
68  size_t getImageIndex() const;
69 
71  IntSize getImageSize() const;
72 
73  //------------------------------------------------------------------------------//
74  // The expanded interface
75  //------------------------------------------------------------------------------//
76 
78  size_t getItemCount() const;
79 
81  void setItemSelect(size_t _index);
83  size_t getItemSelect() const;
85  void resetItemSelect();
86 
88  void insertItem(size_t _index, const IntCoord& _item);
90  void addItem(const IntCoord& _item);
92  void setItem(size_t _index, const IntCoord& _item);
93 
95  void deleteItem(size_t _index);
97  void deleteAllItems();
98 
99  // работа с фреймами анимированных индексов
104  void addItemFrame(size_t _index, const IntCoord& _item);
105 
111  void insertItemFrame(size_t _index, size_t _indexFrame, const IntCoord& _item);
112 
117  void addItemFrameDublicate(size_t _index, size_t _indexSourceFrame);
118 
124  void insertItemFrameDublicate(size_t _index, size_t _indexFrame, size_t _indexSourceFrame);
125 
131  void setItemFrame(size_t _index, size_t _indexFrame, const IntCoord& _item);
132 
137  void deleteItemFrame(size_t _index, size_t _indexFrame);
138 
142  void deleteAllItemFrames(size_t _index);
143 
148  void setItemFrameRate(size_t _index, float _rate);
149 
153  float getItemFrameRate(size_t _index);
154 
155  //------------------------------------------------------------------------------//
156  // The interface with support of resources
157  //------------------------------------------------------------------------------//
158 
163  bool setItemResource(const std::string& _name);
164 
166  void setItemGroup(const std::string& _value);
168  void setItemName(const std::string& _value);
169 
173  void setItemResourcePtr(ResourceImageSetPtr _resource);
175  void setItemResourceInfo(const ImageIndexInfo& _info);
176 
178  ResourceImageSetPtr getItemResource() const;
180  void setItemResourceInfo(ResourceImageSetPtr _resource, const std::string& _group, const std::string& _name);
181 
182  protected:
183  virtual void shutdownOverride();
184 
185  virtual void setPropertyOverride(const std::string& _key, const std::string& _value);
186 
187  private:
188  void frameEntered(float _frame);
189 
190  void recalcIndexes();
191  void updateSelectIndex(size_t _index);
192 
193  void frameAdvise(bool _advise);
194 
195  void _setUVSet(const FloatRect& _rect);
196 
197  private:
198  // кусок в текстуре наших картинок
199  IntRect mRectImage;
200  // размер одной картинки
201  IntSize mSizeTile;
202  // размер текстуры
203  IntSize mSizeTexture;
204  // текущая картинка
205  size_t mIndexSelect;
206 
207  VectorImages mItems;
208 
209  bool mFrameAdvise;
210  float mCurrentTime;
211  size_t mCurrentFrame;
212 
213  ResourceImageSetPtr mResource;
214  std::string mItemName;
215  std::string mItemGroup;
216  std::string mCurrentTextureName;
217  };
218 
219 } // namespace MyGUI
220 
221 #endif // __MYGUI_IMAGE_BOX_H__