From eb253f8417815720d051a24b51e6491a6f51aa9c Mon Sep 17 00:00:00 2001 From: Jakub Melka Date: Fri, 11 Sep 2020 18:03:23 +0200 Subject: [PATCH] Default values for structure tree attributes --- PdfForQtLib/sources/pdfstructuretree.cpp | 60 ++++++++++++++++++++++++ PdfForQtLib/sources/pdfstructuretree.h | 4 +- 2 files changed, 63 insertions(+), 1 deletion(-) diff --git a/PdfForQtLib/sources/pdfstructuretree.cpp b/PdfForQtLib/sources/pdfstructuretree.cpp index d9bfaee..969a7d6 100644 --- a/PdfForQtLib/sources/pdfstructuretree.cpp +++ b/PdfForQtLib/sources/pdfstructuretree.cpp @@ -112,6 +112,7 @@ static constexpr std::arrayinheritable; } +PDFObject PDFStructureTreeAttribute::getDefaultValue() const +{ + switch (m_definition->type) + { + case PDFStructureTreeAttribute::WritingMode: + return PDFObject::createName("LrTb"); + + case PDFStructureTreeAttribute::BorderStyle: + case PDFStructureTreeAttribute::TBorderStyle: + case PDFStructureTreeAttribute::TextDecorationType: + case PDFStructureTreeAttribute::ListNumbering: + return PDFObject::createName("None"); + + case PDFStructureTreeAttribute::BorderThickness: + case PDFStructureTreeAttribute::Padding: + case PDFStructureTreeAttribute::SpaceBefore: + case PDFStructureTreeAttribute::SpaceAfter: + case PDFStructureTreeAttribute::StartIndent: + case PDFStructureTreeAttribute::EndIndent: + case PDFStructureTreeAttribute::TextIndent: + case PDFStructureTreeAttribute::TPadding: + case PDFStructureTreeAttribute::BaselineShift: + return PDFObject::createReal(0.0); + + case PDFStructureTreeAttribute::TextAlign: + case PDFStructureTreeAttribute::InlineAlign: + return PDFObject::createName("Start"); + + case PDFStructureTreeAttribute::Width: + case PDFStructureTreeAttribute::Height: + case PDFStructureTreeAttribute::GlyphOrientationVertical: + return PDFObject::createName("Auto"); + + case PDFStructureTreeAttribute::BlockAlign: + case PDFStructureTreeAttribute::RubyPosition: + return PDFObject::createName("Before"); + + case PDFStructureTreeAttribute::LineHeight: + case PDFStructureTreeAttribute::TextPosition: + return PDFObject::createName("Normal"); + + case PDFStructureTreeAttribute::RubyAlign: + return PDFObject::createName("Distribute"); + + case PDFStructureTreeAttribute::ColumnCount: + case PDFStructureTreeAttribute::RowSpan: + case PDFStructureTreeAttribute::ColSpan: + return PDFObject::createInteger(1); + + case PDFStructureTreeAttribute::Checked: + return PDFObject::createName("off"); + + default: + break; + } + + return PDFObject(); +} + QString PDFStructureTreeAttribute::getUserPropertyName(const PDFObjectStorage* storage) const { if (const PDFDictionary* value = storage->getDictionaryFromObject(m_value)) diff --git a/PdfForQtLib/sources/pdfstructuretree.h b/PdfForQtLib/sources/pdfstructuretree.h index c89c012..1bb1faa 100644 --- a/PdfForQtLib/sources/pdfstructuretree.h +++ b/PdfForQtLib/sources/pdfstructuretree.h @@ -99,6 +99,7 @@ public: TPadding, LineHeight, BaselineShift, + TextPosition, TextDecorationType, TextDecorationColor, TextDecorationThickness, @@ -154,7 +155,8 @@ public: /// Returns attribute value const PDFObject& getValue() const { return m_value; } - /// Returns default attribute value + /// Returns default attribute value. If default attribute value + /// cannot be determined, empty object is returned. PDFObject getDefaultValue() const; /// Returns user property name. This function should be called only for