XSIImageFX2.h

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 _XSIIMAGEFX2_H
00013 #define _XSIIMAGEFX2_H
00014 
00015 #include "Template.h"
00016 class CSLImage;
00017 
00022 class XSIEXPORT CSLImageFX2
00023     : public CSLTemplate
00024 {
00025 public:
00027     enum EImageDefinitionType
00028     {
00029         SI_LOAD_IN_MEMORY,  
00030         SI_USE_FROM_DISK,   
00031         SI_BROADCAST,       
00032     };
00033 
00037     enum EOglFilter
00038     {
00039         SI_UNINTERPOLATED_PIXEL = 9728,                         
00040         SI_INTERPOLATED_PIXEL = 9729,                           
00041         SI_UNINTERPOLATED_PIXEL_NEAREST_MIPMAP = 9984,          
00042         SI_INTERPOLATED_PIXEL_NEAREST_MIPMAP = 9985,            
00043         SI_UNINTERPOLATED_PIXEL_INTERPOLATED_MIPMAP = 9986,     
00044         SI_INTERPOLATED_PIXEL_INTERPOLATED_MIPMAP = 9987        
00045     };
00046 
00048     enum EFieldType
00049     {
00050         SI_NONE,    /* None */
00051         SI_ODD,     /* Upper Field First / Odd (PAL and HD Formats) */
00052         SI_EVEN     /* Lower Field First / Even (NTSC and DVFormats) */
00053     };
00054 
00060     CSLImageFX2(CSLScene* in_pScene, CSLModel *in_pModel, CdotXSITemplate* in_pTemplate);
00061 
00063     virtual ~CSLImageFX2();
00064 
00068     ETemplateType Type(){ return XSI_IMAGE_FX2; }
00069 
00070     virtual CSLAnimatableType* ParameterFromName(SI_Char *in_szName);
00071 
00072     virtual CSLAnimatableType* ParameterFromType(EFCurveType in_Type, SI_Char *in_szParameterName);
00073 
00074 
00075 
00079     SI_Float GetExposure();
00080 
00084     SI_Void SetExposure( SI_Float in_fValue );
00085 
00089     SI_Float GetDisplayGamma();
00090 
00094     SI_Void SetDisplayGamma( SI_Float in_fValue );
00095 
00099     SI_Bool GetDisplayGammaAffectsRendering();
00100 
00104     SI_Void SetDisplayGammaAffectsRendering( SI_Bool in_bValue );
00105 
00109     SI_Char* GetRenderColorProfile();
00110 
00114     SI_Void SetRenderColorProfile( SI_Char* in_pValue);
00115 
00119     SI_Float GetRenderGamma();
00120 
00124     SI_Void SetRenderGamma( SI_Float in_fValue );
00125 
00129     EImageDefinitionType GetImageDefinitionType();
00130 
00134     SI_Void SetImageDefinitionType( EImageDefinitionType in_Value );
00135 
00139     SI_Bool GetEnableMipMap();
00140 
00144     SI_Void SetEnableMipMap( SI_Bool in_bValue );
00145 
00149     SI_Float GetMipMapScale();
00150 
00154     SI_Void SetMipMapScale( SI_Float in_fValue );
00155 
00159     SI_Int GetOglMaxSize();
00160 
00164     SI_Void SetOglMaxSize( SI_Int in_nValue );
00165 
00169     SI_Bool GetOglMipMap();
00170 
00174     SI_Void SetOglMipMap( SI_Bool in_Value );
00175 
00179     EOglFilter GetOglMinFilter();
00180 
00184     SI_Void SetOglMinFilter( EOglFilter in_Value );
00185 
00189     EOglFilter GetOglMagFilter();
00190 
00194     SI_Void SetOglMagFilter( EOglFilter in_Value );
00195 
00199     EFieldType GetFieldType();
00200 
00204     SI_Void SetFieldType( EFieldType in_Value );
00205 
00209     SI_Int GetSourceTrack();
00210 
00214     SI_Void SetSourceTrack( SI_Int in_bValue );
00215 
00216 
00217     CSLFloatProxy*                                      GetExposureProxy() { return &m_Exposure; };
00218     CSLFloatProxy*                                      GetDisplayGammaProxy() { return &m_DisplayGamma; };
00219     CSLBoolProxy*                                       GetDisplayGammaAffectsRenderingProxy() { return &m_DisplayGammaAffectsRendering; };
00220 
00221     CSLStringProxy*                                     GetRenderColorProfileProxy() { return &m_RenderColorProfile; };
00222     CSLFloatProxy*                                      GetRenderGammaProxy() { return &m_RenderGamma; };
00223 
00224     CSLEnumProxy<EImageDefinitionType, SI_BROADCAST>*   GetImageDefinitionTypeProxy() { return &m_ImageDefinitionType; };
00225     CSLBoolProxy*                                       GetEnableMipMapProxy() { return &m_EnableMipMap; };
00226     CSLFloatProxy*                                      GetMipMapScaleProxy() { return &m_MipMapScale; };
00227 
00228     CSLIntProxy*                                                            GetOglMaxSizeProxy() { return &m_OglMaxSize; };
00229     CSLBoolProxy*                                                           GetOglMipMapProxy() { return &m_OglMipMap; };
00230     CSLEnumProxy<EOglFilter, SI_INTERPOLATED_PIXEL_INTERPOLATED_MIPMAP>*    GetOglMinFilterProxy() { return &m_OglMinFilter; };
00231     CSLEnumProxy<EOglFilter, SI_INTERPOLATED_PIXEL>*                        GetOglMagFilterProxy() { return &m_OglMagFilter; };
00232 
00233     CSLEnumProxy<EFieldType, SI_EVEN>*                  GetFieldTypeProxy() { return &m_FieldType; };
00234     CSLIntProxy*                                        GetSourceTrackProxy() { return &m_SourceTrack; };
00235 
00236 private:
00237     CSLFloatProxy   m_Exposure;
00238     CSLFloatProxy   m_DisplayGamma;
00239     CSLBoolProxy    m_DisplayGammaAffectsRendering;
00240 
00241     CSLStringProxy  m_RenderColorProfile;
00242     CSLFloatProxy   m_RenderGamma;
00243 
00244     CSLEnumProxy<EImageDefinitionType, SI_BROADCAST>    m_ImageDefinitionType;
00245     CSLBoolProxy                                        m_EnableMipMap;
00246     CSLFloatProxy                                       m_MipMapScale;
00247 
00248     CSLIntProxy                                                             m_OglMaxSize;
00249     CSLBoolProxy                                                            m_OglMipMap;
00250     CSLEnumProxy<EOglFilter, SI_INTERPOLATED_PIXEL_INTERPOLATED_MIPMAP>     m_OglMinFilter;
00251     CSLEnumProxy<EOglFilter, SI_INTERPOLATED_PIXEL>                         m_OglMagFilter;
00252 
00253     CSLEnumProxy<EFieldType, SI_EVEN>   m_FieldType;
00254     CSLIntProxy                         m_SourceTrack;
00255 
00256     SI_Void *m_pReserved;
00257 };
00258 
00259 #endif