|
|
/***************************************************************************\
* * File: OSAL.h * * Description: * OSAL.h defines the process-wide Operating System Abstraction Layer that * allows DirectUser to run on different platforms. * * * History: * 1/18/2000: JStall: Created * * Copyright (C) 2000 by Microsoft Corporation. All rights reserved. * \***************************************************************************/
#if !defined(SERVICES__OSAL_h__INCLUDED)
#define SERVICES__OSAL_h__INCLUDED
#pragma once
/***************************************************************************\
* * class OS * * OS abstracts out differences between various OS's including: * - Unicode / ANSI * - Platform implementation differences * - Version specific bugs * \***************************************************************************/
class OSAL { // Construction
public: virtual ~OSAL() { };
static HRESULT Init();
// USER Operations
public: virtual int DrawText(HDC hDC, LPCWSTR lpString, int nCount, LPRECT lpRect, UINT uFormat) PURE;
// GDI Operations
public: virtual BOOL TextOut(HDC, int, int, LPCWSTR, int) PURE; virtual BOOL ExtTextOut(HDC, int, int, UINT, const RECT *, LPCWSTR, int, const int *) PURE; virtual HFONT CreateFontIndirect(CONST LOGFONTW *) PURE; virtual BOOL GetTextExtentPoint32(HDC, LPCWSTR, int, LPSIZE) PURE; virtual BOOL GetTextExtentExPoint(HDC, LPCWSTR, int, int, LPINT, LPINT, LPSIZE) PURE;
// DirectUser/Core
public: virtual void PushXForm(HDC hdc, XFORM * pxfOld) PURE; virtual void PopXForm(HDC hdc, const XFORM * pxfOld) PURE; virtual void RotateDC(HDC hdc, float flRotationRad) PURE; virtual void ScaleDC(HDC hdc, float flScaleX, float flScaleY) PURE; virtual void TranslateDC(HDC hdc, float flOffsetX, float flOffsetY) PURE; virtual void SetWorldTransform(HDC hdc, const XFORM * pxf) PURE; virtual void SetIdentityTransform(HDC hdc) PURE;
// DirectUser/Services
public: virtual BOOL IsInsideLoaderLock() PURE;
// Implementation
protected: static inline BOOL IsWin98orWin2000(OSVERSIONINFO * povi); static inline BOOL IsWhistler(OSVERSIONINFO * povi); };
inline BOOL SupportUnicode(); inline BOOL SupportXForm(); inline BOOL SupportQInputAvailable(); inline BOOL IsRemoteSession();
LONG WINAPI StdExceptionFilter(PEXCEPTION_POINTERS pei);
#include "OSAL.inl"
#endif // SERVICES__OSAL_h__INCLUDED
|