65 lines
1.5 KiB
C++
65 lines
1.5 KiB
C++
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
|
|
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
|
|
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
|
|
// PARTICULAR PURPOSE.
|
|
//
|
|
// Copyright (c) Microsoft Corporation. All rights reserved
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
#pragma once
|
|
|
|
struct MagnifierInfo;
|
|
|
|
class IRenderer
|
|
{
|
|
public:
|
|
virtual ~IRenderer() throw()
|
|
{
|
|
}
|
|
|
|
virtual void SetFormat(IDWriteTextFormat* textFormat) = 0;
|
|
virtual void SetText(wchar_t const* text) = 0;
|
|
virtual void SetWindowSize(UINT width, UINT height) = 0;
|
|
virtual void SetMonitor(HMONITOR monitor) = 0;
|
|
virtual void SetMeasuringMode(DWRITE_MEASURING_MODE measuringMode) = 0;
|
|
virtual void SetTransform(DWRITE_MATRIX const& transform) = 0;
|
|
virtual void SetMagnifier(MagnifierInfo const& magnifier) = 0;
|
|
|
|
virtual HRESULT Draw(HDC hdc) = 0;
|
|
};
|
|
|
|
struct MagnifierInfo
|
|
{
|
|
enum Type
|
|
{
|
|
Vector,
|
|
Pixel,
|
|
Subpixel
|
|
};
|
|
|
|
bool visible;
|
|
Type type;
|
|
int scale;
|
|
|
|
// Note: all integer coordinates are in pixels rather than DIPs.
|
|
POINT focusPos;
|
|
POINT magnifierPos;
|
|
SIZE magnifierSize;
|
|
};
|
|
|
|
IRenderer* CreateD2DRenderer(
|
|
HWND hwnd,
|
|
UINT width,
|
|
UINT height,
|
|
IDWriteTextFormat* textFormat,
|
|
wchar_t const* text
|
|
);
|
|
|
|
IRenderer* CreateDWriteRenderer(
|
|
HWND hwnd,
|
|
UINT width,
|
|
UINT height,
|
|
IDWriteTextFormat* textFormat,
|
|
wchar_t const* text
|
|
);
|