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