home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-09-17 | 5.5 KB | 190 lines | [TEXT/MPS ] |
- //========================================================================================
- //
- // File: SLGDev.cpp
- // Release Version: $ ODF 2 $
- //
- // Copyright: (c) 1993 - 1996 by Apple Computer, Inc., all rights reserved.
- //
- //========================================================================================
-
- #include "FWOS.hpp"
-
- #ifndef SLGDEV_H
- #include "SLGDev.h"
- #endif
-
- #ifndef PRGDEV_H
- #include "PRGDev.h"
- #endif
-
- //========================================================================================
- // Graphics device
- //========================================================================================
-
- #ifdef FW_BUILD_MAC
- #pragma segment FWGraphics_GDevice
- #endif
-
- //----------------------------------------------------------------------------------------
- // FW_PrivGDev_CreateFromODCanvas
- //----------------------------------------------------------------------------------------
-
- FW_HGDevice SL_API FW_PrivGDev_CreateFromODCanvas(Environment *ev, ODCanvas* odCanvas)
- {
- FW_UNUSED(ev);
-
- FW_HGDevice device = 0;
- FW_SOM_TRY
- {
- device = FW_NEW(FW_CPrivGraphicsDevice, (odCanvas));
- device->Acquire();
- }
- FW_SOM_CATCH
- return device;
- }
-
- //----------------------------------------------------------------------------------------
- // FW_PrivGDev_CreateFromPlatformCanvas
- //----------------------------------------------------------------------------------------
-
- FW_HGDevice SL_API FW_PrivGDev_CreateFromPlatformCanvas(Environment *ev, ODPlatformCanvas platformCanvas)
- {
- FW_UNUSED(ev);
-
- FW_HGDevice device = 0;
- FW_SOM_TRY
- {
- device = FW_NEW(FW_CPrivGraphicsDevice, (platformCanvas));
- device->Acquire();
- }
- FW_SOM_CATCH
- return device;
- }
-
- //----------------------------------------------------------------------------------------
- // FW_PrivGDev_Acquire
- //----------------------------------------------------------------------------------------
-
- void SL_API FW_PrivGDev_Acquire(FW_HGDevice gdev)
- {
- // No try block necessary - Do not throw
- gdev->Acquire();
- }
-
- //----------------------------------------------------------------------------------------
- // FW_PrivGDev_Release
- //----------------------------------------------------------------------------------------
-
- void SL_API FW_PrivGDev_Release(FW_HGDevice gdev)
- {
- // No try block necessary - Do not throw
- gdev->Release();
- }
-
- //----------------------------------------------------------------------------------------
- // FW_PrivGDev_GetPlatformCanvas
- //----------------------------------------------------------------------------------------
-
- ODPlatformCanvas SL_API FW_PrivGDev_GetPlatformCanvas(FW_HGDevice gdev)
- {
- // No try block necessary - Do not throw
- return gdev->GetPlatformCanvas();
- }
-
- //----------------------------------------------------------------------------------------
- // FW_PrivGDev_GetFontMetrics
- //----------------------------------------------------------------------------------------
-
- FW_PlatformError SL_API FW_PrivGDev_GetFontMetrics(FW_HGDevice gdev, FW_HFont font, FW_PlatformFontMetrics& metrics)
- {
- FW_RETURN_ERR_TRY
- {
- gdev->SelectFont(font, FALSE); // FALSE means no scaling
-
- #ifdef FW_BUILD_MAC
- FW_UNUSED(gdev);
- ::GetFontInfo(&metrics);
- #endif
-
- #ifdef FW_BUILD_WIN
- HDC dc = gdev->GetPlatformCanvas();
- ::SetMapMode(dc, MM_ANISOTROPIC);
-
- SIZE sizeOldWinExt;
- ::SetWindowExtEx(dc, 1440, 1440, &sizeOldWinExt);
-
- SIZE sizeOldViewExt;
- ::SetViewportExtEx(dc, ::GetDeviceCaps(dc, LOGPIXELSX), ::GetDeviceCaps(dc, LOGPIXELSY), &sizeOldViewExt);
-
- ::GetTextMetrics(dc, &metrics);
-
- ::SetMapMode(dc, MM_TEXT);
- ::SetWindowExtEx(dc, sizeOldWinExt.cx, sizeOldWinExt.cx, NULL);
- ::SetViewportExtEx(dc, sizeOldViewExt.cx, sizeOldViewExt.cy, NULL);
- #endif
- }
- FW_RETURN_ERR_CATCH
- }
-
- //----------------------------------------------------------------------------------------
- // FW_PrivGDev_GetResolution
- //----------------------------------------------------------------------------------------
-
- FW_PlatformError SL_API FW_PrivGDev_GetResolution(FW_HGDevice gdev, FW_SPoint& pt)
- {
- // No try block necessary - Do not throw
- pt = gdev->GetResolution();
- return FW_xNoError;
- }
-
- //----------------------------------------------------------------------------------------
- // FW_PrivGDev_Suspend
- //----------------------------------------------------------------------------------------
-
- FW_SPrivSuspendResumeState* SL_API FW_PrivGDev_Suspend(FW_HGDevice gdev, FW_PlatformError* error)
- {
- FW_ERR_TRY
- {
- return gdev->Suspend();
- }
- FW_ERR_CATCH
- return NULL;
- }
-
- //----------------------------------------------------------------------------------------
- // FW_PrivGDev_Resume
- //----------------------------------------------------------------------------------------
-
- void SL_API FW_PrivGDev_Resume(FW_HGDevice gdev, FW_SPrivSuspendResumeState *suspendResumeState, FW_PlatformError* error)
- {
- FW_ERR_TRY
- {
- gdev->Resume(suspendResumeState);
- }
- FW_ERR_CATCH
- }
-
- //----------------------------------------------------------------------------------------
- // FW_PrivGDev_SetResolution
- //----------------------------------------------------------------------------------------
-
- FW_PlatformError SL_API FW_PrivGDev_SetResolution(FW_HGDevice gdev, FW_Fixed x, FW_Fixed y)
- {
- // No try block necessary - Do not throw
- gdev->SetResolution(x, y);
- return FW_xNoError;
- }
-
- //----------------------------------------------------------------------------------------
- // FW_PrivGDev_CanvasChanged
- //----------------------------------------------------------------------------------------
-
- void SL_API FW_PrivGDev_CanvasChanged(FW_HGDevice gdev, Environment *ev, ODCanvas* canvas)
- {
- FW_SOM_TRY
- {
- gdev->CanvasChanged(ev, canvas);
- }
- FW_SOM_CATCH
- }
-