From 5110c4743751145c4ae1934cd1d83bc6c55bb43f Mon Sep 17 00:00:00 2001 From: John Abd-El-Malek Date: Sat, 17 May 2014 22:33:34 -0700 Subject: Initial commit. --- core/include/reflow/fpdf_layout.h | 280 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 280 insertions(+) create mode 100644 core/include/reflow/fpdf_layout.h (limited to 'core/include/reflow/fpdf_layout.h') diff --git a/core/include/reflow/fpdf_layout.h b/core/include/reflow/fpdf_layout.h new file mode 100644 index 0000000000..fc01ba30c8 --- /dev/null +++ b/core/include/reflow/fpdf_layout.h @@ -0,0 +1,280 @@ +// 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 _FPDFAPI_LAYOUT_H_ +#define _FPDFAPI_LAYOUT_H_ +class IPDF_LayoutElement; +class IPDF_LayoutProcessor; +class IPDF_LayoutProvider; +typedef enum { + LayoutUnknown, + LayoutArifact, + LayoutDocument, + LayoutPart, + LayoutArt, + LayoutSect, + LayoutDiv, + LayoutBlockQuote, + LayoutCaption, + LayoutTOC, + LayoutTOCI, + LayoutIndex, + LayoutNonStruct, + LayoutPrivate, + LayoutParagraph, + LayoutHeading, + LayoutHeading1, + LayoutHeading2, + LayoutHeading3, + LayoutHeading4, + LayoutHeading5, + LayoutHeading6, + LayoutList, + LayoutListItem, + LayoutListLabel, + LayoutListBody, + LayoutTable, + LayoutTableRow, + LayoutTableHeaderCell, + LayoutTableDataCell, + LayoutTableHeaderGroup, + LayoutTableBodyGroup, + LayoutTableFootGroup, + LayoutSpan, + LayoutQuote, + LayoutNote, + LayoutReference, + LayoutBibEntry, + LayoutCode, + LayoutLink, + LayoutAnnot, + LayoutRuby, + LayoutRubyBase, + LayoutRubyAnnot, + LayoutRubyPunc, + LayoutWarichu, + LayoutWarichuText, + LayoutWarichuPunc, + LayoutFigure, + LayoutFormula, + LayoutForm, +} LayoutType; +typedef enum { + LayoutArtifactType, + LayoutArtifactAttached, + LayoutArtifactSubType, + LayoutPlacement, + LayoutWritingMode, + LayoutBackgroundColor, + LayoutBorderColor, + LayoutBorderStyle, + LayoutBorderThickness, + LayoutPadding, + LayoutColor, + LayoutSpaceBefore, + LayoutSpaceAfter, + LayoutStartIndent, + LayoutEndIndent, + LayoutTextIndent, + LayoutTextAlign, + LayoutBBox, + LayoutWidth, + LayoutHeight, + LayoutBlockAlign, + LayoutInlineAlign, + LayoutTBorderStyle, + LayoutTPadding, + LayoutBaselineShift, + LayoutLineHeight, + LayoutTextDecorationColor, + LayoutTextDecorationThickness, + LayoutTextDecorationType, + LayoutRubyAlign, + LayoutRubyPosition, + LayoutGlyphOrientationVertical, + LayoutColumnCount, + LayoutColumnGap, + LayoutColumnWidths, + LayoutListNumbering, + LayoutFieldRole, + LayoutFieldChecked, + LayoutFieldDesc, + LayoutRowSpan, + LayoutColSpan, + LayoutTableHeaders, + LayoutTableHeaderScope, + LayoutTableSummary, +} LayoutAttr; +typedef enum { + LayoutInvalid = 0, + LayoutBlock, + LayoutInline, + LayoutBefore, + LayoutAfter, + LayoutStart, + LayoutEnd, + LayoutLrTb, + LayoutRlTb, + LayoutTbRl, + LayoutNone, + LayoutHidden, + LayoutDotted, + LayoutDashed, + LayoutSolid, + LayoutDouble, + LayoutGroove, + LayoutRidge, + LayoutInset, + LayoutOutset, + LayoutNormal, + LayoutAuto, + LayoutCenter, + LayoutJustify, + LayoutMiddle, + LayoutUnderline, + LayoutOverline, + LayoutLineThrough, + LayoutDistribute, + LayoutMinus90Degree, + LayoutZeroDegree, + Layout90Degree, + Layout180Degree, + Layout270Degree, + LayoutDisc, + LayoutCircle, + LayoutSquare, + LayoutDecimal, + LayoutUpperRoman, + LayoutLowerRoman, + LayoutUpperAlpha, + LayoutLowerAlpha, + LayoutRB, + LayoutCB, + LayoutPB, + LayoutTV, + LayoutOn, + LayoutOff, + LayoutNeutral, + LayoutRow, + LayoutColumn, + LayoutBoth, + LayoutLeft, + LayoutTop, + LayoutBottom, + LayoutRight, + LayoutPagination, + LayoutLayout, + LayoutPage, + LayoutBackground, + LayoutHeader, + LayoutFooter, + LayoutWatermark, +} LayoutEnum; +class IPDF_LayoutElement +{ +public: + + virtual ~IPDF_LayoutElement() {}; + + + virtual LayoutType GetType() = 0; + + virtual int CountAttrValues(LayoutAttr attr_type) = 0; + + + virtual LayoutEnum GetEnumAttr(LayoutAttr attr_type, int index = 0) = 0; + + virtual FX_FLOAT GetNumberAttr(LayoutAttr attr_type, int index = 0) = 0; + + virtual FX_COLORREF GetColorAttr(LayoutAttr attr_type, int index = 0) = 0; + + + virtual int CountChildren() = 0; + + + virtual IPDF_LayoutElement* GetChild(int index) = 0; + + + virtual IPDF_LayoutElement* GetParent() = 0; + + + virtual int CountObjects() = 0; + + virtual CPDF_PageObject* GetObject(int index) = 0; +}; +typedef enum { + LayoutReady, + LayoutFinished, + LayoutToBeContinued, + LayoutError +} LayoutStatus; +#define RF_PARSER_IMAGE 0x1 +#define RF_PARSER_DEBUGINFO 0x2 +#define RF_PARSER_PAGEMODE 0x4 +#define RF_PARSER_READERORDER 0x8 +class IPDF_LayoutProcessor +{ +public: + + virtual ~IPDF_LayoutProcessor() {}; + + static IPDF_LayoutProcessor* Create_LayoutProcessor_Reflow(FX_FLOAT TopIndent, FX_FLOAT fWidth, FX_FLOAT fHeight, void* pReflowedPage, int flags, FX_FLOAT lineSpace = 0); + + static IPDF_LayoutProcessor* Create_LayoutProcessor_2HTML(FX_LPCSTR fileName); + + virtual LayoutStatus StartProcess(IPDF_LayoutElement* pElement, IFX_Pause* pPause, const CFX_AffineMatrix* pPDFMatrix = NULL) = 0; + + virtual LayoutStatus Continue() = 0; + virtual int GetPosition() = 0; +}; +#define LP_Lang_Unknow 0x0 +#define LP_Lang_English 0x1 +#define LP_Lang_French 0x2 +#define LP_Lang_Italian 0x4 +#define LP_Lang_German 0x8 +#define LP_Lang_Spanish 0x10 +#define LP_Lang_Polish 0x20 +#define LP_Lang_Russian 0x40 +#define LP_Lang_ChinesePRC 0x80 +#define LP_Lang_ChineseTaiwan 0x100 +#define LP_Lang_Japanese 0x200 +#define LP_Lang_Korean 0x400 +#define LP_Lang_Portuguese 0x800 +#define LP_Lang_Turkish 0x1000 +#define LP_Lang_Dutch 0x2000 +typedef struct _LayoutProviderStyle { + _LayoutProviderStyle() + { + m_Language = LP_Lang_Unknow; + m_bIgnoreInvisibleText = TRUE; + } + FX_INT32 m_Language; + FX_BOOL m_bIgnoreInvisibleText; +} LAYOUTPROVIDER_STYLE; +class IPDF_LayoutProvider +{ +public: + + virtual ~IPDF_LayoutProvider() {}; + + static IPDF_LayoutProvider* Create_LayoutProvider_TaggedPDF(CPDF_PageObjects* pPageObjs); + + static IPDF_LayoutProvider* Create_LayoutProvider_AutoReflow(CPDF_PageObjects* pPageObjs, FX_BOOL bReadOrder); + + virtual void SetLayoutProviderStyle(LAYOUTPROVIDER_STYLE Style) = 0; + + + + + virtual LayoutStatus StartLoad(IFX_Pause* pPause = NULL) = 0; + + virtual LayoutStatus Continue() = 0; + virtual int GetPosition() = 0; + + + virtual IPDF_LayoutElement* GetRoot() = 0; +}; +#endif -- cgit v1.2.3