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