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_INCLUDE_FXGE_FX_GE_WIN32_H_ 8 #define CORE_INCLUDE_FXGE_FX_GE_WIN32_H_ 9 10 #ifdef _WIN32 11 #ifndef _WINDOWS_ 12 #include <windows.h> 13 #endif 14 #define WINDIB_OPEN_MEMORY 0x1 15 #define WINDIB_OPEN_PATHNAME 0x2 16 typedef struct WINDIB_Open_Args_ { 17 18 int flags; 19 20 const FX_BYTE* memory_base; 21 22 size_t memory_size; 23 24 FX_LPCWSTR path_name; 25 } WINDIB_Open_Args_; 26 class CFX_WindowsDIB : public CFX_DIBitmap 27 { 28 public: 29 30 static CFX_ByteString GetBitmapInfo(const CFX_DIBitmap* pBitmap); 31 32 static CFX_DIBitmap* LoadFromBuf(BITMAPINFO* pbmi, void* pData); 33 34 static HBITMAP GetDDBitmap(const CFX_DIBitmap* pBitmap, HDC hDC); 35 36 static CFX_DIBitmap* LoadFromDDB(HDC hDC, HBITMAP hBitmap, FX_DWORD* pPalette = NULL, FX_DWORD size = 256); 37 38 static CFX_DIBitmap* LoadFromFile(FX_LPCWSTR filename); 39 LoadFromFile(FX_LPCSTR filename)40 static CFX_DIBitmap* LoadFromFile(FX_LPCSTR filename) 41 { 42 return LoadFromFile(CFX_WideString::FromLocal(filename).c_str()); 43 } 44 45 static CFX_DIBitmap* LoadDIBitmap(WINDIB_Open_Args_ args); 46 47 CFX_WindowsDIB(HDC hDC, int width, int height); 48 49 ~CFX_WindowsDIB(); 50 GetDC()51 HDC GetDC() const 52 { 53 return m_hMemDC; 54 } 55 GetWindowsBitmap()56 HBITMAP GetWindowsBitmap() const 57 { 58 return m_hBitmap; 59 } 60 61 void LoadFromDevice(HDC hDC, int left, int top); 62 63 void SetToDevice(HDC hDC, int left, int top); 64 protected: 65 66 HDC m_hMemDC; 67 68 HBITMAP m_hBitmap; 69 70 HBITMAP m_hOldBitmap; 71 }; 72 class CFX_WindowsDevice : public CFX_RenderDevice 73 { 74 public: 75 static IFX_RenderDeviceDriver* CreateDriver(HDC hDC, FX_BOOL bCmykOutput = FALSE); 76 77 CFX_WindowsDevice(HDC hDC, FX_BOOL bCmykOutput = FALSE, FX_BOOL bForcePSOutput = FALSE, int psLevel = 2); 78 79 HDC GetDC() const; 80 81 FX_BOOL m_bForcePSOutput; 82 83 static int m_psLevel; 84 }; 85 class CFX_WinBitmapDevice : public CFX_RenderDevice 86 { 87 public: 88 89 CFX_WinBitmapDevice(int width, int height, FXDIB_Format format); 90 91 ~CFX_WinBitmapDevice(); 92 GetDC()93 HDC GetDC() 94 { 95 return m_hDC; 96 } 97 protected: 98 99 HBITMAP m_hBitmap; 100 101 HBITMAP m_hOldBitmap; 102 103 HDC m_hDC; 104 }; 105 #endif 106 107 #endif // CORE_INCLUDE_FXGE_FX_GE_WIN32_H_ 108