summaryrefslogtreecommitdiff
path: root/core/include/fpdfapi
diff options
context:
space:
mode:
authordan sinclair <dsinclair@chromium.org>2016-03-23 19:21:44 -0400
committerdan sinclair <dsinclair@chromium.org>2016-03-23 19:21:44 -0400
commit61b2fc718910a5ab2a75ec5026b239ff33bccfdc (patch)
tree4031f4cea10dac3d77969035e66fc17235cb1d3d /core/include/fpdfapi
parent46a8a2041868c5df6883647226dab1482e2bf4c2 (diff)
downloadpdfium-61b2fc718910a5ab2a75ec5026b239ff33bccfdc.tar.xz
Split core/include/fpdfapi/fpdf_resource.h
This CL splits apart the core/include/fpdfapi/fpdf_resource.h file and places the classes into individual files. R=tsepez@chromium.org Review URL: https://codereview.chromium.org/1824033002 .
Diffstat (limited to 'core/include/fpdfapi')
-rw-r--r--core/include/fpdfapi/fpdf_resource.h774
1 files changed, 0 insertions, 774 deletions
diff --git a/core/include/fpdfapi/fpdf_resource.h b/core/include/fpdfapi/fpdf_resource.h
deleted file mode 100644
index f309114918..0000000000
--- 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_