00001 /**************************************************************************************** 00002 THIS CODE IS PUBLISHED AS A SAMPLE ONLY AND IS PROVIDED "AS IS". 00003 IN NO EVENT SHALL SOFTIMAGE, AVID TECHNOLOGY, INC. AND/OR THEIR RESPECTIVE 00004 SUPPLIERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY 00005 DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 00006 ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 00007 CONNECTION WITH THE USE OR PERFORMANCE OF THIS CODE . 00008 00009 COPYRIGHT NOTICE. Copyright © 1999-2002 Avid Technology Inc. . All rights reserved. 00010 00011 SOFTIMAGE is a registered trademark of Avid Technology Inc. or its subsidiaries 00012 or divisions. Windows NT is a registered trademark of Microsoft Corp. All other 00013 trademarks contained herein are the property of their respective owners. 00014 ****************************************************************************************/ 00015 00016 #ifndef _XSIIMAGE_H 00017 #define _XSIIMAGE_H 00018 00019 #include "Template.h" 00020 00021 class CSLImageData; 00022 class CSLImageFX; 00023 class CSLImageLibrary; 00024 class CSLTimeControl; 00025 00033 class XSIEXPORT CSLImage 00034 : public CSLTemplate 00035 { 00036 public: 00038 enum EChannels 00039 { 00040 SI_RGB = 3, 00041 SI_RGBA = 4 00042 }; 00043 00045 enum EColorDepth 00046 { 00047 SI_24BITS = 24, 00048 SI_32BITS = 32 00049 }; 00050 00056 CSLImage(CSLScene* in_pScene, CSLModel *in_pModel, CdotXSITemplate* in_pTemplate); 00057 00059 virtual ~CSLImage(); 00060 00064 SI_Error Synchronize(); 00065 00069 ETemplateType Type(){ return XSI_IMAGE; } 00070 00071 virtual CSLAnimatableType* ParameterFromName(SI_Char *in_szName); 00072 00073 virtual CSLAnimatableType* ParameterFromType(EFCurveType in_Type, SI_Char *in_szParameterName); 00074 00078 SI_Char* GetSourceFile(); 00079 00083 SI_Void SetSourceFile( SI_Char* in_szFilename ); 00084 00089 SI_Int GetWidth(); 00090 00094 SI_Void SetWidth( SI_Int in_nSize ); 00095 00099 SI_Int GetHeight(); 00100 00104 SI_Void SetHeight( SI_Int in_nSize ); 00105 00109 EChannels GetChannels(); 00110 00114 SI_Void SetChannels( EChannels in_Channel ); 00115 00119 EColorDepth GetColorDepth(); 00120 00124 SI_Void SetColorDepth( EColorDepth in_Depth ); 00125 00129 SI_Float GetCropMinX(); 00130 00134 SI_Void SetCropMinX( SI_Float in_fCrop ); 00135 00139 SI_Float GetCropMaxX(); 00140 00144 SI_Void SetCropMaxX( SI_Float in_fCrop ); 00145 00149 SI_Float GetCropMinY(); 00150 00154 SI_Void SetCropMinY( SI_Float in_fCrop ); 00155 00159 SI_Float GetCropMaxY(); 00160 00164 SI_Void SetCropMaxY( SI_Float in_fCrop ); 00165 00170 SI_Float GetFrameRate(); 00171 00176 SI_Void SetFrameRate( SI_Float in_nRate = 0.0 ); 00177 00181 SI_Int GetFirstFrame(); 00182 00186 SI_Void SetFirstFrame( SI_Int in_nFrame ); 00187 00191 SI_Int GetLastFrame(); 00192 00196 SI_Void SetLastFrame( SI_Int in_nFrame ); 00197 00199 // Image data functionality /////////////////////////////////////////////// 00201 00205 CSLImageData* CreateImageData(); 00206 00216 SI_Error DestroyImageData(); 00217 00222 CSLImageData* ConnectImageData( CSLImageData* in_pImageData ); 00223 00228 CSLImageData* ImageData(); 00229 00230 CSLTimeControl* TimeControl(); 00231 CSLTimeControl* AddTimeControl(); 00232 CSLTimeControl* ConnectTimeControl(CSLTimeControl* in_pNewTimeControl); 00233 00235 // Image FX Functionality ///////////////////////////////////////////////// 00237 00241 CSLImageFX* CreateImageFX(); 00242 00246 SI_Error DestroyImageFX(); 00247 00252 CSLImageFX* ConnectImageFX( CSLImageFX* in_pToConnect ); 00253 00257 CSLImageFX* ImageFX(); 00258 00259 CSLStringProxy* SourceFile() { return &m_SourceFile;}; 00260 00261 CSLIntProxy * SizeX() { return &m_SizeX;}; 00262 CSLIntProxy * SizeY() { return &m_SizeY;}; 00263 CSLIntProxy * Channels() { return &m_Channels;}; 00264 CSLFloatProxy * CropMinX() { return &m_CropMinX;}; 00265 CSLFloatProxy * CropMaxX() { return &m_CropMaxX;}; 00266 CSLFloatProxy * CropMinY() { return &m_CropMinY;}; 00267 CSLFloatProxy * CropMaxY() { return &m_CropMaxY;}; 00268 CSLFloatProxy * FrameRate() { return &m_FrameRate;}; 00269 CSLIntProxy * FrameCount() { return &m_FrameCount;}; 00270 CSLIntProxy * FirstFrame() { return &m_FirstFrame;}; 00271 CSLIntProxy * LastFrame() { return &m_LastFrame;}; 00272 CSLIntProxy * BitsPerPixel() { return &m_BitsPerPixel;}; 00273 00274 00275 private: 00276 CSLStringProxy m_SourceFile; 00277 CSLIntProxy m_SizeX; 00278 CSLIntProxy m_SizeY; 00279 CSLIntProxy m_Channels; 00280 CSLIntProxy m_BitsPerPixel; 00281 CSLFloatProxy m_CropMinX; 00282 CSLFloatProxy m_CropMaxX; 00283 CSLFloatProxy m_CropMinY; 00284 CSLFloatProxy m_CropMaxY; 00285 CSLFloatProxy m_FrameRate; 00286 CSLIntProxy m_FrameCount; 00287 CSLIntProxy m_FirstFrame; 00288 CSLIntProxy m_LastFrame; 00289 CSLImageData *m_pImageData; 00290 CSLImageFX *m_pImageFX; 00291 CSLTimeControl* m_pTimeControl; 00292 00293 SI_Void *m_pReserved; 00294 }; 00295 00296 #endif