1// Copyright 2014 PDFium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6
7#ifndef _FX_DIRECT_WRITE_
8#define _FX_DIRECT_WRITE_
9#ifndef DECLSPEC_UUID
10#if (_MSC_VER >= 1100) && defined (__cplusplus)
11#define DECLSPEC_UUID(x)    __declspec(uuid(x))
12#else
13#define DECLSPEC_UUID(x)
14#endif
15#endif
16#ifndef DECLSPEC_NOVTABLE
17#if (_MSC_VER >= 1100) && defined(__cplusplus)
18#define DECLSPEC_NOVTABLE   __declspec(novtable)
19#else
20#define DECLSPEC_NOVTABLE
21#endif
22#endif
23#if(WINVER < 0x0500)
24#ifndef _MAC
25DECLARE_HANDLE(HMONITOR);
26#endif
27#endif
28class CDWriteExt
29{
30public:
31    CDWriteExt();
32    ~CDWriteExt();
33
34    void			Load();
35    void            Unload();
36
37    FX_BOOL			IsAvailable()
38    {
39        return m_pDWriteFactory != NULL;
40    }
41
42    void*			DwCreateFontFaceFromStream(FX_LPBYTE pData, FX_DWORD size, int simulation_style);
43    FX_BOOL         DwCreateRenderingTarget(CFX_DIBitmap* pSrc, void** renderTarget);
44    void            DwDeleteRenderingTarget(void* renderTarget);
45    FX_BOOL			DwRendingString(void* renderTarget, CFX_ClipRgn* pClipRgn, FX_RECT& stringRect, CFX_AffineMatrix* pMatrix,
46                                    void *font, FX_FLOAT font_size, FX_ARGB text_color,
47                                    int glyph_count, unsigned short* glyph_indices,
48                                    FX_FLOAT baselineOriginX, FX_FLOAT baselineOriginY,
49                                    void* glyph_offsets,
50                                    FX_FLOAT* glyph_advances);
51    void			DwDeleteFont(void* pFont);
52
53protected:
54    void*			m_hModule;
55    void*			m_pDWriteFactory;
56    void*		    m_pDwFontContext;
57    void*	        m_pDwTextRenderer;
58};
59#endif
60