Index: core/fpdfapi/page/cpdf_contentparser.h |
diff --git a/core/fpdfapi/page/cpdf_contentparser.h b/core/fpdfapi/page/cpdf_contentparser.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..5fd11f6c0b41f297cc3ec51bbe1489f73bc9ae68 |
--- /dev/null |
+++ b/core/fpdfapi/page/cpdf_contentparser.h |
@@ -0,0 +1,59 @@ |
+// Copyright 2016 PDFium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
+ |
+#ifndef CORE_FPDFAPI_PAGE_CPDF_CONTENTPARSER_H_ |
+#define CORE_FPDFAPI_PAGE_CPDF_CONTENTPARSER_H_ |
+ |
+#include <memory> |
+#include <vector> |
+ |
+#include "core/fpdfapi/page/cpdf_pageobjectholder.h" |
+#include "core/fpdfapi/page/cpdf_streamcontentparser.h" |
+ |
+class CPDF_AllStates; |
+class CPDF_Form; |
+class CPDF_Page; |
+class CPDF_StreamAcc; |
+class CPDF_Type3Char; |
+ |
+class CPDF_ContentParser { |
+ public: |
+ enum ParseStatus { Ready, ToBeContinued, Done }; |
+ |
+ CPDF_ContentParser(); |
+ ~CPDF_ContentParser(); |
+ |
+ ParseStatus GetStatus() const { return m_Status; } |
+ void Start(CPDF_Page* pPage); |
+ void Start(CPDF_Form* pForm, |
+ CPDF_AllStates* pGraphicStates, |
+ const CFX_Matrix* pParentMatrix, |
+ CPDF_Type3Char* pType3Char, |
+ int level); |
+ void Continue(IFX_Pause* pPause); |
+ |
+ private: |
+ enum InternalStage { |
+ STAGE_GETCONTENT = 1, |
+ STAGE_PARSE, |
+ STAGE_CHECKCLIP, |
+ }; |
+ |
+ ParseStatus m_Status; |
+ InternalStage m_InternalStage; |
+ CPDF_PageObjectHolder* m_pObjectHolder; |
+ bool m_bForm; |
+ CPDF_Type3Char* m_pType3Char; |
+ uint32_t m_nStreams; |
+ std::unique_ptr<CPDF_StreamAcc> m_pSingleStream; |
+ std::vector<std::unique_ptr<CPDF_StreamAcc>> m_StreamArray; |
+ uint8_t* m_pData; |
+ uint32_t m_Size; |
+ uint32_t m_CurrentOffset; |
+ std::unique_ptr<CPDF_StreamContentParser> m_pParser; |
+}; |
+ |
+#endif // CORE_FPDFAPI_PAGE_CPDF_CONTENTPARSER_H_ |