// 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 _FX_GE_WIN32_H_ | |
#define _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 FX_BYTE* memory_base; | |
size_t memory_size; | |
FX_LPCWSTR 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, FX_DWORD* pPalette = NULL, FX_DWORD size = 256); | |
static CFX_DIBitmap* LoadFromFile(FX_LPCWSTR filename); | |
static CFX_DIBitmap* LoadFromFile(FX_LPCSTR filename) | |
{ | |
return LoadFromFile(CFX_WideString::FromLocal(filename)); | |
} | |
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 |