home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 January: Mac OS SDK / Dev.CD Jan 97 SDK2.toast / Development Kits (Disc 2) / OpenDoc Development Framework / ODFDev / ODF / OS / FWGraphx / SLGDev.cpp < prev    next >
Encoding:
Text File  |  1996-09-17  |  5.5 KB  |  190 lines  |  [TEXT/MPS ]

  1. //========================================================================================
  2. //
  3. //    File:                SLGDev.cpp
  4. //    Release Version:    $ ODF 2 $
  5. //
  6. //    Copyright:    (c) 1993 - 1996 by Apple Computer, Inc., all rights reserved.
  7. //
  8. //========================================================================================
  9.  
  10. #include "FWOS.hpp"
  11.  
  12. #ifndef SLGDEV_H
  13. #include "SLGDev.h"
  14. #endif
  15.  
  16. #ifndef PRGDEV_H
  17. #include "PRGDev.h"
  18. #endif
  19.  
  20. //========================================================================================
  21. // Graphics device
  22. //========================================================================================
  23.  
  24. #ifdef FW_BUILD_MAC
  25. #pragma segment FWGraphics_GDevice
  26. #endif
  27.  
  28. //----------------------------------------------------------------------------------------
  29. //    FW_PrivGDev_CreateFromODCanvas
  30. //----------------------------------------------------------------------------------------
  31.  
  32. FW_HGDevice SL_API FW_PrivGDev_CreateFromODCanvas(Environment *ev, ODCanvas* odCanvas)
  33. {
  34. FW_UNUSED(ev);
  35.  
  36.     FW_HGDevice device = 0;
  37.     FW_SOM_TRY
  38.     {
  39.         device = FW_NEW(FW_CPrivGraphicsDevice, (odCanvas));
  40.         device->Acquire();
  41.     }
  42.     FW_SOM_CATCH
  43.     return device;
  44. }
  45.  
  46. //----------------------------------------------------------------------------------------
  47. //    FW_PrivGDev_CreateFromPlatformCanvas
  48. //----------------------------------------------------------------------------------------
  49.  
  50. FW_HGDevice SL_API FW_PrivGDev_CreateFromPlatformCanvas(Environment *ev, ODPlatformCanvas platformCanvas)
  51. {
  52. FW_UNUSED(ev);
  53.  
  54.     FW_HGDevice device = 0;
  55.     FW_SOM_TRY
  56.     {
  57.         device = FW_NEW(FW_CPrivGraphicsDevice, (platformCanvas));
  58.         device->Acquire();
  59.     }
  60.     FW_SOM_CATCH
  61.     return device;
  62. }
  63.  
  64. //----------------------------------------------------------------------------------------
  65. //    FW_PrivGDev_Acquire
  66. //----------------------------------------------------------------------------------------
  67.  
  68. void SL_API FW_PrivGDev_Acquire(FW_HGDevice gdev)
  69. {
  70.     // No try block necessary - Do not throw
  71.     gdev->Acquire();
  72. }
  73.  
  74. //----------------------------------------------------------------------------------------
  75. //    FW_PrivGDev_Release
  76. //----------------------------------------------------------------------------------------
  77.  
  78. void SL_API FW_PrivGDev_Release(FW_HGDevice gdev)
  79. {
  80.     // No try block necessary - Do not throw
  81.     gdev->Release();
  82. }
  83.  
  84. //----------------------------------------------------------------------------------------
  85. //    FW_PrivGDev_GetPlatformCanvas
  86. //----------------------------------------------------------------------------------------
  87.  
  88. ODPlatformCanvas SL_API FW_PrivGDev_GetPlatformCanvas(FW_HGDevice gdev)
  89. {
  90.     // No try block necessary - Do not throw
  91.     return gdev->GetPlatformCanvas();
  92. }
  93.  
  94. //----------------------------------------------------------------------------------------
  95. //    FW_PrivGDev_GetFontMetrics
  96. //----------------------------------------------------------------------------------------
  97.  
  98. FW_PlatformError SL_API FW_PrivGDev_GetFontMetrics(FW_HGDevice gdev, FW_HFont font, FW_PlatformFontMetrics& metrics)
  99. {
  100.     FW_RETURN_ERR_TRY
  101.     {
  102.         gdev->SelectFont(font, FALSE);    // FALSE means no scaling
  103.     
  104. #ifdef FW_BUILD_MAC
  105. FW_UNUSED(gdev);
  106.         ::GetFontInfo(&metrics);
  107. #endif
  108.     
  109. #ifdef FW_BUILD_WIN
  110.         HDC dc = gdev->GetPlatformCanvas();
  111.         ::SetMapMode(dc, MM_ANISOTROPIC);
  112.         
  113.         SIZE sizeOldWinExt;
  114.         ::SetWindowExtEx(dc, 1440, 1440, &sizeOldWinExt);
  115.         
  116.         SIZE sizeOldViewExt;
  117.         ::SetViewportExtEx(dc, ::GetDeviceCaps(dc, LOGPIXELSX), ::GetDeviceCaps(dc, LOGPIXELSY), &sizeOldViewExt);
  118.         
  119.         ::GetTextMetrics(dc, &metrics);
  120.         
  121.         ::SetMapMode(dc, MM_TEXT);
  122.         ::SetWindowExtEx(dc, sizeOldWinExt.cx, sizeOldWinExt.cx, NULL);
  123.         ::SetViewportExtEx(dc, sizeOldViewExt.cx, sizeOldViewExt.cy, NULL);
  124. #endif
  125.     }
  126.     FW_RETURN_ERR_CATCH
  127. }
  128.  
  129. //----------------------------------------------------------------------------------------
  130. //    FW_PrivGDev_GetResolution
  131. //----------------------------------------------------------------------------------------
  132.  
  133. FW_PlatformError SL_API FW_PrivGDev_GetResolution(FW_HGDevice gdev, FW_SPoint& pt)
  134. {
  135.     // No try block necessary - Do not throw
  136.     pt = gdev->GetResolution();
  137.     return FW_xNoError;
  138. }
  139.  
  140. //----------------------------------------------------------------------------------------
  141. //    FW_PrivGDev_Suspend
  142. //----------------------------------------------------------------------------------------
  143.  
  144. FW_SPrivSuspendResumeState*    SL_API FW_PrivGDev_Suspend(FW_HGDevice gdev, FW_PlatformError* error)
  145. {
  146.     FW_ERR_TRY
  147.     {
  148.         return gdev->Suspend();
  149.     }
  150.     FW_ERR_CATCH
  151.     return NULL;
  152. }
  153.  
  154. //----------------------------------------------------------------------------------------
  155. //    FW_PrivGDev_Resume
  156. //----------------------------------------------------------------------------------------
  157.  
  158. void SL_API FW_PrivGDev_Resume(FW_HGDevice gdev, FW_SPrivSuspendResumeState *suspendResumeState, FW_PlatformError* error)
  159. {
  160.     FW_ERR_TRY
  161.     {
  162.         gdev->Resume(suspendResumeState);
  163.     }
  164.     FW_ERR_CATCH
  165. }
  166.  
  167. //----------------------------------------------------------------------------------------
  168. //    FW_PrivGDev_SetResolution
  169. //----------------------------------------------------------------------------------------
  170.  
  171. FW_PlatformError SL_API FW_PrivGDev_SetResolution(FW_HGDevice gdev, FW_Fixed x, FW_Fixed y)
  172. {
  173.     // No try block necessary - Do not throw
  174.     gdev->SetResolution(x, y);
  175.     return FW_xNoError;
  176. }
  177.  
  178. //----------------------------------------------------------------------------------------
  179. //    FW_PrivGDev_CanvasChanged
  180. //----------------------------------------------------------------------------------------
  181.  
  182. void SL_API FW_PrivGDev_CanvasChanged(FW_HGDevice gdev, Environment *ev, ODCanvas* canvas)
  183. {
  184.     FW_SOM_TRY
  185.     {
  186.         gdev->CanvasChanged(ev, canvas);
  187.     }
  188.     FW_SOM_CATCH
  189. }
  190.