Home | History | Annotate | Download | only in include
      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 FPDFSDK_INCLUDE_FSDK_DEFINE_H_
      8 #define FPDFSDK_INCLUDE_FSDK_DEFINE_H_
      9 
     10 #include "core/include/fpdfapi/fpdf_module.h"
     11 #include "core/include/fpdfapi/fpdf_pageobj.h"
     12 #include "core/include/fpdfapi/fpdf_parser.h"
     13 #include "core/include/fpdfapi/fpdf_render.h"
     14 #include "core/include/fpdfdoc/fpdf_doc.h"
     15 #include "core/include/fpdfdoc/fpdf_vt.h"
     16 #include "core/include/fxge/fx_ge.h"
     17 #include "core/include/fxge/fx_ge_win32.h"
     18 #include "public/fpdfview.h"
     19 
     20 #ifdef PDF_ENABLE_XFA
     21 #include "fpdfsdk/include/fpdfxfa/fpdfxfa_doc.h"
     22 #include "fpdfsdk/include/fpdfxfa/fpdfxfa_page.h"
     23 #include "xfa/include/fwl/adapter/fwl_adaptertimermgr.h"
     24 #include "xfa/include/fxbarcode/BC_BarCode.h"
     25 #include "xfa/include/fxfa/fxfa.h"
     26 #include "xfa/include/fxgraphics/fx_graphics.h"
     27 #include "xfa/include/fxjse/fxjse.h"
     28 #endif  // PDF_ENABLE_XFA
     29 
     30 #ifdef _WIN32
     31 #include <tchar.h>
     32 #include <math.h>
     33 #endif
     34 
     35 // Convert a #FX_ARGB to a #FX_COLORREF.
     36 #define FX_ARGBTOCOLORREF(argb)                                            \
     37   ((((FX_DWORD)argb & 0x00FF0000) >> 16) | ((FX_DWORD)argb & 0x0000FF00) | \
     38    (((FX_DWORD)argb & 0x000000FF) << 16))
     39 
     40 // Convert a #FX_COLORREF to a #FX_ARGB.
     41 #define FX_COLORREFTOARGB(rgb)                                   \
     42   ((FX_DWORD)0xFF000000 | (((FX_DWORD)rgb & 0x000000FF) << 16) | \
     43    ((FX_DWORD)rgb & 0x0000FF00) | (((FX_DWORD)rgb & 0x00FF0000) >> 16))
     44 
     45 typedef unsigned int FX_UINT;
     46 class CRenderContext;
     47 class IFSDK_PAUSE_Adapter;
     48 
     49 class CPDF_CustomAccess final : public IFX_FileRead {
     50  public:
     51   explicit CPDF_CustomAccess(FPDF_FILEACCESS* pFileAccess);
     52   ~CPDF_CustomAccess() override {}
     53 
     54   // IFX_FileRead
     55   FX_FILESIZE GetSize() override { return m_FileAccess.m_FileLen; }
     56   void Release() override { delete this; }
     57   FX_BOOL ReadBlock(void* buffer, FX_FILESIZE offset, size_t size) override;
     58 
     59 #ifdef PDF_ENABLE_XFA
     60   virtual CFX_ByteString GetFullPath() { return ""; }
     61   virtual FX_BOOL GetByte(FX_DWORD pos, uint8_t& ch);
     62   virtual FX_BOOL GetBlock(FX_DWORD pos, uint8_t* pBuf, FX_DWORD size);
     63 #endif  // PDF_ENABLE_XFA
     64 
     65  private:
     66   FPDF_FILEACCESS m_FileAccess;
     67 #ifdef PDF_ENABLE_XFA
     68   uint8_t m_Buffer[512];
     69   FX_DWORD m_BufferOffset;
     70 #endif  // PDF_ENABLE_XFA
     71 };
     72 
     73 #ifdef PDF_ENABLE_XFA
     74 class CFPDF_FileStream : public IFX_FileStream {
     75  public:
     76   CFPDF_FileStream(FPDF_FILEHANDLER* pFS);
     77   virtual ~CFPDF_FileStream() {}
     78 
     79   virtual IFX_FileStream* Retain();
     80   virtual void Release();
     81 
     82   virtual FX_FILESIZE GetSize();
     83   virtual FX_BOOL IsEOF();
     84   virtual FX_FILESIZE GetPosition() { return m_nCurPos; }
     85   virtual void SetPosition(FX_FILESIZE pos) { m_nCurPos = pos; }
     86   virtual FX_BOOL ReadBlock(void* buffer, FX_FILESIZE offset, size_t size);
     87   virtual size_t ReadBlock(void* buffer, size_t size);
     88   virtual FX_BOOL WriteBlock(const void* buffer,
     89                              FX_FILESIZE offset,
     90                              size_t size);
     91   virtual FX_BOOL Flush();
     92 
     93  protected:
     94   FPDF_FILEHANDLER* m_pFS;
     95   FX_FILESIZE m_nCurPos;
     96 };
     97 #endif  // PDF_ENABLE_XFA
     98 
     99 // Object types for public FPDF_ types; these correspond to next layer down
    100 // from fpdfsdk. For master, these are CPDF_ types, but for XFA, these are
    101 // CPDFXFA_ types.
    102 #ifndef PDF_ENABLE_XFA
    103 using UnderlyingDocumentType = CPDF_Document;
    104 using UnderlyingPageType = CPDF_Page;
    105 #else   // PDF_ENABLE_XFA
    106 using UnderlyingDocumentType = CPDFXFA_Document;
    107 using UnderlyingPageType = CPDFXFA_Page;
    108 #endif  // PDF_ENABLE_XFA
    109 
    110 // Conversions to/from underlying types.
    111 UnderlyingDocumentType* UnderlyingFromFPDFDocument(FPDF_DOCUMENT doc);
    112 FPDF_DOCUMENT FPDFDocumentFromUnderlying(UnderlyingDocumentType* doc);
    113 
    114 UnderlyingPageType* UnderlyingFromFPDFPage(FPDF_PAGE page);
    115 
    116 // Conversions to/from FPDF_ types.
    117 CPDF_Document* CPDFDocumentFromFPDFDocument(FPDF_DOCUMENT doc);
    118 FPDF_DOCUMENT FPDFDocumentFromCPDFDocument(CPDF_Document* doc);
    119 
    120 CPDF_Page* CPDFPageFromFPDFPage(FPDF_PAGE page);
    121 
    122 void DropContext(void* data);
    123 void FSDK_SetSandBoxPolicy(FPDF_DWORD policy, FPDF_BOOL enable);
    124 FPDF_BOOL FSDK_IsSandBoxPolicyEnabled(FPDF_DWORD policy);
    125 void FPDF_RenderPage_Retail(CRenderContext* pContext,
    126                             FPDF_PAGE page,
    127                             int start_x,
    128                             int start_y,
    129                             int size_x,
    130                             int size_y,
    131                             int rotate,
    132                             int flags,
    133                             FX_BOOL bNeedToRestore,
    134                             IFSDK_PAUSE_Adapter* pause);
    135 
    136 void CheckUnSupportError(CPDF_Document* pDoc, FX_DWORD err_code);
    137 void CheckUnSupportAnnot(CPDF_Document* pDoc, const CPDF_Annot* pPDFAnnot);
    138 void ProcessParseError(FX_DWORD err_code);
    139 
    140 #endif  // FPDFSDK_INCLUDE_FSDK_DEFINE_H_
    141