| Index: core/include/fpdfapi/fpdf_resource.h
|
| diff --git a/core/include/fpdfapi/fpdf_resource.h b/core/include/fpdfapi/fpdf_resource.h
|
| deleted file mode 100644
|
| index f309114918577f13ac8a9856de8a6b9761e34563..0000000000000000000000000000000000000000
|
| --- a/core/include/fpdfapi/fpdf_resource.h
|
| +++ /dev/null
|
| @@ -1,774 +0,0 @@
|
| -// 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_INCLUDE_FPDFAPI_FPDF_RESOURCE_H_
|
| -#define CORE_INCLUDE_FPDFAPI_FPDF_RESOURCE_H_
|
| -
|
| -#include <map>
|
| -
|
| -#include "core/fpdfapi/fpdf_parser/include/cpdf_stream.h"
|
| -#include "core/fpdfapi/fpdf_parser/include/cpdf_stream_acc.h"
|
| -#include "core/fxcrt/include/fx_system.h"
|
| -#include "core/include/fxge/fx_font.h"
|
| -
|
| -class CFX_CTTGSUBTable;
|
| -class CFX_DIBitmap;
|
| -class CFX_Font;
|
| -class CFX_SubstFont;
|
| -class CPDF_CID2UnicodeMap;
|
| -class CPDF_CIDFont;
|
| -class CPDF_CMap;
|
| -class CPDF_Color;
|
| -class CPDF_ColorSpace;
|
| -class CPDF_Document;
|
| -class CPDF_FontEncoding;
|
| -class CPDF_Form;
|
| -class CPDF_Function;
|
| -class CPDF_Image;
|
| -class CPDF_Page;
|
| -class CPDF_Pattern;
|
| -class CPDF_RenderContext;
|
| -class CPDF_ShadingPattern;
|
| -class CPDF_TilingPattern;
|
| -class CPDF_ToUnicodeMap;
|
| -class CPDF_TrueTypeFont;
|
| -class CPDF_Type1Font;
|
| -class CPDF_Type3Font;
|
| -typedef struct FT_FaceRec_* FXFT_Face;
|
| -
|
| -FX_WCHAR PDF_UnicodeFromAdobeName(const FX_CHAR* name);
|
| -CFX_ByteString PDF_AdobeNameFromUnicode(FX_WCHAR unicode);
|
| -const FX_CHAR* FCS_GetAltStr(FX_WCHAR unicode);
|
| -const FX_CHAR* PDF_CharNameFromPredefinedCharSet(int encoding,
|
| - uint8_t charcode);
|
| -
|
| -FX_WCHAR FT_UnicodeFromCharCode(int encoding, FX_DWORD charcode);
|
| -FX_DWORD FT_CharCodeFromUnicode(int encoding, FX_WCHAR unicode);
|
| -const uint16_t* PDF_UnicodesForPredefinedCharSet(int encoding);
|
| -const FX_CHAR* GetAdobeCharName(int iBaseEncoding,
|
| - const CFX_ByteString* pCharNames,
|
| - int charcode);
|
| -
|
| -template <class T>
|
| -class CPDF_CountedObject {
|
| - public:
|
| - explicit CPDF_CountedObject(T* ptr) : m_nCount(1), m_pObj(ptr) {}
|
| - void reset(T* ptr) { // CAUTION: tosses prior ref counts.
|
| - m_nCount = 1;
|
| - m_pObj = ptr;
|
| - }
|
| - void clear() { // Now you're all weak ptrs ...
|
| - delete m_pObj;
|
| - m_pObj = nullptr;
|
| - }
|
| - T* get() const { return m_pObj; }
|
| - T* AddRef() {
|
| - FXSYS_assert(m_pObj);
|
| - ++m_nCount;
|
| - return m_pObj;
|
| - }
|
| - void RemoveRef() {
|
| - if (m_nCount)
|
| - --m_nCount;
|
| - }
|
| - size_t use_count() const { return m_nCount; }
|
| -
|
| - protected:
|
| - size_t m_nCount;
|
| - T* m_pObj;
|
| -};
|
| -using CPDF_CountedColorSpace = CPDF_CountedObject<CPDF_ColorSpace>;
|
| -using CPDF_CountedPattern = CPDF_CountedObject<CPDF_Pattern>;
|
| -
|
| -#define PDFFONT_FIXEDPITCH 1
|
| -#define PDFFONT_SERIF 2
|
| -#define PDFFONT_SYMBOLIC 4
|
| -#define PDFFONT_SCRIPT 8
|
| -#define PDFFONT_NONSYMBOLIC 32
|
| -#define PDFFONT_ITALIC 64
|
| -#define PDFFONT_ALLCAP 0x10000
|
| -#define PDFFONT_SMALLCAP 0x20000
|
| -#define PDFFONT_FORCEBOLD 0x40000
|
| -#define PDFFONT_USEEXTERNATTR 0x80000
|
| -
|
| -class CPDF_Font {
|
| - public:
|
| - static CPDF_Font* CreateFontF(CPDF_Document* pDoc,
|
| - CPDF_Dictionary* pFontDict);
|
| - static CPDF_Font* GetStockFont(CPDF_Document* pDoc,
|
| - const CFX_ByteStringC& fontname);
|
| - static const FX_DWORD kInvalidCharCode = static_cast<FX_DWORD>(-1);
|
| -
|
| - virtual ~CPDF_Font();
|
| -
|
| - virtual bool IsType1Font() const;
|
| - virtual bool IsTrueTypeFont() const;
|
| - virtual bool IsType3Font() const;
|
| - virtual bool IsCIDFont() const;
|
| - virtual const CPDF_Type1Font* AsType1Font() const;
|
| - virtual CPDF_Type1Font* AsType1Font();
|
| - virtual const CPDF_TrueTypeFont* AsTrueTypeFont() const;
|
| - virtual CPDF_TrueTypeFont* AsTrueTypeFont();
|
| - virtual const CPDF_Type3Font* AsType3Font() const;
|
| - virtual CPDF_Type3Font* AsType3Font();
|
| - virtual const CPDF_CIDFont* AsCIDFont() const;
|
| - virtual CPDF_CIDFont* AsCIDFont();
|
| -
|
| - virtual FX_BOOL IsVertWriting() const;
|
| - virtual FX_BOOL IsUnicodeCompatible() const;
|
| - virtual FX_DWORD GetNextChar(const FX_CHAR* pString,
|
| - int nStrLen,
|
| - int& offset) const;
|
| - virtual int CountChar(const FX_CHAR* pString, int size) const;
|
| - virtual int AppendChar(FX_CHAR* buf, FX_DWORD charcode) const;
|
| - virtual int GetCharSize(FX_DWORD charcode) const;
|
| - virtual int GlyphFromCharCode(FX_DWORD charcode,
|
| - FX_BOOL* pVertGlyph = nullptr);
|
| - virtual int GlyphFromCharCodeExt(FX_DWORD charcode);
|
| - virtual CFX_WideString UnicodeFromCharCode(FX_DWORD charcode) const;
|
| - virtual FX_DWORD CharCodeFromUnicode(FX_WCHAR Unicode) const;
|
| -
|
| - const CFX_ByteString& GetBaseFont() const { return m_BaseFont; }
|
| - const CFX_SubstFont* GetSubstFont() const { return m_Font.GetSubstFont(); }
|
| - FX_DWORD GetFlags() const { return m_Flags; }
|
| - FX_BOOL IsEmbedded() const { return IsType3Font() || m_pFontFile != nullptr; }
|
| - CPDF_StreamAcc* GetFontFile() const { return m_pFontFile; }
|
| - CPDF_Dictionary* GetFontDict() const { return m_pFontDict; }
|
| - FX_BOOL IsStandardFont() const;
|
| - FXFT_Face GetFace() const { return m_Font.GetFace(); }
|
| - void AppendChar(CFX_ByteString& str, FX_DWORD charcode) const;
|
| -
|
| - void GetFontBBox(FX_RECT& rect) const { rect = m_FontBBox; }
|
| - int GetTypeAscent() const { return m_Ascent; }
|
| - int GetTypeDescent() const { return m_Descent; }
|
| - int GetItalicAngle() const { return m_ItalicAngle; }
|
| - int GetStemV() const { return m_StemV; }
|
| - int GetStringWidth(const FX_CHAR* pString, int size);
|
| -
|
| - virtual int GetCharWidthF(FX_DWORD charcode, int level = 0) = 0;
|
| - virtual FX_RECT GetCharBBox(FX_DWORD charcode, int level = 0) = 0;
|
| -
|
| - CPDF_Document* m_pDocument;
|
| - CFX_Font m_Font;
|
| -
|
| - protected:
|
| - CPDF_Font();
|
| -
|
| - virtual FX_BOOL Load() = 0;
|
| -
|
| - FX_BOOL Initialize();
|
| - void LoadUnicodeMap();
|
| - void LoadPDFEncoding(CPDF_Object* pEncoding,
|
| - int& iBaseEncoding,
|
| - CFX_ByteString*& pCharNames,
|
| - FX_BOOL bEmbedded,
|
| - FX_BOOL bTrueType);
|
| - void LoadFontDescriptor(CPDF_Dictionary* pDict);
|
| - void CheckFontMetrics();
|
| -
|
| - CFX_ByteString m_BaseFont;
|
| - CPDF_StreamAcc* m_pFontFile;
|
| - CPDF_Dictionary* m_pFontDict;
|
| - CPDF_ToUnicodeMap* m_pToUnicodeMap;
|
| - FX_BOOL m_bToUnicodeLoaded;
|
| - int m_Flags;
|
| - FX_RECT m_FontBBox;
|
| - int m_StemV;
|
| - int m_Ascent;
|
| - int m_Descent;
|
| - int m_ItalicAngle;
|
| -};
|
| -
|
| -#define PDFFONT_ENCODING_BUILTIN 0
|
| -#define PDFFONT_ENCODING_WINANSI 1
|
| -#define PDFFONT_ENCODING_MACROMAN 2
|
| -#define PDFFONT_ENCODING_MACEXPERT 3
|
| -#define PDFFONT_ENCODING_STANDARD 4
|
| -#define PDFFONT_ENCODING_ADOBE_SYMBOL 5
|
| -#define PDFFONT_ENCODING_ZAPFDINGBATS 6
|
| -#define PDFFONT_ENCODING_PDFDOC 7
|
| -#define PDFFONT_ENCODING_MS_SYMBOL 8
|
| -#define PDFFONT_ENCODING_UNICODE 9
|
| -
|
| -class CPDF_FontEncoding {
|
| - public:
|
| - CPDF_FontEncoding();
|
| -
|
| - CPDF_FontEncoding(int PredefinedEncoding);
|
| -
|
| - void LoadEncoding(CPDF_Object* pEncoding);
|
| -
|
| - FX_BOOL IsIdentical(CPDF_FontEncoding* pAnother) const;
|
| -
|
| - FX_WCHAR UnicodeFromCharCode(uint8_t charcode) const {
|
| - return m_Unicodes[charcode];
|
| - }
|
| -
|
| - int CharCodeFromUnicode(FX_WCHAR unicode) const;
|
| -
|
| - void SetUnicode(uint8_t charcode, FX_WCHAR unicode) {
|
| - m_Unicodes[charcode] = unicode;
|
| - }
|
| -
|
| - CPDF_Object* Realize();
|
| -
|
| - public:
|
| - FX_WCHAR m_Unicodes[256];
|
| -};
|
| -
|
| -class CPDF_SimpleFont : public CPDF_Font {
|
| - public:
|
| - CPDF_SimpleFont();
|
| - ~CPDF_SimpleFont() override;
|
| -
|
| - // CPDF_Font:
|
| - int GetCharWidthF(FX_DWORD charcode, int level = 0) override;
|
| - FX_RECT GetCharBBox(FX_DWORD charcode, int level = 0) override;
|
| - int GlyphFromCharCode(FX_DWORD charcode, FX_BOOL* pVertGlyph = NULL) override;
|
| - FX_BOOL IsUnicodeCompatible() const override;
|
| - CFX_WideString UnicodeFromCharCode(FX_DWORD charcode) const override;
|
| - FX_DWORD CharCodeFromUnicode(FX_WCHAR Unicode) const override;
|
| -
|
| - CPDF_FontEncoding* GetEncoding() { return &m_Encoding; }
|
| -
|
| - protected:
|
| - virtual void LoadGlyphMap() = 0;
|
| -
|
| - FX_BOOL LoadCommon();
|
| - void LoadSubstFont();
|
| - void LoadFaceMetrics();
|
| - void LoadCharMetrics(int charcode);
|
| -
|
| - CPDF_FontEncoding m_Encoding;
|
| - uint16_t m_GlyphIndex[256];
|
| - uint16_t m_ExtGID[256];
|
| - CFX_ByteString* m_pCharNames;
|
| - int m_BaseEncoding;
|
| - uint16_t m_CharWidth[256];
|
| - FX_SMALL_RECT m_CharBBox[256];
|
| - FX_BOOL m_bUseFontWidth;
|
| -};
|
| -
|
| -class CPDF_Type1Font : public CPDF_SimpleFont {
|
| - public:
|
| - CPDF_Type1Font();
|
| -
|
| - // CPDF_Font:
|
| - bool IsType1Font() const override;
|
| - const CPDF_Type1Font* AsType1Font() const override;
|
| - CPDF_Type1Font* AsType1Font() override;
|
| - int GlyphFromCharCodeExt(FX_DWORD charcode) override;
|
| -
|
| - int GetBase14Font() const { return m_Base14Font; }
|
| -
|
| - protected:
|
| - // CPDF_Font:
|
| - FX_BOOL Load() override;
|
| -
|
| - // CPDF_SimpleFont:
|
| - void LoadGlyphMap() override;
|
| -
|
| - int m_Base14Font;
|
| -};
|
| -
|
| -class CPDF_TrueTypeFont : public CPDF_SimpleFont {
|
| - public:
|
| - CPDF_TrueTypeFont();
|
| -
|
| - // CPDF_Font:
|
| - bool IsTrueTypeFont() const override;
|
| - const CPDF_TrueTypeFont* AsTrueTypeFont() const override;
|
| - CPDF_TrueTypeFont* AsTrueTypeFont() override;
|
| -
|
| - protected:
|
| - // CPDF_Font:
|
| - FX_BOOL Load() override;
|
| -
|
| - // CPDF_SimpleFont:
|
| - void LoadGlyphMap() override;
|
| -};
|
| -
|
| -class CPDF_Type3Char {
|
| - public:
|
| - // Takes ownership of |pForm|.
|
| - explicit CPDF_Type3Char(CPDF_Form* pForm);
|
| - ~CPDF_Type3Char();
|
| -
|
| - FX_BOOL LoadBitmap(CPDF_RenderContext* pContext);
|
| -
|
| - CPDF_Form* m_pForm;
|
| - CFX_DIBitmap* m_pBitmap;
|
| - FX_BOOL m_bColored;
|
| - int m_Width;
|
| - CFX_Matrix m_ImageMatrix;
|
| - FX_RECT m_BBox;
|
| -};
|
| -
|
| -class CPDF_Type3Font : public CPDF_SimpleFont {
|
| - public:
|
| - CPDF_Type3Font();
|
| - ~CPDF_Type3Font() override;
|
| -
|
| - // CPDF_Font:
|
| - bool IsType3Font() const override;
|
| - const CPDF_Type3Font* AsType3Font() const override;
|
| - CPDF_Type3Font* AsType3Font() override;
|
| - int GetCharWidthF(FX_DWORD charcode, int level = 0) override;
|
| - FX_RECT GetCharBBox(FX_DWORD charcode, int level = 0) override;
|
| -
|
| - void SetPageResources(CPDF_Dictionary* pResources) {
|
| - m_pPageResources = pResources;
|
| - }
|
| - CPDF_Type3Char* LoadChar(FX_DWORD charcode, int level = 0);
|
| - void CheckType3FontMetrics();
|
| -
|
| - CFX_Matrix& GetFontMatrix() { return m_FontMatrix; }
|
| -
|
| - protected:
|
| - CFX_Matrix m_FontMatrix;
|
| -
|
| - private:
|
| - // CPDF_Font:
|
| - FX_BOOL Load() override;
|
| -
|
| - // CPDF_SimpleFont:
|
| - void LoadGlyphMap() override {}
|
| -
|
| - int m_CharWidthL[256];
|
| - CPDF_Dictionary* m_pCharProcs;
|
| - CPDF_Dictionary* m_pPageResources;
|
| - CPDF_Dictionary* m_pFontResources;
|
| - std::map<FX_DWORD, CPDF_Type3Char*> m_CacheMap;
|
| -};
|
| -
|
| -enum CIDSet : uint8_t {
|
| - CIDSET_UNKNOWN,
|
| - CIDSET_GB1,
|
| - CIDSET_CNS1,
|
| - CIDSET_JAPAN1,
|
| - CIDSET_KOREA1,
|
| - CIDSET_UNICODE,
|
| - CIDSET_NUM_SETS
|
| -};
|
| -
|
| -class CPDF_CIDFont : public CPDF_Font {
|
| - public:
|
| - CPDF_CIDFont();
|
| - ~CPDF_CIDFont() override;
|
| -
|
| - static FX_FLOAT CIDTransformToFloat(uint8_t ch);
|
| -
|
| - // CPDF_Font:
|
| - bool IsCIDFont() const override;
|
| - const CPDF_CIDFont* AsCIDFont() const override;
|
| - CPDF_CIDFont* AsCIDFont() override;
|
| - int GlyphFromCharCode(FX_DWORD charcode, FX_BOOL* pVertGlyph = NULL) override;
|
| - int GetCharWidthF(FX_DWORD charcode, int level = 0) override;
|
| - FX_RECT GetCharBBox(FX_DWORD charcode, int level = 0) override;
|
| - FX_DWORD GetNextChar(const FX_CHAR* pString,
|
| - int nStrLen,
|
| - int& offset) const override;
|
| - int CountChar(const FX_CHAR* pString, int size) const override;
|
| - int AppendChar(FX_CHAR* str, FX_DWORD charcode) const override;
|
| - int GetCharSize(FX_DWORD charcode) const override;
|
| - FX_BOOL IsVertWriting() const override;
|
| - FX_BOOL IsUnicodeCompatible() const override;
|
| - FX_BOOL Load() override;
|
| - CFX_WideString UnicodeFromCharCode(FX_DWORD charcode) const override;
|
| - FX_DWORD CharCodeFromUnicode(FX_WCHAR Unicode) const override;
|
| -
|
| - FX_BOOL LoadGB2312();
|
| - uint16_t CIDFromCharCode(FX_DWORD charcode) const;
|
| - const uint8_t* GetCIDTransform(uint16_t CID) const;
|
| - short GetVertWidth(uint16_t CID) const;
|
| - void GetVertOrigin(uint16_t CID, short& vx, short& vy) const;
|
| - virtual FX_BOOL IsFontStyleFromCharCode(FX_DWORD charcode) const;
|
| -
|
| - protected:
|
| - int GetGlyphIndex(FX_DWORD unicodeb, FX_BOOL* pVertGlyph);
|
| - void LoadMetricsArray(CPDF_Array* pArray,
|
| - CFX_DWordArray& result,
|
| - int nElements);
|
| - void LoadSubstFont();
|
| - FX_WCHAR GetUnicodeFromCharCode(FX_DWORD charcode) const;
|
| -
|
| - CPDF_CMap* m_pCMap;
|
| - CPDF_CMap* m_pAllocatedCMap;
|
| - CPDF_CID2UnicodeMap* m_pCID2UnicodeMap;
|
| - CIDSet m_Charset;
|
| - FX_BOOL m_bType1;
|
| - CPDF_StreamAcc* m_pCIDToGIDMap;
|
| - FX_BOOL m_bCIDIsGID;
|
| - uint16_t m_DefaultWidth;
|
| - uint16_t* m_pAnsiWidths;
|
| - FX_SMALL_RECT m_CharBBox[256];
|
| - CFX_DWordArray m_WidthList;
|
| - short m_DefaultVY;
|
| - short m_DefaultW1;
|
| - CFX_DWordArray m_VertMetrics;
|
| - FX_BOOL m_bAdobeCourierStd;
|
| - CFX_CTTGSUBTable* m_pTTGSUBTable;
|
| -};
|
| -
|
| -#define PDFCS_DEVICEGRAY 1
|
| -#define PDFCS_DEVICERGB 2
|
| -#define PDFCS_DEVICECMYK 3
|
| -#define PDFCS_CALGRAY 4
|
| -#define PDFCS_CALRGB 5
|
| -#define PDFCS_LAB 6
|
| -#define PDFCS_ICCBASED 7
|
| -#define PDFCS_SEPARATION 8
|
| -#define PDFCS_DEVICEN 9
|
| -#define PDFCS_INDEXED 10
|
| -#define PDFCS_PATTERN 11
|
| -
|
| -class CPDF_ColorSpace {
|
| - public:
|
| - static CPDF_ColorSpace* GetStockCS(int Family);
|
| -
|
| - static CPDF_ColorSpace* Load(CPDF_Document* pDoc, CPDF_Object* pCSObj);
|
| -
|
| - void ReleaseCS();
|
| -
|
| - int GetBufSize() const;
|
| - FX_FLOAT* CreateBuf();
|
| - void GetDefaultColor(FX_FLOAT* buf) const;
|
| - FX_DWORD CountComponents() const { return m_nComponents; }
|
| - int GetFamily() const { return m_Family; }
|
| - virtual void GetDefaultValue(int iComponent,
|
| - FX_FLOAT& value,
|
| - FX_FLOAT& min,
|
| - FX_FLOAT& max) const {
|
| - value = 0;
|
| - min = 0;
|
| - max = 1.0f;
|
| - }
|
| -
|
| - FX_BOOL sRGB() const;
|
| - virtual FX_BOOL GetRGB(FX_FLOAT* pBuf,
|
| - FX_FLOAT& R,
|
| - FX_FLOAT& G,
|
| - FX_FLOAT& B) const = 0;
|
| - virtual FX_BOOL SetRGB(FX_FLOAT* pBuf,
|
| - FX_FLOAT R,
|
| - FX_FLOAT G,
|
| - FX_FLOAT B) const {
|
| - return FALSE;
|
| - }
|
| -
|
| - FX_BOOL GetCMYK(FX_FLOAT* pBuf,
|
| - FX_FLOAT& c,
|
| - FX_FLOAT& m,
|
| - FX_FLOAT& y,
|
| - FX_FLOAT& k) const;
|
| - FX_BOOL SetCMYK(FX_FLOAT* pBuf,
|
| - FX_FLOAT c,
|
| - FX_FLOAT m,
|
| - FX_FLOAT y,
|
| - FX_FLOAT k) const;
|
| -
|
| - virtual void TranslateImageLine(uint8_t* dest_buf,
|
| - const uint8_t* src_buf,
|
| - int pixels,
|
| - int image_width,
|
| - int image_height,
|
| - FX_BOOL bTransMask = FALSE) const;
|
| -
|
| - CPDF_Array*& GetArray() { return m_pArray; }
|
| - int GetMaxIndex() const;
|
| - virtual CPDF_ColorSpace* GetBaseCS() const { return NULL; }
|
| -
|
| - virtual void EnableStdConversion(FX_BOOL bEnabled);
|
| -
|
| - CPDF_Document* const m_pDocument;
|
| -
|
| - protected:
|
| - CPDF_ColorSpace(CPDF_Document* pDoc, int family, FX_DWORD nComponents)
|
| - : m_pDocument(pDoc),
|
| - m_Family(family),
|
| - m_nComponents(nComponents),
|
| - m_pArray(nullptr),
|
| - m_dwStdConversion(0) {}
|
| - virtual ~CPDF_ColorSpace() {}
|
| - virtual FX_BOOL v_Load(CPDF_Document* pDoc, CPDF_Array* pArray) {
|
| - return TRUE;
|
| - }
|
| - virtual FX_BOOL v_GetCMYK(FX_FLOAT* pBuf,
|
| - FX_FLOAT& c,
|
| - FX_FLOAT& m,
|
| - FX_FLOAT& y,
|
| - FX_FLOAT& k) const {
|
| - return FALSE;
|
| - }
|
| - virtual FX_BOOL v_SetCMYK(FX_FLOAT* pBuf,
|
| - FX_FLOAT c,
|
| - FX_FLOAT m,
|
| - FX_FLOAT y,
|
| - FX_FLOAT k) const {
|
| - return FALSE;
|
| - }
|
| -
|
| - int m_Family;
|
| - FX_DWORD m_nComponents;
|
| - CPDF_Array* m_pArray;
|
| - FX_DWORD m_dwStdConversion;
|
| -};
|
| -class CPDF_Color {
|
| - public:
|
| - CPDF_Color() : m_pCS(NULL), m_pBuffer(NULL) {}
|
| -
|
| - CPDF_Color(int family);
|
| -
|
| - ~CPDF_Color();
|
| -
|
| - FX_BOOL IsNull() const { return !m_pBuffer; }
|
| -
|
| - FX_BOOL IsEqual(const CPDF_Color& other) const;
|
| -
|
| - FX_BOOL IsPattern() const {
|
| - return m_pCS && m_pCS->GetFamily() == PDFCS_PATTERN;
|
| - }
|
| -
|
| - void Copy(const CPDF_Color* pSrc);
|
| -
|
| - void SetColorSpace(CPDF_ColorSpace* pCS);
|
| -
|
| - void SetValue(FX_FLOAT* comp);
|
| -
|
| - void SetValue(CPDF_Pattern* pPattern, FX_FLOAT* comp, int ncomps);
|
| -
|
| - FX_BOOL GetRGB(int& R, int& G, int& B) const;
|
| -
|
| - CPDF_Pattern* GetPattern() const;
|
| -
|
| - CPDF_ColorSpace* GetPatternCS() const;
|
| -
|
| - FX_FLOAT* GetPatternColor() const;
|
| -
|
| - CPDF_ColorSpace* m_pCS;
|
| -
|
| - protected:
|
| - void ReleaseBuffer();
|
| - void ReleaseColorSpace();
|
| - FX_FLOAT* m_pBuffer;
|
| -};
|
| -
|
| -class CPDF_Pattern {
|
| - public:
|
| - enum PatternType { TILING = 1, SHADING };
|
| -
|
| - virtual ~CPDF_Pattern();
|
| -
|
| - void SetForceClear(FX_BOOL bForceClear) { m_bForceClear = bForceClear; }
|
| -
|
| - const PatternType m_PatternType;
|
| - CPDF_Document* const m_pDocument;
|
| - CPDF_Object* const m_pPatternObj;
|
| - CFX_Matrix m_Pattern2Form;
|
| - CFX_Matrix m_ParentMatrix;
|
| -
|
| - protected:
|
| - CPDF_Pattern(PatternType type,
|
| - CPDF_Document* pDoc,
|
| - CPDF_Object* pObj,
|
| - const CFX_Matrix* pParentMatrix);
|
| -
|
| - FX_BOOL m_bForceClear;
|
| -};
|
| -
|
| -class CPDF_TilingPattern : public CPDF_Pattern {
|
| - public:
|
| - CPDF_TilingPattern(CPDF_Document* pDoc,
|
| - CPDF_Object* pPatternObj,
|
| - const CFX_Matrix* parentMatrix);
|
| -
|
| - ~CPDF_TilingPattern() override;
|
| -
|
| - FX_BOOL Load();
|
| -
|
| - FX_BOOL m_bColored;
|
| -
|
| - CFX_FloatRect m_BBox;
|
| -
|
| - FX_FLOAT m_XStep;
|
| -
|
| - FX_FLOAT m_YStep;
|
| -
|
| - CPDF_Form* m_pForm;
|
| -};
|
| -
|
| -typedef enum {
|
| - kInvalidShading = 0,
|
| - kFunctionBasedShading = 1,
|
| - kAxialShading = 2,
|
| - kRadialShading = 3,
|
| - kFreeFormGouraudTriangleMeshShading = 4,
|
| - kLatticeFormGouraudTriangleMeshShading = 5,
|
| - kCoonsPatchMeshShading = 6,
|
| - kTensorProductPatchMeshShading = 7,
|
| - kMaxShading = 8
|
| -} ShadingType;
|
| -
|
| -class CPDF_ShadingPattern : public CPDF_Pattern {
|
| - public:
|
| - CPDF_ShadingPattern(CPDF_Document* pDoc,
|
| - CPDF_Object* pPatternObj,
|
| - FX_BOOL bShading,
|
| - const CFX_Matrix* parentMatrix);
|
| -
|
| - ~CPDF_ShadingPattern() override;
|
| -
|
| - bool IsMeshShading() const {
|
| - return m_ShadingType == kFreeFormGouraudTriangleMeshShading ||
|
| - m_ShadingType == kLatticeFormGouraudTriangleMeshShading ||
|
| - m_ShadingType == kCoonsPatchMeshShading ||
|
| - m_ShadingType == kTensorProductPatchMeshShading;
|
| - }
|
| - FX_BOOL Load();
|
| -
|
| - ShadingType m_ShadingType;
|
| - FX_BOOL m_bShadingObj;
|
| - CPDF_Object* m_pShadingObj;
|
| -
|
| - // Still keep |m_pCS| as some CPDF_ColorSpace (name object) are not managed
|
| - // as counted objects. Refer to CPDF_DocPageData::GetColorSpace.
|
| - CPDF_ColorSpace* m_pCS;
|
| -
|
| - CPDF_CountedColorSpace* m_pCountedCS;
|
| - CPDF_Function* m_pFunctions[4];
|
| - int m_nFuncs;
|
| -};
|
| -
|
| -struct CPDF_MeshVertex {
|
| - FX_FLOAT x, y;
|
| - FX_FLOAT r, g, b;
|
| -};
|
| -class CPDF_MeshStream {
|
| - public:
|
| - FX_BOOL Load(CPDF_Stream* pShadingStream,
|
| - CPDF_Function** pFuncs,
|
| - int nFuncs,
|
| - CPDF_ColorSpace* pCS);
|
| -
|
| - FX_DWORD GetFlag();
|
| -
|
| - void GetCoords(FX_FLOAT& x, FX_FLOAT& y);
|
| -
|
| - void GetColor(FX_FLOAT& r, FX_FLOAT& g, FX_FLOAT& b);
|
| -
|
| - FX_DWORD GetVertex(CPDF_MeshVertex& vertex, CFX_Matrix* pObject2Bitmap);
|
| -
|
| - FX_BOOL GetVertexRow(CPDF_MeshVertex* vertex,
|
| - int count,
|
| - CFX_Matrix* pObject2Bitmap);
|
| - CPDF_Function** m_pFuncs;
|
| - CPDF_ColorSpace* m_pCS;
|
| - FX_DWORD m_nFuncs, m_nCoordBits, m_nCompBits, m_nFlagBits, m_nComps;
|
| - FX_DWORD m_CoordMax, m_CompMax;
|
| - FX_FLOAT m_xmin, m_xmax, m_ymin, m_ymax;
|
| - FX_FLOAT m_ColorMin[8], m_ColorMax[8];
|
| - CPDF_StreamAcc m_Stream;
|
| - CFX_BitStream m_BitStream;
|
| -};
|
| -#define PDF_IMAGE_NO_COMPRESS 0x0000
|
| -#define PDF_IMAGE_LOSSY_COMPRESS 0x0001
|
| -#define PDF_IMAGE_LOSSLESS_COMPRESS 0x0002
|
| -#define PDF_IMAGE_MASK_LOSSY_COMPRESS 0x0004
|
| -#define PDF_IMAGE_MASK_LOSSLESS_COMPRESS 0x0008
|
| -class CPDF_ImageSetParam {
|
| - public:
|
| - CPDF_ImageSetParam() : pMatteColor(NULL), nQuality(80) {}
|
| - FX_ARGB* pMatteColor;
|
| - int32_t nQuality;
|
| -};
|
| -class CPDF_Image {
|
| - public:
|
| - CPDF_Image(CPDF_Document* pDoc);
|
| -
|
| - ~CPDF_Image();
|
| -
|
| - FX_BOOL LoadImageF(CPDF_Stream* pImageStream, FX_BOOL bInline);
|
| -
|
| - void Release();
|
| -
|
| - CPDF_Image* Clone();
|
| -
|
| - FX_BOOL IsInline() { return m_bInline; }
|
| -
|
| - void SetInlineDict(CPDF_Dictionary* pDict) { m_pInlineDict = pDict; }
|
| -
|
| - CPDF_Dictionary* GetInlineDict() const { return m_pInlineDict; }
|
| -
|
| - CPDF_Stream* GetStream() const { return m_pStream; }
|
| -
|
| - CPDF_Dictionary* GetDict() const {
|
| - return m_pStream ? m_pStream->GetDict() : NULL;
|
| - }
|
| -
|
| - CPDF_Dictionary* GetOC() const { return m_pOC; }
|
| -
|
| - CPDF_Document* GetDocument() const { return m_pDocument; }
|
| -
|
| - int32_t GetPixelHeight() const { return m_Height; }
|
| -
|
| - int32_t GetPixelWidth() const { return m_Width; }
|
| -
|
| - FX_BOOL IsMask() const { return m_bIsMask; }
|
| -
|
| - FX_BOOL IsInterpol() const { return m_bInterpolate; }
|
| -
|
| - CFX_DIBSource* LoadDIBSource(CFX_DIBSource** ppMask = NULL,
|
| - FX_DWORD* pMatteColor = NULL,
|
| - FX_BOOL bStdCS = FALSE,
|
| - FX_DWORD GroupFamily = 0,
|
| - FX_BOOL bLoadMask = FALSE) const;
|
| -
|
| - void SetImage(const CFX_DIBitmap* pDIBitmap,
|
| - int32_t iCompress,
|
| - IFX_FileWrite* pFileWrite = NULL,
|
| - IFX_FileRead* pFileRead = NULL,
|
| - const CFX_DIBitmap* pMask = NULL,
|
| - const CPDF_ImageSetParam* pParam = NULL);
|
| -
|
| - void SetJpegImage(uint8_t* pImageData, FX_DWORD size);
|
| -
|
| - void SetJpegImage(IFX_FileRead* pFile);
|
| -
|
| - void ResetCache(CPDF_Page* pPage, const CFX_DIBitmap* pDIBitmap);
|
| -
|
| - public:
|
| - FX_BOOL StartLoadDIBSource(CPDF_Dictionary* pFormResource,
|
| - CPDF_Dictionary* pPageResource,
|
| - FX_BOOL bStdCS = FALSE,
|
| - FX_DWORD GroupFamily = 0,
|
| - FX_BOOL bLoadMask = FALSE);
|
| - FX_BOOL Continue(IFX_Pause* pPause);
|
| - CFX_DIBSource* DetachBitmap();
|
| - CFX_DIBSource* DetachMask();
|
| - CFX_DIBSource* m_pDIBSource;
|
| - CFX_DIBSource* m_pMask;
|
| - FX_DWORD m_MatteColor;
|
| -
|
| - private:
|
| - CPDF_Stream* m_pStream;
|
| - FX_BOOL m_bInline;
|
| - CPDF_Dictionary* m_pInlineDict;
|
| -
|
| - int32_t m_Height;
|
| -
|
| - int32_t m_Width;
|
| -
|
| - FX_BOOL m_bIsMask;
|
| -
|
| - FX_BOOL m_bInterpolate;
|
| -
|
| - CPDF_Document* m_pDocument;
|
| -
|
| - CPDF_Dictionary* m_pOC;
|
| - CPDF_Dictionary* InitJPEG(uint8_t* pData, FX_DWORD size);
|
| -};
|
| -
|
| -#endif // CORE_INCLUDE_FPDFAPI_FPDF_RESOURCE_H_
|
|
|