From a4ad01fe03ffdd1806d31a9d7bb820f6a69a0afb Mon Sep 17 00:00:00 2001 From: Nicolas Pena Date: Wed, 15 Feb 2017 16:26:48 -0500 Subject: Move generated graphics and font maps to CPDF_Page MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A new CPDF_PageContentGenerator is created for every call of FPDFPage_GenerateContent, so having the maps there will cause duplicated resources to be created every time this method is called. Thus it is better to move these to the page. Change-Id: I47804f79790fc5354f8a94b6387d66b65eda5a20 Reviewed-on: https://pdfium-review.googlesource.com/2717 Reviewed-by: Tom Sepez Commit-Queue: Nicolás Peña --- core/fpdfapi/page/cpdf_page.h | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'core/fpdfapi/page/cpdf_page.h') diff --git a/core/fpdfapi/page/cpdf_page.h b/core/fpdfapi/page/cpdf_page.h index 6d29a8f34e..9e303562c6 100644 --- a/core/fpdfapi/page/cpdf_page.h +++ b/core/fpdfapi/page/cpdf_page.h @@ -7,6 +7,7 @@ #ifndef CORE_FPDFAPI_PAGE_CPDF_PAGE_H_ #define CORE_FPDFAPI_PAGE_CPDF_PAGE_H_ +#include #include #include "core/fpdfapi/page/cpdf_pageobjectholder.h" @@ -20,6 +21,19 @@ class CPDF_Object; class CPDF_PageRenderCache; class CPDF_PageRenderContext; +// These structs are used to keep track of resources that have already been +// generated in the page. +struct GraphicsData { + FX_FLOAT fillAlpha; + FX_FLOAT strokeAlpha; + bool operator<(const GraphicsData& other) const; +}; + +struct FontData { + CFX_ByteString baseFont; + bool operator<(const FontData& other) const; +}; + class CPDF_Page : public CPDF_PageObjectHolder { public: class View {}; // Caller implements as desired, empty here due to layering. @@ -52,6 +66,9 @@ class CPDF_Page : public CPDF_PageObjectHolder { View* GetView() const { return m_pView; } void SetView(View* pView) { m_pView = pView; } + std::map m_GraphicsMap; + std::map m_FontsMap; + protected: void StartParse(); -- cgit v1.2.3