Index: core/include/fpdfapi/fpdf_resource.h |
diff --git a/core/include/fpdfapi/fpdf_resource.h b/core/include/fpdfapi/fpdf_resource.h |
index 5c8cc85217f9d80825d8e3fdd55867ab6120309a..c41a306d54223db345492ca06629a371189210c2 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_ |