Main Page | Class Hierarchy | Class List | File List | Class Members | File Members

RmApplication.h

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__

Generated on Fri Feb 25 16:08:33 2005 for RenderMonkey SDK by doxygen 1.3.6