VedaLibDemo/Image2DEffectFire.h

00001 #ifndef COM_M4NKIND_Image2DEffectFire_H
00002 #define COM_M4NKIND_Image2DEffectFire_H
00003 
00004 #include "VirtualImage.h"
00005 #include "PackObjectReference.h"
00006 #include "PackULong_Flags.h"
00007 #include "PackLong_WithLimits.h"
00008 #include "PackULong_Enums.h"
00009 #include "PackList.h"
00010 /*!
00011     \class  Image2DEffectFire
00012     \ingroup    BaseObjectInherited_VedaLibDemo
00013     \brief  Image that mix images of any size or color depth into a new RGBA one. 
00014             it uses a layer list by source image. Each layers can affect a color channel,
00015             it can use a HSV->RGB mixer and manages alpha channel. 
00016 */
00017 
00018 class Image2DEffectFire : public VirtualImage
00019 {
00020 /*==================================================================
00021                                 PUBLIC
00022 ==================================================================*/
00023 public:
00024     /*!
00025         \brief  Constructor. There should only be members initialisation there.
00026     */
00027     Image2DEffectFire(void);
00028     
00029     /*!
00030         \brief  Class Inheritance Descriptors. Also forces a destructor. See BASEOBJECT_DECLARE_... in .cpp
00031     */
00032     BASEOBJECT_DEFINE_CLASS(Image2DEffectFire);
00033 
00034     /*!
00035         \brief  Return the number of byte component for one pixel.
00036             This one is no more a virtual method.
00037     */
00038     virtual unsigned int    GetByteDepth(){ return(4); };
00039     /*!
00040         \brief  Return the pixel width of the image
00041     */
00042     virtual unsigned int    GetPixelWidth();
00043     /*!
00044         \brief  Return the pixel height of the image
00045     */
00046     virtual unsigned int    GetPixelHeight();
00047     /*
00048         \brief  If IsTimeDynamic() is true, this image can change with time.
00049                 You have to use UpdateToFrame()to make the image change to a given date.
00050                 by default, UpdateToFrame() does nothing.
00051         \param  _framedate time in seconds.
00052     */
00053     virtual void    UpdateToFrame(float _framedate);
00054 
00055 /*==================================================================
00056                                 PROTECTED
00057 ==================================================================*/
00058 protected:
00059     //! the square 2n pixel size:
00060     PackLong_WithLimits mSer_2nPixelWidth;
00061     //! the square 2n pixel size:
00062     PackLong_WithLimits mSer_2nPixelHeight;
00063     // ! we need a second buffer for double buffer.
00064     float *m_pBitmap1Alloc;
00065     // ! the swap buffers
00066     float *m_pDblBuf1;
00067     // ! the swap buffers
00068     float *m_pDblBuf2;
00069     //! randomval
00070     unsigned int m_randomval;
00071 
00072     /*!
00073         \brief  Method that really build the object using the serializable parameters.
00074     */
00075     virtual bool CreateInternal(void);
00076 #ifdef _ENGINE_EDITABLE_
00077     /*!
00078         \brief  that closes everything. Still, the object exist and can be rebuild the same using Create()
00079     */
00080     virtual void    CloseInternal(void);
00081 #endif
00082 };
00083 
00084 #endif

      /\/\        4         N         k         !         N         D
                      _______  _ __ ___  _____            ___ _ _  ____
     ___________  __//___   /________  |/    / ___________\_______/    \
    /   _   _   \/   _     /    _   /      _/_/____/    _       __     /
   /    /   /       /     /    /    \      \/     /    /    \   \     /
  \\___/___/___/    ¯    _____/_____/       ______\___/_____/\________\\
               \________/_ ___ __ l____\      /elD!  
                 http://www.m4nkind.com \____/