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 CORE_SRC_FXGE_WIN32_DWRITE_INT_H_
8 #define CORE_SRC_FXGE_WIN32_DWRITE_INT_H_
9 
10 #ifndef DECLSPEC_UUID
11 #if (_MSC_VER >= 1100) && defined(__cplusplus)
12 #define DECLSPEC_UUID(x) __declspec(uuid(x))
13 #else
14 #define DECLSPEC_UUID(x)
15 #endif
16 #endif
17 #ifndef DECLSPEC_NOVTABLE
18 #if (_MSC_VER >= 1100) && defined(__cplusplus)
19 #define DECLSPEC_NOVTABLE __declspec(novtable)
20 #else
21 #define DECLSPEC_NOVTABLE
22 #endif
23 #endif
24 #if (WINVER < 0x0500)
25 #ifndef _MAC
26 DECLARE_HANDLE(HMONITOR);
27 #endif
28 #endif
29 class CDWriteExt {
30  public:
31   CDWriteExt();
32   ~CDWriteExt();
33 
34   void Load();
35   void Unload();
36 
IsAvailable()37   FX_BOOL IsAvailable() { return m_pDWriteFactory != NULL; }
38 
39   void* DwCreateFontFaceFromStream(uint8_t* pData,
40                                    FX_DWORD size,
41                                    int simulation_style);
42   FX_BOOL DwCreateRenderingTarget(CFX_DIBitmap* pSrc, void** renderTarget);
43   void DwDeleteRenderingTarget(void* renderTarget);
44   FX_BOOL DwRendingString(void* renderTarget,
45                           CFX_ClipRgn* pClipRgn,
46                           FX_RECT& stringRect,
47                           CFX_Matrix* pMatrix,
48                           void* font,
49                           FX_FLOAT font_size,
50                           FX_ARGB text_color,
51                           int glyph_count,
52                           unsigned short* glyph_indices,
53                           FX_FLOAT baselineOriginX,
54                           FX_FLOAT baselineOriginY,
55                           void* glyph_offsets,
56                           FX_FLOAT* glyph_advances);
57   void DwDeleteFont(void* pFont);
58 
59  protected:
60   void* m_hModule;
61   void* m_pDWriteFactory;
62   void* m_pDwFontContext;
63   void* m_pDwTextRenderer;
64 };
65 
66 #endif  // CORE_SRC_FXGE_WIN32_DWRITE_INT_H_
67