summaryrefslogtreecommitdiff
path: root/core/src/reflow/layoutprovider_taggedpdf.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/reflow/layoutprovider_taggedpdf.cpp')
-rw-r--r--core/src/reflow/layoutprovider_taggedpdf.cpp769
1 files changed, 0 insertions, 769 deletions
diff --git a/core/src/reflow/layoutprovider_taggedpdf.cpp b/core/src/reflow/layoutprovider_taggedpdf.cpp
deleted file mode 100644
index 37eb2ad3cc..0000000000
--- a/core/src/reflow/layoutprovider_taggedpdf.cpp
+++ /dev/null
@@ -1,769 +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
-
-#include "layoutprovider_taggedpdf.h"
-CPDF_LayoutElement::CPDF_LayoutElement()
-{
- m_pTaggedElement = NULL;
- m_pParentElement = NULL;
-}
-CPDF_LayoutElement::~CPDF_LayoutElement()
-{
- m_ObjArray.RemoveAll();
- int size = m_ChildArray.GetSize();
- for(int i = 0; i < size; i++) {
- CPDF_LayoutElement* pChild = (CPDF_LayoutElement*)m_ChildArray.GetAt(i);
- delete pChild;
- pChild = NULL;
- }
- m_ChildArray.RemoveAll();
-}
-LayoutType CPDF_LayoutElement::ConvertLayoutType(const CFX_ByteStringC& name)
-{
- if(name == (const char*)("Document")) {
- return LayoutDocument;
- } else if(name == (const char*)("Part")) {
- return LayoutPart;
- } else if(name == (const char*)("Art")) {
- return LayoutArt;
- } else if(name == (const char*)("Sect")) {
- return LayoutSect;
- } else if(name == (const char*)("Div")) {
- return LayoutDiv;
- } else if(name == (const char*)("BlockQuote")) {
- return LayoutBlockQuote;
- } else if(name == (const char*)("Caption")) {
- return LayoutCaption;
- } else if(name == (const char*)("TOC")) {
- return LayoutTOC;
- } else if(name == (const char*)("TOCI")) {
- return LayoutTOCI;
- } else if(name == (const char*)("Index")) {
- return LayoutIndex;
- } else if(name == (const char*)("NonStruct")) {
- return LayoutNonStruct;
- } else if(name == (const char*)("Private")) {
- return LayoutPrivate;
- } else if(name == (const char*)("P")) {
- return LayoutParagraph;
- } else if(name == (const char*)("H")) {
- return LayoutHeading;
- } else if(name == (const char*)("H1")) {
- return LayoutHeading1;
- } else if(name == (const char*)("H2")) {
- return LayoutHeading2;
- } else if(name == (const char*)("H3")) {
- return LayoutHeading3;
- } else if(name == (const char*)("H4")) {
- return LayoutHeading4;
- } else if(name == (const char*)("H5")) {
- return LayoutHeading5;
- } else if(name == (const char*)("H6")) {
- return LayoutHeading6;
- } else if(name == (const char*)("L")) {
- return LayoutList;
- } else if(name == (const char*)("LI")) {
- return LayoutListItem;
- } else if(name == (const char*)("Lbl")) {
- return LayoutListLabel;
- } else if(name == (const char*)("LBody")) {
- return LayoutListBody;
- } else if(name == (const char*)("Table")) {
- return LayoutTable;
- } else if(name == (const char*)("TR")) {
- return LayoutTableRow;
- } else if(name == (const char*)("TH")) {
- return LayoutTableHeaderCell;
- } else if(name == (const char*)("TD")) {
- return LayoutTableDataCell;
- } else if(name == (const char*)("THead")) {
- return LayoutTableHeaderGroup;
- } else if(name == (const char*)("TBody")) {
- return LayoutTableBodyGroup;
- } else if(name == (const char*)("TFoot")) {
- return LayoutTableFootGroup;
- } else if(name == (const char*)("Span")) {
- return LayoutSpan;
- } else if(name == (const char*)("Quote")) {
- return LayoutQuote;
- } else if(name == (const char*)("Note")) {
- return LayoutNote;
- } else if(name == (const char*)("Reference")) {
- return LayoutReference;
- } else if(name == (const char*)("BibEntry")) {
- return LayoutBibEntry;
- } else if(name == (const char*)("Code")) {
- return LayoutCode;
- } else if(name == (const char*)("Link")) {
- return LayoutLink;
- } else if(name == (const char*)("Annot")) {
- return LayoutAnnot;
- } else if(name == (const char*)("Ruby")) {
- return LayoutRuby;
- } else if(name == (const char*)("RB")) {
- return LayoutRubyBase;
- } else if(name == (const char*)("RT")) {
- return LayoutRubyAnnot;
- } else if(name == (const char*)("RP")) {
- return LayoutRubyPunc;
- } else if(name == (const char*)("Warichu")) {
- return LayoutWarichu;
- } else if(name == (const char*)("WT")) {
- return LayoutWarichuText;
- } else if(name == (const char*)("WP")) {
- return LayoutWarichuPunc;
- } else if(name == (const char*)("Figure")) {
- return LayoutFigure;
- } else if(name == (const char*)("Formula")) {
- return LayoutFormula;
- } else if(name == (const char*)("Form")) {
- return LayoutForm;
- } else {
- return LayoutUnknown;
- }
-}
-CFX_ByteStringC CPDF_LayoutElement::ConvertLayoutType(LayoutType type)
-{
- const CFX_ByteStringC& name = "";
- if(type == LayoutArifact) {
- return "Arifact";
- } else if( type == LayoutDocument) {
- return "Document";
- } else if( type == LayoutPart) {
- return "Part";
- } else if( type == LayoutArt) {
- return "Art";
- } else if( type == LayoutSect) {
- return "Sect";
- } else if( type == LayoutDiv) {
- return "Div";
- } else if( type == LayoutBlockQuote) {
- return "BlockQuote";
- } else if( type == LayoutCaption) {
- return "Caption";
- } else if( type == LayoutTOC) {
- return "TOC";
- } else if( type == LayoutTOCI) {
- return "TOCI";
- } else if( type == LayoutIndex) {
- return "Index";
- } else if( type == LayoutNonStruct) {
- return "NonStruct";
- } else if( type == LayoutPrivate) {
- return "Private";
- } else if( type == LayoutParagraph) {
- return "P";
- } else if( type == LayoutHeading) {
- return "H";
- } else if( type == LayoutHeading1) {
- return "H1";
- } else if( type == LayoutHeading2) {
- return "H2";
- } else if( type == LayoutHeading3) {
- return "H3";
- } else if( type == LayoutHeading4) {
- return "H4";
- } else if( type == LayoutHeading5) {
- return "H5";
- } else if( type == LayoutHeading6) {
- return "H6";
- } else if( type == LayoutList) {
- return "L";
- } else if( type == LayoutListItem) {
- return "LI";
- } else if( type == LayoutListLabel) {
- return "Lbl";
- } else if( type == LayoutListBody) {
- return "LBody";
- } else if( type == LayoutTable) {
- return "Table";
- } else if( type == LayoutTableRow) {
- return "TR";
- } else if( type == LayoutTableHeaderCell) {
- return "TH";
- } else if( type == LayoutTableDataCell) {
- return "TD";
- } else if( type == LayoutTableHeaderGroup) {
- return "THead";
- } else if( type == LayoutTableBodyGroup) {
- return "TBody";
- } else if( type == LayoutTableFootGroup) {
- return "TFoot";
- } else if( type == LayoutSpan) {
- return "Span";
- } else if( type == LayoutQuote) {
- return "Quote";
- } else if( type == LayoutNote) {
- return "Note";
- } else if( type == LayoutReference) {
- return "Reference";
- } else if( type == LayoutBibEntry) {
- return "BibEntry";
- } else if( type == LayoutCode) {
- return "Code";
- } else if( type == LayoutLink) {
- return "Link";
- } else if( type == LayoutAnnot) {
- return "Annot";
- } else if( type == LayoutRuby) {
- return "Ruby";
- } else if( type == LayoutRubyBase) {
- return "RB";
- } else if( type == LayoutRubyAnnot) {
- return "RT";
- } else if( type == LayoutRubyPunc) {
- return "RP";
- } else if( type == LayoutWarichu) {
- return "Warichu";
- } else if( type == LayoutWarichuText) {
- return "WT";
- } else if( type == LayoutWarichuPunc) {
- return "WP";
- } else if( type == LayoutFigure) {
- return "Figure";
- } else if( type == LayoutFormula) {
- return "Formula";
- } else if( type == LayoutForm) {
- return "Form";
- }
- return name;
-}
-CFX_ByteStringC CPDF_LayoutElement::ConvertLayoutAttr(LayoutAttr attr)
-{
- switch(attr) {
- case LayoutArtifactType:
- return "Type";
- case LayoutArtifactAttached:
- return "Attached";
- case LayoutArtifactSubType:
- return "Subtype";
- case LayoutPlacement:
- return "Placement";
- case LayoutWritingMode:
- return "WritingMode";
- case LayoutBackgroundColor:
- return "BackgroundColor";
- case LayoutBorderColor:
- return "BorderColor";
- case LayoutBorderStyle:
- return "BorderStyle";
- case LayoutBorderThickness:
- return "BorderThickness";
- case LayoutPadding:
- return "Padding";
- case LayoutColor:
- return "Color";
- case LayoutSpaceBefore:
- return "SpaceBefore";
- case LayoutSpaceAfter:
- return "SpaceAfter";
- case LayoutStartIndent:
- return "StartIndent";
- case LayoutEndIndent:
- return "EndIndent";
- case LayoutTextIndent:
- return "TextIndent";
- case LayoutTextAlign:
- return "TextAlign";
- case LayoutBBox:
- return "BBox";
- case LayoutWidth:
- return "Width";
- case LayoutHeight:
- return "Height";
- case LayoutBlockAlign:
- return "BlockAlign";
- case LayoutInlineAlign:
- return "InlineAlign";
- case LayoutTBorderStyle:
- return "TBorderStyle";
- case LayoutTPadding:
- return "TPadding";
- case LayoutBaselineShift:
- return "BaselineShift";
- case LayoutLineHeight:
- return "LineHeight";
- case LayoutTextDecorationColor:
- return "TextDecorationColor";
- case LayoutTextDecorationThickness:
- return "TextDecorationThickness";
- case LayoutTextDecorationType:
- return "TextDecorationType";
- case LayoutRubyAlign:
- return "RubyAlign";
- case LayoutRubyPosition:
- return "RubyPosition";
- case LayoutGlyphOrientationVertical:
- return "GlyphOrientationVertical";
- case LayoutColumnCount:
- return "ColumnCount";
- case LayoutColumnGap:
- return "ColumnGap";
- case LayoutColumnWidths:
- return "ColumnWidths";
- case LayoutListNumbering:
- return "ListNumbering";
- case LayoutFieldRole:
- return "Role";
- case LayoutFieldChecked:
- return "checked";
- case LayoutFieldDesc:
- return "Desc";
- case LayoutRowSpan:
- return "RowSpan";
- case LayoutColSpan:
- return "ColSpan";
- case LayoutTableHeaders:
- return "Headers";
- case LayoutTableHeaderScope:
- return "Scope";
- case LayoutTableSummary:
- return "Summary";
- default:
- return "";
- }
-}
-LayoutEnum CPDF_LayoutElement::ConvertLayoutEnum(CFX_ByteStringC Enum)
-{
- if(Enum == "Block") {
- return LayoutBlock;
- } else if (Enum == "Inline") {
- return LayoutInline;
- } else if (Enum == "Before") {
- return LayoutBefore;
- } else if (Enum == "Start") {
- return LayoutStart;
- } else if (Enum == "End") {
- return LayoutEnd;
- } else if (Enum == "LrTb") {
- return LayoutLrTb;
- } else if (Enum == "RlTb") {
- return LayoutRlTb;
- } else if (Enum == "TbRl") {
- return LayoutTbRl;
- } else if (Enum == "None") {
- return LayoutNone;
- } else if (Enum == "Hidden") {
- return LayoutHidden;
- } else if (Enum == "Dotted") {
- return LayoutDotted;
- } else if (Enum == "Dashed") {
- return LayoutDashed;
- } else if (Enum == "Solid") {
- return LayoutSolid;
- } else if (Enum == "Double") {
- return LayoutDouble;
- } else if (Enum == "Groove") {
- return LayoutGroove;
- } else if (Enum == "Ridge") {
- return LayoutRidge;
- } else if (Enum == "Inset") {
- return LayoutInset;
- } else if (Enum == "Outset") {
- return LayoutOutset;
- } else if (Enum == "Normal") {
- return LayoutNormal;
- } else if (Enum == "Auto") {
- return LayoutAuto;
- } else if (Enum == "Center") {
- return LayoutCenter;
- } else if (Enum == "Justify") {
- return LayoutJustify;
- } else if (Enum == "Middle") {
- return LayoutMiddle;
- } else if (Enum == "Underline") {
- return LayoutUnderline;
- } else if (Enum == "Overline") {
- return LayoutOverline;
- } else if (Enum == "LineThrough") {
- return LayoutLineThrough;
- } else if (Enum == "Distribute") {
- return LayoutDistribute;
- } else if (Enum == "Disc") {
- return LayoutDisc;
- } else if (Enum == "Circle") {
- return LayoutCircle;
- } else if (Enum == "Square") {
- return LayoutSquare;
- } else if (Enum == "Decimal") {
- return LayoutDecimal;
- } else if (Enum == "UpperRoman") {
- return LayoutUpperRoman;
- } else if (Enum == "LowerRoman") {
- return LayoutLowerRoman;
- } else if (Enum == "UpperAlpha") {
- return LayoutUpperAlpha;
- } else if (Enum == "LowerAlpha") {
- return LayoutLowerAlpha;
- } else if (Enum == "rb") {
- return LayoutRB;
- } else if (Enum == "cb") {
- return LayoutCB;
- } else if (Enum == "pb") {
- return LayoutPB;
- } else if (Enum == "tv") {
- return LayoutTV;
- } else if (Enum == "on") {
- return LayoutOn;
- } else if (Enum == "off") {
- return LayoutOff;
- } else if (Enum == "neutral") {
- return LayoutNeutral;
- } else if (Enum == "Row") {
- return LayoutRow;
- } else if (Enum == "Column") {
- return LayoutColumn;
- } else if (Enum == "Both") {
- return LayoutBoth;
- } else if (Enum == "Left") {
- return LayoutLeft;
- } else if (Enum == "Top") {
- return LayoutTop;
- } else if (Enum == "Bottom") {
- return LayoutBottom;
- } else if (Enum == "Right") {
- return LayoutRight;
- } else if (Enum == "Pagination") {
- return LayoutPagination;
- } else if (Enum == "Layout") {
- return LayoutLayout;
- } else if (Enum == "Page") {
- return LayoutPage;
- } else if (Enum == "Background") {
- return LayoutBackground;
- } else if (Enum == "Header") {
- return LayoutHeader;
- } else if (Enum == "Footer") {
- return LayoutFooter;
- } else if (Enum == "Watermark") {
- return LayoutWatermark;
- } else {
- return LayoutInvalid;
- }
-}
-LayoutType CPDF_LayoutElement::GetType()
-{
- if(!m_pTaggedElement) {
- return LayoutUnknown;
- }
- CFX_ByteString name = m_pTaggedElement->GetType();
- return ConvertLayoutType(name);
-}
-int CPDF_LayoutElement::CountAttrValues(LayoutAttr attr_type)
-{
- if(!m_pTaggedElement) {
- return 0;
- }
- CPDF_Object* pObj = m_pTaggedElement->GetAttr(GetAttrOwner(attr_type), ConvertLayoutAttr(attr_type), IsInheritable(attr_type));
- if(pObj) {
- return 1;
- } else {
- return 0;
- }
-}
-LayoutEnum CPDF_LayoutElement::GetEnumAttr(LayoutAttr attr_type, int index)
-{
- if(!m_pTaggedElement) {
- return LayoutInvalid;
- }
- CFX_ByteStringC owner = GetAttrOwner(attr_type);
- CFX_ByteStringC default_value = GetDefaultNameValue(attr_type);
- CFX_ByteStringC AttrName = ConvertLayoutAttr(attr_type);
- CFX_ByteString AttrValue = m_pTaggedElement->GetName(owner, AttrName, default_value, IsInheritable(attr_type), index);
- return ConvertLayoutEnum(AttrValue);
-}
-CFX_ByteStringC CPDF_LayoutElement::GetAttrOwner(LayoutAttr attr_type)
-{
- switch(attr_type) {
- case LayoutListNumbering:
- return "List";
- case LayoutFieldRole:
- case LayoutFieldChecked :
- case LayoutFieldDesc:
- return "PrintField";
- case LayoutRowSpan:
- case LayoutColSpan:
- case LayoutTableHeaders:
- case LayoutTableHeaderScope:
- case LayoutTableSummary:
- return "Table";
- default:
- return "Layout";
- }
-}
-FX_FLOAT CPDF_LayoutElement::GetNumberAttr(LayoutAttr attr_type, int index)
-{
- if(!m_pTaggedElement) {
- return 0;
- }
- CFX_ByteStringC owner = GetAttrOwner(attr_type);
- FX_FLOAT default_value = GetDefaultFloatValue(attr_type);
- CFX_ByteStringC AttrName = ConvertLayoutAttr(attr_type);
- FX_FLOAT f = m_pTaggedElement->GetNumber(owner, AttrName, default_value, IsInheritable(attr_type), index);
- if(attr_type == LayoutWidth && !f) {
- f = m_pTaggedElement->GetNumber("Table", AttrName, default_value, IsInheritable(attr_type), index);
- }
- return f;
-}
-FX_COLORREF CPDF_LayoutElement::GetColorAttr(LayoutAttr attr_type, int index)
-{
- if(!m_pTaggedElement) {
- return 0;
- }
- CFX_ByteStringC owner = GetAttrOwner(attr_type);
- FX_COLORREF default_value = GetDefaultColorValue(attr_type);
- CFX_ByteStringC AttrName = ConvertLayoutAttr(attr_type);
- FX_ARGB f = m_pTaggedElement->GetColor(owner, AttrName, default_value, IsInheritable(attr_type), index);
- return f;
-}
-FX_FLOAT CPDF_LayoutElement::GetDefaultFloatValue(LayoutAttr attr_type)
-{
- switch(attr_type) {
- case LayoutColumnCount:
- return 1;
- case LayoutRowSpan:
- return 1;
- case LayoutColSpan:
- return 1;
- default:
- return 0;
- }
-}
-FX_COLORREF CPDF_LayoutElement::GetDefaultColorValue(LayoutAttr attr_type)
-{
- return -1;
-}
-CFX_ByteStringC CPDF_LayoutElement::GetDefaultNameValue(LayoutAttr attr_type)
-{
- switch(attr_type) {
- case LayoutPlacement:
- return "Inline";
- case LayoutWritingMode:
- return "LrTb";
- case LayoutBorderStyle:
- return "None";
- case LayoutTextAlign:
- return "Start";
- case LayoutBlockAlign:
- return "Before";
- case LayoutInlineAlign:
- return "Start";
- case LayoutTBorderStyle:
- return "None";
- case LayoutTextDecorationType:
- return "None";
- case LayoutRubyAlign:
- return "Distribute";
- case LayoutRubyPosition:
- return "Before";
- case LayoutGlyphOrientationVertical:
- return "Auto";
- case LayoutListNumbering:
- return "None";
- case LayoutFieldRole:
- return "None";
- default:
- return "";
- }
-}
-FX_BOOL CPDF_LayoutElement::IsInheritable(LayoutAttr type)
-{
- switch(type) {
- case LayoutWritingMode:
- case LayoutTextAlign:
- case LayoutBlockAlign:
- case LayoutInlineAlign:
- case LayoutLineHeight:
- case LayoutGlyphOrientationVertical:
- case LayoutRubyAlign:
- case LayoutRubyPosition:
- case LayoutBorderThickness:
- case LayoutStartIndent:
- case LayoutEndIndent:
- case LayoutTextIndent:
- case LayoutTPadding:
- case LayoutTextDecorationThickness:
- case LayoutBorderColor:
- case LayoutColor:
- case LayoutTextDecorationColor:
- return TRUE;
- default:
- return FALSE;
- }
-}
-int CPDF_LayoutElement::CountChildren()
-{
- return m_ChildArray.GetSize();
-}
-IPDF_LayoutElement* CPDF_LayoutElement::GetChild(int index)
-{
- return (IPDF_LayoutElement*)m_ChildArray.GetAt(index);
-}
-IPDF_LayoutElement* CPDF_LayoutElement::GetParent()
-{
- return m_pParentElement;
-}
-int CPDF_LayoutElement::CountObjects()
-{
- if(m_pTaggedElement == NULL) {
- return 0;
- }
- CFX_PtrArray* pObj = &m_ObjArray;
- int size = pObj->GetSize();
- return size;
-}
-CPDF_PageObject* CPDF_LayoutElement::GetObject(int index)
-{
- if(m_pTaggedElement == NULL) {
- return NULL;
- }
- CFX_PtrArray *pObj = &m_ObjArray;
- int size = pObj->GetSize();
- if(index < size) {
- return (CPDF_PageObject*)pObj->GetAt(index);
- }
- return NULL;
-}
-FX_BOOL CPDF_LayoutElement::AddObject(CPDF_PageObject* pObj)
-{
- return m_ObjArray.Add(pObj);
-}
-IPDF_LayoutProvider* IPDF_LayoutProvider::Create_LayoutProvider_TaggedPDF(CPDF_PageObjects* pPage)
-{
- if(pPage == NULL) {
- return NULL;
- }
- CPDF_LayoutProvider_TaggedPDF* pProvider = new CPDF_LayoutProvider_TaggedPDF;
- pProvider->Init(pPage);
- return pProvider;
-}
-CPDF_LayoutProvider_TaggedPDF::CPDF_LayoutProvider_TaggedPDF()
-{
- m_pPause = NULL;
- m_pRoot = NULL;
- m_pPageTree = NULL;
- m_pCurTaggedElement = NULL;
-}
-CPDF_LayoutProvider_TaggedPDF::~CPDF_LayoutProvider_TaggedPDF()
-{
- m_pCurTaggedElement = NULL;
- m_pPause = NULL;
- if(m_pRoot) {
- delete m_pRoot;
- }
- m_pRoot = NULL;
- if(m_pPageTree) {
- delete m_pPageTree;
- }
- m_pPageTree = NULL;
-}
-void CPDF_LayoutProvider_TaggedPDF::ProcessElement(CPDF_LayoutElement*pParent, CPDF_StructElement* pTaggedElement)
-{
- if(!pTaggedElement) {
- return;
- }
- if(!pParent) {
- m_Status = LayoutError;
- return;
- }
- CPDF_LayoutElement* pElement = new CPDF_LayoutElement;
- pElement->m_pParentElement = pParent;
- pElement->m_pTaggedElement = pTaggedElement;
- pParent->m_ChildArray.Add(pElement);
- int count = pTaggedElement->CountKids();
- for(int i = 0; i < count; i++) {
- CPDF_StructKid Kid = pTaggedElement->GetKid(i);
- switch(Kid.m_Type) {
- case CPDF_StructKid::Element: {
- ProcessElement(pElement, Kid.m_Element.m_pElement);
- if(m_Status != LayoutReady) {
- return ;
- }
- }
- break;
- case CPDF_StructKid::PageContent: {
- int count = m_pPage->CountObjects();
- FX_POSITION pos = m_pPage->GetFirstObjectPosition();
- if(!pos) {
- m_Status = LayoutError;
- return ;
- }
- while (pos) {
- CPDF_PageObject* pObj = m_pPage->GetNextObject(pos);
- int pbjMCID = pObj->m_ContentMark.GetMCID();
- if((FX_DWORD)(pObj->m_ContentMark.GetMCID()) == Kid.m_PageContent.m_ContentId) {
- pElement->AddObject(pObj);
- }
- }
- }
- break;
- case CPDF_StructKid::StreamContent:
- case CPDF_StructKid::Object:
- default:
- break;
- }
- }
-}
-LayoutStatus CPDF_LayoutProvider_TaggedPDF::StartLoad(IFX_Pause* pPause)
-{
- m_pPause = pPause;
- if(m_pPage->m_pDocument && m_pPage->m_pFormDict) {
- m_pPageTree = CPDF_StructTree::LoadPage(m_pPage->m_pDocument, m_pPage->m_pFormDict);
- }
- if(!m_pPageTree) {
- m_Status = LayoutError;
- return LayoutError;
- }
- int count = m_pPageTree->CountTopElements();
- if(count == 0) {
- m_Status = LayoutError;
- return LayoutError;
- }
- m_pRoot = new CPDF_LayoutElement;
- for(int i = 0; i < count; i++) {
- CPDF_StructElement* pElement = m_pPageTree->GetTopElement(i);
- if(pElement) {
- ProcessElement(m_pRoot, pElement);
- if(m_Status != LayoutReady) {
- return m_Status;
- }
- }
- }
- m_pCurTaggedElement = NULL;
- m_Status = LayoutFinished;
- return LayoutFinished;
-}
-LayoutStatus CPDF_LayoutProvider_TaggedPDF::Continue()
-{
- if(!m_pCurTaggedElement) {
- return LayoutError;
- }
- if(m_Status != LayoutToBeContinued) {
- return LayoutError;
- }
- m_Status = LayoutReady;
- int count = m_pPageTree->CountTopElements();
- for(int i = 0; i < count; i++) {
- CPDF_StructElement* pElement = m_pPageTree->GetTopElement(i);
- if(pElement) {
- ProcessElement(m_pRoot, pElement);
- if(m_Status != LayoutReady) {
- return m_Status;
- }
- }
- }
- m_pCurTaggedElement = NULL;
- m_Status = LayoutFinished;
- return LayoutFinished;
-}
-int CPDF_LayoutProvider_TaggedPDF::GetPosition()
-{
- if(m_TopElementIndex == 0) {
- return 0;
- }
- int count = m_pPageTree->CountTopElements();
- return m_TopElementIndex / count * 100;
-}