| // 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 |