| OLD | NEW | 
|---|
| 1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 
| 6 | 6 | 
| 7 #ifndef CORE_SRC_FPDFAPI_FPDF_PAGE_PAGEINT_H_ | 7 #ifndef CORE_SRC_FPDFAPI_FPDF_PAGE_PAGEINT_H_ | 
| 8 #define CORE_SRC_FPDFAPI_FPDF_PAGE_PAGEINT_H_ | 8 #define CORE_SRC_FPDFAPI_FPDF_PAGE_PAGEINT_H_ | 
| 9 | 9 | 
| 10 #include <map> | 10 #include <map> | 
| 11 #include <memory> | 11 #include <memory> | 
| 12 | 12 | 
| 13 #include "core/include/fpdfapi/fpdf_page.h" | 13 #include "core/include/fpdfapi/fpdf_page.h" | 
| 14 #include "core/include/fpdfapi/fpdf_pageobj.h" | 14 #include "core/include/fpdfapi/fpdf_pageobj.h" | 
| 15 | 15 | 
| 16 class CPDF_AllStates; | 16 class CPDF_AllStates; | 
| 17 class CPDF_ParseOptions; | 17 class CPDF_ParseOptions; | 
| 18 | 18 | 
| 19 #define PARSE_STEP_LIMIT 100 | 19 #define PARSE_STEP_LIMIT 100 | 
| 20 | 20 | 
| 21 class CPDF_StreamParser { | 21 class CPDF_StreamParser { | 
| 22  public: | 22  public: | 
|  | 23   enum SyntaxType { EndOfData, Number, Keyword, Name, Others }; | 
|  | 24 | 
| 23   CPDF_StreamParser(const uint8_t* pData, FX_DWORD dwSize); | 25   CPDF_StreamParser(const uint8_t* pData, FX_DWORD dwSize); | 
| 24   ~CPDF_StreamParser(); | 26   ~CPDF_StreamParser(); | 
| 25 | 27 | 
| 26   CPDF_Stream* ReadInlineStream(CPDF_Document* pDoc, | 28   CPDF_Stream* ReadInlineStream(CPDF_Document* pDoc, | 
| 27                                 CPDF_Dictionary* pDict, | 29                                 CPDF_Dictionary* pDict, | 
| 28                                 CPDF_Object* pCSObj, | 30                                 CPDF_Object* pCSObj, | 
| 29                                 FX_BOOL bDecode); | 31                                 FX_BOOL bDecode); | 
| 30   typedef enum { EndOfData, Number, Keyword, Name, Others } SyntaxType; |  | 
| 31 |  | 
| 32   SyntaxType ParseNextElement(); | 32   SyntaxType ParseNextElement(); | 
| 33   uint8_t* GetWordBuf() { return m_WordBuffer; } | 33   uint8_t* GetWordBuf() { return m_WordBuffer; } | 
| 34   FX_DWORD GetWordSize() { return m_WordSize; } | 34   FX_DWORD GetWordSize() const { return m_WordSize; } | 
| 35   CPDF_Object* GetObject() { | 35   CPDF_Object* GetObject() { | 
| 36     CPDF_Object* pObj = m_pLastObj; | 36     CPDF_Object* pObj = m_pLastObj; | 
| 37     m_pLastObj = NULL; | 37     m_pLastObj = NULL; | 
| 38     return pObj; | 38     return pObj; | 
| 39   } | 39   } | 
| 40   FX_DWORD GetPos() { return m_Pos; } | 40   FX_DWORD GetPos() const { return m_Pos; } | 
| 41   void SetPos(FX_DWORD pos) { m_Pos = pos; } | 41   void SetPos(FX_DWORD pos) { m_Pos = pos; } | 
| 42 |  | 
| 43   CPDF_Object* ReadNextObject(FX_BOOL bAllowNestedArray = FALSE, | 42   CPDF_Object* ReadNextObject(FX_BOOL bAllowNestedArray = FALSE, | 
| 44                               FX_BOOL bInArray = FALSE); | 43                               FX_BOOL bInArray = FALSE); | 
| 45   void SkipPathObject(); | 44   void SkipPathObject(); | 
| 46 | 45 | 
| 47  protected: | 46  protected: | 
| 48   friend class fpdf_page_parser_old_ReadHexString_Test; | 47   friend class fpdf_page_parser_old_ReadHexString_Test; | 
| 49 | 48 | 
| 50   void GetNextWord(FX_BOOL& bIsNumber); | 49   void GetNextWord(FX_BOOL& bIsNumber); | 
| 51   CFX_ByteString ReadString(); | 50   CFX_ByteString ReadString(); | 
| 52   CFX_ByteString ReadHexString(); | 51   CFX_ByteString ReadHexString(); | 
| 53   const uint8_t* m_pBuf; | 52   const uint8_t* m_pBuf; | 
| 54 | 53 | 
| 55   // Length in bytes of m_pBuf. | 54   // Length in bytes of m_pBuf. | 
| 56   FX_DWORD m_Size; | 55   FX_DWORD m_Size; | 
| 57 | 56 | 
| 58   // Current byte position within m_pBuf. | 57   // Current byte position within m_pBuf. | 
| 59   FX_DWORD m_Pos; | 58   FX_DWORD m_Pos; | 
| 60 | 59 | 
| 61   uint8_t m_WordBuffer[256]; | 60   uint8_t m_WordBuffer[256]; | 
| 62   FX_DWORD m_WordSize; | 61   FX_DWORD m_WordSize; | 
| 63   CPDF_Object* m_pLastObj; | 62   CPDF_Object* m_pLastObj; | 
| 64 | 63 | 
| 65  private: | 64  private: | 
| 66   bool PositionIsInBounds() const; | 65   bool PositionIsInBounds() const; | 
| 67 }; | 66 }; | 
| 68 typedef enum { | 67 | 
| 69   PDFOP_CloseFillStrokePath = 0, |  | 
| 70   PDFOP_FillStrokePath, |  | 
| 71   PDFOP_CloseEOFillStrokePath, |  | 
| 72   PDFOP_EOFillStrokePath, |  | 
| 73   PDFOP_BeginMarkedContent_Dictionary, |  | 
| 74   PDFOP_BeginImage, |  | 
| 75   PDFOP_BeginMarkedContent, |  | 
| 76   PDFOP_BeginText, |  | 
| 77   PDFOP_BeginSectionUndefined, |  | 
| 78   PDFOP_CurveTo_123, |  | 
| 79   PDFOP_ConcatMatrix, |  | 
| 80   PDFOP_SetColorSpace_Fill, |  | 
| 81   PDFOP_SetColorSpace_Stroke, |  | 
| 82   PDFOP_SetDash, |  | 
| 83   PDFOP_SetCharWidth, |  | 
| 84   PDFOP_SetCachedDevice, |  | 
| 85   PDFOP_ExecuteXObject, |  | 
| 86   PDFOP_MarkPlace_Dictionary, |  | 
| 87   PDFOP_EndImage, |  | 
| 88   PDFOP_EndMarkedContent, |  | 
| 89   PDFOP_EndText, |  | 
| 90   PDFOP_EndSectionUndefined, |  | 
| 91   PDFOP_FillPath, |  | 
| 92   PDFOP_FillPathOld, |  | 
| 93   PDFOP_EOFillPath, |  | 
| 94   PDFOP_SetGray_Fill, |  | 
| 95   PDFOP_SetGray_Stroke, |  | 
| 96   PDFOP_SetExtendGraphState, |  | 
| 97   PDFOP_ClosePath, |  | 
| 98   PDFOP_SetFlat, |  | 
| 99   PDFOP_BeginImageData, |  | 
| 100   PDFOP_SetLineJoin, |  | 
| 101   PDFOP_SetLineCap, |  | 
| 102   PDFOP_SetCMYKColor_Fill, |  | 
| 103   PDFOP_SetCMYKColor_Stroke, |  | 
| 104   PDFOP_LineTo, |  | 
| 105   PDFOP_MoveTo, |  | 
| 106   PDFOP_SetMiterLimit, |  | 
| 107   PDFOP_MarkPlace, |  | 
| 108   PDFOP_EndPath, |  | 
| 109   PDFOP_SaveGraphState, |  | 
| 110   PDFOP_RestoreGraphState, |  | 
| 111   PDFOP_Rectangle, |  | 
| 112   PDFOP_SetRGBColor_Fill, |  | 
| 113   PDFOP_SetRGBColor_Stroke, |  | 
| 114   PDFOP_SetRenderIntent, |  | 
| 115   PDFOP_CloseStrokePath, |  | 
| 116   PDFOP_StrokePath, |  | 
| 117   PDFOP_SetColor_Fill, |  | 
| 118   PDFOP_SetColor_Stroke, |  | 
| 119   PDFOP_SetColorPS_Fill, |  | 
| 120   PDFOP_SetColorPS_Stroke, |  | 
| 121   PDFOP_ShadeFill, |  | 
| 122   PDFOP_SetCharSpace, |  | 
| 123   PDFOP_MoveTextPoint, |  | 
| 124   PDFOP_MoveTextPoint_SetLeading, |  | 
| 125   PDFOP_SetFont, |  | 
| 126   PDFOP_ShowText, |  | 
| 127   PDFOP_ShowText_Positioning, |  | 
| 128   PDFOP_SetTextLeading, |  | 
| 129   PDFOP_SetTextMatrix, |  | 
| 130   PDFOP_SetTextRenderMode, |  | 
| 131   PDFOP_SetTextRise, |  | 
| 132   PDFOP_SetWordSpace, |  | 
| 133   PDFOP_SetHorzScale, |  | 
| 134   PDFOP_MoveToNextLine, |  | 
| 135   PDFOP_CurveTo_23, |  | 
| 136   PDFOP_SetLineWidth, |  | 
| 137   PDFOP_Clip, |  | 
| 138   PDFOP_EOClip, |  | 
| 139   PDFOP_CurveTo_13, |  | 
| 140   PDFOP_NextLineShowText, |  | 
| 141   PDFOP_NextLineShowText_Space, |  | 
| 142   PDFOP_Invalid |  | 
| 143 } PDFOP; |  | 
| 144 #define PARAM_BUF_SIZE 16 | 68 #define PARAM_BUF_SIZE 16 | 
| 145 typedef struct { | 69 struct ContentParam { | 
| 146   int m_Type; | 70   int m_Type; | 
| 147   union { | 71   union { | 
| 148     struct { | 72     struct { | 
| 149       FX_BOOL m_bInteger; | 73       FX_BOOL m_bInteger; | 
| 150       union { | 74       union { | 
| 151         int m_Integer; | 75         int m_Integer; | 
| 152         FX_FLOAT m_Float; | 76         FX_FLOAT m_Float; | 
| 153       }; | 77       }; | 
| 154     } m_Number; | 78     } m_Number; | 
| 155     CPDF_Object* m_pObject; | 79     CPDF_Object* m_pObject; | 
| 156     struct { | 80     struct { | 
| 157       int m_Len; | 81       int m_Len; | 
| 158       char m_Buffer[32]; | 82       char m_Buffer[32]; | 
| 159     } m_Name; | 83     } m_Name; | 
| 160   }; | 84   }; | 
| 161 } _ContentParam; | 85 }; | 
| 162 #define _FPDF_MAX_FORM_LEVEL_ 30 | 86 #define _FPDF_MAX_FORM_LEVEL_ 30 | 
| 163 #define _FPDF_MAX_TYPE3_FORM_LEVEL_ 4 | 87 #define _FPDF_MAX_TYPE3_FORM_LEVEL_ 4 | 
| 164 #define _FPDF_MAX_OBJECT_STACK_SIZE_ 512 | 88 #define _FPDF_MAX_OBJECT_STACK_SIZE_ 512 | 
| 165 class CPDF_StreamContentParser { | 89 class CPDF_StreamContentParser { | 
| 166  public: | 90  public: | 
| 167   CPDF_StreamContentParser(CPDF_Document* pDoc, | 91   CPDF_StreamContentParser(CPDF_Document* pDoc, | 
| 168                            CPDF_Dictionary* pPageResources, | 92                            CPDF_Dictionary* pPageResources, | 
| 169                            CPDF_Dictionary* pParentResources, | 93                            CPDF_Dictionary* pParentResources, | 
| 170                            CFX_Matrix* pmtContentToUser, | 94                            CFX_Matrix* pmtContentToUser, | 
| 171                            CPDF_PageObjects* pObjList, | 95                            CPDF_PageObjects* pObjList, | 
| (...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 308 | 232 | 
| 309   CPDF_Document* const m_pDocument; | 233   CPDF_Document* const m_pDocument; | 
| 310   CPDF_Dictionary* m_pPageResources; | 234   CPDF_Dictionary* m_pPageResources; | 
| 311   CPDF_Dictionary* m_pParentResources; | 235   CPDF_Dictionary* m_pParentResources; | 
| 312   CPDF_Dictionary* m_pResources; | 236   CPDF_Dictionary* m_pResources; | 
| 313   CPDF_PageObjects* m_pObjectList; | 237   CPDF_PageObjects* m_pObjectList; | 
| 314   int m_Level; | 238   int m_Level; | 
| 315   CFX_Matrix m_mtContentToUser; | 239   CFX_Matrix m_mtContentToUser; | 
| 316   CFX_FloatRect m_BBox; | 240   CFX_FloatRect m_BBox; | 
| 317   CPDF_ParseOptions m_Options; | 241   CPDF_ParseOptions m_Options; | 
| 318   _ContentParam m_ParamBuf1[PARAM_BUF_SIZE]; | 242   ContentParam m_ParamBuf1[PARAM_BUF_SIZE]; | 
| 319   FX_DWORD m_ParamStartPos; | 243   FX_DWORD m_ParamStartPos; | 
| 320   FX_DWORD m_ParamCount; | 244   FX_DWORD m_ParamCount; | 
| 321   CPDF_StreamParser* m_pSyntax; | 245   CPDF_StreamParser* m_pSyntax; | 
| 322   std::unique_ptr<CPDF_AllStates> m_pCurStates; | 246   std::unique_ptr<CPDF_AllStates> m_pCurStates; | 
| 323   CPDF_ContentMark m_CurContentMark; | 247   CPDF_ContentMark m_CurContentMark; | 
| 324   CFX_ArrayTemplate<CPDF_TextObject*> m_ClipTextList; | 248   CFX_ArrayTemplate<CPDF_TextObject*> m_ClipTextList; | 
| 325   CPDF_TextObject* m_pLastTextObject; | 249   CPDF_TextObject* m_pLastTextObject; | 
| 326   FX_FLOAT m_DefFontSize; | 250   FX_FLOAT m_DefFontSize; | 
| 327   int m_CompatCount; | 251   int m_CompatCount; | 
| 328   FX_PATHPOINT* m_pPathPoints; | 252   FX_PATHPOINT* m_pPathPoints; | 
| (...skipping 17 matching lines...) Expand all  Loading... | 
| 346   FX_BOOL m_bResourceMissing; | 270   FX_BOOL m_bResourceMissing; | 
| 347   CFX_ArrayTemplate<CPDF_AllStates*> m_StateStack; | 271   CFX_ArrayTemplate<CPDF_AllStates*> m_StateStack; | 
| 348 }; | 272 }; | 
| 349 class CPDF_ContentParser { | 273 class CPDF_ContentParser { | 
| 350  public: | 274  public: | 
| 351   enum ParseStatus { Ready, ToBeContinued, Done }; | 275   enum ParseStatus { Ready, ToBeContinued, Done }; | 
| 352 | 276 | 
| 353   CPDF_ContentParser(); | 277   CPDF_ContentParser(); | 
| 354   ~CPDF_ContentParser(); | 278   ~CPDF_ContentParser(); | 
| 355 | 279 | 
| 356   ParseStatus GetStatus() { return m_Status; } | 280   ParseStatus GetStatus() const { return m_Status; } | 
| 357   void Start(CPDF_Page* pPage, CPDF_ParseOptions* pOptions); | 281   void Start(CPDF_Page* pPage, CPDF_ParseOptions* pOptions); | 
| 358   void Start(CPDF_Form* pForm, | 282   void Start(CPDF_Form* pForm, | 
| 359              CPDF_AllStates* pGraphicStates, | 283              CPDF_AllStates* pGraphicStates, | 
| 360              CFX_Matrix* pParentMatrix, | 284              CFX_Matrix* pParentMatrix, | 
| 361              CPDF_Type3Char* pType3Char, | 285              CPDF_Type3Char* pType3Char, | 
| 362              CPDF_ParseOptions* pOptions, | 286              CPDF_ParseOptions* pOptions, | 
| 363              int level); | 287              int level); | 
| 364   void Continue(IFX_Pause* pPause); | 288   void Continue(IFX_Pause* pPause); | 
| 365 | 289 | 
| 366  protected: | 290  protected: | 
| (...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 519                  FX_FLOAT& G, | 443                  FX_FLOAT& G, | 
| 520                  FX_FLOAT& B) const override; | 444                  FX_FLOAT& B) const override; | 
| 521   CPDF_ColorSpace* GetBaseCS() const override; | 445   CPDF_ColorSpace* GetBaseCS() const override; | 
| 522 | 446 | 
| 523  private: | 447  private: | 
| 524   CPDF_ColorSpace* m_pBaseCS; | 448   CPDF_ColorSpace* m_pBaseCS; | 
| 525   CPDF_CountedColorSpace* m_pCountedBaseCS; | 449   CPDF_CountedColorSpace* m_pCountedBaseCS; | 
| 526 }; | 450 }; | 
| 527 | 451 | 
| 528 #endif  // CORE_SRC_FPDFAPI_FPDF_PAGE_PAGEINT_H_ | 452 #endif  // CORE_SRC_FPDFAPI_FPDF_PAGE_PAGEINT_H_ | 
| OLD | NEW | 
|---|