MyGUI
3.2.1
|
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_IMAGE_BOX_H__ 00008 #define __MYGUI_IMAGE_BOX_H__ 00009 00010 #include "MyGUI_Prerequest.h" 00011 #include "MyGUI_Widget.h" 00012 #include "MyGUI_ResourceImageSet.h" 00013 #include "MyGUI_ImageInfo.h" 00014 00015 namespace MyGUI 00016 { 00017 00021 class MYGUI_EXPORT ImageBox : 00022 public Widget, 00023 public MemberObsolete<ImageBox> 00024 { 00025 MYGUI_RTTI_DERIVED( ImageBox ) 00026 00027 public: 00028 ImageBox(); 00029 00030 //------------------------------------------------------------------------------// 00031 // The simple interface 00032 //------------------------------------------------------------------------------// 00033 00034 /* Set texture and size of image _tile 00035 @param _texture file name or texture name 00036 @param _coord - part of texture where we take tiles 00037 @param _tile size 00038 */ 00039 void setImageInfo(const std::string& _texture, const IntCoord& _coord, const IntSize& _tile); 00040 00041 /* Set texture 00042 @param _texture file name or texture name 00043 */ 00044 void setImageTexture(const std::string& _value); 00045 00047 void setImageRect(const IntRect& _value); 00048 00050 void setImageCoord(const IntCoord& _value); 00051 00053 void setImageTile(const IntSize& _value); 00054 00067 void setImageIndex(size_t _index); 00069 size_t getImageIndex() const; 00070 00072 IntSize getImageSize() const; 00073 00074 //------------------------------------------------------------------------------// 00075 // The expanded interface 00076 //------------------------------------------------------------------------------// 00077 00079 size_t getItemCount() const; 00080 00082 void setItemSelect(size_t _index); 00084 size_t getItemSelect() const; 00086 void resetItemSelect(); 00087 00089 void insertItem(size_t _index, const IntCoord& _item); 00091 void addItem(const IntCoord& _item); 00093 void setItem(size_t _index, const IntCoord& _item); 00094 00096 void deleteItem(size_t _index); 00098 void deleteAllItems(); 00099 00100 // работа с фреймами анимированных индексов 00105 void addItemFrame(size_t _index, const IntCoord& _item); 00106 00112 void insertItemFrame(size_t _index, size_t _indexFrame, const IntCoord& _item); 00113 00118 void addItemFrameDuplicate(size_t _index, size_t _indexSourceFrame); 00119 00125 void insertItemFrameDuplicate(size_t _index, size_t _indexFrame, size_t _indexSourceFrame); 00126 00132 void setItemFrame(size_t _index, size_t _indexFrame, const IntCoord& _item); 00133 00138 void deleteItemFrame(size_t _index, size_t _indexFrame); 00139 00143 void deleteAllItemFrames(size_t _index); 00144 00149 void setItemFrameRate(size_t _index, float _rate); 00150 00154 float getItemFrameRate(size_t _index); 00155 00156 //------------------------------------------------------------------------------// 00157 // The interface with support of resources 00158 //------------------------------------------------------------------------------// 00159 00164 bool setItemResource(const std::string& _name); 00165 00167 void setItemGroup(const std::string& _value); 00169 void setItemName(const std::string& _value); 00170 00174 void setItemResourcePtr(ResourceImageSetPtr _resource); 00176 void setItemResourceInfo(const ImageIndexInfo& _info); 00177 00179 ResourceImageSetPtr getItemResource() const; 00181 void setItemResourceInfo(ResourceImageSetPtr _resource, const std::string& _group, const std::string& _name); 00182 00183 protected: 00184 virtual void shutdownOverride(); 00185 00186 virtual void setPropertyOverride(const std::string& _key, const std::string& _value); 00187 00188 private: 00189 void frameEntered(float _frame); 00190 00191 void recalcIndexes(); 00192 void updateSelectIndex(size_t _index); 00193 00194 void frameAdvise(bool _advise); 00195 00196 void _setUVSet(const FloatRect& _rect); 00197 00198 private: 00199 // кусок в текстуре наших картинок 00200 IntRect mRectImage; 00201 // размер одной картинки 00202 IntSize mSizeTile; 00203 // размер текстуры 00204 IntSize mSizeTexture; 00205 // текущая картинка 00206 size_t mIndexSelect; 00207 00208 VectorImages mItems; 00209 00210 bool mFrameAdvise; 00211 float mCurrentTime; 00212 size_t mCurrentFrame; 00213 00214 ResourceImageSetPtr mResource; 00215 std::string mItemName; 00216 std::string mItemGroup; 00217 std::string mCurrentTextureName; 00218 }; 00219 00220 } // namespace MyGUI 00221 00222 #endif // __MYGUI_IMAGE_BOX_H__