home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1995 November / PCWK1195.iso / inne / win / sieciowe / oiv_demo.lzh / disk2 / DATA.2 / include / Ivf / IvfApp.h next >
C/C++ Source or Header  |  1995-06-19  |  9KB  |  256 lines

  1. /*
  2. * Copyright (C) 1995   Template Graphics Software, Inc.
  3. _______________________________________________________________________
  4. _________________  TEMPLATE GRAPHICS SOFTWARE INC.  ___________________
  5. |
  6. |
  7. |   This class provides methods for initialization of Open Inventor and
  8. |   the Inventor Framework Class library.
  9. |
  10. |   Author(s): James R. Gambale, Jr.
  11. |
  12. _________________  TEMPLATE GRAPHICS SOFTWARE INC.  ___________________
  13. _______________________________________________________________________
  14. */
  15.  
  16. #ifndef __CIVFAPP_H__
  17. #define __CIVFAPP_H__
  18.  
  19.  
  20. #include "IvfEnterScope.h"
  21.  
  22. #include "IvfView.h"
  23. class CIvfDoc ;
  24. class CIvfMainFrame ;
  25.  
  26. class CDocument ;
  27. class CDocTemplate ;
  28. class CView ;
  29. class CWnd ;
  30. class CFrameWnd ;
  31.  
  32.  
  33. // This type is for the application supplied conversion method that converts
  34. // an MFC CView object into an IVF CIvfView Object.
  35. typedef CIvfView * (*IvfCvtAfxViewProc)(CView *) ;
  36.  
  37. // This type is for the application supplied conversion method that converts
  38. // an IVF CIvfView Object into an MFC CView object.
  39. typedef CView * (*IvfCvtIvfViewProc)(CIvfView *) ;
  40.  
  41. // This type is for the application supplied conversion method that converts
  42. // an MFC CDocument object into an IVF CIvfDoc object.
  43. typedef CIvfDoc * (*IvfCvtAfxDocProc)(CDocument *) ;
  44.  
  45. // This type is for the application supplied conversion method that converts
  46. // an IVF CIvfDoc Object into an MFC CDocument object.
  47. typedef CDocument * (*IvfCvtIvfDocProc)(CIvfDoc *) ;
  48.  
  49.  
  50. class CIvfApp 
  51. {
  52. public:
  53.  
  54.  
  55.     CIvfApp();
  56.     ~CIvfApp();
  57.     
  58.     // This method intializes the IVF class library.  It is called from InitInstance 
  59.     // in the MFC application object.
  60.     static BOOL     IvfInitInstance(
  61.                               CWinApp *                pApp,
  62.                              CIvfApp    *                pIvfApp,
  63.                             CIvfMainFrame  *        pFrame,
  64.                             CDocTemplate *            pDocTemplate,
  65.                             IvfCvtAfxViewProc         pAfxViewProc,
  66.                             IvfCvtIvfViewProc         pIvfViewProc,
  67.                             IvfCvtAfxDocProc           pAfxDocProc,
  68.                             IvfCvtIvfDocProc           pIvfDocProc,
  69.                             CRuntimeClass *            pVwrClass,
  70.                             void *                    pVwrArgs,
  71.                             BOOL                    nMDI=FALSE) ;
  72.     
  73.     // Given a pointer to an IVF document object, this method will return a pointer
  74.     // to the corresponding IVF view object.  It will return the active view if
  75.     // the argument is NULL.
  76.     CIvfView *            IvfGetView(CIvfDoc *pIvfDoc = NULL) ;
  77.     
  78.     // Given a pointer to an IVF view object, this method will return a pointer
  79.     // to the corresponding IVF document object.  If the argument is NULL, the
  80.     // document corresponding to the active view is returned.
  81.     CIvfDoc *            IvfGetDocument(CIvfView *pIvfView = NULL) ;
  82.     
  83.     // This method returns a pointer to the IVF frame window object.
  84.     CIvfMainFrame *        IvfGetFrame() ;
  85.  
  86.     // Given a pointer to an IVF view object, this method calls the
  87.     // application supplied conversion method to perform
  88.     // a type safe cast down to the application view class and then
  89.     // a cast up to the MFC view class.  A pointer to the MFC view object
  90.     // corresponding to the IVF view object is returned.  If the argument
  91.     // is NULL, a pointer to the active view is returned.
  92.     CView *                IvfGetAfxView(CIvfView *pIvfView = NULL) ;
  93.  
  94.     // Given a pointer to an IVF view object, this method first locates
  95.     // the corresponding IVF document object.  It then calls the
  96.     // application supplied conversion method to perform a type safe 
  97.     // cast of the IVF document object pointer down to the application document 
  98.     // class and then a cast up to the MFC document class.  A pointer to 
  99.     // the MFC document object corresponding to the IVF view object 
  100.     // is returned.  If the argument is NULL, a pointer to the document 
  101.     // object corresponding to the active view is returned.
  102.     CDocument *            IvfGetAfxDoc(CIvfView *pIvfView = NULL) ;
  103.  
  104.     // Given a pointer to an IVF document object, calls the
  105.     // application supplied conversion method to perform a type safe 
  106.     // cast of the IVF document object pointer down to the application document 
  107.     // class, and then a cast up to the MFC document class.  A pointer to 
  108.     // the MFC document object corresponding to the IVF document object 
  109.     // is returned.  
  110.     CDocument *            IvfGetAfxDoc(CIvfDoc *pIvfDoc) ;
  111.  
  112.     // Given a pointer to an IVF view object, this method first locates
  113.     // the corresponding IVF document object.  It then calls the
  114.     // application supplied conversion method to perform a type safe 
  115.     // cast of the IVF document object pointer down to the application document 
  116.     // class and then a cast up to the MFC document class.  A pointer to 
  117.     // the MFC document object corresponding to the IVF view object 
  118.     // is returned.  If the argument is NULL, a pointer to the document 
  119.     // object corresponding to the active view is returned.
  120.     CFrameWnd *            IvfGetAfxFrame(CIvfView *pIvfView = NULL) ;
  121.  
  122.     // This method invokes the application supplied conversion method
  123.     // to convert an MFC view object pointer into an IVF view object
  124.     // pointer.
  125.     CIvfView *            ToIvf(CView *pAfxView) ;
  126.  
  127.     // This method invokes the application supplied conversion method
  128.     // to convert an IVF view object pointer into an MFC view object
  129.     // pointer.
  130.     CView *                ToAfx(CIvfView *pIvfView) ;
  131.  
  132.     // This method invokes the application supplied conversion method
  133.     // to convert an MFC document object pointer into an IVF document 
  134.     // object pointer.
  135.     CIvfDoc *            ToIvf(CDocument *pAfxDoc) ;
  136.  
  137.     // This method invokes the application supplied conversion method
  138.     // to convert an IVF document object pointer into an MFC document
  139.     // object pointer.
  140.     CDocument *            ToAfx(CIvfDoc *pIvfDoc) ;
  141.  
  142.  
  143.     // This method returns a pointer to the application object.
  144.     static CIvfApp *        IvfGetApp() { return m_pApp; } ;
  145.  
  146.     // This method returns a pointer to the application document template
  147.     // object.
  148.     static CDocTemplate *    IvfGetDocTemplate() { return m_pDocTemplate; };
  149.  
  150.     // This method returns a pointer to the runtime class information
  151.     // for the IVF viewer class object.
  152.     static CRuntimeClass *    IvfVwrClass() { return m_pVwrClass ; } ;
  153.  
  154.     // This method returns a pointer to the arguments passed to
  155.     // the of the IVF viewer class for viewer creation.
  156.     static void *            IvfVwrArgs() { return m_pVwrArgs ; } ;
  157.  
  158.     // This method returns a boolean that indicates if this
  159.     // an MDI application.
  160.     static BOOL             IvfIsMdi() { return m_nMDI ; } ;
  161.  
  162. private:
  163.     // pointer to the IVF application object
  164.     static __IvfStaticImport CIvfApp *            m_pApp ;
  165.  
  166.     // pointer to the application document template object
  167.     static __IvfStaticImport CDocTemplate *        m_pDocTemplate ;
  168.  
  169.     // pointer to the runtime class information for the IVF viewer
  170.     // class
  171.     static __IvfStaticImport CRuntimeClass *    m_pVwrClass ;
  172.  
  173.     // pointer to the arguments for IVF viewer creation
  174.     static __IvfStaticImport void *                m_pVwrArgs ;
  175.  
  176.     // MDI flag
  177.     static __IvfStaticImport BOOL                m_nMDI ;
  178.  
  179.     // pointer to the frame window object
  180.     CIvfMainFrame  *        m_pFrame ;
  181.  
  182.     // pointer to application supplied type safe pointer
  183.     // conversion methods
  184.     IvfCvtAfxViewProc           m_pAfxViewProc ;
  185.     IvfCvtIvfViewProc           m_pIvfViewProc ;
  186.     IvfCvtAfxDocProc           m_pAfxDocProc ;
  187.     IvfCvtIvfDocProc           m_pIvfDocProc ;
  188.  
  189. };
  190.  
  191.  
  192. // IVF_INIT_INSTANCE Macro
  193. // This macro is invoked from the MFC application objects InitInstance method.
  194. // It invokes the CIvfApp method IvfInitInstance to intialize IVF.
  195. #ifdef __TGS_DEMO_UNLOCK
  196. #include <Inventor/lock/demoUnlock.h>
  197. #include <Inventor/lock/SoLockMgr.h>
  198. #define IVF_INIT_INSTANCE(CFrameClass,CViewClass,CDocClass,pVwrClass,pVwrArgs,nMDI) \
  199. { \
  200.     SoLockManager::SetUnlockString(DEMO_UNLOCK_STRING) ; \
  201.     CFrameClass *pFrame = (CFrameClass *)m_pMainWnd ; \
  202.     CIvfApp::IvfInitInstance(this,this,pFrame,pDocTemplate, \
  203.         IvfCvtAfxView, \
  204.         IvfCvtIvfView, \
  205.         IvfCvtAfxDoc, \
  206.         IvfCvtIvfDoc, \
  207.         pVwrClass, \
  208.         pVwrArgs, \
  209.         nMDI); \
  210. }
  211. #else
  212. #define IVF_INIT_INSTANCE(CFrameClass,CViewClass,CDocClass,pVwrClass,pVwrArgs,nMDI) \
  213. { \
  214.     CFrameClass *pFrame = (CFrameClass *)m_pMainWnd ; \
  215.     CIvfApp::IvfInitInstance(this,this,pFrame,pDocTemplate, \
  216.         IvfCvtAfxView, \
  217.         IvfCvtIvfView, \
  218.         IvfCvtAfxDoc, \
  219.         IvfCvtIvfDoc, \
  220.         pVwrClass, \
  221.         pVwrArgs, \
  222.         nMDI); \
  223. }
  224. #endif
  225.  
  226.  
  227. // This macro is used to define the type safe conversion methods
  228. // for the application.
  229. #define IVF_AFX_CONVERSION_METHOD(AppViewClassName,AppDocClassName) \
  230. static CIvfView *IvfCvtAfxView(CView *pAfxView) \
  231. { \
  232.   AppViewClassName *pView = (AppViewClassName *) pAfxView ; \
  233.   return pView ; \
  234. } \
  235. static CView *IvfCvtIvfView(CIvfView *pIvfView) \
  236. { \
  237.   AppViewClassName *pView = (AppViewClassName *) pIvfView ; \
  238.   return pView ; \
  239. } \
  240. static CIvfDoc *IvfCvtAfxDoc(CDocument *pAfxDoc) \
  241. { \
  242.   AppDocClassName *pDoc = (AppDocClassName *) pAfxDoc ; \
  243.   return pDoc ; \
  244. } \
  245. static CDocument *IvfCvtIvfDoc(CIvfDoc *pIvfDoc) \
  246. { \
  247.   AppDocClassName *pDoc = (AppDocClassName *) pIvfDoc ; \
  248.   return pDoc ; \
  249.  
  250.  
  251. #include "IvfLeaveScope.h"
  252.  
  253. /////////////////////////////////////////////////////////////////////////////
  254. #endif
  255.