Index: core/src/fpdfapi/fpdf_page/pageint.h |
diff --git a/core/src/fpdfapi/fpdf_page/pageint.h b/core/src/fpdfapi/fpdf_page/pageint.h |
index 8cd393cf32abb622a6a4549ad7ca5fc7269280aa..c931af7eb272ef1f7708417d6d6093719260d95d 100644 |
--- a/core/src/fpdfapi/fpdf_page/pageint.h |
+++ b/core/src/fpdfapi/fpdf_page/pageint.h |
@@ -12,486 +12,507 @@ |
#include "../../../../third_party/base/nonstd_unique_ptr.h" |
#include "../../../include/fpdfapi/fpdf_pageobj.h" |
-#define PARSE_STEP_LIMIT 100 |
- |
-class CPDF_StreamParser |
-{ |
-public: |
- |
- CPDF_StreamParser(const uint8_t* pData, FX_DWORD dwSize); |
- ~CPDF_StreamParser(); |
- |
- CPDF_Stream* ReadInlineStream(CPDF_Document* pDoc, CPDF_Dictionary* pDict, CPDF_Object* pCSObj, FX_BOOL bDecode); |
- typedef enum { EndOfData, Number, Keyword, Name, Others } SyntaxType; |
- |
- SyntaxType ParseNextElement(); |
- uint8_t* GetWordBuf() |
- { |
- return m_WordBuffer; |
- } |
- FX_DWORD GetWordSize() |
- { |
- return m_WordSize; |
- } |
- CPDF_Object* GetObject() |
- { |
- CPDF_Object* pObj = m_pLastObj; |
- m_pLastObj = NULL; |
- return pObj; |
- } |
- FX_DWORD GetPos() |
- { |
- return m_Pos; |
- } |
- void SetPos(FX_DWORD pos) |
- { |
- m_Pos = pos; |
- } |
- |
- CPDF_Object* ReadNextObject(FX_BOOL bAllowNestedArray = FALSE, FX_BOOL bInArray = FALSE); |
- void SkipPathObject(); |
-protected: |
- void GetNextWord(FX_BOOL& bIsNumber); |
- CFX_ByteString ReadString(); |
- CFX_ByteString ReadHexString(); |
- const uint8_t* m_pBuf; |
- FX_DWORD m_Size; |
- FX_DWORD m_Pos; |
- uint8_t m_WordBuffer[256]; |
- FX_DWORD m_WordSize; |
- CPDF_Object* m_pLastObj; |
+#define PARSE_STEP_LIMIT 100 |
+ |
+class CPDF_StreamParser { |
+ public: |
+ CPDF_StreamParser(const uint8_t* pData, FX_DWORD dwSize); |
+ ~CPDF_StreamParser(); |
+ |
+ CPDF_Stream* ReadInlineStream(CPDF_Document* pDoc, |
+ CPDF_Dictionary* pDict, |
+ CPDF_Object* pCSObj, |
+ FX_BOOL bDecode); |
+ typedef enum { EndOfData, Number, Keyword, Name, Others } SyntaxType; |
+ |
+ SyntaxType ParseNextElement(); |
+ uint8_t* GetWordBuf() { return m_WordBuffer; } |
+ FX_DWORD GetWordSize() { return m_WordSize; } |
+ CPDF_Object* GetObject() { |
+ CPDF_Object* pObj = m_pLastObj; |
+ m_pLastObj = NULL; |
+ return pObj; |
+ } |
+ FX_DWORD GetPos() { return m_Pos; } |
+ void SetPos(FX_DWORD pos) { m_Pos = pos; } |
+ |
+ CPDF_Object* ReadNextObject(FX_BOOL bAllowNestedArray = FALSE, |
+ FX_BOOL bInArray = FALSE); |
+ void SkipPathObject(); |
+ |
+ protected: |
+ void GetNextWord(FX_BOOL& bIsNumber); |
+ CFX_ByteString ReadString(); |
+ CFX_ByteString ReadHexString(); |
+ const uint8_t* m_pBuf; |
+ FX_DWORD m_Size; |
+ FX_DWORD m_Pos; |
+ uint8_t m_WordBuffer[256]; |
+ FX_DWORD m_WordSize; |
+ CPDF_Object* m_pLastObj; |
}; |
typedef enum { |
- PDFOP_CloseFillStrokePath = 0, PDFOP_FillStrokePath, |
- PDFOP_CloseEOFillStrokePath, PDFOP_EOFillStrokePath, |
- PDFOP_BeginMarkedContent_Dictionary, PDFOP_BeginImage, |
- PDFOP_BeginMarkedContent, PDFOP_BeginText, |
- PDFOP_BeginSectionUndefined, PDFOP_CurveTo_123, |
- PDFOP_ConcatMatrix, PDFOP_SetColorSpace_Fill, |
- PDFOP_SetColorSpace_Stroke, PDFOP_SetDash, |
- PDFOP_SetCharWidth, PDFOP_SetCachedDevice, |
- PDFOP_ExecuteXObject, PDFOP_MarkPlace_Dictionary, |
- PDFOP_EndImage, PDFOP_EndMarkedContent, |
- PDFOP_EndText, PDFOP_EndSectionUndefined, |
- PDFOP_FillPath, PDFOP_FillPathOld, |
- PDFOP_EOFillPath, PDFOP_SetGray_Fill, |
- PDFOP_SetGray_Stroke, PDFOP_SetExtendGraphState, |
- PDFOP_ClosePath, PDFOP_SetFlat, |
- PDFOP_BeginImageData, PDFOP_SetLineJoin, |
- PDFOP_SetLineCap, PDFOP_SetCMYKColor_Fill, |
- PDFOP_SetCMYKColor_Stroke, PDFOP_LineTo, |
- PDFOP_MoveTo, PDFOP_SetMiterLimit, |
- PDFOP_MarkPlace, PDFOP_EndPath, |
- PDFOP_SaveGraphState, PDFOP_RestoreGraphState, |
- PDFOP_Rectangle, PDFOP_SetRGBColor_Fill, |
- PDFOP_SetRGBColor_Stroke, PDFOP_SetRenderIntent, |
- PDFOP_CloseStrokePath, PDFOP_StrokePath, |
- PDFOP_SetColor_Fill, PDFOP_SetColor_Stroke, |
- PDFOP_SetColorPS_Fill, PDFOP_SetColorPS_Stroke, |
- PDFOP_ShadeFill, PDFOP_SetCharSpace, |
- PDFOP_MoveTextPoint, PDFOP_MoveTextPoint_SetLeading, |
- PDFOP_SetFont, PDFOP_ShowText, |
- PDFOP_ShowText_Positioning, PDFOP_SetTextLeading, |
- PDFOP_SetTextMatrix, PDFOP_SetTextRenderMode, |
- PDFOP_SetTextRise, PDFOP_SetWordSpace, |
- PDFOP_SetHorzScale, PDFOP_MoveToNextLine, |
- PDFOP_CurveTo_23, PDFOP_SetLineWidth, |
- PDFOP_Clip, PDFOP_EOClip, |
- PDFOP_CurveTo_13, PDFOP_NextLineShowText, |
- PDFOP_NextLineShowText_Space, PDFOP_Invalid |
+ PDFOP_CloseFillStrokePath = 0, |
+ PDFOP_FillStrokePath, |
+ PDFOP_CloseEOFillStrokePath, |
+ PDFOP_EOFillStrokePath, |
+ PDFOP_BeginMarkedContent_Dictionary, |
+ PDFOP_BeginImage, |
+ PDFOP_BeginMarkedContent, |
+ PDFOP_BeginText, |
+ PDFOP_BeginSectionUndefined, |
+ PDFOP_CurveTo_123, |
+ PDFOP_ConcatMatrix, |
+ PDFOP_SetColorSpace_Fill, |
+ PDFOP_SetColorSpace_Stroke, |
+ PDFOP_SetDash, |
+ PDFOP_SetCharWidth, |
+ PDFOP_SetCachedDevice, |
+ PDFOP_ExecuteXObject, |
+ PDFOP_MarkPlace_Dictionary, |
+ PDFOP_EndImage, |
+ PDFOP_EndMarkedContent, |
+ PDFOP_EndText, |
+ PDFOP_EndSectionUndefined, |
+ PDFOP_FillPath, |
+ PDFOP_FillPathOld, |
+ PDFOP_EOFillPath, |
+ PDFOP_SetGray_Fill, |
+ PDFOP_SetGray_Stroke, |
+ PDFOP_SetExtendGraphState, |
+ PDFOP_ClosePath, |
+ PDFOP_SetFlat, |
+ PDFOP_BeginImageData, |
+ PDFOP_SetLineJoin, |
+ PDFOP_SetLineCap, |
+ PDFOP_SetCMYKColor_Fill, |
+ PDFOP_SetCMYKColor_Stroke, |
+ PDFOP_LineTo, |
+ PDFOP_MoveTo, |
+ PDFOP_SetMiterLimit, |
+ PDFOP_MarkPlace, |
+ PDFOP_EndPath, |
+ PDFOP_SaveGraphState, |
+ PDFOP_RestoreGraphState, |
+ PDFOP_Rectangle, |
+ PDFOP_SetRGBColor_Fill, |
+ PDFOP_SetRGBColor_Stroke, |
+ PDFOP_SetRenderIntent, |
+ PDFOP_CloseStrokePath, |
+ PDFOP_StrokePath, |
+ PDFOP_SetColor_Fill, |
+ PDFOP_SetColor_Stroke, |
+ PDFOP_SetColorPS_Fill, |
+ PDFOP_SetColorPS_Stroke, |
+ PDFOP_ShadeFill, |
+ PDFOP_SetCharSpace, |
+ PDFOP_MoveTextPoint, |
+ PDFOP_MoveTextPoint_SetLeading, |
+ PDFOP_SetFont, |
+ PDFOP_ShowText, |
+ PDFOP_ShowText_Positioning, |
+ PDFOP_SetTextLeading, |
+ PDFOP_SetTextMatrix, |
+ PDFOP_SetTextRenderMode, |
+ PDFOP_SetTextRise, |
+ PDFOP_SetWordSpace, |
+ PDFOP_SetHorzScale, |
+ PDFOP_MoveToNextLine, |
+ PDFOP_CurveTo_23, |
+ PDFOP_SetLineWidth, |
+ PDFOP_Clip, |
+ PDFOP_EOClip, |
+ PDFOP_CurveTo_13, |
+ PDFOP_NextLineShowText, |
+ PDFOP_NextLineShowText_Space, |
+ PDFOP_Invalid |
} PDFOP; |
-#define PARAM_BUF_SIZE 16 |
+#define PARAM_BUF_SIZE 16 |
typedef struct { |
- int m_Type; |
- union { |
- struct { |
- FX_BOOL m_bInteger; |
- union { |
- int m_Integer; |
- FX_FLOAT m_Float; |
- }; |
- } m_Number; |
- CPDF_Object* m_pObject; |
- struct { |
- int m_Len; |
- char m_Buffer[32]; |
- } m_Name; |
- }; |
+ int m_Type; |
+ union { |
+ struct { |
+ FX_BOOL m_bInteger; |
+ union { |
+ int m_Integer; |
+ FX_FLOAT m_Float; |
+ }; |
+ } m_Number; |
+ CPDF_Object* m_pObject; |
+ struct { |
+ int m_Len; |
+ char m_Buffer[32]; |
+ } m_Name; |
+ }; |
} _ContentParam; |
-#define _FPDF_MAX_FORM_LEVEL_ 30 |
-#define _FPDF_MAX_TYPE3_FORM_LEVEL_ 4 |
+#define _FPDF_MAX_FORM_LEVEL_ 30 |
+#define _FPDF_MAX_TYPE3_FORM_LEVEL_ 4 |
#define _FPDF_MAX_OBJECT_STACK_SIZE_ 512 |
-class CPDF_StreamContentParser |
-{ |
-public: |
- CPDF_StreamContentParser( |
- CPDF_Document* pDoc, |
- CPDF_Dictionary* pPageResources, |
- CPDF_Dictionary* pParentResources, |
- CFX_AffineMatrix* pmtContentToUser, |
- CPDF_PageObjects* pObjList, |
- CPDF_Dictionary* pResources, |
- CFX_FloatRect* pBBox, |
- CPDF_ParseOptions* pOptions, |
- CPDF_AllStates* pAllStates, |
- int level); |
- ~CPDF_StreamContentParser(); |
- |
- FX_BOOL ShouldAbort() const { return m_bAbort; } |
- CPDF_PageObjects* GetObjectList() const { return m_pObjectList; } |
- CPDF_AllStates* GetCurStates() const { return m_pCurStates.get(); } |
- FX_BOOL IsColored() const { return m_bColored; } |
- const FX_FLOAT* GetType3Data() const { return m_Type3Data; } |
- |
- void AddNumberParam(const FX_CHAR* str, int len); |
- void AddObjectParam(CPDF_Object* pObj); |
- void AddNameParam(const FX_CHAR* name, int size); |
- int GetNextParamPos(); |
- void ClearAllParams(); |
- CPDF_Object* GetObject(FX_DWORD index); |
- CFX_ByteString GetString(FX_DWORD index); |
- FX_FLOAT GetNumber(FX_DWORD index); |
- FX_FLOAT GetNumber16(FX_DWORD index); |
- int GetInteger(FX_DWORD index) |
- { |
- return (int32_t)(GetNumber(index)); |
- } |
- FX_BOOL OnOperator(const FX_CHAR* op); |
- void BigCaseCaller(int index); |
- FX_DWORD GetParsePos() |
- { |
- return m_pSyntax->GetPos(); |
- } |
- void AddTextObject(CFX_ByteString* pText, FX_FLOAT fInitKerning, FX_FLOAT* pKerning, int count); |
- |
- void ConvertUserSpace(FX_FLOAT& x, FX_FLOAT& y); |
- void ConvertTextSpace(FX_FLOAT& x, FX_FLOAT& y); |
- void OnChangeTextMatrix(); |
- FX_DWORD Parse(const uint8_t* pData, FX_DWORD dwSize, FX_DWORD max_cost); |
- void ParsePathObject(); |
- void AddPathPoint(FX_FLOAT x, FX_FLOAT y, int flag); |
- void AddPathRect(FX_FLOAT x, FX_FLOAT y, FX_FLOAT w, FX_FLOAT h); |
- void AddPathObject(int FillType, FX_BOOL bStroke); |
- CPDF_ImageObject* AddImage(CPDF_Stream* pStream, CPDF_Image* pImage, FX_BOOL bInline); |
- void AddDuplicateImage(); |
- void AddForm(CPDF_Stream*); |
- void SetGraphicStates(CPDF_PageObject* pObj, FX_BOOL bColor, FX_BOOL bText, FX_BOOL bGraph); |
- void SaveStates(CPDF_AllStates*); |
- void RestoreStates(CPDF_AllStates*); |
- CPDF_Font* FindFont(const CFX_ByteString& name); |
- CPDF_ColorSpace* FindColorSpace(const CFX_ByteString& name); |
- CPDF_Pattern* FindPattern(const CFX_ByteString& name, FX_BOOL bShading); |
- CPDF_Object* FindResourceObj(const CFX_ByteStringC& type, const CFX_ByteString& name); |
- |
-protected: |
- struct OpCode { |
- FX_DWORD m_OpId; |
- void (CPDF_StreamContentParser::*m_OpHandler)(); |
- }; |
- static const OpCode g_OpCodes[]; |
- |
- void Handle_CloseFillStrokePath(); |
- void Handle_FillStrokePath(); |
- void Handle_CloseEOFillStrokePath(); |
- void Handle_EOFillStrokePath(); |
- void Handle_BeginMarkedContent_Dictionary(); |
- void Handle_BeginImage(); |
- void Handle_BeginMarkedContent(); |
- void Handle_BeginText(); |
- void Handle_BeginSectionUndefined(); |
- void Handle_CurveTo_123(); |
- void Handle_ConcatMatrix(); |
- void Handle_SetColorSpace_Fill(); |
- void Handle_SetColorSpace_Stroke(); |
- void Handle_SetDash(); |
- void Handle_SetCharWidth(); |
- void Handle_SetCachedDevice(); |
- void Handle_ExecuteXObject(); |
- void Handle_MarkPlace_Dictionary(); |
- void Handle_EndImage(); |
- void Handle_EndMarkedContent(); |
- void Handle_EndText(); |
- void Handle_EndSectionUndefined(); |
- void Handle_FillPath(); |
- void Handle_FillPathOld(); |
- void Handle_EOFillPath(); |
- void Handle_SetGray_Fill(); |
- void Handle_SetGray_Stroke(); |
- void Handle_SetExtendGraphState(); |
- void Handle_ClosePath(); |
- void Handle_SetFlat(); |
- void Handle_BeginImageData(); |
- void Handle_SetLineJoin(); |
- void Handle_SetLineCap(); |
- void Handle_SetCMYKColor_Fill(); |
- void Handle_SetCMYKColor_Stroke(); |
- void Handle_LineTo(); |
- void Handle_MoveTo(); |
- void Handle_SetMiterLimit(); |
- void Handle_MarkPlace(); |
- void Handle_EndPath(); |
- void Handle_SaveGraphState(); |
- void Handle_RestoreGraphState(); |
- void Handle_Rectangle(); |
- void Handle_SetRGBColor_Fill(); |
- void Handle_SetRGBColor_Stroke(); |
- void Handle_SetRenderIntent(); |
- void Handle_CloseStrokePath(); |
- void Handle_StrokePath(); |
- void Handle_SetColor_Fill(); |
- void Handle_SetColor_Stroke(); |
- void Handle_SetColorPS_Fill(); |
- void Handle_SetColorPS_Stroke(); |
- void Handle_ShadeFill(); |
- void Handle_SetCharSpace(); |
- void Handle_MoveTextPoint(); |
- void Handle_MoveTextPoint_SetLeading(); |
- void Handle_SetFont(); |
- void Handle_ShowText(); |
- void Handle_ShowText_Positioning(); |
- void Handle_SetTextLeading(); |
- void Handle_SetTextMatrix(); |
- void Handle_SetTextRenderMode(); |
- void Handle_SetTextRise(); |
- void Handle_SetWordSpace(); |
- void Handle_SetHorzScale(); |
- void Handle_MoveToNextLine(); |
- void Handle_CurveTo_23(); |
- void Handle_SetLineWidth(); |
- void Handle_Clip(); |
- void Handle_EOClip(); |
- void Handle_CurveTo_13(); |
- void Handle_NextLineShowText(); |
- void Handle_NextLineShowText_Space(); |
- void Handle_Invalid(); |
- |
- CPDF_Document* const m_pDocument; |
- CPDF_Dictionary* m_pPageResources; |
- CPDF_Dictionary* m_pParentResources; |
- CPDF_Dictionary* m_pResources; |
- CPDF_PageObjects* m_pObjectList; |
- int m_Level; |
- CFX_AffineMatrix m_mtContentToUser; |
- CFX_FloatRect m_BBox; |
- CPDF_ParseOptions m_Options; |
- _ContentParam m_ParamBuf1[PARAM_BUF_SIZE]; |
- FX_DWORD m_ParamStartPos; |
- FX_DWORD m_ParamCount; |
- FX_BOOL m_bAbort; |
- CPDF_StreamParser* m_pSyntax; |
- nonstd::unique_ptr<CPDF_AllStates> m_pCurStates; |
- CPDF_ContentMark m_CurContentMark; |
- CFX_PtrArray m_ClipTextList; |
- CPDF_TextObject* m_pLastTextObject; |
- FX_FLOAT m_DefFontSize; |
- int m_CompatCount; |
- FX_PATHPOINT* m_pPathPoints; |
- int m_PathPointCount; |
- int m_PathAllocSize; |
- FX_FLOAT m_PathStartX; |
- FX_FLOAT m_PathStartY; |
- FX_FLOAT m_PathCurrentX; |
- FX_FLOAT m_PathCurrentY; |
- int m_PathClipType; |
- CFX_ByteString m_LastImageName; |
- CPDF_Image* m_pLastImage; |
- CFX_BinaryBuf m_LastImageDict; |
- CFX_BinaryBuf m_LastImageData; |
- CPDF_Dictionary* m_pLastImageDict; |
- CPDF_Dictionary* m_pLastCloneImageDict; |
- FX_BOOL m_bReleaseLastDict; |
- FX_BOOL m_bSameLastDict; |
- FX_BOOL m_bColored; |
- FX_FLOAT m_Type3Data[6]; |
- FX_BOOL m_bResourceMissing; |
- CFX_PtrArray m_StateStack; |
+class CPDF_StreamContentParser { |
+ public: |
+ CPDF_StreamContentParser(CPDF_Document* pDoc, |
+ CPDF_Dictionary* pPageResources, |
+ CPDF_Dictionary* pParentResources, |
+ CFX_AffineMatrix* pmtContentToUser, |
+ CPDF_PageObjects* pObjList, |
+ CPDF_Dictionary* pResources, |
+ CFX_FloatRect* pBBox, |
+ CPDF_ParseOptions* pOptions, |
+ CPDF_AllStates* pAllStates, |
+ int level); |
+ ~CPDF_StreamContentParser(); |
+ |
+ FX_BOOL ShouldAbort() const { return m_bAbort; } |
+ CPDF_PageObjects* GetObjectList() const { return m_pObjectList; } |
+ CPDF_AllStates* GetCurStates() const { return m_pCurStates.get(); } |
+ FX_BOOL IsColored() const { return m_bColored; } |
+ const FX_FLOAT* GetType3Data() const { return m_Type3Data; } |
+ |
+ void AddNumberParam(const FX_CHAR* str, int len); |
+ void AddObjectParam(CPDF_Object* pObj); |
+ void AddNameParam(const FX_CHAR* name, int size); |
+ int GetNextParamPos(); |
+ void ClearAllParams(); |
+ CPDF_Object* GetObject(FX_DWORD index); |
+ CFX_ByteString GetString(FX_DWORD index); |
+ FX_FLOAT GetNumber(FX_DWORD index); |
+ FX_FLOAT GetNumber16(FX_DWORD index); |
+ int GetInteger(FX_DWORD index) { return (int32_t)(GetNumber(index)); } |
+ FX_BOOL OnOperator(const FX_CHAR* op); |
+ void BigCaseCaller(int index); |
+ FX_DWORD GetParsePos() { return m_pSyntax->GetPos(); } |
+ void AddTextObject(CFX_ByteString* pText, |
+ FX_FLOAT fInitKerning, |
+ FX_FLOAT* pKerning, |
+ int count); |
+ |
+ void ConvertUserSpace(FX_FLOAT& x, FX_FLOAT& y); |
+ void ConvertTextSpace(FX_FLOAT& x, FX_FLOAT& y); |
+ void OnChangeTextMatrix(); |
+ FX_DWORD Parse(const uint8_t* pData, FX_DWORD dwSize, FX_DWORD max_cost); |
+ void ParsePathObject(); |
+ void AddPathPoint(FX_FLOAT x, FX_FLOAT y, int flag); |
+ void AddPathRect(FX_FLOAT x, FX_FLOAT y, FX_FLOAT w, FX_FLOAT h); |
+ void AddPathObject(int FillType, FX_BOOL bStroke); |
+ CPDF_ImageObject* AddImage(CPDF_Stream* pStream, |
+ CPDF_Image* pImage, |
+ FX_BOOL bInline); |
+ void AddDuplicateImage(); |
+ void AddForm(CPDF_Stream*); |
+ void SetGraphicStates(CPDF_PageObject* pObj, |
+ FX_BOOL bColor, |
+ FX_BOOL bText, |
+ FX_BOOL bGraph); |
+ void SaveStates(CPDF_AllStates*); |
+ void RestoreStates(CPDF_AllStates*); |
+ CPDF_Font* FindFont(const CFX_ByteString& name); |
+ CPDF_ColorSpace* FindColorSpace(const CFX_ByteString& name); |
+ CPDF_Pattern* FindPattern(const CFX_ByteString& name, FX_BOOL bShading); |
+ CPDF_Object* FindResourceObj(const CFX_ByteStringC& type, |
+ const CFX_ByteString& name); |
+ |
+ protected: |
+ struct OpCode { |
+ FX_DWORD m_OpId; |
+ void (CPDF_StreamContentParser::*m_OpHandler)(); |
+ }; |
+ static const OpCode g_OpCodes[]; |
+ |
+ void Handle_CloseFillStrokePath(); |
+ void Handle_FillStrokePath(); |
+ void Handle_CloseEOFillStrokePath(); |
+ void Handle_EOFillStrokePath(); |
+ void Handle_BeginMarkedContent_Dictionary(); |
+ void Handle_BeginImage(); |
+ void Handle_BeginMarkedContent(); |
+ void Handle_BeginText(); |
+ void Handle_BeginSectionUndefined(); |
+ void Handle_CurveTo_123(); |
+ void Handle_ConcatMatrix(); |
+ void Handle_SetColorSpace_Fill(); |
+ void Handle_SetColorSpace_Stroke(); |
+ void Handle_SetDash(); |
+ void Handle_SetCharWidth(); |
+ void Handle_SetCachedDevice(); |
+ void Handle_ExecuteXObject(); |
+ void Handle_MarkPlace_Dictionary(); |
+ void Handle_EndImage(); |
+ void Handle_EndMarkedContent(); |
+ void Handle_EndText(); |
+ void Handle_EndSectionUndefined(); |
+ void Handle_FillPath(); |
+ void Handle_FillPathOld(); |
+ void Handle_EOFillPath(); |
+ void Handle_SetGray_Fill(); |
+ void Handle_SetGray_Stroke(); |
+ void Handle_SetExtendGraphState(); |
+ void Handle_ClosePath(); |
+ void Handle_SetFlat(); |
+ void Handle_BeginImageData(); |
+ void Handle_SetLineJoin(); |
+ void Handle_SetLineCap(); |
+ void Handle_SetCMYKColor_Fill(); |
+ void Handle_SetCMYKColor_Stroke(); |
+ void Handle_LineTo(); |
+ void Handle_MoveTo(); |
+ void Handle_SetMiterLimit(); |
+ void Handle_MarkPlace(); |
+ void Handle_EndPath(); |
+ void Handle_SaveGraphState(); |
+ void Handle_RestoreGraphState(); |
+ void Handle_Rectangle(); |
+ void Handle_SetRGBColor_Fill(); |
+ void Handle_SetRGBColor_Stroke(); |
+ void Handle_SetRenderIntent(); |
+ void Handle_CloseStrokePath(); |
+ void Handle_StrokePath(); |
+ void Handle_SetColor_Fill(); |
+ void Handle_SetColor_Stroke(); |
+ void Handle_SetColorPS_Fill(); |
+ void Handle_SetColorPS_Stroke(); |
+ void Handle_ShadeFill(); |
+ void Handle_SetCharSpace(); |
+ void Handle_MoveTextPoint(); |
+ void Handle_MoveTextPoint_SetLeading(); |
+ void Handle_SetFont(); |
+ void Handle_ShowText(); |
+ void Handle_ShowText_Positioning(); |
+ void Handle_SetTextLeading(); |
+ void Handle_SetTextMatrix(); |
+ void Handle_SetTextRenderMode(); |
+ void Handle_SetTextRise(); |
+ void Handle_SetWordSpace(); |
+ void Handle_SetHorzScale(); |
+ void Handle_MoveToNextLine(); |
+ void Handle_CurveTo_23(); |
+ void Handle_SetLineWidth(); |
+ void Handle_Clip(); |
+ void Handle_EOClip(); |
+ void Handle_CurveTo_13(); |
+ void Handle_NextLineShowText(); |
+ void Handle_NextLineShowText_Space(); |
+ void Handle_Invalid(); |
+ |
+ CPDF_Document* const m_pDocument; |
+ CPDF_Dictionary* m_pPageResources; |
+ CPDF_Dictionary* m_pParentResources; |
+ CPDF_Dictionary* m_pResources; |
+ CPDF_PageObjects* m_pObjectList; |
+ int m_Level; |
+ CFX_AffineMatrix m_mtContentToUser; |
+ CFX_FloatRect m_BBox; |
+ CPDF_ParseOptions m_Options; |
+ _ContentParam m_ParamBuf1[PARAM_BUF_SIZE]; |
+ FX_DWORD m_ParamStartPos; |
+ FX_DWORD m_ParamCount; |
+ FX_BOOL m_bAbort; |
+ CPDF_StreamParser* m_pSyntax; |
+ nonstd::unique_ptr<CPDF_AllStates> m_pCurStates; |
+ CPDF_ContentMark m_CurContentMark; |
+ CFX_PtrArray m_ClipTextList; |
+ CPDF_TextObject* m_pLastTextObject; |
+ FX_FLOAT m_DefFontSize; |
+ int m_CompatCount; |
+ FX_PATHPOINT* m_pPathPoints; |
+ int m_PathPointCount; |
+ int m_PathAllocSize; |
+ FX_FLOAT m_PathStartX; |
+ FX_FLOAT m_PathStartY; |
+ FX_FLOAT m_PathCurrentX; |
+ FX_FLOAT m_PathCurrentY; |
+ int m_PathClipType; |
+ CFX_ByteString m_LastImageName; |
+ CPDF_Image* m_pLastImage; |
+ CFX_BinaryBuf m_LastImageDict; |
+ CFX_BinaryBuf m_LastImageData; |
+ CPDF_Dictionary* m_pLastImageDict; |
+ CPDF_Dictionary* m_pLastCloneImageDict; |
+ FX_BOOL m_bReleaseLastDict; |
+ FX_BOOL m_bSameLastDict; |
+ FX_BOOL m_bColored; |
+ FX_FLOAT m_Type3Data[6]; |
+ FX_BOOL m_bResourceMissing; |
+ CFX_PtrArray m_StateStack; |
}; |
-class CPDF_ContentParser |
-{ |
-public: |
- enum ParseStatus { |
- Ready, |
- ToBeContinued, |
- Done |
- }; |
- |
- CPDF_ContentParser(); |
- ~CPDF_ContentParser(); |
- |
- ParseStatus GetStatus() |
- { |
- return m_Status; |
- } |
- void Start(CPDF_Page* pPage, CPDF_ParseOptions* pOptions); |
- void Start(CPDF_Form* pForm, CPDF_AllStates* pGraphicStates, CFX_AffineMatrix* pParentMatrix, |
- CPDF_Type3Char* pType3Char, CPDF_ParseOptions* pOptions, int level); |
- void Continue(IFX_Pause* pPause); |
- |
-protected: |
- void Clear(); |
- ParseStatus m_Status; |
- CPDF_PageObjects* m_pObjects; |
- FX_BOOL m_bForm; |
- CPDF_ParseOptions m_Options; |
- CPDF_Type3Char* m_pType3Char; |
- int m_InternalStage; |
- CPDF_StreamAcc* m_pSingleStream; |
- CPDF_StreamAcc** m_pStreamArray; |
- FX_DWORD m_nStreams; |
- uint8_t* m_pData; |
- FX_DWORD m_Size; |
- class CPDF_StreamContentParser* m_pParser; |
- FX_DWORD m_CurrentOffset; |
- CPDF_StreamFilter* m_pStreamFilter; |
+class CPDF_ContentParser { |
+ public: |
+ enum ParseStatus { Ready, ToBeContinued, Done }; |
+ |
+ CPDF_ContentParser(); |
+ ~CPDF_ContentParser(); |
+ |
+ ParseStatus GetStatus() { return m_Status; } |
+ void Start(CPDF_Page* pPage, CPDF_ParseOptions* pOptions); |
+ void Start(CPDF_Form* pForm, |
+ CPDF_AllStates* pGraphicStates, |
+ CFX_AffineMatrix* pParentMatrix, |
+ CPDF_Type3Char* pType3Char, |
+ CPDF_ParseOptions* pOptions, |
+ int level); |
+ void Continue(IFX_Pause* pPause); |
+ |
+ protected: |
+ void Clear(); |
+ ParseStatus m_Status; |
+ CPDF_PageObjects* m_pObjects; |
+ FX_BOOL m_bForm; |
+ CPDF_ParseOptions m_Options; |
+ CPDF_Type3Char* m_pType3Char; |
+ int m_InternalStage; |
+ CPDF_StreamAcc* m_pSingleStream; |
+ CPDF_StreamAcc** m_pStreamArray; |
+ FX_DWORD m_nStreams; |
+ uint8_t* m_pData; |
+ FX_DWORD m_Size; |
+ class CPDF_StreamContentParser* m_pParser; |
+ FX_DWORD m_CurrentOffset; |
+ CPDF_StreamFilter* m_pStreamFilter; |
}; |
-class CPDF_AllStates : public CPDF_GraphicStates |
-{ |
-public: |
- CPDF_AllStates(); |
- ~CPDF_AllStates(); |
- void Copy(const CPDF_AllStates& src); |
- void ProcessExtGS(CPDF_Dictionary* pGS, CPDF_StreamContentParser* pParser); |
- void SetLineDash(CPDF_Array*, FX_FLOAT, FX_FLOAT scale); |
- CFX_AffineMatrix m_TextMatrix, m_CTM, m_ParentMatrix; |
- FX_FLOAT m_TextX, m_TextY, m_TextLineX, m_TextLineY; |
- FX_FLOAT m_TextLeading, m_TextRise, m_TextHorzScale; |
+class CPDF_AllStates : public CPDF_GraphicStates { |
+ public: |
+ CPDF_AllStates(); |
+ ~CPDF_AllStates(); |
+ void Copy(const CPDF_AllStates& src); |
+ void ProcessExtGS(CPDF_Dictionary* pGS, CPDF_StreamContentParser* pParser); |
+ void SetLineDash(CPDF_Array*, FX_FLOAT, FX_FLOAT scale); |
+ CFX_AffineMatrix m_TextMatrix, m_CTM, m_ParentMatrix; |
+ FX_FLOAT m_TextX, m_TextY, m_TextLineX, m_TextLineY; |
+ FX_FLOAT m_TextLeading, m_TextRise, m_TextHorzScale; |
}; |
-class CPDF_DocPageData |
-{ |
- public: |
- explicit CPDF_DocPageData(CPDF_Document *pPDFDoc); |
- ~CPDF_DocPageData(); |
- |
- void Clear(FX_BOOL bRelease = FALSE); |
- CPDF_Font* GetFont(CPDF_Dictionary* pFontDict, FX_BOOL findOnly); |
- CPDF_Font* GetStandardFont(const CFX_ByteStringC& fontName, CPDF_FontEncoding* pEncoding); |
- void ReleaseFont(CPDF_Dictionary* pFontDict); |
- CPDF_ColorSpace* GetColorSpace(CPDF_Object* pCSObj, CPDF_Dictionary* pResources); |
- CPDF_ColorSpace* GetCopiedColorSpace(CPDF_Object* pCSObj); |
- void ReleaseColorSpace(CPDF_Object* pColorSpace); |
- CPDF_Pattern* GetPattern(CPDF_Object* pPatternObj, FX_BOOL bShading, const CFX_AffineMatrix* matrix); |
- void ReleasePattern(CPDF_Object* pPatternObj); |
- CPDF_Image* GetImage(CPDF_Object* pImageStream); |
- void ReleaseImage(CPDF_Object* pImageStream); |
- CPDF_IccProfile* GetIccProfile(CPDF_Stream* pIccProfileStream); |
- void ReleaseIccProfile(CPDF_IccProfile* pIccProfile); |
- CPDF_StreamAcc* GetFontFileStreamAcc(CPDF_Stream* pFontStream); |
- void ReleaseFontFileStreamAcc(CPDF_Stream* pFontStream, FX_BOOL bForce = FALSE); |
- FX_BOOL IsForceClear() const {return m_bForceClear;} |
- CPDF_CountedColorSpace* FindColorSpacePtr(CPDF_Object* pCSObj) const; |
- CPDF_CountedPattern* FindPatternPtr(CPDF_Object* pPatternObj) const; |
- |
- private: |
- using CPDF_CountedFont = CPDF_CountedObject<CPDF_Font>; |
- using CPDF_CountedIccProfile = CPDF_CountedObject<CPDF_IccProfile>; |
- using CPDF_CountedImage = CPDF_CountedObject<CPDF_Image>; |
- using CPDF_CountedStreamAcc = CPDF_CountedObject<CPDF_StreamAcc>; |
- |
- using CPDF_ColorSpaceMap = std::map<CPDF_Object*, CPDF_CountedColorSpace*>; |
- using CPDF_FontFileMap = std::map<CPDF_Stream*, CPDF_CountedStreamAcc*>; |
- using CPDF_FontMap = std::map<CPDF_Dictionary*, CPDF_CountedFont*>; |
- using CPDF_IccProfileMap = std::map<CPDF_Stream*, CPDF_CountedIccProfile*>; |
- using CPDF_ImageMap = std::map<FX_DWORD, CPDF_CountedImage*>; |
- using CPDF_PatternMap = std::map<CPDF_Object*, CPDF_CountedPattern*>; |
- |
- CPDF_Document* const m_pPDFDoc; |
- CFX_MapByteStringToPtr m_HashProfileMap; |
- FX_BOOL m_bForceClear; |
- |
- CPDF_ColorSpaceMap m_ColorSpaceMap; |
- CPDF_FontFileMap m_FontFileMap; |
- CPDF_FontMap m_FontMap; |
- CPDF_IccProfileMap m_IccProfileMap; |
- CPDF_ImageMap m_ImageMap; |
- CPDF_PatternMap m_PatternMap; |
+class CPDF_DocPageData { |
+ public: |
+ explicit CPDF_DocPageData(CPDF_Document* pPDFDoc); |
+ ~CPDF_DocPageData(); |
+ |
+ void Clear(FX_BOOL bRelease = FALSE); |
+ CPDF_Font* GetFont(CPDF_Dictionary* pFontDict, FX_BOOL findOnly); |
+ CPDF_Font* GetStandardFont(const CFX_ByteStringC& fontName, |
+ CPDF_FontEncoding* pEncoding); |
+ void ReleaseFont(CPDF_Dictionary* pFontDict); |
+ CPDF_ColorSpace* GetColorSpace(CPDF_Object* pCSObj, |
+ CPDF_Dictionary* pResources); |
+ CPDF_ColorSpace* GetCopiedColorSpace(CPDF_Object* pCSObj); |
+ void ReleaseColorSpace(CPDF_Object* pColorSpace); |
+ CPDF_Pattern* GetPattern(CPDF_Object* pPatternObj, |
+ FX_BOOL bShading, |
+ const CFX_AffineMatrix* matrix); |
+ void ReleasePattern(CPDF_Object* pPatternObj); |
+ CPDF_Image* GetImage(CPDF_Object* pImageStream); |
+ void ReleaseImage(CPDF_Object* pImageStream); |
+ CPDF_IccProfile* GetIccProfile(CPDF_Stream* pIccProfileStream); |
+ void ReleaseIccProfile(CPDF_IccProfile* pIccProfile); |
+ CPDF_StreamAcc* GetFontFileStreamAcc(CPDF_Stream* pFontStream); |
+ void ReleaseFontFileStreamAcc(CPDF_Stream* pFontStream, |
+ FX_BOOL bForce = FALSE); |
+ FX_BOOL IsForceClear() const { return m_bForceClear; } |
+ CPDF_CountedColorSpace* FindColorSpacePtr(CPDF_Object* pCSObj) const; |
+ CPDF_CountedPattern* FindPatternPtr(CPDF_Object* pPatternObj) const; |
+ |
+ private: |
+ using CPDF_CountedFont = CPDF_CountedObject<CPDF_Font>; |
+ using CPDF_CountedIccProfile = CPDF_CountedObject<CPDF_IccProfile>; |
+ using CPDF_CountedImage = CPDF_CountedObject<CPDF_Image>; |
+ using CPDF_CountedStreamAcc = CPDF_CountedObject<CPDF_StreamAcc>; |
+ |
+ using CPDF_ColorSpaceMap = std::map<CPDF_Object*, CPDF_CountedColorSpace*>; |
+ using CPDF_FontFileMap = std::map<CPDF_Stream*, CPDF_CountedStreamAcc*>; |
+ using CPDF_FontMap = std::map<CPDF_Dictionary*, CPDF_CountedFont*>; |
+ using CPDF_IccProfileMap = std::map<CPDF_Stream*, CPDF_CountedIccProfile*>; |
+ using CPDF_ImageMap = std::map<FX_DWORD, CPDF_CountedImage*>; |
+ using CPDF_PatternMap = std::map<CPDF_Object*, CPDF_CountedPattern*>; |
+ |
+ CPDF_Document* const m_pPDFDoc; |
+ CFX_MapByteStringToPtr m_HashProfileMap; |
+ FX_BOOL m_bForceClear; |
+ |
+ CPDF_ColorSpaceMap m_ColorSpaceMap; |
+ CPDF_FontFileMap m_FontFileMap; |
+ CPDF_FontMap m_FontMap; |
+ CPDF_IccProfileMap m_IccProfileMap; |
+ CPDF_ImageMap m_ImageMap; |
+ CPDF_PatternMap m_PatternMap; |
}; |
-class CPDF_Function |
-{ |
-public: |
- static CPDF_Function* Load(CPDF_Object* pFuncObj); |
- virtual ~CPDF_Function(); |
- FX_BOOL Call(FX_FLOAT* inputs, int ninputs, FX_FLOAT* results, int& nresults) const; |
- int CountInputs() |
- { |
- return m_nInputs; |
- } |
- int CountOutputs() |
- { |
- return m_nOutputs; |
- } |
-protected: |
- CPDF_Function(); |
- int m_nInputs, m_nOutputs; |
- FX_FLOAT* m_pDomains; |
- FX_FLOAT* m_pRanges; |
- FX_BOOL Init(CPDF_Object* pObj); |
- virtual FX_BOOL v_Init(CPDF_Object* pObj) = 0; |
- virtual FX_BOOL v_Call(FX_FLOAT* inputs, FX_FLOAT* results) const = 0; |
+class CPDF_Function { |
+ public: |
+ static CPDF_Function* Load(CPDF_Object* pFuncObj); |
+ virtual ~CPDF_Function(); |
+ FX_BOOL Call(FX_FLOAT* inputs, |
+ int ninputs, |
+ FX_FLOAT* results, |
+ int& nresults) const; |
+ int CountInputs() { return m_nInputs; } |
+ int CountOutputs() { return m_nOutputs; } |
+ |
+ protected: |
+ CPDF_Function(); |
+ int m_nInputs, m_nOutputs; |
+ FX_FLOAT* m_pDomains; |
+ FX_FLOAT* m_pRanges; |
+ FX_BOOL Init(CPDF_Object* pObj); |
+ virtual FX_BOOL v_Init(CPDF_Object* pObj) = 0; |
+ virtual FX_BOOL v_Call(FX_FLOAT* inputs, FX_FLOAT* results) const = 0; |
}; |
-class CPDF_IccProfile |
-{ |
-public: |
- CPDF_IccProfile(const uint8_t* pData, FX_DWORD dwSize); |
- ~CPDF_IccProfile(); |
- int32_t GetComponents() const { return m_nSrcComponents; } |
- FX_BOOL m_bsRGB; |
- void* m_pTransform; |
-private: |
- int32_t m_nSrcComponents; |
+class CPDF_IccProfile { |
+ public: |
+ CPDF_IccProfile(const uint8_t* pData, FX_DWORD dwSize); |
+ ~CPDF_IccProfile(); |
+ int32_t GetComponents() const { return m_nSrcComponents; } |
+ FX_BOOL m_bsRGB; |
+ void* m_pTransform; |
+ |
+ private: |
+ int32_t m_nSrcComponents; |
}; |
-class CPDF_DeviceCS : public CPDF_ColorSpace |
-{ |
-public: |
- CPDF_DeviceCS(CPDF_Document* pDoc, int family); |
- |
- FX_BOOL GetRGB(FX_FLOAT* pBuf, |
- FX_FLOAT& R, |
- FX_FLOAT& G, |
- FX_FLOAT& B) const override; |
- FX_BOOL SetRGB(FX_FLOAT* pBuf, |
- FX_FLOAT R, |
- FX_FLOAT G, |
- FX_FLOAT B) const override; |
- FX_BOOL v_GetCMYK(FX_FLOAT* pBuf, |
- FX_FLOAT& c, |
- FX_FLOAT& m, |
- FX_FLOAT& y, |
- FX_FLOAT& k) const override; |
- FX_BOOL v_SetCMYK(FX_FLOAT* pBuf, |
- FX_FLOAT c, |
- FX_FLOAT m, |
- FX_FLOAT y, |
- FX_FLOAT k) const override; |
- void TranslateImageLine(uint8_t* pDestBuf, |
- const uint8_t* pSrcBuf, |
- int pixels, |
- int image_width, |
- int image_height, |
- FX_BOOL bTransMask = FALSE) const override; |
+class CPDF_DeviceCS : public CPDF_ColorSpace { |
+ public: |
+ CPDF_DeviceCS(CPDF_Document* pDoc, int family); |
+ |
+ FX_BOOL GetRGB(FX_FLOAT* pBuf, |
+ FX_FLOAT& R, |
+ FX_FLOAT& G, |
+ FX_FLOAT& B) const override; |
+ FX_BOOL SetRGB(FX_FLOAT* pBuf, |
+ FX_FLOAT R, |
+ FX_FLOAT G, |
+ FX_FLOAT B) const override; |
+ FX_BOOL v_GetCMYK(FX_FLOAT* pBuf, |
+ FX_FLOAT& c, |
+ FX_FLOAT& m, |
+ FX_FLOAT& y, |
+ FX_FLOAT& k) const override; |
+ FX_BOOL v_SetCMYK(FX_FLOAT* pBuf, |
+ FX_FLOAT c, |
+ FX_FLOAT m, |
+ FX_FLOAT y, |
+ FX_FLOAT k) const override; |
+ void TranslateImageLine(uint8_t* pDestBuf, |
+ const uint8_t* pSrcBuf, |
+ int pixels, |
+ int image_width, |
+ int image_height, |
+ FX_BOOL bTransMask = FALSE) const override; |
}; |
-class CPDF_PatternCS : public CPDF_ColorSpace |
-{ |
-public: |
- explicit CPDF_PatternCS(CPDF_Document* pDoc) |
- : CPDF_ColorSpace(pDoc, PDFCS_PATTERN, 1), |
- m_pBaseCS(nullptr), |
- m_pCountedBaseCS(nullptr) { |
- } |
- ~CPDF_PatternCS() override; |
- FX_BOOL v_Load(CPDF_Document* pDoc, CPDF_Array* pArray) override; |
- FX_BOOL GetRGB(FX_FLOAT* pBuf, |
- FX_FLOAT& R, |
- FX_FLOAT& G, |
- FX_FLOAT& B) const override; |
- CPDF_ColorSpace* GetBaseCS() const override; |
- |
-private: |
- CPDF_ColorSpace* m_pBaseCS; |
- CPDF_CountedColorSpace* m_pCountedBaseCS; |
+class CPDF_PatternCS : public CPDF_ColorSpace { |
+ public: |
+ explicit CPDF_PatternCS(CPDF_Document* pDoc) |
+ : CPDF_ColorSpace(pDoc, PDFCS_PATTERN, 1), |
+ m_pBaseCS(nullptr), |
+ m_pCountedBaseCS(nullptr) {} |
+ ~CPDF_PatternCS() override; |
+ FX_BOOL v_Load(CPDF_Document* pDoc, CPDF_Array* pArray) override; |
+ FX_BOOL GetRGB(FX_FLOAT* pBuf, |
+ FX_FLOAT& R, |
+ FX_FLOAT& G, |
+ FX_FLOAT& B) const override; |
+ CPDF_ColorSpace* GetBaseCS() const override; |
+ |
+ private: |
+ CPDF_ColorSpace* m_pBaseCS; |
+ CPDF_CountedColorSpace* m_pCountedBaseCS; |
}; |
#endif // CORE_SRC_FPDFAPI_FPDF_PAGE_PAGEINT_H_ |