MyGUI  3.2.1
MyGUI_ImageBox.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_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__