summaryrefslogtreecommitdiff
path: root/core/include/fpdfapi/fpdf_pageobj.h
diff options
context:
space:
mode:
authorDan Sinclair <dsinclair@chromium.org>2016-03-21 09:15:45 -0400
committerDan Sinclair <dsinclair@chromium.org>2016-03-21 09:15:45 -0400
commit584b1e679f41a580e2b38d5534f126355c78043b (patch)
treeca3f78bc30673b9c4650433168efe574920c60f1 /core/include/fpdfapi/fpdf_pageobj.h
parentedbb319d3143692befdbb0603089b7e265cf89aa (diff)
downloadpdfium-584b1e679f41a580e2b38d5534f126355c78043b.tar.xz
Move core/include/fpdfapi/fpdf_pageobj.h into core/fpdfapi.
This CL splits the file into individual classes and moves them into core/fpdfapi/fpdf_page as needed. R=tsepez@chromium.org Review URL: https://codereview.chromium.org/1811053002 .
Diffstat (limited to 'core/include/fpdfapi/fpdf_pageobj.h')
-rw-r--r--core/include/fpdfapi/fpdf_pageobj.h464
1 files changed, 0 insertions, 464 deletions
diff --git a/core/include/fpdfapi/fpdf_pageobj.h b/core/include/fpdfapi/fpdf_pageobj.h
deleted file mode 100644
index 388409742a..0000000000
--- a/core/include/fpdfapi/fpdf_pageobj.h
+++ /dev/null
@@ -1,464 +0,0 @@
-// Copyright 2014 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_INCLUDE_FPDFAPI_FPDF_PAGEOBJ_H_
-#define CORE_INCLUDE_FPDFAPI_FPDF_PAGEOBJ_H_
-
-#include <vector>
-
-#include "core/include/fpdfapi/fpdf_resource.h"
-#include "core/include/fxge/fx_ge.h"
-
-class CPDF_ClipPath;
-class CPDF_ClipPathData;
-class CPDF_ColorState;
-class CPDF_ColorStateData;
-class CPDF_ContentMark;
-class CPDF_ContentMarkItem;
-class CPDF_FormObject;
-class CPDF_GeneralState;
-class CPDF_GeneralStateData;
-class CPDF_GraphicStates;
-class CPDF_GraphState;
-class CPDF_ImageObject;
-class CPDF_PageObject;
-class CPDF_Path;
-class CPDF_PathObject;
-class CPDF_ShadingObject;
-class CPDF_TextObject;
-class CPDF_TextState;
-class CPDF_TextStateData;
-class CPDF_TransferFunc;
-
-class CPDF_Path : public CFX_CountRef<CFX_PathData> {
- public:
- int GetPointCount() const { return m_pObject->m_PointCount; }
- int GetFlag(int index) const { return m_pObject->m_pPoints[index].m_Flag; }
- FX_FLOAT GetPointX(int index) const {
- return m_pObject->m_pPoints[index].m_PointX;
- }
- FX_FLOAT GetPointY(int index) const {
- return m_pObject->m_pPoints[index].m_PointY;
- }
- FX_PATHPOINT* GetPoints() const { return m_pObject->m_pPoints; }
- CFX_FloatRect GetBoundingBox() const { return m_pObject->GetBoundingBox(); }
- CFX_FloatRect GetBoundingBox(FX_FLOAT line_width,
- FX_FLOAT miter_limit) const {
- return m_pObject->GetBoundingBox(line_width, miter_limit);
- }
- FX_BOOL IsRect() const { return m_pObject->IsRect(); }
-
- void Transform(const CFX_Matrix* pMatrix) { GetModify()->Transform(pMatrix); }
- void Append(CPDF_Path src, const CFX_Matrix* pMatrix) {
- m_pObject->Append(src.m_pObject, pMatrix);
- }
- void AppendRect(FX_FLOAT left,
- FX_FLOAT bottom,
- FX_FLOAT right,
- FX_FLOAT top) {
- m_pObject->AppendRect(left, bottom, right, top);
- }
-};
-
-class CPDF_ClipPathData {
- public:
- CPDF_ClipPathData();
- CPDF_ClipPathData(const CPDF_ClipPathData&);
- ~CPDF_ClipPathData();
-
- void SetCount(int path_count, int text_count);
-
- int m_PathCount;
- CPDF_Path* m_pPathList;
- uint8_t* m_pTypeList;
- int m_TextCount;
- CPDF_TextObject** m_pTextList;
-};
-
-class CPDF_ClipPath : public CFX_CountRef<CPDF_ClipPathData> {
- public:
- FX_DWORD GetPathCount() const { return m_pObject->m_PathCount; }
- CPDF_Path GetPath(int i) const { return m_pObject->m_pPathList[i]; }
- int GetClipType(int i) const { return m_pObject->m_pTypeList[i]; }
- FX_DWORD GetTextCount() const { return m_pObject->m_TextCount; }
- CPDF_TextObject* GetText(int i) const { return m_pObject->m_pTextList[i]; }
- CFX_FloatRect GetClipBox() const;
- void AppendPath(CPDF_Path path, int type, FX_BOOL bAutoMerge);
- void DeletePath(int layer_index);
- void AppendTexts(CPDF_TextObject** pTexts, int count);
- void Transform(const CFX_Matrix& matrix);
-};
-
-class CPDF_ColorStateData {
- public:
- CPDF_ColorStateData() : m_FillRGB(0), m_StrokeRGB(0) {}
- CPDF_ColorStateData(const CPDF_ColorStateData& src);
-
- void Default();
-
- CPDF_Color m_FillColor;
- FX_DWORD m_FillRGB;
- CPDF_Color m_StrokeColor;
- FX_DWORD m_StrokeRGB;
-};
-
-class CPDF_ColorState : public CFX_CountRef<CPDF_ColorStateData> {
- public:
- CPDF_Color* GetFillColor() const {
- return m_pObject ? &m_pObject->m_FillColor : nullptr;
- }
-
- CPDF_Color* GetStrokeColor() const {
- return m_pObject ? &m_pObject->m_StrokeColor : nullptr;
- }
-
- void SetFillColor(CPDF_ColorSpace* pCS, FX_FLOAT* pValue, int nValues);
- void SetStrokeColor(CPDF_ColorSpace* pCS, FX_FLOAT* pValue, int nValues);
- void SetFillPattern(CPDF_Pattern* pattern, FX_FLOAT* pValue, int nValues);
- void SetStrokePattern(CPDF_Pattern* pattern, FX_FLOAT* pValue, int nValues);
-
- private:
- void SetColor(CPDF_Color& color,
- FX_DWORD& rgb,
- CPDF_ColorSpace* pCS,
- FX_FLOAT* pValue,
- int nValues);
-};
-
-class CPDF_GraphState : public CFX_CountRef<CFX_GraphStateData> {
-};
-
-class CPDF_TextStateData {
- public:
- CPDF_TextStateData();
- CPDF_TextStateData(const CPDF_TextStateData& src);
- ~CPDF_TextStateData();
-
- CPDF_Font* m_pFont;
- CPDF_Document* m_pDocument;
- FX_FLOAT m_FontSize;
- FX_FLOAT m_CharSpace;
- FX_FLOAT m_WordSpace;
- FX_FLOAT m_Matrix[4];
- int m_TextMode;
- FX_FLOAT m_CTM[4];
-};
-
-class CPDF_TextState : public CFX_CountRef<CPDF_TextStateData> {
- public:
- CPDF_Font* GetFont() const { return m_pObject->m_pFont; }
- void SetFont(CPDF_Font* pFont);
- FX_FLOAT GetFontSize() const { return m_pObject->m_FontSize; }
- FX_FLOAT* GetMatrix() const { return m_pObject->m_Matrix; }
- FX_FLOAT GetFontSizeV() const;
- FX_FLOAT GetFontSizeH() const;
- FX_FLOAT GetBaselineAngle() const;
- FX_FLOAT GetShearAngle() const;
-};
-
-class CPDF_GeneralStateData {
- public:
- CPDF_GeneralStateData();
- CPDF_GeneralStateData(const CPDF_GeneralStateData& src);
- ~CPDF_GeneralStateData();
-
- void SetBlendMode(const CFX_ByteStringC& blend_mode);
-
- char m_BlendMode[16];
- int m_BlendType;
- CPDF_Object* m_pSoftMask;
- FX_FLOAT m_SMaskMatrix[6];
- FX_FLOAT m_StrokeAlpha;
- FX_FLOAT m_FillAlpha;
- CPDF_Object* m_pTR;
- CPDF_TransferFunc* m_pTransferFunc;
- CFX_Matrix m_Matrix;
- int m_RenderIntent;
- FX_BOOL m_StrokeAdjust;
- FX_BOOL m_AlphaSource;
- FX_BOOL m_TextKnockout;
- FX_BOOL m_StrokeOP;
- FX_BOOL m_FillOP;
- int m_OPMode;
- CPDF_Object* m_pBG;
- CPDF_Object* m_pUCR;
- CPDF_Object* m_pHT;
- FX_FLOAT m_Flatness;
- FX_FLOAT m_Smoothness;
-};
-
-class CPDF_GeneralState : public CFX_CountRef<CPDF_GeneralStateData> {
- public:
- void SetRenderIntent(const CFX_ByteString& ri);
-
- int GetBlendType() const {
- return m_pObject ? m_pObject->m_BlendType : FXDIB_BLEND_NORMAL;
- }
-
- int GetAlpha(FX_BOOL bStroke) const {
- return m_pObject ? FXSYS_round((bStroke ? m_pObject->m_StrokeAlpha
- : m_pObject->m_FillAlpha) *
- 255)
- : 255;
- }
-};
-
-class CPDF_ContentMarkItem {
- public:
- enum ParamType { None, PropertiesDict, DirectDict };
-
- CPDF_ContentMarkItem();
- CPDF_ContentMarkItem(const CPDF_ContentMarkItem& src);
- ~CPDF_ContentMarkItem();
-
- const CFX_ByteString& GetName() const { return m_MarkName; }
- ParamType GetParamType() const { return m_ParamType; }
- CPDF_Dictionary* GetParam() const { return m_pParam; }
- FX_BOOL HasMCID() const;
- void SetName(const CFX_ByteString& name) { m_MarkName = name; }
- void SetParam(ParamType type, CPDF_Dictionary* param) {
- m_ParamType = type;
- m_pParam = param;
- }
-
- private:
- CFX_ByteString m_MarkName;
- ParamType m_ParamType;
- CPDF_Dictionary* m_pParam;
-};
-
-class CPDF_ContentMarkData {
- public:
- CPDF_ContentMarkData() {}
- CPDF_ContentMarkData(const CPDF_ContentMarkData& src);
-
- int CountItems() const;
- CPDF_ContentMarkItem& GetItem(int index) { return m_Marks[index]; }
- const CPDF_ContentMarkItem& GetItem(int index) const {
- return m_Marks[index];
- }
-
- int GetMCID() const;
- void AddMark(const CFX_ByteString& name,
- CPDF_Dictionary* pDict,
- FX_BOOL bDictNeedClone);
- void DeleteLastMark();
-
- private:
- std::vector<CPDF_ContentMarkItem> m_Marks;
-};
-
-class CPDF_ContentMark : public CFX_CountRef<CPDF_ContentMarkData> {
- public:
- int GetMCID() const { return m_pObject ? m_pObject->GetMCID() : -1; }
-
- FX_BOOL HasMark(const CFX_ByteStringC& mark) const;
-
- FX_BOOL LookupMark(const CFX_ByteStringC& mark,
- CPDF_Dictionary*& pDict) const;
-};
-
-class CPDF_GraphicStates {
- public:
- void CopyStates(const CPDF_GraphicStates& src);
-
- void DefaultStates();
-
- CPDF_ClipPath m_ClipPath;
-
- CPDF_GraphState m_GraphState;
-
- CPDF_ColorState m_ColorState;
-
- CPDF_TextState m_TextState;
-
- CPDF_GeneralState m_GeneralState;
-};
-
-class CPDF_PageObject : public CPDF_GraphicStates {
- public:
- enum Type {
- TEXT = 1,
- PATH,
- IMAGE,
- SHADING,
- FORM,
- };
-
- CPDF_PageObject();
- virtual ~CPDF_PageObject();
-
- virtual CPDF_PageObject* Clone() const = 0;
- virtual Type GetType() const = 0;
- virtual void Transform(const CFX_Matrix& matrix) = 0;
- virtual bool IsText() const { return false; }
- virtual bool IsPath() const { return false; }
- virtual bool IsImage() const { return false; }
- virtual bool IsShading() const { return false; }
- virtual bool IsForm() const { return false; }
- virtual CPDF_TextObject* AsText() { return nullptr; }
- virtual const CPDF_TextObject* AsText() const { return nullptr; }
- virtual CPDF_PathObject* AsPath() { return nullptr; }
- virtual const CPDF_PathObject* AsPath() const { return nullptr; }
- virtual CPDF_ImageObject* AsImage() { return nullptr; }
- virtual const CPDF_ImageObject* AsImage() const { return nullptr; }
- virtual CPDF_ShadingObject* AsShading() { return nullptr; }
- virtual const CPDF_ShadingObject* AsShading() const { return nullptr; }
- virtual CPDF_FormObject* AsForm() { return nullptr; }
- virtual const CPDF_FormObject* AsForm() const { return nullptr; }
-
- void TransformClipPath(CFX_Matrix& matrix);
- void TransformGeneralState(CFX_Matrix& matrix);
- FX_RECT GetBBox(const CFX_Matrix* pMatrix) const;
-
- FX_FLOAT m_Left;
- FX_FLOAT m_Right;
- FX_FLOAT m_Top;
- FX_FLOAT m_Bottom;
- CPDF_ContentMark m_ContentMark;
-
- protected:
- void CopyData(const CPDF_PageObject* pSrcObject);
-
- private:
- CPDF_PageObject(const CPDF_PageObject& src) = delete;
- void operator=(const CPDF_PageObject& src) = delete;
-};
-
-struct CPDF_TextObjectItem {
- FX_DWORD m_CharCode;
- FX_FLOAT m_OriginX;
- FX_FLOAT m_OriginY;
-};
-
-class CPDF_TextObject : public CPDF_PageObject {
- public:
- CPDF_TextObject();
- ~CPDF_TextObject() override;
-
- // CPDF_PageObject:
- CPDF_TextObject* Clone() const override;
- Type GetType() const override { return TEXT; };
- void Transform(const CFX_Matrix& matrix) override;
- bool IsText() const override { return true; };
- CPDF_TextObject* AsText() override { return this; };
- const CPDF_TextObject* AsText() const override { return this; };
-
- int CountItems() const { return m_nChars; }
- void GetItemInfo(int index, CPDF_TextObjectItem* pInfo) const;
- int CountChars() const;
- void GetCharInfo(int index, FX_DWORD& charcode, FX_FLOAT& kerning) const;
- void GetCharInfo(int index, CPDF_TextObjectItem* pInfo) const;
- FX_FLOAT GetCharWidth(FX_DWORD charcode) const;
- FX_FLOAT GetPosX() const { return m_PosX; }
- FX_FLOAT GetPosY() const { return m_PosY; }
- void GetTextMatrix(CFX_Matrix* pMatrix) const;
- CPDF_Font* GetFont() const { return m_TextState.GetFont(); }
- FX_FLOAT GetFontSize() const { return m_TextState.GetFontSize(); }
-
- void SetText(const CFX_ByteString& text);
- void SetPosition(FX_FLOAT x, FX_FLOAT y);
-
- void RecalcPositionData() { CalcPositionData(nullptr, nullptr, 1); }
-
- protected:
- friend class CPDF_RenderStatus;
- friend class CPDF_StreamContentParser;
- friend class CPDF_TextRenderer;
-
- void SetSegments(const CFX_ByteString* pStrs, FX_FLOAT* pKerning, int nSegs);
-
- void CalcPositionData(FX_FLOAT* pTextAdvanceX,
- FX_FLOAT* pTextAdvanceY,
- FX_FLOAT horz_scale,
- int level = 0);
-
- FX_FLOAT m_PosX;
- FX_FLOAT m_PosY;
- int m_nChars;
- FX_DWORD* m_pCharCodes;
- FX_FLOAT* m_pCharPos;
-};
-
-class CPDF_PathObject : public CPDF_PageObject {
- public:
- CPDF_PathObject();
- ~CPDF_PathObject() override;
-
- // CPDF_PageObject:
- CPDF_PathObject* Clone() const override;
- Type GetType() const override { return PATH; };
- void Transform(const CFX_Matrix& maxtrix) override;
- bool IsPath() const override { return true; };
- CPDF_PathObject* AsPath() override { return this; };
- const CPDF_PathObject* AsPath() const override { return this; };
-
- void CalcBoundingBox();
-
- CPDF_Path m_Path;
- int m_FillType;
- FX_BOOL m_bStroke;
- CFX_Matrix m_Matrix;
-};
-
-class CPDF_ImageObject : public CPDF_PageObject {
- public:
- CPDF_ImageObject();
- ~CPDF_ImageObject() override;
-
- // CPDF_PageObject:
- CPDF_ImageObject* Clone() const override;
- Type GetType() const override { return IMAGE; };
- void Transform(const CFX_Matrix& matrix) override;
- bool IsImage() const override { return true; };
- CPDF_ImageObject* AsImage() override { return this; };
- const CPDF_ImageObject* AsImage() const override { return this; };
-
- void CalcBoundingBox();
-
- CPDF_Image* m_pImage;
- CFX_Matrix m_Matrix;
-};
-
-class CPDF_ShadingObject : public CPDF_PageObject {
- public:
- CPDF_ShadingObject();
- ~CPDF_ShadingObject() override;
-
- // CPDF_PageObject:
- CPDF_ShadingObject* Clone() const override;
- Type GetType() const override { return SHADING; };
- void Transform(const CFX_Matrix& matrix) override;
- bool IsShading() const override { return true; };
- CPDF_ShadingObject* AsShading() override { return this; };
- const CPDF_ShadingObject* AsShading() const override { return this; };
-
- void CalcBoundingBox();
-
- CPDF_ShadingPattern* m_pShading;
- CFX_Matrix m_Matrix;
-};
-
-class CPDF_FormObject : public CPDF_PageObject {
- public:
- CPDF_FormObject();
- ~CPDF_FormObject() override;
-
- // CPDF_PageObject:
- CPDF_FormObject* Clone() const override;
- Type GetType() const override { return FORM; };
- void Transform(const CFX_Matrix& matrix) override;
- bool IsForm() const override { return true; };
- CPDF_FormObject* AsForm() override { return this; };
- const CPDF_FormObject* AsForm() const override { return this; };
-
- void CalcBoundingBox();
-
- CPDF_Form* m_pForm;
- CFX_Matrix m_FormMatrix;
-};
-
-#endif // CORE_INCLUDE_FPDFAPI_FPDF_PAGEOBJ_H_