diff options
Diffstat (limited to 'core/include/fpdfapi/fpdf_resource.h')
-rw-r--r-- | core/include/fpdfapi/fpdf_resource.h | 1323 |
1 files changed, 602 insertions, 721 deletions
diff --git a/core/include/fpdfapi/fpdf_resource.h b/core/include/fpdfapi/fpdf_resource.h index 5c8cc85217..c41a306d54 100644 --- a/core/include/fpdfapi/fpdf_resource.h +++ b/core/include/fpdfapi/fpdf_resource.h @@ -51,911 +51,792 @@ 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; +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_TYPE1 1 -#define PDFFONT_TRUETYPE 2 -#define PDFFONT_TYPE3 3 -#define PDFFONT_CIDFONT 4 -#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); - - virtual ~CPDF_Font(); - - bool IsFontType(int fonttype) const { return fonttype == m_FontType; } - int GetFontType() const { return m_FontType; } - - CFX_ByteString GetFontTypeName() const; - - const CFX_ByteString& GetBaseFont() const - { - return m_BaseFont; - } +#define PDFFONT_TYPE1 1 +#define PDFFONT_TRUETYPE 2 +#define PDFFONT_TYPE3 3 +#define PDFFONT_CIDFONT 4 +#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); - const CFX_SubstFont* GetSubstFont() const - { - return m_Font.GetSubstFont(); - } + virtual ~CPDF_Font(); - FX_DWORD GetFlags() const - { - return m_Flags; - } + bool IsFontType(int fonttype) const { return fonttype == m_FontType; } + int GetFontType() const { return m_FontType; } - virtual FX_BOOL IsVertWriting()const; + CFX_ByteString GetFontTypeName() 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; } - CPDF_Type1Font* GetType1Font() const - { - return m_FontType == PDFFONT_TYPE1 ? (CPDF_Type1Font*)(void*)this : NULL; - } + virtual FX_BOOL IsVertWriting() const; - CPDF_TrueTypeFont* GetTrueTypeFont() const - { - return m_FontType == PDFFONT_TRUETYPE ? (CPDF_TrueTypeFont*)(void*)this : NULL; - } + CPDF_Type1Font* GetType1Font() const { + return m_FontType == PDFFONT_TYPE1 ? (CPDF_Type1Font*)(void*)this : NULL; + } - CPDF_CIDFont* GetCIDFont() const - { - return (m_FontType == PDFFONT_CIDFONT) ? (CPDF_CIDFont*)(void*)this : NULL; - } + CPDF_TrueTypeFont* GetTrueTypeFont() const { + return m_FontType == PDFFONT_TRUETYPE ? (CPDF_TrueTypeFont*)(void*)this + : NULL; + } - CPDF_Type3Font* GetType3Font() const - { - return (m_FontType == PDFFONT_TYPE3) ? (CPDF_Type3Font*)(void*)this : NULL; - } + CPDF_CIDFont* GetCIDFont() const { + return (m_FontType == PDFFONT_CIDFONT) ? (CPDF_CIDFont*)(void*)this : NULL; + } + CPDF_Type3Font* GetType3Font() const { + return (m_FontType == PDFFONT_TYPE3) ? (CPDF_Type3Font*)(void*)this : NULL; + } - FX_BOOL IsEmbedded() const - { - return m_FontType == PDFFONT_TYPE3 || m_pFontFile != NULL; - } + FX_BOOL IsEmbedded() const { + return m_FontType == PDFFONT_TYPE3 || m_pFontFile != NULL; + } - virtual FX_BOOL IsUnicodeCompatible() const - { - return FALSE; - } + virtual FX_BOOL IsUnicodeCompatible() const { return FALSE; } - CPDF_StreamAcc* GetFontFile() const - { - return m_pFontFile; - } + CPDF_StreamAcc* GetFontFile() const { return m_pFontFile; } - CPDF_Dictionary* GetFontDict() const - { - return m_pFontDict; - } + CPDF_Dictionary* GetFontDict() const { return m_pFontDict; } - FX_BOOL IsStandardFont() const; + FX_BOOL IsStandardFont() const; - FXFT_Face GetFace() const - { - return m_Font.GetFace(); - } + FXFT_Face GetFace() const { return m_Font.GetFace(); } - virtual FX_DWORD GetNextChar(const FX_CHAR* pString, int nStrLen, int& offset) const - { - if (offset < 0 || nStrLen < 1) { - return 0; - } - uint8_t ch = offset < nStrLen ? pString[offset++] : pString[nStrLen-1]; - return static_cast<FX_DWORD>(ch); + virtual FX_DWORD GetNextChar(const FX_CHAR* pString, + int nStrLen, + int& offset) const { + if (offset < 0 || nStrLen < 1) { + return 0; } + uint8_t ch = offset < nStrLen ? pString[offset++] : pString[nStrLen - 1]; + return static_cast<FX_DWORD>(ch); + } - virtual int CountChar(const FX_CHAR* pString, int size) const - { - return size; - } + virtual int CountChar(const FX_CHAR* pString, int size) const { return size; } - void AppendChar(CFX_ByteString& str, FX_DWORD charcode) const; + void AppendChar(CFX_ByteString& str, FX_DWORD charcode) const; - virtual int AppendChar(FX_CHAR* buf, FX_DWORD charcode) const - { - *buf = (FX_CHAR)charcode; - return 1; - } + virtual int AppendChar(FX_CHAR* buf, FX_DWORD charcode) const { + *buf = (FX_CHAR)charcode; + return 1; + } - virtual int GetCharSize(FX_DWORD charcode) const - { - return 1; - } + virtual int GetCharSize(FX_DWORD charcode) const { return 1; } + virtual int GlyphFromCharCode(FX_DWORD charcode, + FX_BOOL* pVertGlyph = NULL) = 0; + virtual int GlyphFromCharCodeExt(FX_DWORD charcode) { + return GlyphFromCharCode(charcode); + } + CFX_WideString UnicodeFromCharCode(FX_DWORD charcode) const; + FX_DWORD CharCodeFromUnicode(FX_WCHAR Unicode) const; - virtual int GlyphFromCharCode(FX_DWORD charcode, FX_BOOL *pVertGlyph = NULL) = 0; - virtual int GlyphFromCharCodeExt(FX_DWORD charcode) - { - return GlyphFromCharCode(charcode); - } + CFX_CharMap* GetCharMap() { return m_pCharMap; } - CFX_WideString UnicodeFromCharCode(FX_DWORD charcode) const; + CFX_ByteString EncodeString(const CFX_WideString& str) const; - FX_DWORD CharCodeFromUnicode(FX_WCHAR Unicode) const; + CFX_WideString DecodeString(const CFX_ByteString& str) const; - CFX_CharMap* GetCharMap() - { - return m_pCharMap; - } + void GetFontBBox(FX_RECT& rect) const { rect = m_FontBBox; } - CFX_ByteString EncodeString(const CFX_WideString& str) const; + int GetTypeAscent() const { return m_Ascent; } - CFX_WideString DecodeString(const CFX_ByteString& str) const; + 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); - void GetFontBBox(FX_RECT& rect) const - { - rect = m_FontBBox; - } + virtual int GetCharWidthF(FX_DWORD charcode, int level = 0) = 0; - int GetTypeAscent() const - { - return m_Ascent; - } - - int GetTypeDescent() const - { - return m_Descent; - } - - int GetItalicAngle() const - { - return m_ItalicAngle; - } - - int GetStemV() const - { - return m_StemV; - } + virtual int GetCharTypeWidth(FX_DWORD charcode); - int GetStringWidth(const FX_CHAR* pString, int size); + virtual void GetCharBBox(FX_DWORD charcode, FX_RECT& rect, int level = 0) = 0; - virtual int GetCharWidthF(FX_DWORD charcode, int level = 0) = 0; + CPDF_Document* m_pDocument; - virtual int GetCharTypeWidth(FX_DWORD charcode); + class CFX_PathData* LoadGlyphPath(FX_DWORD charcode, int dest_width = 0); - virtual void GetCharBBox(FX_DWORD charcode, FX_RECT& rect, int level = 0) = 0; + CFX_Font m_Font; + protected: + explicit CPDF_Font(int fonttype); + FX_BOOL Initialize(); - CPDF_Document* m_pDocument; + FX_BOOL Load(); - class CFX_PathData* LoadGlyphPath(FX_DWORD charcode, int dest_width = 0); + virtual FX_BOOL _Load() = 0; - CFX_Font m_Font; + virtual FX_WCHAR _UnicodeFromCharCode(FX_DWORD charcode) const = 0; -protected: - explicit CPDF_Font(int fonttype); + virtual FX_DWORD _CharCodeFromUnicode(FX_WCHAR Unicode) const = 0; - FX_BOOL Initialize(); + void LoadUnicodeMap(); - FX_BOOL Load(); + void LoadPDFEncoding(CPDF_Object* pEncoding, + int& iBaseEncoding, + CFX_ByteString*& pCharNames, + FX_BOOL bEmbedded, + FX_BOOL bTrueType); - virtual FX_BOOL _Load() = 0; + void LoadFontDescriptor(CPDF_Dictionary*); - virtual FX_WCHAR _UnicodeFromCharCode(FX_DWORD charcode) const = 0; + void LoadCharWidths(FX_WORD* pWidths); - virtual FX_DWORD _CharCodeFromUnicode(FX_WCHAR Unicode) const = 0; + void CheckFontMetrics(); - void LoadUnicodeMap(); + CFX_CharMap* m_pCharMap; - void LoadPDFEncoding(CPDF_Object* pEncoding, int& iBaseEncoding, - CFX_ByteString*& pCharNames, FX_BOOL bEmbedded, FX_BOOL bTrueType); + CFX_ByteString m_BaseFont; - void LoadFontDescriptor(CPDF_Dictionary*); + CPDF_StreamAcc* m_pFontFile; - void LoadCharWidths(FX_WORD* pWidths); + CPDF_Dictionary* m_pFontDict; - void CheckFontMetrics(); + CPDF_ToUnicodeMap* m_pToUnicodeMap; - CFX_CharMap* m_pCharMap; + FX_BOOL m_bToUnicodeLoaded; + int m_Flags; + FX_RECT m_FontBBox; - CFX_ByteString m_BaseFont; + int m_StemV; - CPDF_StreamAcc* m_pFontFile; + int m_Ascent; - CPDF_Dictionary* m_pFontDict; - - CPDF_ToUnicodeMap* m_pToUnicodeMap; - - FX_BOOL m_bToUnicodeLoaded; + int m_Descent; + int m_ItalicAngle; + private: + const int m_FontType; +}; +#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); - int m_Flags; + void LoadEncoding(CPDF_Object* pEncoding); - FX_RECT m_FontBBox; + FX_BOOL IsIdentical(CPDF_FontEncoding* pAnother) const; - int m_StemV; + FX_WCHAR UnicodeFromCharCode(uint8_t charcode) const { + return m_Unicodes[charcode]; + } - int m_Ascent; + int CharCodeFromUnicode(FX_WCHAR unicode) const; - int m_Descent; + void SetUnicode(uint8_t charcode, FX_WCHAR unicode) { + m_Unicodes[charcode] = unicode; + } - int m_ItalicAngle; + CPDF_Object* Realize(); -private: - const int m_FontType; + public: + FX_WCHAR m_Unicodes[256]; }; -#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; +class CPDF_SimpleFont : public CPDF_Font { + public: + explicit CPDF_SimpleFont(int fonttype); + ~CPDF_SimpleFont() override; - void SetUnicode(uint8_t charcode, FX_WCHAR unicode) - { - m_Unicodes[charcode] = unicode; - } - - CPDF_Object* Realize(); -public: + CPDF_FontEncoding* GetEncoding() { return &m_Encoding; } + int GetCharWidthF(FX_DWORD charcode, int level = 0) override; + void GetCharBBox(FX_DWORD charcode, FX_RECT& rect, int level = 0) override; + int GlyphFromCharCode(FX_DWORD charcode, FX_BOOL* pVertGlyph = NULL) override; + FX_BOOL IsUnicodeCompatible() const override; - FX_WCHAR m_Unicodes[256]; -}; + protected: + FX_BOOL LoadCommon(); -class CPDF_SimpleFont : public CPDF_Font -{ -public: - explicit CPDF_SimpleFont(int fonttype); - ~CPDF_SimpleFont() override; + void LoadSubstFont(); - CPDF_FontEncoding* GetEncoding() - { - return &m_Encoding; - } - int GetCharWidthF(FX_DWORD charcode, int level = 0) override; - void GetCharBBox(FX_DWORD charcode, FX_RECT& rect, int level = 0) override; - int GlyphFromCharCode(FX_DWORD charcode, FX_BOOL *pVertGlyph = NULL) override; - FX_BOOL IsUnicodeCompatible() const override; + void LoadFaceMetrics(); -protected: - FX_BOOL LoadCommon(); + virtual void LoadGlyphMap() = 0; - void LoadSubstFont(); + FX_WCHAR _UnicodeFromCharCode(FX_DWORD charcode) const override { + return m_Encoding.UnicodeFromCharCode((uint8_t)charcode); + } - void LoadFaceMetrics(); + FX_DWORD _CharCodeFromUnicode(FX_WCHAR Unicode) const override { + return m_Encoding.CharCodeFromUnicode(Unicode); + } - virtual void LoadGlyphMap() = 0; + void LoadCharMetrics(int charcode); - FX_WCHAR _UnicodeFromCharCode(FX_DWORD charcode) const override - { - return m_Encoding.UnicodeFromCharCode((uint8_t)charcode); - } - - FX_DWORD _CharCodeFromUnicode(FX_WCHAR Unicode) const override - { - return m_Encoding.CharCodeFromUnicode(Unicode); - } - - void LoadCharMetrics(int charcode); - - CPDF_FontEncoding m_Encoding; - FX_WORD m_GlyphIndex[256]; - FX_WORD m_ExtGID[256]; - CFX_ByteString* m_pCharNames; - int m_BaseEncoding; - FX_WORD m_CharWidth[256]; - FX_SMALL_RECT m_CharBBox[256]; - FX_BOOL m_bUseFontWidth; + CPDF_FontEncoding m_Encoding; + FX_WORD m_GlyphIndex[256]; + FX_WORD m_ExtGID[256]; + CFX_ByteString* m_pCharNames; + int m_BaseEncoding; + FX_WORD m_CharWidth[256]; + FX_SMALL_RECT m_CharBBox[256]; + FX_BOOL m_bUseFontWidth; }; -class CPDF_Type1Font : public CPDF_SimpleFont -{ -public: +class CPDF_Type1Font : public CPDF_SimpleFont { + public: + CPDF_Type1Font(); - CPDF_Type1Font(); + int GetBase14Font() { return m_Base14Font; } + virtual int GlyphFromCharCodeExt(FX_DWORD charcode); - int GetBase14Font() - { - return m_Base14Font; - } - virtual int GlyphFromCharCodeExt(FX_DWORD charcode); -protected: - virtual FX_BOOL _Load(); + protected: + virtual FX_BOOL _Load(); - int m_Base14Font; - virtual void LoadGlyphMap(); -}; -class CPDF_TrueTypeFont : public CPDF_SimpleFont -{ -public: - - CPDF_TrueTypeFont(); -protected: - virtual FX_BOOL _Load(); - virtual void LoadGlyphMap(); + int m_Base14Font; + virtual void LoadGlyphMap(); }; -class CPDF_Type3Char -{ -public: - - CPDF_Type3Char(); - - ~CPDF_Type3Char(); +class CPDF_TrueTypeFont : public CPDF_SimpleFont { + public: + CPDF_TrueTypeFont(); - FX_BOOL LoadBitmap(CPDF_RenderContext* pContext); - - FX_BOOL m_bColored; + protected: + virtual FX_BOOL _Load(); + virtual void LoadGlyphMap(); +}; +class CPDF_Type3Char { + public: + CPDF_Type3Char(); - FX_BOOL m_bPageRequired; + ~CPDF_Type3Char(); + FX_BOOL LoadBitmap(CPDF_RenderContext* pContext); + FX_BOOL m_bColored; - CPDF_Form* m_pForm; + FX_BOOL m_bPageRequired; - CFX_AffineMatrix m_ImageMatrix; + CPDF_Form* m_pForm; - CFX_DIBitmap* m_pBitmap; + CFX_AffineMatrix m_ImageMatrix; + CFX_DIBitmap* m_pBitmap; - int m_Width; + int m_Width; - FX_RECT m_BBox; + FX_RECT m_BBox; }; -class CPDF_Type3Font : public CPDF_SimpleFont -{ -public: - CPDF_Type3Font(); - ~CPDF_Type3Font() override; - - void SetPageResources(CPDF_Dictionary* pResources) - { - m_pPageResources = pResources; - } - CPDF_Type3Char* LoadChar(FX_DWORD charcode, int level = 0); - int GetCharWidthF(FX_DWORD charcode, int level = 0) override; - int GetCharTypeWidth(FX_DWORD charcode) override - { - return GetCharWidthF(charcode); - } - void GetCharBBox(FX_DWORD charcode, FX_RECT& rect, int level = 0) override; - CFX_AffineMatrix& GetFontMatrix() - { - return m_FontMatrix; - } - void CheckType3FontMetrics(); - -protected: - CFX_AffineMatrix m_FontMatrix; - -private: - FX_BOOL _Load() override; - void LoadGlyphMap() override {} - - int m_CharWidthL[256]; - CPDF_Dictionary* m_pCharProcs; - CPDF_Dictionary* m_pPageResources; - CPDF_Dictionary* m_pFontResources; - CFX_MapPtrToPtr m_CacheMap; - CFX_MapPtrToPtr m_DeletedMap; +class CPDF_Type3Font : public CPDF_SimpleFont { + public: + CPDF_Type3Font(); + ~CPDF_Type3Font() override; + + void SetPageResources(CPDF_Dictionary* pResources) { + m_pPageResources = pResources; + } + CPDF_Type3Char* LoadChar(FX_DWORD charcode, int level = 0); + int GetCharWidthF(FX_DWORD charcode, int level = 0) override; + int GetCharTypeWidth(FX_DWORD charcode) override { + return GetCharWidthF(charcode); + } + void GetCharBBox(FX_DWORD charcode, FX_RECT& rect, int level = 0) override; + CFX_AffineMatrix& GetFontMatrix() { return m_FontMatrix; } + void CheckType3FontMetrics(); + + protected: + CFX_AffineMatrix m_FontMatrix; + + private: + FX_BOOL _Load() override; + void LoadGlyphMap() override {} + + int m_CharWidthL[256]; + CPDF_Dictionary* m_pCharProcs; + CPDF_Dictionary* m_pPageResources; + CPDF_Dictionary* m_pFontResources; + CFX_MapPtrToPtr m_CacheMap; + CFX_MapPtrToPtr m_DeletedMap; }; -#define CIDSET_UNKNOWN 0 -#define CIDSET_GB1 1 -#define CIDSET_CNS1 2 -#define CIDSET_JAPAN1 3 -#define CIDSET_KOREA1 4 -#define CIDSET_UNICODE 5 -#define NUMBER_OF_CIDSETS 6 - -class CPDF_CIDFont : public CPDF_Font -{ -public: - - CPDF_CIDFont(); - - ~CPDF_CIDFont() override; - - FX_BOOL LoadGB2312(); - int GlyphFromCharCode(FX_DWORD charcode, FX_BOOL *pVertGlyph = NULL) override; - int GetCharWidthF(FX_DWORD charcode, int level = 0) override; - void GetCharBBox(FX_DWORD charcode, FX_RECT& rect, int level = 0) override; - FX_WORD CIDFromCharCode(FX_DWORD charcode) const; - - FX_BOOL IsTrueType() const - { - return !m_bType1; - } - - virtual 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; - - int GetCharset() const - { - return m_Charset; - } - - const uint8_t* GetCIDTransform(FX_WORD CID) const; - FX_BOOL IsVertWriting() const override; - short GetVertWidth(FX_WORD CID) const; - void GetVertOrigin(FX_WORD CID, short& vx, short& vy) const; - FX_BOOL IsUnicodeCompatible() const override; - virtual FX_BOOL IsFontStyleFromCharCode(FX_DWORD charcode) const; - -protected: - friend class CPDF_Font; - - FX_BOOL _Load() override; - FX_WCHAR _UnicodeFromCharCode(FX_DWORD charcode) const override; - FX_DWORD _CharCodeFromUnicode(FX_WCHAR Unicode) const override; - int GetGlyphIndex(FX_DWORD unicodeb, FX_BOOL *pVertGlyph); - void LoadMetricsArray(CPDF_Array* pArray, CFX_DWordArray& result, int nElements); - void LoadSubstFont(); - - CPDF_CMap* m_pCMap; - CPDF_CMap* m_pAllocatedCMap; - CPDF_CID2UnicodeMap* m_pCID2UnicodeMap; - int m_Charset; - FX_BOOL m_bType1; - CPDF_StreamAcc* m_pCIDToGIDMap; - FX_BOOL m_bCIDIsGID; - FX_WORD m_DefaultWidth; - FX_WORD* 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 CIDSET_UNKNOWN 0 +#define CIDSET_GB1 1 +#define CIDSET_CNS1 2 +#define CIDSET_JAPAN1 3 +#define CIDSET_KOREA1 4 +#define CIDSET_UNICODE 5 +#define NUMBER_OF_CIDSETS 6 + +class CPDF_CIDFont : public CPDF_Font { + public: + CPDF_CIDFont(); + + ~CPDF_CIDFont() override; + + FX_BOOL LoadGB2312(); + int GlyphFromCharCode(FX_DWORD charcode, FX_BOOL* pVertGlyph = NULL) override; + int GetCharWidthF(FX_DWORD charcode, int level = 0) override; + void GetCharBBox(FX_DWORD charcode, FX_RECT& rect, int level = 0) override; + FX_WORD CIDFromCharCode(FX_DWORD charcode) const; + + FX_BOOL IsTrueType() const { return !m_bType1; } + + virtual 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; + + int GetCharset() const { return m_Charset; } + + const uint8_t* GetCIDTransform(FX_WORD CID) const; + FX_BOOL IsVertWriting() const override; + short GetVertWidth(FX_WORD CID) const; + void GetVertOrigin(FX_WORD CID, short& vx, short& vy) const; + FX_BOOL IsUnicodeCompatible() const override; + virtual FX_BOOL IsFontStyleFromCharCode(FX_DWORD charcode) const; + + protected: + friend class CPDF_Font; + + FX_BOOL _Load() override; + FX_WCHAR _UnicodeFromCharCode(FX_DWORD charcode) const override; + FX_DWORD _CharCodeFromUnicode(FX_WCHAR Unicode) const override; + int GetGlyphIndex(FX_DWORD unicodeb, FX_BOOL* pVertGlyph); + void LoadMetricsArray(CPDF_Array* pArray, + CFX_DWordArray& result, + int nElements); + void LoadSubstFont(); + + CPDF_CMap* m_pCMap; + CPDF_CMap* m_pAllocatedCMap; + CPDF_CID2UnicodeMap* m_pCID2UnicodeMap; + int m_Charset; + FX_BOOL m_bType1; + CPDF_StreamAcc* m_pCIDToGIDMap; + FX_BOOL m_bCIDIsGID; + FX_WORD m_DefaultWidth; + FX_WORD* 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; - - int 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, int 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; - - int m_nComponents; - - CPDF_Array* m_pArray; - - FX_DWORD m_dwStdConversion; +#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; + + int 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, int 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; + + int m_nComponents; + + CPDF_Array* m_pArray; + + FX_DWORD m_dwStdConversion; }; -class CPDF_Color -{ -public: +class CPDF_Color { + public: + CPDF_Color() : m_pCS(NULL), m_pBuffer(NULL) {} - CPDF_Color() :m_pCS(NULL), m_pBuffer(NULL) - { - } + CPDF_Color(int family); - CPDF_Color(int family); + ~CPDF_Color(); - ~CPDF_Color(); + FX_BOOL IsNull() const { return m_pBuffer == NULL; } - FX_BOOL IsNull() const - { - return m_pBuffer == NULL; - } + FX_BOOL IsEqual(const CPDF_Color& other) const; - FX_BOOL IsEqual(const CPDF_Color& other) const; + FX_BOOL IsPattern() const { + return m_pCS && m_pCS->GetFamily() == PDFCS_PATTERN; + } - FX_BOOL IsPattern() const - { - return m_pCS && m_pCS->GetFamily() == PDFCS_PATTERN; - } + void Copy(const CPDF_Color* pSrc); - void Copy(const CPDF_Color* pSrc); + void SetColorSpace(CPDF_ColorSpace* pCS); - void SetColorSpace(CPDF_ColorSpace* pCS); + void SetValue(FX_FLOAT* comp); - void SetValue(FX_FLOAT* comp); + void SetValue(CPDF_Pattern* pPattern, FX_FLOAT* comp, int ncomps); - void SetValue(CPDF_Pattern* pPattern, FX_FLOAT* comp, int ncomps); + FX_BOOL GetRGB(int& R, int& G, int& B) const; - FX_BOOL GetRGB(int& R, int& G, int& B) const; + CPDF_Pattern* GetPattern() const; - CPDF_Pattern* GetPattern() const; + CPDF_ColorSpace* GetPatternCS() const; - CPDF_ColorSpace* GetPatternCS() const; + FX_FLOAT* GetPatternColor() const; - FX_FLOAT* GetPatternColor() const; + CPDF_ColorSpace* m_pCS; - CPDF_ColorSpace* m_pCS; - -protected: - void ReleaseBuffer(); - void ReleaseColorSpace(); - FX_FLOAT* m_pBuffer; + protected: + void ReleaseBuffer(); + void ReleaseColorSpace(); + FX_FLOAT* m_pBuffer; }; -#define PATTERN_TILING 1 -#define PATTERN_SHADING 2 -class CPDF_Pattern -{ -public: - - virtual ~CPDF_Pattern(); - void SetForceClear(FX_BOOL bForceClear) { m_bForceClear = bForceClear; } +#define PATTERN_TILING 1 +#define PATTERN_SHADING 2 +class CPDF_Pattern { + public: + virtual ~CPDF_Pattern(); + void SetForceClear(FX_BOOL bForceClear) { m_bForceClear = bForceClear; } - CPDF_Object* m_pPatternObj; + CPDF_Object* m_pPatternObj; - int m_PatternType; + int m_PatternType; - CFX_AffineMatrix m_Pattern2Form; - CFX_AffineMatrix m_ParentMatrix; + CFX_AffineMatrix m_Pattern2Form; + CFX_AffineMatrix m_ParentMatrix; - CPDF_Document* m_pDocument; + CPDF_Document* m_pDocument; -protected: - CPDF_Pattern(const CFX_AffineMatrix* pParentMatrix); - FX_BOOL m_bForceClear; + protected: + CPDF_Pattern(const CFX_AffineMatrix* pParentMatrix); + FX_BOOL m_bForceClear; }; -class CPDF_TilingPattern : public CPDF_Pattern -{ -public: - - CPDF_TilingPattern(CPDF_Document* pDoc, CPDF_Object* pPatternObj, const CFX_AffineMatrix* parentMatrix); - - virtual ~CPDF_TilingPattern(); - - FX_BOOL Load(); - +class CPDF_TilingPattern : public CPDF_Pattern { + public: + CPDF_TilingPattern(CPDF_Document* pDoc, + CPDF_Object* pPatternObj, + const CFX_AffineMatrix* parentMatrix); + virtual ~CPDF_TilingPattern(); - FX_BOOL m_bColored; + FX_BOOL Load(); - CFX_FloatRect m_BBox; + FX_BOOL m_bColored; - FX_FLOAT m_XStep; + CFX_FloatRect m_BBox; - FX_FLOAT m_YStep; + FX_FLOAT m_XStep; + FX_FLOAT m_YStep; - - CPDF_Form* m_pForm; + CPDF_Form* m_pForm; }; -class CPDF_ShadingPattern : public CPDF_Pattern -{ -public: +class CPDF_ShadingPattern : public CPDF_Pattern { + public: + CPDF_ShadingPattern(CPDF_Document* pDoc, + CPDF_Object* pPatternObj, + FX_BOOL bShading, + const CFX_AffineMatrix* parentMatrix); - CPDF_ShadingPattern(CPDF_Document* pDoc, CPDF_Object* pPatternObj, FX_BOOL bShading, const CFX_AffineMatrix* parentMatrix); + virtual ~CPDF_ShadingPattern(); - virtual ~CPDF_ShadingPattern(); + CPDF_Object* m_pShadingObj; - CPDF_Object* m_pShadingObj; + FX_BOOL m_bShadingObj; - FX_BOOL m_bShadingObj; + FX_BOOL Load(); - FX_BOOL Load(); + FX_BOOL Reload(); - FX_BOOL Reload(); + int m_ShadingType; - int m_ShadingType; + CPDF_ColorSpace* m_pCS; // 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; // Still keep m_pCS as some CPDF_ColorSpace (name object) are not managed as counted objects. Refer to CPDF_DocPageData::GetColorSpace. + CPDF_CountedColorSpace* m_pCountedCS; - CPDF_CountedColorSpace* m_pCountedCS; + CPDF_Function* m_pFunctions[4]; - CPDF_Function* m_pFunctions[4]; + int m_nFuncs; - int m_nFuncs; -protected: - void Clear(); + protected: + void Clear(); }; struct CPDF_MeshVertex { - FX_FLOAT x, y; - FX_FLOAT r, g, b; + 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_AffineMatrix* pObject2Bitmap); - - FX_BOOL GetVertexRow(CPDF_MeshVertex* vertex, int count, CFX_AffineMatrix* 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; +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_AffineMatrix* pObject2Bitmap); + + FX_BOOL GetVertexRow(CPDF_MeshVertex* vertex, + int count, + CFX_AffineMatrix* 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; +#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: +class CPDF_Image { + public: + CPDF_Image(CPDF_Document* pDoc); - CPDF_Image(CPDF_Document* pDoc); + ~CPDF_Image(); - ~CPDF_Image(); + FX_BOOL LoadImageF(CPDF_Stream* pImageStream, FX_BOOL bInline); - FX_BOOL LoadImageF(CPDF_Stream* pImageStream, FX_BOOL bInline); + void Release(); - void Release(); + CPDF_Image* Clone(); - CPDF_Image* Clone(); + FX_BOOL IsInline() { return m_bInline; } - FX_BOOL IsInline() - { - return m_bInline; - } + void SetInlineDict(CPDF_Dictionary* pDict) { m_pInlineDict = pDict; } - void SetInlineDict(CPDF_Dictionary* pDict) - { - m_pInlineDict = pDict; - } + CPDF_Dictionary* GetInlineDict() const { return m_pInlineDict; } - CPDF_Dictionary* GetInlineDict() const - { - return m_pInlineDict; - } + CPDF_Stream* GetStream() const { return m_pStream; } - CPDF_Stream* GetStream() const - { - return m_pStream; - } + CPDF_Dictionary* GetDict() const { + return m_pStream ? m_pStream->GetDict() : NULL; + } - 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; - } + CPDF_Dictionary* GetOC() const { return m_pOC; } + CPDF_Document* GetDocument() const { return m_pDocument; } + int32_t GetPixelHeight() const { return m_Height; } - 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; - } + int32_t GetPixelWidth() const { return m_Width; } - CFX_DIBSource* LoadDIBSource(CFX_DIBSource** ppMask = NULL, FX_DWORD* pMatteColor = NULL, FX_BOOL bStdCS = FALSE, FX_DWORD GroupFamily = 0, FX_BOOL bLoadMask = FALSE) const; + 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 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(uint8_t* pImageData, FX_DWORD size); - void SetJpegImage(IFX_FileRead *pFile); + void SetJpegImage(IFX_FileRead* pFile); - void ResetCache(CPDF_Page* pPage, const CFX_DIBitmap* pDIBitmap); + 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: + 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; - CPDF_Stream* m_pStream; - FX_BOOL m_bInline; - CPDF_Dictionary* m_pInlineDict; + private: + CPDF_Stream* m_pStream; + FX_BOOL m_bInline; + CPDF_Dictionary* m_pInlineDict; - int32_t m_Height; + int32_t m_Height; - int32_t m_Width; + int32_t m_Width; - FX_BOOL m_bIsMask; + FX_BOOL m_bIsMask; - FX_BOOL m_bInterpolate; + FX_BOOL m_bInterpolate; - CPDF_Document* m_pDocument; + CPDF_Document* m_pDocument; - CPDF_Dictionary* m_pOC; - CPDF_Dictionary* InitJPEG(uint8_t* pData, FX_DWORD size); + CPDF_Dictionary* m_pOC; + CPDF_Dictionary* InitJPEG(uint8_t* pData, FX_DWORD size); }; #endif // CORE_INCLUDE_FPDFAPI_FPDF_RESOURCE_H_ |