00001 //*************************************************************************************** 00002 // 00003 // File supervisor: Crosswalk team 00004 // 00005 // Copyright 2008 Autodesk, Inc. All rights reserved. 00006 // Use of this software is subject to the terms of the Autodesk license agreement 00007 // provided at the time of installation or download, or which otherwise accompanies 00008 // this software in either electronic or hard copy form. 00009 // 00010 //*************************************************************************************** 00011 00012 #ifndef _XSIIMAGE_H 00013 #define _XSIIMAGE_H 00014 00015 #include "Template.h" 00016 00017 class CSLImageData; 00018 class CSLImageFX; 00019 class CSLImageFX2; 00020 class CSLImageLibrary; 00021 class CSLTimeControl; 00022 00026 class XSIEXPORT CSLImage 00027 : public CSLTemplate 00028 { 00029 public: 00031 enum EChannels 00032 { 00033 SI_RGB = 3, 00034 SI_RGBA = 4 00035 }; 00036 00038 enum EColorDepth 00039 { 00040 SI_24BITS = 24, 00041 SI_32BITS = 32 00042 }; 00043 00049 CSLImage(CSLScene* in_pScene, CSLModel *in_pModel, CdotXSITemplate* in_pTemplate); 00050 00052 virtual ~CSLImage(); 00053 00057 SI_Error Synchronize(); 00058 00062 ETemplateType Type(){ return XSI_IMAGE; } 00063 00064 virtual CSLAnimatableType* ParameterFromName(SI_Char *in_szName); 00065 00066 virtual CSLAnimatableType* ParameterFromType(EFCurveType in_Type, SI_Char *in_szParameterName); 00067 00071 SI_Char* GetSourceFile(); 00072 00076 SI_Void SetSourceFile( SI_Char* in_szFilename ); 00077 00082 SI_Int GetWidth(); 00083 00087 SI_Void SetWidth( SI_Int in_nSize ); 00088 00092 SI_Int GetHeight(); 00093 00097 SI_Void SetHeight( SI_Int in_nSize ); 00098 00102 EChannels GetChannels(); 00103 00107 SI_Void SetChannels( EChannels in_Channel ); 00108 00112 EColorDepth GetColorDepth(); 00113 00117 SI_Void SetColorDepth( EColorDepth in_Depth ); 00118 00122 SI_Float GetCropMinX(); 00123 00127 SI_Void SetCropMinX( SI_Float in_fCrop ); 00128 00132 SI_Float GetCropMaxX(); 00133 00137 SI_Void SetCropMaxX( SI_Float in_fCrop ); 00138 00142 SI_Float GetCropMinY(); 00143 00147 SI_Void SetCropMinY( SI_Float in_fCrop ); 00148 00152 SI_Float GetCropMaxY(); 00153 00157 SI_Void SetCropMaxY( SI_Float in_fCrop ); 00158 00163 SI_Float GetFrameRate(); 00164 00169 SI_Void SetFrameRate( SI_Float in_nRate = 0.0 ); 00170 00174 SI_Int GetFirstFrame(); 00175 00179 SI_Void SetFirstFrame( SI_Int in_nFrame ); 00180 00184 SI_Int GetLastFrame(); 00185 00189 SI_Void SetLastFrame( SI_Int in_nFrame ); 00190 00192 // Image data functionality /////////////////////////////////////////////// 00194 00198 CSLImageData* CreateImageData(); 00199 00209 SI_Error DestroyImageData(); 00210 00215 CSLImageData* ConnectImageData( CSLImageData* in_pImageData ); 00216 00221 CSLImageData* ImageData(); 00222 00223 CSLTimeControl* TimeControl(); 00224 CSLTimeControl* AddTimeControl(); 00225 CSLTimeControl* ConnectTimeControl(CSLTimeControl* in_pNewTimeControl); 00226 00228 // Image FX Functionality ///////////////////////////////////////////////// 00230 00234 CSLImageFX* CreateImageFX(); 00235 00239 SI_Error DestroyImageFX(); 00240 00245 CSLImageFX* ConnectImageFX( CSLImageFX* in_pToConnect ); 00246 00250 CSLImageFX* ImageFX(); 00251 00252 CSLStringProxy* SourceFile() { return &m_SourceFile;}; 00253 00254 CSLIntProxy * SizeX() { return &m_SizeX;}; 00255 CSLIntProxy * SizeY() { return &m_SizeY;}; 00256 CSLIntProxy * Channels() { return &m_Channels;}; 00257 CSLFloatProxy * CropMinX() { return &m_CropMinX;}; 00258 CSLFloatProxy * CropMaxX() { return &m_CropMaxX;}; 00259 CSLFloatProxy * CropMinY() { return &m_CropMinY;}; 00260 CSLFloatProxy * CropMaxY() { return &m_CropMaxY;}; 00261 CSLFloatProxy * FrameRate() { return &m_FrameRate;}; 00262 CSLIntProxy * FrameCount() { return &m_FrameCount;}; 00263 CSLIntProxy * FirstFrame() { return &m_FirstFrame;}; 00264 CSLIntProxy * LastFrame() { return &m_LastFrame;}; 00265 CSLIntProxy * BitsPerPixel() { return &m_BitsPerPixel;}; 00266 00268 // Image FX 2 Functionality ///////////////////////////////////////////////// 00270 00274 CSLImageFX2* CreateImageFX2(); 00275 00279 SI_Error DestroyImageFX2(); 00280 00285 CSLImageFX2* ConnectImageFX2( CSLImageFX2* in_pToConnect ); 00286 00290 CSLImageFX2* ImageFX2(); 00291 00292 private: 00293 CSLStringProxy m_SourceFile; 00294 CSLIntProxy m_SizeX; 00295 CSLIntProxy m_SizeY; 00296 CSLIntProxy m_Channels; 00297 CSLIntProxy m_BitsPerPixel; 00298 CSLFloatProxy m_CropMinX; 00299 CSLFloatProxy m_CropMaxX; 00300 CSLFloatProxy m_CropMinY; 00301 CSLFloatProxy m_CropMaxY; 00302 CSLFloatProxy m_FrameRate; 00303 CSLIntProxy m_FrameCount; 00304 CSLIntProxy m_FirstFrame; 00305 CSLIntProxy m_LastFrame; 00306 CSLImageData *m_pImageData; 00307 CSLImageFX *m_pImageFX; 00308 CSLImageFX2 *m_pImageFX2; 00309 CSLTimeControl* m_pTimeControl; 00310 00311 SI_Void *m_pReserved; 00312 }; 00313 00314 #endif