Default values for structure tree attributes

This commit is contained in:
Jakub Melka 2020-09-11 18:03:23 +02:00
parent 240a854d8f
commit eb253f8417
2 changed files with 63 additions and 1 deletions

View File

@ -112,6 +112,7 @@ static constexpr std::array<const PDFStructureTreeAttributeDefinition, PDFStruct
PDFStructureTreeAttributeDefinition(PDFStructureTreeAttribute::Attribute::TPadding, "TPadding", true),
PDFStructureTreeAttributeDefinition(PDFStructureTreeAttribute::Attribute::LineHeight, "LineHeight", true),
PDFStructureTreeAttributeDefinition(PDFStructureTreeAttribute::Attribute::BaselineShift, "BaselineShift", false),
PDFStructureTreeAttributeDefinition(PDFStructureTreeAttribute::Attribute::TextPosition, "TextPosition", false),
PDFStructureTreeAttributeDefinition(PDFStructureTreeAttribute::Attribute::TextDecorationType, "TextDecorationType", true),
PDFStructureTreeAttributeDefinition(PDFStructureTreeAttribute::Attribute::TextDecorationColor, "TextDecorationColor", true),
PDFStructureTreeAttributeDefinition(PDFStructureTreeAttribute::Attribute::TextDecorationThickness, "TextDecorationThickness", true),
@ -283,6 +284,65 @@ bool PDFStructureTreeAttribute::isInheritable() const
return m_definition->inheritable;
}
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))

View File

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