00001 //============================================================================= 00016 //============================================================================= 00018 //============================================================================= 00019 00020 #ifndef _RM_CORE_APPLICATION_H_ 00021 #define _RM_CORE_APPLICATION_H_ 00022 00023 #include <Core/RmTypes.h> 00024 #include <Core/RmEffect.h> 00025 00027 class RmUndoOp; 00028 class IRmVariableManager; 00029 class IRmRegistryManager; 00030 class IRmPlugIn; 00031 class IRmEditorPlugIn; 00032 class IRmImporterPlugIn; 00033 class IRmExporterPlugIn; 00034 class IRmGeneratorPlugIn; 00035 class IRmXMLManager; 00036 class IRmApplication; 00037 00038 00039 00040 //============================================================================= 00046 //============================================================================= 00047 RM_API IRmApplication* getRmApp(); 00048 00049 //============================================================================= 00057 //============================================================================= 00058 struct RM_API RmWindowData 00059 { 00060 00061 //========================================================================== 00065 //========================================================================== 00066 RmWindowData() {}; 00067 00068 HWND hWnd; 00069 RmWindowType windowType; 00070 RM_TCHAR strWindowName[RM_MAXIMUM_WINDOW_TITLE_SIZE]; 00071 bool bAddToWindowListMenu; 00072 00073 int cmdID; 00074 int nDockWindowID; 00075 HICON hIcon; 00076 bool bDeleteIcon; 00077 00078 00079 }; // End of RmWindowdata 00080 00081 typedef RmLinkedList<RmWindowData*> RmWindowDataList; 00082 typedef RmWindowDataList::iterator RmWindowDataListIterator; 00083 typedef RmWindowDataList::const_iterator RmWindowDataListConstIterator; 00084 00085 //============================================================================= 00091 //============================================================================= 00092 class RM_API IRmApplication 00093 { 00094 public : 00095 00096 00097 //========================================================================== 00101 //========================================================================== 00102 IRmApplication(); 00103 00104 //========================================================================== 00108 //========================================================================== 00109 virtual ~IRmApplication(); 00110 00111 //========================================================================== 00116 //========================================================================== 00117 virtual HINSTANCE GetInstance() const = 0; 00118 00119 //========================================================================== 00127 //========================================================================== 00128 virtual void OutputText( const RM_TCHAR *strText, ...) = 0; 00129 00130 //========================================================================== 00139 //========================================================================== 00140 virtual void ClearOutputWindow() = 0; 00141 00142 //.......................................................................... 00143 //.......................................................................... 00145 // application 00146 //.......................................................................... 00147 //.......................................................................... 00148 00149 //========================================================================== 00158 //========================================================================== 00159 virtual void SetStatusText( const RM_TCHAR *strText ) = 0; 00160 00161 //========================================================================== 00167 //========================================================================== 00168 virtual HWND GetMainWindow() = 0; 00169 00170 //========================================================================== 00176 //========================================================================== 00177 virtual HWND GetMDIClientWindow() = 0; 00178 00179 //========================================================================== 00185 //========================================================================== 00186 virtual void UpdateTitle() = 0; 00187 00188 //========================================================================== 00195 //========================================================================== 00196 virtual void UpdateWindows() = 0; 00197 00198 //========================================================================== 00204 //========================================================================== 00205 virtual HMENU GetMainMenu() = 0; 00206 00207 //========================================================================== 00217 //========================================================================== 00218 virtual HICON GetIcon( RmIconID nRmIconID, 00219 RmIconSize nRmIconSize = RM_ICON_SIZE_SMALL ) = 0; 00220 00221 //========================================================================== 00234 //========================================================================== 00235 virtual HICON CreateIcon( RmIconID nRmIconID, 00236 RmIconSize nRmIconSize = RM_ICON_SIZE_SMALL, 00237 bool bTransparent = false, 00238 COLORREF rgbBackground = RGB( 255, 255, 255 ) ) = 0; 00239 00240 //========================================================================== 00243 //========================================================================== 00244 virtual RmIconID GetRmIconID( RmNode *pRmNode ) = 0; 00245 00246 //========================================================================== 00259 // call failed 00260 //========================================================================== 00261 virtual HWND CreateMDIChildFrame() = 0; 00262 00263 //========================================================================== 00283 //========================================================================== 00284 virtual void RegisterWindow( HWND hWnd, 00285 RmWindowType windowType, 00286 bool bAddToWindowListMenu, 00287 HICON hIcon = NULL, 00288 bool bDeleteIcon = false, 00289 int nDockWindowID = 0 ) = 0; 00290 00291 //========================================================================== 00306 //========================================================================== 00307 virtual void RegisterWindow( const RmWindowData *pWindowData ) = 0; 00308 00309 //========================================================================== 00318 //========================================================================== 00319 virtual void UnregisterWindow ( HWND hWin ) = 0; 00320 00321 //========================================================================== 00330 //========================================================================== 00331 virtual void OnWindowNameChanged( HWND hWnd ) = 0; 00332 00333 //.......................................................................... 00334 //.......................................................................... 00335 // Docking window-related methods 00336 //.......................................................................... 00337 //.......................................................................... 00338 00339 //========================================================================== 00347 //========================================================================== 00348 virtual int GetAvailableDockingWindowID() = 0; 00349 00350 //========================================================================== 00359 //========================================================================== 00360 virtual HWND FindDockingWindow( int nID ) = 0; 00361 00362 //========================================================================== 00377 //========================================================================== 00378 virtual HWND CreateDockingWindow( int nWindowID, 00379 const RM_TCHAR *strWindowTitle, 00380 RmDockingPaneLayout initialDockSite = RM_WINDOWDOCK_FLOAT, 00381 const RECT *pRect = NULL ) = 0; 00382 00383 //========================================================================== 00392 //========================================================================== 00393 virtual void SetDockingWindowTitle( int nWindowID, const RM_TCHAR *strWindowTitle ) = 0; 00394 00395 //========================================================================== 00404 //========================================================================== 00405 virtual void SetDockingWindowIcon( int nWindowID, HICON hIcon ) = 0; 00406 00407 //========================================================================== 00416 //========================================================================== 00417 virtual void ShowDockWindow( int ID, bool bShow ) = 0; 00418 00419 //.......................................................................... 00420 //.......................................................................... 00422 //.......................................................................... 00423 //.......................................................................... 00424 00425 //========================================================================== 00446 //========================================================================== 00447 virtual void BroadcastMessage( int nMessageID, 00448 int nMessageData, 00449 int nMessageParameter = 0, 00450 const RmPlugInID* pRmPlugInID = NULL ) = 0; 00451 00452 //========================================================================== 00472 //========================================================================== 00473 virtual void BroadcastMessage( RmPlugInType nPluginType, 00474 int nMessageID, 00475 int nMessageData, 00476 int nMessageParameter = 0, 00477 const RmPlugInID* pRmPlugInID = NULL ) = 0; 00478 00479 //========================================================================== 00486 //========================================================================== 00487 virtual RmEffectWorkspace* GetWorkspace() = 0; 00488 00489 //========================================================================== 00495 //========================================================================== 00496 virtual const RM_TCHAR* GetWorkspacePath() = 0; 00497 00498 //========================================================================== 00509 //========================================================================== 00510 virtual void GetInitialWorkspacePath( RM_TCHAR *pStrPath, int nSize ) = 0; 00511 00512 //========================================================================== 00523 //========================================================================== 00524 virtual void GetDefaultWorkspacePath( RM_TCHAR *pStrPath, int nSize ) = 0; 00525 00526 //========================================================================== 00537 //========================================================================== 00538 virtual RmNode* CreateNode( const RM_TCHAR* pStrNodeTypeChain, const RM_TCHAR* pStrXMLVersion = NULL ) = 0; 00539 00540 //========================================================================== 00555 //========================================================================== 00556 virtual HWND EditNode( RmNode *pNode, IRmEditorPlugIn *pPreferedEditorPlugIn = NULL ) = 0; 00557 00558 //========================================================================== 00568 //========================================================================== 00569 virtual int GetNodeSortCompareIndex( RmNode* pRmNodeA, RmNode* pRmNodeB ) = 0; 00570 00571 //========================================================================== 00580 //========================================================================== 00581 virtual int GetNodeTypeSortCompareIndex( const RM_TCHAR *pStrNodeType ) = 0; 00582 00583 //========================================================================== 00592 //========================================================================== 00593 virtual RmLinkedList< IRmPlugIn* > GetGenericPlugInList( RmNode *pNode ) = 0; 00594 00595 //========================================================================== 00604 //========================================================================== 00605 virtual RmLinkedList< IRmEditorPlugIn* > GetNodeEditorPlugInList( RmNode *pNode ) = 0; 00606 00607 //========================================================================== 00616 //========================================================================== 00617 virtual RmLinkedList< IRmImporterPlugIn* > GetImporterPlugInList( RmNode *pNode ) = 0; 00618 00619 //========================================================================== 00628 //========================================================================== 00629 virtual RmLinkedList< IRmExporterPlugIn* > GetExporterPlugInList( RmNode *pNode ) = 0; 00630 00631 //========================================================================== 00640 //========================================================================== 00641 virtual RmLinkedList< IRmGeneratorPlugIn* > GetGeneratorPlugInList( RmNode *pNode ) = 0; 00642 00643 //========================================================================== 00651 //========================================================================== 00652 virtual IRmPlugIn* GetPlugIn( const RmPlugInID* pRmPlugInID ) = 0; 00653 00654 //========================================================================== 00661 //========================================================================== 00662 virtual void OnChangedActiveEffect() = 0; 00663 00664 //========================================================================== 00672 //========================================================================== 00673 virtual RmNodeID GetNextAvailableNodeID() = 0; 00674 00675 //========================================================================== 00683 //========================================================================== 00684 virtual RmNode* GetNodeFromID( const RmNodeID& nodeID ) = 0; 00685 00686 //========================================================================== 00697 //========================================================================== 00698 virtual void RegisterNode( RmNode *pNode, bool bRecursive = false ) = 0; 00699 00700 //========================================================================== 00709 //========================================================================== 00710 virtual void UnregisterNode( RmNode *pNode, bool bRecursive = false ) = 0; 00711 00712 //========================================================================== 00720 //========================================================================== 00721 virtual void SuspendNodeRegistration() = 0; 00722 00723 //========================================================================== 00729 //========================================================================== 00730 virtual void ResumeRegisterNode() = 0; 00731 00732 //========================================================================== 00742 //========================================================================== 00743 virtual void RefreshNodeID( RmNode *pNode, bool bRecursive = false ) = 0; 00744 00745 //========================================================================== 00751 //========================================================================== 00752 virtual bool IsLoading() = 0; 00753 00754 //========================================================================== 00762 //========================================================================== 00763 virtual void SetIsLoading( bool bIsLoading ) = 0; 00764 00765 //========================================================================== 00772 //========================================================================== 00773 virtual bool IsSaving() = 0; 00774 00775 //========================================================================== 00784 //========================================================================== 00785 virtual void SetIsSaving( bool bIsSaving ) = 0; 00786 00787 //========================================================================== 00799 //========================================================================== 00800 virtual void BuildReferenceChangeUpdateList( RmNode* pRmNode, RmLinkedList< RmNodeID* >* pRmNodeIDList ) = 0; 00801 00802 //========================================================================== 00810 //========================================================================== 00811 virtual void SendReferenceChangeUpdateList( RmLinkedList< RmNodeID* >* pRmNodeIDList ) = 0; 00812 00813 //========================================================================== 00822 //========================================================================== 00823 virtual void SendReferenceChangeUpdateDifferenceList( RmLinkedList< RmNodeID* >* pRmNodeIDList1, 00824 RmLinkedList< RmNodeID* >* pRmNodeIDList2 ) = 0; 00825 00826 //========================================================================== 00836 //========================================================================== 00837 virtual void ReCalculateRelativePaths( const RM_TCHAR* strNewAppPath, 00838 RmNode* pRmNode, 00839 bool bAlwaysConvert ) = 0; 00840 00841 //========================================================================== 00855 //========================================================================== 00856 virtual bool ImportXML( RmEffectWorkspace *pRmEffectWorkspace, 00857 const RM_TCHAR *strFileName, 00858 const RM_TCHAR *pStrRmXMLVersion, 00859 bool bQuietTempLoad = false ) = 0; 00860 00861 00862 //========================================================================== 00876 //========================================================================== 00877 virtual void SetDebugMode( bool bDebugMode ) = 0; 00878 00879 //========================================================================== 00888 //========================================================================== 00889 virtual bool GetDebugMode() = 0; 00890 00891 //========================================================================== 00899 //========================================================================== 00900 virtual RmEffectWorkspace* GetDefaultWorkspaceCopy() = 0; 00901 00902 //========================================================================== 00908 //========================================================================== 00909 virtual bool CreateNewWorkspace() = 0; 00910 00911 //========================================================================== 00917 //========================================================================== 00918 virtual bool IsSaveNeeded() const = 0; 00919 00920 //========================================================================== 00930 //========================================================================== 00931 virtual void SetSaveNeeded( bool bSaveNeeded ) = 0; 00932 00933 //.......................................................................... 00934 //.......................................................................... 00936 //.......................................................................... 00937 //.......................................................................... 00938 00939 //========================================================================== 00946 //========================================================================== 00947 virtual IRmVariableManager* GetPredefinedVariableManager() = 0; 00948 00949 //========================================================================== 00956 //========================================================================== 00957 virtual const IRmVariableManager* GetPredefinedVariableManager() const = 0; 00958 00959 //========================================================================== 00966 //========================================================================== 00967 virtual IRmVariableManager* GetPrelinkedVariableManager() = 0; 00968 00969 //========================================================================== 00976 //========================================================================== 00977 virtual const IRmVariableManager* GetPrelinkedVariableManager() const = 0; 00978 00979 //========================================================================== 00986 //========================================================================== 00987 virtual IRmRegistryManager* GetRegistryManager() = 0; 00988 00989 //========================================================================== 00996 //========================================================================== 00997 virtual const IRmRegistryManager* GetRegistryManager() const = 0; 00998 00999 //========================================================================== 01005 //========================================================================== 01006 virtual IRmXMLManager* GetXMLManager() = 0; 01007 01008 //========================================================================== 01014 //========================================================================== 01015 virtual const IRmXMLManager* GetXMLManager() const = 0; 01016 01017 //========================================================================== 01026 //========================================================================== 01027 virtual void GetGeneralPreferenceData( RmGeneralPreferenceData* pGeneralPreferenceData ) = 0; 01028 01029 //========================================================================== 01035 //========================================================================== 01036 virtual float GetTimeCycle() = 0; 01037 01038 //========================================================================== 01044 //========================================================================== 01045 virtual RmViewerUIMode GetViewerUIMode() = 0; 01046 01047 //.......................................................................... 01048 //.......................................................................... 01050 //.......................................................................... 01051 //.......................................................................... 01052 01053 01054 //========================================================================== 01064 //========================================================================== 01065 virtual bool CanLoadGeometryModel( const RM_TCHAR* strFileName ) = 0; 01066 01067 //========================================================================== 01079 //========================================================================== 01080 virtual bool LoadGeometryModel( const RM_TCHAR* strFileName, RmMeshModelContainer *pModelContainer ) = 0; 01081 01082 //========================================================================== 01088 //========================================================================== 01089 virtual RmStringList GetModelFileList() = 0; 01090 01091 //========================================================================== 01105 //========================================================================== 01106 virtual RmStringT GetSupportedGeometryFileExtensions( RmStringT &strDefaultExtension ) = 0; 01107 01108 //.......................................................................... 01109 //.......................................................................... 01111 //.......................................................................... 01112 //.......................................................................... 01113 01114 //========================================================================== 01124 //========================================================================== 01125 virtual bool CanLoadTexture( RmTextureType textureType, 01126 const RM_TCHAR *strFileName ) = 0; 01127 01128 //========================================================================== 01142 //========================================================================== 01143 virtual bool LoadTexture( const RM_TCHAR *strFileName, 01144 RmTexture *pTexture, 01145 RmPixelFormatType format = RM_PIXELFORMAT_UNKNOWN ) = 0; 01146 01147 //========================================================================== 01156 //========================================================================== 01157 virtual RmStringList GetTextureFileList( RmTextureType textureType ) = 0; 01158 01159 //========================================================================== 01173 //========================================================================== 01174 virtual RmStringT GetSupportedTextureFileExtensions( RmTextureType textureType, RmStringT &strDefaultExtension ) = 0; 01175 01176 //.......................................................................... 01177 //.......................................................................... 01179 //.......................................................................... 01180 //.......................................................................... 01181 01182 //========================================================================== 01194 //========================================================================== 01195 virtual void StartUndoMaking( RmUndoOp *pUndoOp ) = 0; 01196 01197 //========================================================================== 01206 //========================================================================== 01207 virtual void StartUndoMaking( const RM_TCHAR *strOpName ) = 0; 01208 01209 //========================================================================== 01217 //========================================================================== 01218 virtual void EndUndoMaking() = 0; 01219 01220 //========================================================================== 01228 //========================================================================== 01229 virtual void AddUndo( RmUndoOp* pUndoOp ) = 0; 01230 01231 //========================================================================== 01238 //========================================================================== 01239 virtual bool CanUndo() const = 0; 01240 01241 //========================================================================== 01247 //========================================================================== 01248 virtual bool CanRedo() const = 0; 01249 01250 //========================================================================== 01256 //========================================================================== 01257 virtual void Undo() = 0; 01258 01259 //========================================================================== 01265 //========================================================================== 01266 virtual void Redo() = 0; 01267 01268 //========================================================================== 01276 //========================================================================== 01277 virtual bool IsMakingUndo() const = 0; 01278 01279 //========================================================================== 01285 //========================================================================== 01286 virtual HACCEL GetAccelerator() const = 0; 01287 01288 //========================================================================== 01296 //========================================================================== 01297 virtual void CompileEffect( RmEffect *pEffect ) = 0; 01298 01299 //========================================================================== 01307 //========================================================================== 01308 virtual void CompileShader( RmShader *pRmShader ) = 0; 01309 01310 //========================================================================== 01317 //========================================================================== 01318 virtual void BeginMessageBlock() = 0; 01319 01320 //========================================================================== 01327 //========================================================================== 01328 virtual void EndMessageBlock() = 0; 01329 01330 //========================================================================== 01336 //========================================================================== 01337 virtual bool GetIsInMessageBlock() = 0; 01338 01339 protected : 01340 01341 //========================================================================== 01347 //========================================================================== 01348 void InitDebugHelper(); 01349 01350 //========================================================================== 01356 //========================================================================== 01357 void UninitializeDebugHelper(); 01358 01359 }; // End of IRmApplication interface declaration 01360 01361 01362 //============================================================================= 01363 // Error logging and debug output 01364 // 01365 // To use: Use #define(d) functions like this: 01366 // RmErrorLog( "My debug problem" ); 01367 // which will output the line number and all the goodies into the debug output 01369 // Do not use these methods directly 01370 //============================================================================= 01371 void RM_API RmSetErrorLogFileName( RM_TCHAR *strFileName ); 01372 void RM_API RmErrorLogExact ( const RM_TCHAR* strString, ...); 01373 bool RM_API RmSetupErrorLog ( RM_TCHAR* strFileName, const int nLineNumber, bool bFatal, bool bShort ); // Always returns FALSE 01374 void RM_API RmSpawnErrorLog(); 01375 void RM_API RmSpawnErrorLogIfNeeded(); 01376 void RM_API RmErrorLogRecordStart(); 01377 void RM_API RmErrorLogRecordStop(); 01378 01379 #define RmErrorLog if ( RmSetupErrorLog(_T(__FILE__), __LINE__, TRUE, FALSE)) ; else RmErrorLogExact 01380 #define RmErrorLogInfo if ( RmSetupErrorLog(_T(__FILE__), __LINE__, FALSE, FALSE)) ; else RmErrorLogExact 01381 #define RmErrorLogShort if ( RmSetupErrorLog(_T(__FILE__), __LINE__, FALSE, TRUE)) ; else RmErrorLogExact 01382 01383 #ifdef _UNICODE 01384 #define RmPrintf wprintf 01385 #else 01386 #define RmPrintf printf 01387 #endif 01388 01389 #endif // __RmApp_h__
1.3.6