XSIImageFX.h

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 #ifndef _XSIIMAGEFX_H
00016 #define _XSIIMAGEFX_H
00017 
00018 #include "Template.h"
00019 class CSLImage;
00020 
00028 class XSIEXPORT CSLImageFX
00029     : public CSLTemplate
00030 {
00031 public:
00033     enum EScalingType
00034     {
00035         SI_NONE,    
00036         SI_FULL,    
00037         SI_HALF,    
00038         SI_QUARTER, 
00039         SI_128,     
00040         SI_256,     
00041         SI_512,     
00042         SI_CUSTOM,  
00043     };
00044 
00050     CSLImageFX(CSLScene* in_pScene, CSLModel *in_pModel, CdotXSITemplate* in_pTemplate);
00051 
00053     virtual ~CSLImageFX();
00054 
00058     ETemplateType Type(){ return XSI_IMAGE_FX; }
00059 
00060     virtual CSLAnimatableType* ParameterFromName(SI_Char *in_szName);
00061 
00062     virtual CSLAnimatableType* ParameterFromType(EFCurveType in_Type, SI_Char *in_szParameterName);
00063 
00067     SI_Float GetHue();
00068 
00072     SI_Void SetHue( SI_Float in_fValue );
00073 
00077     SI_Float GetGain();
00078 
00082     SI_Void SetGain( SI_Float in_fValue );
00083 
00087     SI_Float GetSaturation();
00088 
00092     SI_Void SetSaturation( SI_Float in_fValue );
00093 
00097     SI_Float GetBrightness();
00098 
00102     SI_Void SetBrightness( SI_Float in_fValue );
00103 
00107     SI_Float GetBlurRadius();
00108     
00112     SI_Void SetBlurRadius( SI_Float in_fValue );
00113 
00117     SI_Float GetBlurAmount();
00118 
00122     SI_Void SetBlurAmount( SI_Float in_fValue );
00123 
00127     SI_Bool GetBlurAlpha();
00128 
00132     SI_Void SetBlurAlpha( SI_Bool in_bValue );
00133 
00137     EScalingType GetScalingType();
00138 
00142     SI_Void SetScalingType( EScalingType in_Type );
00143 
00147     SI_Float GetHorizontalScale();
00148 
00152     SI_Void SetHorizontalScale( SI_Float in_fValue );
00153 
00157     SI_Float GetVerticalScale();
00158 
00162     SI_Void SetVerticalScale( SI_Float in_fValue );
00163 
00167     SI_Bool GetFlipHorizontal();
00168     
00172     SI_Void SetFlipHorizontal( SI_Bool in_bValue );
00173 
00177     SI_Bool GetFlipVertical();
00178 
00182     SI_Void SetFlipVertical( SI_Bool in_bValue );
00183 
00187     SI_Bool GetRGBA2Greyscale();
00188 
00192     SI_Void SetRGBA2Greyscale( SI_Bool in_bValue );
00193 
00197     SI_Bool GetConvertTo16Bits();
00198 
00202     SI_Void SetConvertTo16Bits( SI_Bool in_bValue );
00203 
00204     CSLFloatProxy*                          GetHueProxy() { return &m_Hue; };
00205     CSLFloatProxy*                          GetGainProxy() { return &m_Gain; };
00206     CSLFloatProxy*                          GetSaturationProxy() { return &m_Saturation; };
00207     CSLFloatProxy*                          GetBrightnessProxy() { return &m_Brightness; };
00208     CSLFloatProxy*                          GetBlurRadiusProxy() { return &m_BlurRadius; };
00209     CSLFloatProxy*                          GetBlurAmountProxy() { return &m_BlurAmount; };
00210     CSLBoolProxy*                           GetBlurAlphaProxy() { return &m_BlurAlpha; };
00211     CSLEnumProxy<EScalingType, SI_CUSTOM>*  GetScalingTypeProxy() { return &m_ScalingType; };
00212     CSLFloatProxy*                          GetScaleXProxy() { return &m_ScaleX; };
00213     CSLFloatProxy*                          GetScaleYProxy() { return &m_ScaleY; };
00214     CSLBoolProxy*                           GetFlipHorizontalProxy() { return &m_FlipHorizontal; };
00215     CSLBoolProxy*                           GetFlipVerticalProxy() { return &m_FlipVertical; };
00216     CSLBoolProxy*                           GetRGBA2GreyscaleProxy() { return &m_RGBA2Greyscale; };
00217     CSLBoolProxy*                           GetBitsPerChannelProxy() { return &m_BitsPerChannel; };
00218 
00219 private:
00220     CSLFloatProxy m_Hue;
00221     CSLFloatProxy m_Gain;
00222     CSLFloatProxy m_Saturation;
00223     CSLFloatProxy m_Brightness;
00224     CSLFloatProxy m_BlurRadius;
00225     CSLFloatProxy m_BlurAmount;
00226     CSLBoolProxy m_BlurAlpha;
00227     CSLEnumProxy<EScalingType, SI_CUSTOM> m_ScalingType;
00228     CSLFloatProxy m_ScaleX;
00229     CSLFloatProxy m_ScaleY;
00230     CSLBoolProxy m_FlipHorizontal;
00231     CSLBoolProxy m_FlipVertical;
00232     CSLBoolProxy m_RGBA2Greyscale;
00233     CSLBoolProxy m_BitsPerChannel;
00234 
00235     SI_Void *m_pReserved;
00236 };
00237 
00238 #endif