diff options
Diffstat (limited to 'core/fxge/include/fx_ge_win32.h')
-rw-r--r-- | core/fxge/include/fx_ge_win32.h | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/core/fxge/include/fx_ge_win32.h b/core/fxge/include/fx_ge_win32.h new file mode 100644 index 0000000000..b4337c117c --- /dev/null +++ b/core/fxge/include/fx_ge_win32.h @@ -0,0 +1,98 @@ +// Copyright 2014 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#ifndef CORE_FXGE_INCLUDE_FX_GE_WIN32_H_ +#define CORE_FXGE_INCLUDE_FX_GE_WIN32_H_ + +#ifdef _WIN32 +#ifndef _WINDOWS_ +#include <windows.h> +#endif +#define WINDIB_OPEN_MEMORY 0x1 +#define WINDIB_OPEN_PATHNAME 0x2 +typedef struct WINDIB_Open_Args_ { + int flags; + + const uint8_t* memory_base; + + size_t memory_size; + + const FX_WCHAR* path_name; +} WINDIB_Open_Args_; +class CFX_WindowsDIB : public CFX_DIBitmap { + public: + static CFX_ByteString GetBitmapInfo(const CFX_DIBitmap* pBitmap); + + static CFX_DIBitmap* LoadFromBuf(BITMAPINFO* pbmi, void* pData); + + static HBITMAP GetDDBitmap(const CFX_DIBitmap* pBitmap, HDC hDC); + + static CFX_DIBitmap* LoadFromDDB(HDC hDC, + HBITMAP hBitmap, + uint32_t* pPalette = NULL, + uint32_t size = 256); + + static CFX_DIBitmap* LoadFromFile(const FX_WCHAR* filename); + + static CFX_DIBitmap* LoadFromFile(const FX_CHAR* filename) { + return LoadFromFile(CFX_WideString::FromLocal(filename).c_str()); + } + + static CFX_DIBitmap* LoadDIBitmap(WINDIB_Open_Args_ args); + + CFX_WindowsDIB(HDC hDC, int width, int height); + + ~CFX_WindowsDIB(); + + HDC GetDC() const { return m_hMemDC; } + + HBITMAP GetWindowsBitmap() const { return m_hBitmap; } + + void LoadFromDevice(HDC hDC, int left, int top); + + void SetToDevice(HDC hDC, int left, int top); + + protected: + HDC m_hMemDC; + + HBITMAP m_hBitmap; + + HBITMAP m_hOldBitmap; +}; +class CFX_WindowsDevice : public CFX_RenderDevice { + public: + static IFX_RenderDeviceDriver* CreateDriver(HDC hDC, + FX_BOOL bCmykOutput = FALSE); + + CFX_WindowsDevice(HDC hDC, + FX_BOOL bCmykOutput = FALSE, + FX_BOOL bForcePSOutput = FALSE, + int psLevel = 2); + + HDC GetDC() const; + + FX_BOOL m_bForcePSOutput; + + static int m_psLevel; +}; +class CFX_WinBitmapDevice : public CFX_RenderDevice { + public: + CFX_WinBitmapDevice(int width, int height, FXDIB_Format format); + + ~CFX_WinBitmapDevice(); + + HDC GetDC() { return m_hDC; } + + protected: + HBITMAP m_hBitmap; + + HBITMAP m_hOldBitmap; + + HDC m_hDC; +}; +#endif + +#endif // CORE_FXGE_INCLUDE_FX_GE_WIN32_H_ |