00001
00011
00012
00013 #if (_MSC_VER > 1000) || defined(SGI_COMPILER)
00014 #pragma once
00015 #endif
00016
00017 #ifndef __XSI_FACTORY_H__
00018 #define __XSI_FACTORY_H__
00019
00020 #include "sicppsdk.h"
00021 #include <xsi_siobject.h>
00022 #include "xsi_status.h"
00023 #include "xsi_value.h"
00024
00025 namespace XSI {
00026
00027 class CustomOperator;
00028 class CString;
00029
00030
00060
00061 class SICPPSDKDECL Factory : public SIObject
00062 {
00063 public:
00065 Factory();
00066
00068 ~Factory();
00069
00073 Factory(const CRef& in_ref);
00074
00078 Factory(const Factory& in_obj);
00079
00084 bool IsA( siClassID in_ClassID) const;
00085
00089 siClassID GetClassID() const;
00090
00096 Factory& operator=(const Factory& in_obj);
00097
00103 Factory& operator=(const CRef& in_ref);
00104
00115 CRef CreateObject( const CString& name, CStatus* pst = 0 );
00116
00123 CRef CreateObjectFromPreset( const CString& presetname, const CString& family = L"", CStatus* pst = 0 );
00124
00134 CRef CreateObjectFromFile( const CString& in_filename, CStatus* out_st = 0 );
00135
00145 CRef CreateScriptedOp( const CString& name=L"", const CString& code=L"", const CString& language=L"", CStatus* pst = 0 );
00146
00155 CRef CreateScriptedOpFromFile( const CString& name, const CString& filename, const CString& language = L"", CStatus* pst = 0 );
00156
00192 CRef CreateParamDef(
00193 const CString& in_scriptname,
00194 CValue::DataType in_type,
00195 siParamClassification in_classification,
00196 INT in_capabilities,
00197 const CString& in_name,
00198 const CString& in_description,
00199 const CValue& in_default,
00200 const CValue& in_min,
00201 const CValue& in_max,
00202 const CValue& in_suggestedmin,
00203 const CValue& in_suggestedmax,
00204 CStatus* pst = 0 );
00205
00239 CRef CreateParamDef(
00240 const CString& in_scriptname,
00241 CValue::DataType in_type,
00242 INT in_capabilities,
00243 const CString& in_name,
00244 const CString& in_description,
00245 const CValue& in_default,
00246 const CValue& in_min,
00247 const CValue& in_max,
00248 const CValue& in_suggestedmin,
00249 const CValue& in_suggestedmax,
00250 CStatus* pst = 0 );
00251
00275 CRef CreateParamDef(
00276 const CString& in_scriptname,
00277 CValue::DataType in_type,
00278 const CValue& in_default,
00279 const CValue& in_min,
00280 const CValue& in_max,
00281 CStatus* pst = 0 );
00282
00302 CRef CreateParamDef(
00303 const CString& in_scriptname,
00304 CValue::DataType in_type,
00305 const CValue& in_default,
00306 CStatus* pst = 0 );
00307
00326 CRef CreateFCurveParamDef( const CString& in_scriptname, CStatus* pst = 0) ;
00327
00338 CRef CreateGridParamDef( const CString& in_scriptname, CStatus* pst = 0 ) ;
00339
00346 CRef CreateTimeTransport( CStatus* pst = 0 );
00354 CRef CreateICENodeDef( const CString& in_name, const CString& in_description = CString(), CStatus* pst = 0 ) ;
00355
00373 CRef CreateShaderDef( const CString& in_parserName, const CString& in_className, ULONG in_major, ULONG in_minor );
00374
00380 CStatus RemoveShaderDef( const CRef& in_shaderdef );
00381
00382
00387 CRef CreateShaderParamDefOptions();
00388
00389 private:
00390
00391 void* m_ptr;
00392 };
00393
00394 };
00395
00396 #endif //__XSI_FACTORY_H__