1ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Copyright 2014 PDFium Authors. All rights reserved. 2ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Use of this source code is governed by a BSD-style license that can be 3ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// found in the LICENSE file. 4ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 5ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 7ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "layoutprovider_taggedpdf.h" 8ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCPDF_LayoutElement::CPDF_LayoutElement() 9ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 10ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pTaggedElement = NULL; 11ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pParentElement = NULL; 12ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 13ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCPDF_LayoutElement::~CPDF_LayoutElement() 14ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 15ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_ObjArray.RemoveAll(); 16ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int size = m_ChildArray.GetSize(); 17ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov for(int i = 0; i < size; i++) { 18ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_LayoutElement* pChild = (CPDF_LayoutElement*)m_ChildArray.GetAt(i); 19ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov delete pChild; 20ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pChild = NULL; 21ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 22ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_ChildArray.RemoveAll(); 23ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 24ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovLayoutType CPDF_LayoutElement::ConvertLayoutType(FX_BSTR name) 25ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 26ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(name == (const char*)("Document")) { 27ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutDocument; 28ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if(name == (const char*)("Part")) { 29ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutPart; 30ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if(name == (const char*)("Art")) { 31ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutArt; 32ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if(name == (const char*)("Sect")) { 33ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutSect; 34ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if(name == (const char*)("Div")) { 35ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutDiv; 36ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if(name == (const char*)("BlockQuote")) { 37ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutBlockQuote; 38ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if(name == (const char*)("Caption")) { 39ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutCaption; 40ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if(name == (const char*)("TOC")) { 41ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutTOC; 42ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if(name == (const char*)("TOCI")) { 43ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutTOCI; 44ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if(name == (const char*)("Index")) { 45ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutIndex; 46ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if(name == (const char*)("NonStruct")) { 47ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutNonStruct; 48ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if(name == (const char*)("Private")) { 49ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutPrivate; 50ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if(name == (const char*)("P")) { 51ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutParagraph; 52ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if(name == (const char*)("H")) { 53ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutHeading; 54ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if(name == (const char*)("H1")) { 55ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutHeading1; 56ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if(name == (const char*)("H2")) { 57ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutHeading2; 58ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if(name == (const char*)("H3")) { 59ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutHeading3; 60ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if(name == (const char*)("H4")) { 61ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutHeading4; 62ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if(name == (const char*)("H5")) { 63ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutHeading5; 64ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if(name == (const char*)("H6")) { 65ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutHeading6; 66ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if(name == (const char*)("L")) { 67ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutList; 68ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if(name == (const char*)("LI")) { 69ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutListItem; 70ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if(name == (const char*)("Lbl")) { 71ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutListLabel; 72ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if(name == (const char*)("LBody")) { 73ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutListBody; 74ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if(name == (const char*)("Table")) { 75ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutTable; 76ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if(name == (const char*)("TR")) { 77ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutTableRow; 78ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if(name == (const char*)("TH")) { 79ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutTableHeaderCell; 80ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if(name == (const char*)("TD")) { 81ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutTableDataCell; 82ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if(name == (const char*)("THead")) { 83ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutTableHeaderGroup; 84ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if(name == (const char*)("TBody")) { 85ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutTableBodyGroup; 86ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if(name == (const char*)("TFoot")) { 87ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutTableFootGroup; 88ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if(name == (const char*)("Span")) { 89ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutSpan; 90ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if(name == (const char*)("Quote")) { 91ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutQuote; 92ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if(name == (const char*)("Note")) { 93ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutNote; 94ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if(name == (const char*)("Reference")) { 95ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutReference; 96ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if(name == (const char*)("BibEntry")) { 97ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutBibEntry; 98ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if(name == (const char*)("Code")) { 99ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutCode; 100ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if(name == (const char*)("Link")) { 101ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutLink; 102ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if(name == (const char*)("Annot")) { 103ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutAnnot; 104ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if(name == (const char*)("Ruby")) { 105ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutRuby; 106ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if(name == (const char*)("RB")) { 107ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutRubyBase; 108ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if(name == (const char*)("RT")) { 109ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutRubyAnnot; 110ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if(name == (const char*)("RP")) { 111ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutRubyPunc; 112ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if(name == (const char*)("Warichu")) { 113ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutWarichu; 114ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if(name == (const char*)("WT")) { 115ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutWarichuText; 116ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if(name == (const char*)("WP")) { 117ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutWarichuPunc; 118ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if(name == (const char*)("Figure")) { 119ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutFigure; 120ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if(name == (const char*)("Formula")) { 121ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutFormula; 122ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if(name == (const char*)("Form")) { 123ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutForm; 124ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else { 125ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutUnknown; 126ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 127ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 128ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCFX_ByteStringC CPDF_LayoutElement::ConvertLayoutType(LayoutType type) 129ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 130ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_BSTR name = ""; 131ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(type == LayoutArifact) { 132ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "Arifact"; 133ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if( type == LayoutDocument) { 134ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "Document"; 135ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if( type == LayoutPart) { 136ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "Part"; 137ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if( type == LayoutArt) { 138ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "Art"; 139ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if( type == LayoutSect) { 140ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "Sect"; 141ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if( type == LayoutDiv) { 142ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "Div"; 143ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if( type == LayoutBlockQuote) { 144ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "BlockQuote"; 145ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if( type == LayoutCaption) { 146ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "Caption"; 147ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if( type == LayoutTOC) { 148ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "TOC"; 149ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if( type == LayoutTOCI) { 150ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "TOCI"; 151ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if( type == LayoutIndex) { 152ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "Index"; 153ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if( type == LayoutNonStruct) { 154ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "NonStruct"; 155ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if( type == LayoutPrivate) { 156ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "Private"; 157ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if( type == LayoutParagraph) { 158ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "P"; 159ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if( type == LayoutHeading) { 160ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "H"; 161ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if( type == LayoutHeading1) { 162ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "H1"; 163ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if( type == LayoutHeading2) { 164ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "H2"; 165ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if( type == LayoutHeading3) { 166ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "H3"; 167ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if( type == LayoutHeading4) { 168ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "H4"; 169ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if( type == LayoutHeading5) { 170ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "H5"; 171ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if( type == LayoutHeading6) { 172ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "H6"; 173ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if( type == LayoutList) { 174ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "L"; 175ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if( type == LayoutListItem) { 176ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "LI"; 177ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if( type == LayoutListLabel) { 178ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "Lbl"; 179ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if( type == LayoutListBody) { 180ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "LBody"; 181ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if( type == LayoutTable) { 182ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "Table"; 183ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if( type == LayoutTableRow) { 184ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "TR"; 185ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if( type == LayoutTableHeaderCell) { 186ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "TH"; 187ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if( type == LayoutTableDataCell) { 188ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "TD"; 189ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if( type == LayoutTableHeaderGroup) { 190ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "THead"; 191ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if( type == LayoutTableBodyGroup) { 192ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "TBody"; 193ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if( type == LayoutTableFootGroup) { 194ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "TFoot"; 195ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if( type == LayoutSpan) { 196ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "Span"; 197ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if( type == LayoutQuote) { 198ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "Quote"; 199ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if( type == LayoutNote) { 200ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "Note"; 201ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if( type == LayoutReference) { 202ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "Reference"; 203ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if( type == LayoutBibEntry) { 204ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "BibEntry"; 205ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if( type == LayoutCode) { 206ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "Code"; 207ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if( type == LayoutLink) { 208ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "Link"; 209ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if( type == LayoutAnnot) { 210ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "Annot"; 211ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if( type == LayoutRuby) { 212ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "Ruby"; 213ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if( type == LayoutRubyBase) { 214ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "RB"; 215ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if( type == LayoutRubyAnnot) { 216ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "RT"; 217ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if( type == LayoutRubyPunc) { 218ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "RP"; 219ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if( type == LayoutWarichu) { 220ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "Warichu"; 221ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if( type == LayoutWarichuText) { 222ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "WT"; 223ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if( type == LayoutWarichuPunc) { 224ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "WP"; 225ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if( type == LayoutFigure) { 226ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "Figure"; 227ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if( type == LayoutFormula) { 228ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "Formula"; 229ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if( type == LayoutForm) { 230ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "Form"; 231ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 232ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return name; 233ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 234ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCFX_ByteStringC CPDF_LayoutElement::ConvertLayoutAttr(LayoutAttr attr) 235ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 236ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov switch(attr) { 237ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutArtifactType: 238ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "Type"; 239ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutArtifactAttached: 240ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "Attached"; 241ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutArtifactSubType: 242ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "Subtype"; 243ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutPlacement: 244ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "Placement"; 245ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutWritingMode: 246ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "WritingMode"; 247ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutBackgroundColor: 248ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "BackgroundColor"; 249ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutBorderColor: 250ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "BorderColor"; 251ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutBorderStyle: 252ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "BorderStyle"; 253ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutBorderThickness: 254ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "BorderThickness"; 255ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutPadding: 256ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "Padding"; 257ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutColor: 258ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "Color"; 259ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutSpaceBefore: 260ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "SpaceBefore"; 261ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutSpaceAfter: 262ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "SpaceAfter"; 263ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutStartIndent: 264ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "StartIndent"; 265ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutEndIndent: 266ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "EndIndent"; 267ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutTextIndent: 268ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "TextIndent"; 269ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutTextAlign: 270ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "TextAlign"; 271ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutBBox: 272ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "BBox"; 273ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutWidth: 274ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "Width"; 275ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutHeight: 276ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "Height"; 277ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutBlockAlign: 278ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "BlockAlign"; 279ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutInlineAlign: 280ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "InlineAlign"; 281ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutTBorderStyle: 282ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "TBorderStyle"; 283ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutTPadding: 284ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "TPadding"; 285ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutBaselineShift: 286ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "BaselineShift"; 287ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutLineHeight: 288ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "LineHeight"; 289ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutTextDecorationColor: 290ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "TextDecorationColor"; 291ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutTextDecorationThickness: 292ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "TextDecorationThickness"; 293ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutTextDecorationType: 294ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "TextDecorationType"; 295ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutRubyAlign: 296ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "RubyAlign"; 297ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutRubyPosition: 298ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "RubyPosition"; 299ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutGlyphOrientationVertical: 300ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "GlyphOrientationVertical"; 301ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutColumnCount: 302ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "ColumnCount"; 303ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutColumnGap: 304ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "ColumnGap"; 305ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutColumnWidths: 306ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "ColumnWidths"; 307ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutListNumbering: 308ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "ListNumbering"; 309ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutFieldRole: 310ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "Role"; 311ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutFieldChecked: 312ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "checked"; 313ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutFieldDesc: 314ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "Desc"; 315ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutRowSpan: 316ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "RowSpan"; 317ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutColSpan: 318ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "ColSpan"; 319ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutTableHeaders: 320ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "Headers"; 321ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutTableHeaderScope: 322ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "Scope"; 323ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutTableSummary: 324ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "Summary"; 325ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov default: 326ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return ""; 327ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 328ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 329ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovLayoutEnum CPDF_LayoutElement::ConvertLayoutEnum(CFX_ByteStringC Enum) 330ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 331ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(Enum == "Block") { 332ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutBlock; 333ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if (Enum == "Inline") { 334ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutInline; 335ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if (Enum == "Before") { 336ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutBefore; 337ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if (Enum == "Start") { 338ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutStart; 339ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if (Enum == "End") { 340ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutEnd; 341ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if (Enum == "LrTb") { 342ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutLrTb; 343ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if (Enum == "RlTb") { 344ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutRlTb; 345ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if (Enum == "TbRl") { 346ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutTbRl; 347ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if (Enum == "None") { 348ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutNone; 349ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if (Enum == "Hidden") { 350ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutHidden; 351ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if (Enum == "Dotted") { 352ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutDotted; 353ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if (Enum == "Dashed") { 354ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutDashed; 355ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if (Enum == "Solid") { 356ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutSolid; 357ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if (Enum == "Double") { 358ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutDouble; 359ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if (Enum == "Groove") { 360ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutGroove; 361ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if (Enum == "Ridge") { 362ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutRidge; 363ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if (Enum == "Inset") { 364ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutInset; 365ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if (Enum == "Outset") { 366ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutOutset; 367ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if (Enum == "Normal") { 368ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutNormal; 369ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if (Enum == "Auto") { 370ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutAuto; 371ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if (Enum == "Center") { 372ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutCenter; 373ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if (Enum == "Justify") { 374ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutJustify; 375ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if (Enum == "Middle") { 376ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutMiddle; 377ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if (Enum == "Underline") { 378ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutUnderline; 379ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if (Enum == "Overline") { 380ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutOverline; 381ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if (Enum == "LineThrough") { 382ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutLineThrough; 383ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if (Enum == "Distribute") { 384ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutDistribute; 385ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if (Enum == "Disc") { 386ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutDisc; 387ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if (Enum == "Circle") { 388ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutCircle; 389ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if (Enum == "Square") { 390ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutSquare; 391ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if (Enum == "Decimal") { 392ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutDecimal; 393ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if (Enum == "UpperRoman") { 394ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutUpperRoman; 395ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if (Enum == "LowerRoman") { 396ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutLowerRoman; 397ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if (Enum == "UpperAlpha") { 398ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutUpperAlpha; 399ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if (Enum == "LowerAlpha") { 400ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutLowerAlpha; 401ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if (Enum == "rb") { 402ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutRB; 403ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if (Enum == "cb") { 404ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutCB; 405ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if (Enum == "pb") { 406ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutPB; 407ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if (Enum == "tv") { 408ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutTV; 409ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if (Enum == "on") { 410ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutOn; 411ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if (Enum == "off") { 412ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutOff; 413ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if (Enum == "neutral") { 414ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutNeutral; 415ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if (Enum == "Row") { 416ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutRow; 417ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if (Enum == "Column") { 418ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutColumn; 419ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if (Enum == "Both") { 420ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutBoth; 421ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if (Enum == "Left") { 422ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutLeft; 423ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if (Enum == "Top") { 424ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutTop; 425ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if (Enum == "Bottom") { 426ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutBottom; 427ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if (Enum == "Right") { 428ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutRight; 429ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if (Enum == "Pagination") { 430ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutPagination; 431ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if (Enum == "Layout") { 432ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutLayout; 433ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if (Enum == "Page") { 434ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutPage; 435ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if (Enum == "Background") { 436ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutBackground; 437ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if (Enum == "Header") { 438ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutHeader; 439ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if (Enum == "Footer") { 440ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutFooter; 441ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else if (Enum == "Watermark") { 442ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutWatermark; 443ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else { 444ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutInvalid; 445ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 446ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 447ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovLayoutType CPDF_LayoutElement::GetType() 448ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 449ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(!m_pTaggedElement) { 450ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutUnknown; 451ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 452ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteString name = m_pTaggedElement->GetType(); 453ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return this->ConvertLayoutType(name); 454ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 455ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovint CPDF_LayoutElement::CountAttrValues(LayoutAttr attr_type) 456ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 457ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(!m_pTaggedElement) { 458ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return 0; 459ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 460ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_Object* pObj = m_pTaggedElement->GetAttr(GetAttrOwner(attr_type), ConvertLayoutAttr(attr_type), IsInheritable(attr_type)); 461ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(pObj) { 462ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return 1; 463ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } else { 464ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return 0; 465ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 466ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 467ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovLayoutEnum CPDF_LayoutElement::GetEnumAttr(LayoutAttr attr_type, int index) 468ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 469ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(!m_pTaggedElement) { 470ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutInvalid; 471ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 472ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteStringC owner = GetAttrOwner(attr_type); 473ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteStringC default_value = GetDefaultNameValue(attr_type); 474ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteStringC AttrName = ConvertLayoutAttr(attr_type); 475ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteString AttrValue = m_pTaggedElement->GetName(owner, AttrName, default_value, IsInheritable(attr_type), index); 476ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return ConvertLayoutEnum(AttrValue); 477ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 478ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCFX_ByteStringC CPDF_LayoutElement::GetAttrOwner(LayoutAttr attr_type) 479ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 480ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov switch(attr_type) { 481ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutListNumbering: 482ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "List"; 483ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutFieldRole: 484ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutFieldChecked : 485ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutFieldDesc: 486ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "PrintField"; 487ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutRowSpan: 488ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutColSpan: 489ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutTableHeaders: 490ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutTableHeaderScope: 491ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutTableSummary: 492ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "Table"; 493ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov default: 494ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "Layout"; 495ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 496ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 497ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_FLOAT CPDF_LayoutElement::GetNumberAttr(LayoutAttr attr_type, int index) 498ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 499ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(!m_pTaggedElement) { 500ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return 0; 501ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 502ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteStringC owner = GetAttrOwner(attr_type); 503ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT default_value = GetDefaultFloatValue(attr_type); 504ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteStringC AttrName = ConvertLayoutAttr(attr_type); 505ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_FLOAT f = m_pTaggedElement->GetNumber(owner, AttrName, default_value, IsInheritable(attr_type), index); 506ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(attr_type == LayoutWidth && !f) { 507ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov f = m_pTaggedElement->GetNumber("Table", AttrName, default_value, IsInheritable(attr_type), index); 508ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 509ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return f; 510ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 511ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_COLORREF CPDF_LayoutElement::GetColorAttr(LayoutAttr attr_type, int index) 512ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 513ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(!m_pTaggedElement) { 514ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return 0; 515ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 516ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteStringC owner = GetAttrOwner(attr_type); 517ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_COLORREF default_value = GetDefaultColorValue(attr_type); 518ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_ByteStringC AttrName = ConvertLayoutAttr(attr_type); 519ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_ARGB f = m_pTaggedElement->GetColor(owner, AttrName, default_value, IsInheritable(attr_type), index); 520ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return f; 521ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 522ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_FLOAT CPDF_LayoutElement::GetDefaultFloatValue(LayoutAttr attr_type) 523ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 524ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov switch(attr_type) { 525ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutColumnCount: 526ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return 1; 527ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutRowSpan: 528ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return 1; 529ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutColSpan: 530ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return 1; 531ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov default: 532ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return 0; 533ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 534ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 535ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_COLORREF CPDF_LayoutElement::GetDefaultColorValue(LayoutAttr attr_type) 536ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 537ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return -1; 538ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 539ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCFX_ByteStringC CPDF_LayoutElement::GetDefaultNameValue(LayoutAttr attr_type) 540ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 541ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov switch(attr_type) { 542ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutPlacement: 543ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "Inline"; 544ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutWritingMode: 545ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "LrTb"; 546ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutBorderStyle: 547ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "None"; 548ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutTextAlign: 549ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "Start"; 550ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutBlockAlign: 551ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "Before"; 552ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutInlineAlign: 553ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "Start"; 554ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutTBorderStyle: 555ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "None"; 556ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutTextDecorationType: 557ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "None"; 558ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutRubyAlign: 559ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "Distribute"; 560ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutRubyPosition: 561ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "Before"; 562ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutGlyphOrientationVertical: 563ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "Auto"; 564ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutListNumbering: 565ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "None"; 566ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutFieldRole: 567ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return "None"; 568ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov default: 569ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return ""; 570ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 571ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 572ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CPDF_LayoutElement::IsInheritable(LayoutAttr type) 573ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 574ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov switch(type) { 575ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutWritingMode: 576ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutTextAlign: 577ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutBlockAlign: 578ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutInlineAlign: 579ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutLineHeight: 580ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutGlyphOrientationVertical: 581ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutRubyAlign: 582ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutRubyPosition: 583ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutBorderThickness: 584ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutStartIndent: 585ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutEndIndent: 586ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutTextIndent: 587ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutTPadding: 588ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutTextDecorationThickness: 589ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutBorderColor: 590ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutColor: 591ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case LayoutTextDecorationColor: 592ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return TRUE; 593ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov default: 594ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return FALSE; 595ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 596ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 597ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovint CPDF_LayoutElement::CountChildren() 598ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 599ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_ChildArray.GetSize(); 600ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 601ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovIPDF_LayoutElement* CPDF_LayoutElement::GetChild(int index) 602ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 603ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return (IPDF_LayoutElement*)m_ChildArray.GetAt(index); 604ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 605ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovIPDF_LayoutElement* CPDF_LayoutElement::GetParent() 606ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 607ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_pParentElement; 608ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 609ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovint CPDF_LayoutElement::CountObjects() 610ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 611ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(m_pTaggedElement == NULL) { 612ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return 0; 613ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 614ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_PtrArray* pObj = &m_ObjArray; 615ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int size = pObj->GetSize(); 616ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return size; 617ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 618ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCPDF_PageObject* CPDF_LayoutElement::GetObject(int index) 619ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 620ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(m_pTaggedElement == NULL) { 621ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return NULL; 622ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 623ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CFX_PtrArray *pObj = &m_ObjArray; 624ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int size = pObj->GetSize(); 625ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(index < size) { 626ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return (CPDF_PageObject*)pObj->GetAt(index); 627ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 628ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return NULL; 629ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 630ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CPDF_LayoutElement::AddObject(CPDF_PageObject* pObj) 631ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 632ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_ObjArray.Add(pObj); 633ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 634ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovIPDF_LayoutProvider* IPDF_LayoutProvider::Create_LayoutProvider_TaggedPDF(CPDF_PageObjects* pPage) 635ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 636ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(pPage == NULL) { 637ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return NULL; 638ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 639e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_LayoutProvider_TaggedPDF* pProvider = new CPDF_LayoutProvider_TaggedPDF; 640ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pProvider->Init(pPage); 641ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return pProvider; 642ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 643ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCPDF_LayoutProvider_TaggedPDF::CPDF_LayoutProvider_TaggedPDF() 644ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 645ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pPause = NULL; 646ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pRoot = NULL; 647ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pPageTree = NULL; 648ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pCurTaggedElement = NULL; 649ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 650ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCPDF_LayoutProvider_TaggedPDF::~CPDF_LayoutProvider_TaggedPDF() 651ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 652ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pCurTaggedElement = NULL; 653ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pPause = NULL; 654ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(m_pRoot) { 655ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov delete m_pRoot; 656ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 657ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pRoot = NULL; 658ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(m_pPageTree) { 659ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov delete m_pPageTree; 660ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 661ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pPageTree = NULL; 662ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 663ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CPDF_LayoutProvider_TaggedPDF::ProcessElement(CPDF_LayoutElement*pParent, CPDF_StructElement* pTaggedElement) 664ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 665ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(!pTaggedElement) { 666ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return; 667ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 668ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(!pParent) { 669ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_Status = LayoutError; 670ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return; 671ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 672e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov CPDF_LayoutElement* pElement = new CPDF_LayoutElement; 673ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pElement->m_pParentElement = pParent; 674ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pElement->m_pTaggedElement = pTaggedElement; 675ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pParent->m_ChildArray.Add(pElement); 676ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int count = pTaggedElement->CountKids(); 677ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov for(int i = 0; i < count; i++) { 678ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_StructKid Kid = pTaggedElement->GetKid(i); 679ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov switch(Kid.m_Type) { 680ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case CPDF_StructKid::Element: { 681ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ProcessElement(pElement, Kid.m_Element.m_pElement); 682ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(m_Status != LayoutReady) { 683ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return ; 684ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 685ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 686ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 687ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case CPDF_StructKid::PageContent: { 688ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int count = m_pPage->CountObjects(); 689ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FX_POSITION pos = m_pPage->GetFirstObjectPosition(); 690ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(!pos) { 691ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_Status = LayoutError; 692ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return ; 693ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 694ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov while (pos) { 695ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_PageObject* pObj = m_pPage->GetNextObject(pos); 696ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int pbjMCID = pObj->m_ContentMark.GetMCID(); 697ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if((FX_DWORD)(pObj->m_ContentMark.GetMCID()) == Kid.m_PageContent.m_ContentId) { 698ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pElement->AddObject(pObj); 699ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 700ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 701ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 702ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 703ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case CPDF_StructKid::StreamContent: 704ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov case CPDF_StructKid::Object: 705ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov default: 706ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov break; 707ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 708ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 709ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 710ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovLayoutStatus CPDF_LayoutProvider_TaggedPDF::StartLoad(IFX_Pause* pPause) 711ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 712ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pPause = pPause; 713ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(m_pPage->m_pDocument && m_pPage->m_pFormDict) { 714ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pPageTree = CPDF_StructTree::LoadPage(m_pPage->m_pDocument, m_pPage->m_pFormDict); 715ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 716ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(!m_pPageTree) { 717ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_Status = LayoutError; 718ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutError; 719ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 720ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int count = m_pPageTree->CountTopElements(); 721ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(count == 0) { 722ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_Status = LayoutError; 723ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutError; 724ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 725e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov m_pRoot = new CPDF_LayoutElement; 726ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov for(int i = 0; i < count; i++) { 727ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_StructElement* pElement = m_pPageTree->GetTopElement(i); 728ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(pElement) { 729ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ProcessElement(m_pRoot, pElement); 730ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(m_Status != LayoutReady) { 731ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_Status; 732ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 733ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 734ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 735ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pCurTaggedElement = NULL; 736ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_Status = LayoutFinished; 737ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutFinished; 738ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 739ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovLayoutStatus CPDF_LayoutProvider_TaggedPDF::Continue() 740ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 741ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(!m_pCurTaggedElement) { 742ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutError; 743ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 744ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(m_Status != LayoutToBeContinued) { 745ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutError; 746ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 747ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_Status = LayoutReady; 748ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int count = m_pPageTree->CountTopElements(); 749ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov for(int i = 0; i < count; i++) { 750ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov CPDF_StructElement* pElement = m_pPageTree->GetTopElement(i); 751ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(pElement) { 752ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ProcessElement(m_pRoot, pElement); 753ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(m_Status != LayoutReady) { 754ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_Status; 755ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 756ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 757ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 758ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pCurTaggedElement = NULL; 759ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_Status = LayoutFinished; 760ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return LayoutFinished; 761ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 762ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovint CPDF_LayoutProvider_TaggedPDF::GetPosition() 763ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 764ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if(m_TopElementIndex == 0) { 765ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return 0; 766ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 767ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int count = m_pPageTree->CountTopElements(); 768ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_TopElementIndex / count * 100; 769ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 770