Re-land: Remove FX_Alloc() null checks now that it can't return NULL.
[pdfium.git] / core / src / fxge / win32 / dwrite_int.h
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
25 DECLARE_HANDLE(HMONITOR);
26 #endif
27 #endif
28 class CDWriteExt
29 {
30 public:
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
53 protected:
54     void*                       m_hModule;
55     void*                       m_pDWriteFactory;
56     void*                   m_pDwFontContext;
57     void*               m_pDwTextRenderer;
58 };
59 #endif