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
26DECLARE_HANDLE(HMONITOR);
27#endif
28#endif
29class CDWriteExt
30{
31public:
32    CDWriteExt();
33    ~CDWriteExt();
34
35    void			Load();
36    void            Unload();
37
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
54protected:
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