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 {
31 public:
32     CDWriteExt();
33     ~CDWriteExt();
34 
35     void			Load();
36     void            Unload();
37 
IsAvailable()38     FX_BOOL			IsAvailable()
39     {
40         return m_pDWriteFactory != NULL;
41     }
42 
43     void*			DwCreateFontFaceFromStream(FX_LPBYTE pData, FX_DWORD size, int simulation_style);
44     FX_BOOL         DwCreateRenderingTarget(CFX_DIBitmap* pSrc, void** renderTarget);
45     void            DwDeleteRenderingTarget(void* renderTarget);
46     FX_BOOL			DwRendingString(void* renderTarget, CFX_ClipRgn* pClipRgn, FX_RECT& stringRect, CFX_AffineMatrix* pMatrix,
47                                     void *font, FX_FLOAT font_size, FX_ARGB text_color,
48                                     int glyph_count, unsigned short* glyph_indices,
49                                     FX_FLOAT baselineOriginX, FX_FLOAT baselineOriginY,
50                                     void* glyph_offsets,
51                                     FX_FLOAT* glyph_advances);
52     void			DwDeleteFont(void* pFont);
53 
54 protected:
55     void*			m_hModule;
56     void*			m_pDWriteFactory;
57     void*		    m_pDwFontContext;
58     void*	        m_pDwTextRenderer;
59 };
60 
61 #endif  // CORE_SRC_FXGE_WIN32_DWRITE_INT_H_
62