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