SVN commit 755282 by ducroquet: Happy new year !! For my first commit in 2008, a small gift : much better saving support for paragraph and character style. (still missing : font name in character, and border in paragraph) M +35 -21 KoCharacterStyle.cpp M +42 -2 KoParagraphStyle.cpp --- trunk/koffice/libs/kotext/styles/KoCharacterStyle.cpp #755281:755282 @@ -767,8 +767,6 @@ // Remember : Qt and CSS/XSL doesn't have the same scale... target->addProperty("fo:font-weight", boldness*10, KoGenStyle::TextType); } - } else { - kDebug(32500) << "What is this ???" << d->stylesPrivate->value(key); } } else if (key == QTextFormat::FontItalic) { if (d->stylesPrivate->value(key).toBool()) { @@ -779,19 +777,13 @@ } else if (key == UnderlineStyle) { bool ok = false; int style = d->stylesPrivate->value(key).toInt(&ok); - if (ok) { + if (ok) target->addProperty("style:text-underline-style", exportOasisLineStyle((KoCharacterStyle::LineStyle) style), KoGenStyle::TextType); - } else { - kDebug(32500) << "What is this ???" << d->stylesPrivate->value(key); - } } else if (key == UnderlineType) { bool ok = false; int type = d->stylesPrivate->value(key).toInt(&ok); - if (ok) { + if (ok) target->addProperty("style:text-underline-type", exportOasisLineType((KoCharacterStyle::LineType) type), KoGenStyle::TextType); - } else { - kDebug(32500) << "What is this ???" << d->stylesPrivate->value(key); - } } else if (key == UnderlineColor) { QColor color = d->stylesPrivate->value(key).value(); if (color.isValid()) @@ -799,33 +791,55 @@ } else if (key == StrikeOutStyle) { bool ok = false; int style = d->stylesPrivate->value(key).toInt(&ok); - if (ok) { + if (ok) target->addProperty("style:text-line-through-style", exportOasisLineStyle((KoCharacterStyle::LineStyle) style), KoGenStyle::TextType); - } else { - kDebug(32500) << "What is this ???" << d->stylesPrivate->value(key); - } } else if (key == StrikeOutType) { bool ok = false; int type = d->stylesPrivate->value(key).toInt(&ok); - if (ok) { + if (ok) target->addProperty("style:text-line-through-type", exportOasisLineType((KoCharacterStyle::LineType) type), KoGenStyle::TextType); - } else { - kDebug(32500) << "What is this ???" << d->stylesPrivate->value(key); - } } else if (key == StrikeOutColor) { QColor color = d->stylesPrivate->value(key).value(); if (color.isValid()) target->addProperty("style:text-line-through-color", color.name(), KoGenStyle::TextType); - } else if (key == QTextFormat::BackgroundBrush) { + } else if (key == QTextFormat::BackgroundBrush) { QBrush brush = d->stylesPrivate->value(key).value(); if (brush.style() == Qt::NoBrush) target->addProperty("fo:background-color", "transparent", KoGenStyle::TextType); else target->addProperty("fo:background-color", brush.color().name(), KoGenStyle::TextType); - } else { -// kDebug(32500) << "Storing the key " << key << "=>" << d->stylesPrivate->value(key); + } else if (key == QTextFormat::ForegroundBrush) { + QBrush brush = d->stylesPrivate->value(key).value(); + if (brush.style() == Qt::NoBrush) + target->addProperty("fo:color", "transparent", KoGenStyle::TextType); + else + target->addProperty("fo:color", brush.color().name(), KoGenStyle::TextType); + } else if (key == QTextFormat::TextVerticalAlignment) { + if (verticalAlignment() == QTextCharFormat::AlignSuperScript) + target->addProperty("style:text-position", "super", KoGenStyle::TextType); + else if (verticalAlignment() == QTextCharFormat::AlignSubScript) + target->addProperty("style:text-position", "sub", KoGenStyle::TextType); + } else if (key == KoCharacterStyle::TransformText) { + Transform transform = (Transform) d->stylesPrivate->value(key).value(); + switch (transform) { + case SmallCaps: + target->addProperty("fo:font-variant", "small-caps", KoGenStyle::TextType); + break; + case AllUppercase: + target->addProperty("fo:text-transform", "uppercase", KoGenStyle::TextType); + break; + case AllLowercase: + target->addProperty("fo:text-transform", "lowercase", KoGenStyle::TextType); + break; + case Capitalize: + target->addProperty("fo:text-transform", "capitalize", KoGenStyle::TextType); + break; + } + } else if (key == QTextFormat::FontPointSize) { + target->addAttributePt("fo:font-size", fontPointSize()); } } + //TODO: font name and family } #include "KoCharacterStyle.moc" --- trunk/koffice/libs/kotext/styles/KoParagraphStyle.cpp #755281:755282 @@ -1192,10 +1192,50 @@ if (!direction.isEmpty()) target->addProperty("style:writing-mode", direction, KoGenStyle::ParagraphType); } - } else { - //kDebug(32500) << "Storing the key " << key << "=>" << d->stylesPrivate->value(key); + } else if (key == KoParagraphStyle::BreakBefore) { + if (breakBefore()) + target->addProperty("fo:breaf-before", "page", KoGenStyle::ParagraphType); + } else if (key == KoParagraphStyle::BreakAfter) { + if (breakBefore()) + target->addProperty("fo:breaf-after", "page", KoGenStyle::ParagraphType); + } else if (key == QTextFormat::BackgroundBrush) { + QBrush backBrush = background(); + if (backBrush.style() != Qt::NoBrush) + target->addProperty("fo:background-color", backBrush.color().name(), KoGenStyle::ParagraphType); + else + target->addProperty("fo:background-color", "transparent", KoGenStyle::ParagraphType); + // Padding + } else if (key == KoParagraphStyle::LeftPadding) { + target->addAttributePt("fo:padding-left", leftPadding()); + } else if (key == KoParagraphStyle::RightPadding) { + target->addAttributePt("fo:padding-right", rightPadding()); + } else if (key == KoParagraphStyle::TopPadding) { + target->addAttributePt("fo:padding-top", topPadding()); + } else if (key == KoParagraphStyle::BottomPadding) { + target->addAttributePt("fo:padding-bottom", bottomPadding()); + // Margin + } else if (key == QTextFormat::BlockLeftMargin) { + target->addAttributePt("fo:margin-left", leftMargin()); + } else if (key == QTextFormat::BlockRightMargin) { + target->addAttributePt("fo:margin-right", rightMargin()); + } else if (key == QTextFormat::BlockTopMargin) { + target->addAttributePt("fo:margin-top", topMargin()); + } else if (key == QTextFormat::BlockBottomMargin) { + target->addAttributePt("fo:margin-bottom", bottomMargin()); + // Line spacing + } else if (key == KoParagraphStyle::MinimumLineHeight) { + target->addAttributePt("style:line-height-at-least", minimumLineHeight()); + } else if (key == KoParagraphStyle::LineSpacing) { + target->addAttributePt("style:line-spacing", lineSpacing()); + } else if (key == KoParagraphStyle::PercentLineHeight) { + target->addProperty("fo:line-height", QString("%1%").arg(lineHeightPercent()), KoGenStyle::ParagraphType); + } else if (key == KoParagraphStyle::FixedLineHeight) { + target->addAttributePt("fo:line-height", lineHeightAbsolute()); + } else if (key == QTextFormat::TextIndent) { + target->addAttributePt("fo:text-indent", textIndent()); } } + // TODO : save border information } #include "KoParagraphStyle.moc"