[Libreoffice-commits] core.git: 8 commits - sw/qa sw/source writerfilter/source
Tomaž Vajngerl
tomaz.vajngerl at collabora.com
Tue Feb 25 03:11:01 PST 2014
dev/null |binary
sw/qa/extras/ooxmlexport/data/TextEffects_Glow_Shadow_Reflection.docx |binary
sw/qa/extras/ooxmlexport/data/TextEffects_TextOutline.docx |binary
sw/qa/extras/ooxmlexport/ooxmlexport.cxx | 117 +++
sw/source/filter/ww8/docxattributeoutput.cxx | 93 +-
writerfilter/source/dmapper/TextEffectsHandler.cxx | 244 +++++-
writerfilter/source/dmapper/TextEffectsHandler.hxx | 6
writerfilter/source/ooxml/model.xml | 367 +++++++++-
8 files changed, 715 insertions(+), 112 deletions(-)
New commits:
commit ea7685ce69e8e52ad214c3737ce77ce6564ae1b6
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.com>
Date: Tue Feb 25 12:03:40 2014 +0100
ooxml: extend roundtrip test with w14:textOutline
Change-Id: Ie888f3089f56dfd7b6ae4ae87aa2700e364c3ae3
diff --git a/sw/qa/extras/ooxmlexport/data/TextEffects_TextOutline.docx b/sw/qa/extras/ooxmlexport/data/TextEffects_TextOutline.docx
new file mode 100644
index 0000000..4ceb40c
Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/TextEffects_TextOutline.docx differ
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
index 57e5b27..fa22b44 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
@@ -3444,7 +3444,7 @@ DECLARE_OOXMLEXPORT_TEST(testDMLGroupShapeParaSpacing, "dml-groupshape-paraspaci
CPPUNIT_ASSERT_EQUAL(sal_Int32(0), getProperty<sal_Int32>(xRun, "ParaBottomMargin"));
}
-DECLARE_OOXMLEXPORT_TEST(testW14TextEffects, "TextEffects_Glow_Shadow_Reflection.docx")
+DECLARE_OOXMLEXPORT_TEST(testW14TextEffects_GlowShadowReflection, "TextEffects_Glow_Shadow_Reflection.docx")
{
xmlDocPtr pXmlDoc = parseExport("word/document.xml");
if (!pXmlDoc)
@@ -3570,6 +3570,62 @@ DECLARE_OOXMLEXPORT_TEST(testNumberedLists_StartingWithZero, "FDO74105.docx")
// Check that we do _not_ export w:start for <w:lvl w:ilvl="0">.
assertXPath(pXmlDoc, "w:numbering/w:abstractNum[1]/w:lvl[1]/w:start", 0);
+
+DECLARE_OOXMLEXPORT_TEST(testW14TextEffects_TextOutline, "TextEffects_TextOutline.docx")
+{
+ xmlDocPtr pXmlDoc = parseExport("word/document.xml");
+ if (!pXmlDoc)
+ return;
+
+ // Paragraph 1
+ assertXPath(pXmlDoc, "/w:document/w:body/w:p[1]/w:r[1]/w:rPr/w14:textOutline", "w", "50800");
+ assertXPath(pXmlDoc, "/w:document/w:body/w:p[1]/w:r[1]/w:rPr/w14:textOutline", "cap", "rnd");
+ assertXPath(pXmlDoc, "/w:document/w:body/w:p[1]/w:r[1]/w:rPr/w14:textOutline", "cmpd", "dbl");
+ assertXPath(pXmlDoc, "/w:document/w:body/w:p[1]/w:r[1]/w:rPr/w14:textOutline", "algn", "ctr");
+
+ assertXPath(pXmlDoc, "/w:document/w:body/w:p[1]/w:r[1]/w:rPr/w14:textOutline/w14:gradFill/w14:gsLst/w14:gs[1]", "pos", "70000");
+ assertXPath(pXmlDoc, "/w:document/w:body/w:p[1]/w:r[1]/w:rPr/w14:textOutline/w14:gradFill/w14:gsLst/w14:gs[1]/w14:srgbClr", "val", "92D050");
+ assertXPath(pXmlDoc, "/w:document/w:body/w:p[1]/w:r[1]/w:rPr/w14:textOutline/w14:gradFill/w14:gsLst/w14:gs[1]/w14:srgbClr/w14:alpha", "val", "30000");
+ assertXPath(pXmlDoc, "/w:document/w:body/w:p[1]/w:r[1]/w:rPr/w14:textOutline/w14:gradFill/w14:gsLst/w14:gs[1]/w14:srgbClr/w14:lumMod", "val", "75000");
+ assertXPath(pXmlDoc, "/w:document/w:body/w:p[1]/w:r[1]/w:rPr/w14:textOutline/w14:gradFill/w14:gsLst/w14:gs[1]/w14:srgbClr/w14:lumOff", "val", "25000");
+
+ assertXPath(pXmlDoc, "/w:document/w:body/w:p[1]/w:r[1]/w:rPr/w14:textOutline/w14:gradFill/w14:gsLst/w14:gs[2]", "pos", "30000");
+ assertXPath(pXmlDoc, "/w:document/w:body/w:p[1]/w:r[1]/w:rPr/w14:textOutline/w14:gradFill/w14:gsLst/w14:gs[2]/w14:schemeClr", "val", "accent1");
+ assertXPath(pXmlDoc, "/w:document/w:body/w:p[1]/w:r[1]/w:rPr/w14:textOutline/w14:gradFill/w14:gsLst/w14:gs[2]/w14:schemeClr/w14:alpha", "val", "55000");
+ assertXPath(pXmlDoc, "/w:document/w:body/w:p[1]/w:r[1]/w:rPr/w14:textOutline/w14:gradFill/w14:gsLst/w14:gs[2]/w14:schemeClr/w14:lumMod", "val", "40000");
+ assertXPath(pXmlDoc, "/w:document/w:body/w:p[1]/w:r[1]/w:rPr/w14:textOutline/w14:gradFill/w14:gsLst/w14:gs[2]/w14:schemeClr/w14:lumOff", "val", "60000");
+
+ assertXPath(pXmlDoc, "/w:document/w:body/w:p[1]/w:r[1]/w:rPr/w14:textOutline/w14:gradFill/w14:gsLst/w14:gs[3]", "pos", "0");
+ assertXPath(pXmlDoc, "/w:document/w:body/w:p[1]/w:r[1]/w:rPr/w14:textOutline/w14:gradFill/w14:gsLst/w14:gs[3]/w14:srgbClr", "val", "0070C0");
+
+ assertXPath(pXmlDoc, "/w:document/w:body/w:p[1]/w:r[1]/w:rPr/w14:textOutline/w14:gradFill/w14:gsLst/w14:gs[4]", "pos", "100000");
+ assertXPath(pXmlDoc, "/w:document/w:body/w:p[1]/w:r[1]/w:rPr/w14:textOutline/w14:gradFill/w14:gsLst/w14:gs[4]/w14:schemeClr", "val", "accent4");
+
+ assertXPath(pXmlDoc, "/w:document/w:body/w:p[1]/w:r[1]/w:rPr/w14:textOutline/w14:gradFill/w14:lin", "ang", "3600000");
+ assertXPath(pXmlDoc, "/w:document/w:body/w:p[1]/w:r[1]/w:rPr/w14:textOutline/w14:gradFill/w14:lin", "scaled", "0");
+
+ assertXPath(pXmlDoc, "/w:document/w:body/w:p[1]/w:r[1]/w:rPr/w14:textOutline/w14:prstDash", "val", "dash");
+ assertXPath(pXmlDoc, "/w:document/w:body/w:p[1]/w:r[1]/w:rPr/w14:textOutline/w14:miter", "lim", "0");
+
+ // Paragraph 2
+ assertXPath(pXmlDoc, "/w:document/w:body/w:p[2]/w:r[1]/w:rPr/w14:textOutline", "w", "9525");
+ assertXPath(pXmlDoc, "/w:document/w:body/w:p[2]/w:r[1]/w:rPr/w14:textOutline", "cap", "rnd");
+ assertXPath(pXmlDoc, "/w:document/w:body/w:p[2]/w:r[1]/w:rPr/w14:textOutline", "cmpd", "sng");
+ assertXPath(pXmlDoc, "/w:document/w:body/w:p[2]/w:r[1]/w:rPr/w14:textOutline", "algn", "ctr");
+
+ assertXPath(pXmlDoc, "/w:document/w:body/w:p[2]/w:r[1]/w:rPr/w14:textOutline/w14:solidFill/w14:srgbClr", "val", "FF0000");
+ assertXPath(pXmlDoc, "/w:document/w:body/w:p[2]/w:r[1]/w:rPr/w14:textOutline/w14:prstDash", "val", "solid");
+ assertXPath(pXmlDoc, "/w:document/w:body/w:p[2]/w:r[1]/w:rPr/w14:textOutline/w14:bevel", 1);
+
+ // Paragraph 3
+ assertXPath(pXmlDoc, "/w:document/w:body/w:p[3]/w:r[1]/w:rPr/w14:textOutline", "w", "9525");
+ assertXPath(pXmlDoc, "/w:document/w:body/w:p[3]/w:r[1]/w:rPr/w14:textOutline", "cap", "rnd");
+ assertXPath(pXmlDoc, "/w:document/w:body/w:p[3]/w:r[1]/w:rPr/w14:textOutline", "cmpd", "sng");
+ assertXPath(pXmlDoc, "/w:document/w:body/w:p[3]/w:r[1]/w:rPr/w14:textOutline", "algn", "ctr");
+
+ assertXPath(pXmlDoc, "/w:document/w:body/w:p[3]/w:r[1]/w:rPr/w14:textOutline/w14:noFill", 1);
+ assertXPath(pXmlDoc, "/w:document/w:body/w:p[3]/w:r[1]/w:rPr/w14:textOutline/w14:prstDash", "val", "solid");
+ assertXPath(pXmlDoc, "/w:document/w:body/w:p[3]/w:r[1]/w:rPr/w14:textOutline/w14:bevel", 1);
}
#endif
commit 17269062509753789f05324e45688553cdff3aa3
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.com>
Date: Tue Feb 25 12:01:56 2014 +0100
ooxml export: w14:textOutline element
Change-Id: I76f414471aa6304e6add8274c1fd52375a7a963b
diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx
index 77a0aed..b27aadc 100644
--- a/sw/source/filter/ww8/docxattributeoutput.cxx
+++ b/sw/source/filter/ww8/docxattributeoutput.cxx
@@ -1152,38 +1152,64 @@ struct NameToId
const NameToId constNameToIdMapping[] =
{
- { OUString("glow"), FSNS( XML_w14, XML_glow ) },
- { OUString("shadow"), FSNS( XML_w14, XML_shadow ) },
- { OUString("reflection"),FSNS( XML_w14, XML_reflection ) },
-
- { OUString("val"), FSNS( XML_w14, XML_val ) },
- { OUString("rad"), FSNS( XML_w14, XML_rad ) },
- { OUString("blurRad"), FSNS( XML_w14, XML_blurRad ) },
- { OUString("stA"), FSNS( XML_w14, XML_stA ) },
- { OUString("stPos"), FSNS( XML_w14, XML_stPos ) },
- { OUString("endA"), FSNS( XML_w14, XML_endA ) },
- { OUString("endPos"), FSNS( XML_w14, XML_endPos ) },
- { OUString("dist"), FSNS( XML_w14, XML_dist ) },
- { OUString("dir"), FSNS( XML_w14, XML_dir ) },
- { OUString("fadeDir"), FSNS( XML_w14, XML_fadeDir ) },
- { OUString("sx"), FSNS( XML_w14, XML_sx ) },
- { OUString("sy"), FSNS( XML_w14, XML_sy ) },
- { OUString("kx"), FSNS( XML_w14, XML_kx ) },
- { OUString("ky"), FSNS( XML_w14, XML_ky ) },
- { OUString("algn"), FSNS( XML_w14, XML_algn ) },
-
- { OUString("schemeClr"), FSNS( XML_w14, XML_schemeClr ) },
- { OUString("srgbClr"), FSNS( XML_w14, XML_srgbClr ) },
- { OUString("tint"), FSNS( XML_w14, XML_tint ) },
- { OUString("shade"), FSNS( XML_w14, XML_shade ) },
- { OUString("alpha"), FSNS( XML_w14, XML_alpha ) },
- { OUString("hueMod"), FSNS( XML_w14, XML_hueMod ) },
- { OUString("sat"), FSNS( XML_w14, XML_sat ) },
- { OUString("satOff"), FSNS( XML_w14, XML_satOff ) },
- { OUString("satMod"), FSNS( XML_w14, XML_satMod ) },
- { OUString("lum"), FSNS( XML_w14, XML_lum ) },
- { OUString("lumOff"), FSNS( XML_w14, XML_lumOff ) },
- { OUString("lumMod"), FSNS( XML_w14, XML_lumMod ) },
+ { OUString("glow"), FSNS( XML_w14, XML_glow ) },
+ { OUString("shadow"), FSNS( XML_w14, XML_shadow ) },
+ { OUString("reflection"), FSNS( XML_w14, XML_reflection ) },
+ { OUString("textOutline"), FSNS( XML_w14, XML_textOutline ) },
+
+ { OUString("val"), FSNS( XML_w14, XML_val ) },
+ { OUString("rad"), FSNS( XML_w14, XML_rad ) },
+ { OUString("blurRad"), FSNS( XML_w14, XML_blurRad ) },
+ { OUString("stA"), FSNS( XML_w14, XML_stA ) },
+ { OUString("stPos"), FSNS( XML_w14, XML_stPos ) },
+ { OUString("endA"), FSNS( XML_w14, XML_endA ) },
+ { OUString("endPos"), FSNS( XML_w14, XML_endPos ) },
+ { OUString("dist"), FSNS( XML_w14, XML_dist ) },
+ { OUString("dir"), FSNS( XML_w14, XML_dir ) },
+ { OUString("fadeDir"), FSNS( XML_w14, XML_fadeDir ) },
+ { OUString("sx"), FSNS( XML_w14, XML_sx ) },
+ { OUString("sy"), FSNS( XML_w14, XML_sy ) },
+ { OUString("kx"), FSNS( XML_w14, XML_kx ) },
+ { OUString("ky"), FSNS( XML_w14, XML_ky ) },
+ { OUString("algn"), FSNS( XML_w14, XML_algn ) },
+ { OUString("w"), FSNS( XML_w14, XML_w ) },
+ { OUString("cap"), FSNS( XML_w14, XML_cap ) },
+ { OUString("cmpd"), FSNS( XML_w14, XML_cmpd ) },
+ { OUString("pos"), FSNS( XML_w14, XML_pos ) },
+ { OUString("ang"), FSNS( XML_w14, XML_ang ) },
+ { OUString("scaled"), FSNS( XML_w14, XML_scaled ) },
+ { OUString("path"), FSNS( XML_w14, XML_path ) },
+ { OUString("l"), FSNS( XML_w14, XML_l ) },
+ { OUString("t"), FSNS( XML_w14, XML_t ) },
+ { OUString("r"), FSNS( XML_w14, XML_r ) },
+ { OUString("b"), FSNS( XML_w14, XML_b ) },
+ { OUString("lim"), FSNS( XML_w14, XML_lim ) },
+
+ { OUString("schemeClr"), FSNS( XML_w14, XML_schemeClr ) },
+ { OUString("srgbClr"), FSNS( XML_w14, XML_srgbClr ) },
+ { OUString("tint"), FSNS( XML_w14, XML_tint ) },
+ { OUString("shade"), FSNS( XML_w14, XML_shade ) },
+ { OUString("alpha"), FSNS( XML_w14, XML_alpha ) },
+ { OUString("hueMod"), FSNS( XML_w14, XML_hueMod ) },
+ { OUString("sat"), FSNS( XML_w14, XML_sat ) },
+ { OUString("satOff"), FSNS( XML_w14, XML_satOff ) },
+ { OUString("satMod"), FSNS( XML_w14, XML_satMod ) },
+ { OUString("lum"), FSNS( XML_w14, XML_lum ) },
+ { OUString("lumOff"), FSNS( XML_w14, XML_lumOff ) },
+ { OUString("lumMod"), FSNS( XML_w14, XML_lumMod ) },
+ { OUString("noFill"), FSNS( XML_w14, XML_noFill ) },
+ { OUString("solidFill"), FSNS( XML_w14, XML_solidFill ) },
+ { OUString("gradFill"), FSNS( XML_w14, XML_gradFill ) },
+ { OUString("gsLst"), FSNS( XML_w14, XML_gsLst ) },
+ { OUString("gs"), FSNS( XML_w14, XML_gs ) },
+ { OUString("pos"), FSNS( XML_w14, XML_pos ) },
+ { OUString("lin"), FSNS( XML_w14, XML_lin ) },
+ { OUString("path"), FSNS( XML_w14, XML_path ) },
+ { OUString("fillToRect"), FSNS( XML_w14, XML_fillToRect ) },
+ { OUString("prstDash"), FSNS( XML_w14, XML_prstDash ) },
+ { OUString("round"), FSNS( XML_w14, XML_round ) },
+ { OUString("bevel"), FSNS( XML_w14, XML_bevel ) },
+ { OUString("miter"), FSNS( XML_w14, XML_miter ) },
};
boost::optional<sal_Int32> lclGetElementIdForName(const OUString& rName)
@@ -6562,7 +6588,8 @@ void DocxAttributeOutput::CharGrabBag( const SfxGrabBagItem& rItem )
}
else if (i->first == "CharGlowTextEffect" ||
i->first == "CharShadowTextEffect" ||
- i->first == "CharReflectionTextEffect")
+ i->first == "CharReflectionTextEffect" ||
+ i->first == "CharTextOutlineTextEffect")
{
beans::PropertyValue aPropertyValue;
i->second >>= aPropertyValue;
commit a6f73aca84311c43b400092d033024de6dae7887
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.com>
Date: Tue Feb 25 12:01:00 2014 +0100
writerfilter: put w14:textOutline attributes into a GrabBag
Change-Id: Id2ca1ee04a44c4fe17f057397646f621f8d899f7
diff --git a/writerfilter/source/dmapper/TextEffectsHandler.cxx b/writerfilter/source/dmapper/TextEffectsHandler.cxx
index 36e0257..9789b01 100644
--- a/writerfilter/source/dmapper/TextEffectsHandler.cxx
+++ b/writerfilter/source/dmapper/TextEffectsHandler.cxx
@@ -116,18 +116,31 @@ OUString getNameForElementId(sal_uInt32 aId)
static std::map<sal_uInt32, OUString> aIdMap;
if(aIdMap.empty())
{
- aIdMap[NS_ooxml::LN_EG_ColorChoice_srgbClr] = "srgbClr";
- aIdMap[NS_ooxml::LN_EG_ColorChoice_schemeClr] = "schemeClr";
- aIdMap[NS_ooxml::LN_EG_ColorTransform_tint] = "tint";
- aIdMap[NS_ooxml::LN_EG_ColorTransform_shade] = "shade";
- aIdMap[NS_ooxml::LN_EG_ColorTransform_alpha] = "alpha";
- aIdMap[NS_ooxml::LN_EG_ColorTransform_hueMod] = "hueMod";
- aIdMap[NS_ooxml::LN_EG_ColorTransform_sat] = "sat";
- aIdMap[NS_ooxml::LN_EG_ColorTransform_satOff] = "satOff";
- aIdMap[NS_ooxml::LN_EG_ColorTransform_satMod] = "satMod";
- aIdMap[NS_ooxml::LN_EG_ColorTransform_lum] = "lum";
- aIdMap[NS_ooxml::LN_EG_ColorTransform_lumOff] = "lumOff";
- aIdMap[NS_ooxml::LN_EG_ColorTransform_lumMod] = "lumMod";
+ aIdMap[NS_ooxml::LN_EG_ColorChoice_srgbClr] = "srgbClr";
+ aIdMap[NS_ooxml::LN_EG_ColorChoice_schemeClr] = "schemeClr";
+ aIdMap[NS_ooxml::LN_EG_ColorTransform_tint] = "tint";
+ aIdMap[NS_ooxml::LN_EG_ColorTransform_shade] = "shade";
+ aIdMap[NS_ooxml::LN_EG_ColorTransform_alpha] = "alpha";
+ aIdMap[NS_ooxml::LN_EG_ColorTransform_hueMod] = "hueMod";
+ aIdMap[NS_ooxml::LN_EG_ColorTransform_sat] = "sat";
+ aIdMap[NS_ooxml::LN_EG_ColorTransform_satOff] = "satOff";
+ aIdMap[NS_ooxml::LN_EG_ColorTransform_satMod] = "satMod";
+ aIdMap[NS_ooxml::LN_EG_ColorTransform_lum] = "lum";
+ aIdMap[NS_ooxml::LN_EG_ColorTransform_lumOff] = "lumOff";
+ aIdMap[NS_ooxml::LN_EG_ColorTransform_lumMod] = "lumMod";
+ aIdMap[NS_ooxml::LN_EG_FillProperties_noFill] = "noFill";
+ aIdMap[NS_ooxml::LN_EG_FillProperties_solidFill] = "solidFill";
+ aIdMap[NS_ooxml::LN_EG_FillProperties_gradFill] = "gradFill";
+ aIdMap[NS_ooxml::LN_CT_GradientFillProperties_gsLst] = "gsLst";
+ aIdMap[NS_ooxml::LN_CT_GradientStopList_gs] = "gs";
+ aIdMap[NS_ooxml::LN_CT_GradientStop_pos] = "pos";
+ aIdMap[NS_ooxml::LN_EG_ShadeProperties_lin] = "lin";
+ aIdMap[NS_ooxml::LN_EG_ShadeProperties_path] = "path";
+ aIdMap[NS_ooxml::LN_CT_PathShadeProperties_fillToRect] = "fillToRect";
+ aIdMap[NS_ooxml::LN_EG_LineDashProperties_prstDash] = "prstDash";
+ aIdMap[NS_ooxml::LN_EG_LineJoinProperties_round] = "round";
+ aIdMap[NS_ooxml::LN_EG_LineJoinProperties_bevel] = "bevel";
+ aIdMap[NS_ooxml::LN_EG_LineJoinProperties_miter] = "miter";
}
return aIdMap[aId];
}
@@ -174,6 +187,88 @@ OUString TextEffectsHandler::getRectAlignmentString(sal_Int32 nType)
return OUString();
}
+OUString TextEffectsHandler::getLineCapString(sal_Int32 nType)
+{
+ switch (nType)
+ {
+ case NS_ooxml::LN_ST_LineCap_rnd: return OUString("rnd");
+ case NS_ooxml::LN_ST_LineCap_sq: return OUString("sq");
+ case NS_ooxml::LN_ST_LineCap_flat: return OUString("flat");
+ default: break;
+ }
+ return OUString();
+}
+
+OUString TextEffectsHandler::getCompoundLineString(sal_Int32 nType)
+{
+ switch (nType)
+ {
+ case NS_ooxml::LN_ST_CompoundLine_sng: return OUString("sng");
+ case NS_ooxml::LN_ST_CompoundLine_dbl: return OUString("dbl");
+ case NS_ooxml::LN_ST_CompoundLine_thickThin: return OUString("thickThin");
+ case NS_ooxml::LN_ST_CompoundLine_thinThick: return OUString("thinThick");
+ case NS_ooxml::LN_ST_CompoundLine_tri: return OUString("tri");
+ default: break;
+ }
+ return OUString();
+}
+
+OUString TextEffectsHandler::getPenAlignmentString(sal_Int32 nType)
+{
+ switch (nType)
+ {
+ case NS_ooxml::LN_ST_PenAlignment_ctr: return OUString("ctr");
+ case NS_ooxml::LN_ST_PenAlignment_in: return OUString("in");
+ default: break;
+ }
+ return OUString();
+}
+
+OUString TextEffectsHandler::getOnOffString(sal_Int32 nType)
+{
+ switch (nType)
+ {
+ case NS_ooxml::LN_ST_OnOff_true: return OUString("true");
+ case NS_ooxml::LN_ST_OnOff_false: return OUString("false");
+ case NS_ooxml::LN_ST_OnOff_1: return OUString("1");
+ case NS_ooxml::LN_ST_OnOff_0: return OUString("0");
+ default: break;
+ }
+ return OUString();
+}
+
+OUString TextEffectsHandler::getPathShadeTypeString(sal_Int32 nType)
+{
+ switch (nType)
+ {
+ case NS_ooxml::LN_ST_PathShadeType_shape: return OUString("shape");
+ case NS_ooxml::LN_ST_PathShadeType_circle: return OUString("circle");
+ case NS_ooxml::LN_ST_PathShadeType_rect: return OUString("rect");
+ default: break;
+ }
+ return OUString();
+}
+
+OUString TextEffectsHandler::getPresetLineDashValString(sal_Int32 nType)
+{
+ switch (nType)
+ {
+ case NS_ooxml::LN_ST_PresetLineDashVal_solid: return OUString("solid");
+ case NS_ooxml::LN_ST_PresetLineDashVal_dot: return OUString("dot");
+ case NS_ooxml::LN_ST_PresetLineDashVal_sysDot: return OUString("sysDot");
+ case NS_ooxml::LN_ST_PresetLineDashVal_dash: return OUString("dash");
+ case NS_ooxml::LN_ST_PresetLineDashVal_sysDash: return OUString("sysDash");
+ case NS_ooxml::LN_ST_PresetLineDashVal_lgDash: return OUString("lgDash");
+ case NS_ooxml::LN_ST_PresetLineDashVal_dashDot: return OUString("dashDot");
+ case NS_ooxml::LN_ST_PresetLineDashVal_sysDashDot: return OUString("sysDashDot");
+ case NS_ooxml::LN_ST_PresetLineDashVal_lgDashDot: return OUString("lgDashDot");
+ case NS_ooxml::LN_ST_PresetLineDashVal_lgDashDotDot: return OUString("lgDashDotDot");
+ case NS_ooxml::LN_ST_PresetLineDashVal_sysDashDotDot: return OUString("sysDashDotDot");
+ default: break;
+ }
+ return OUString();
+}
+
void TextEffectsHandler::convertElementIdToPropertyId(sal_Int32 aElementId)
{
switch(aElementId)
@@ -191,6 +286,9 @@ void TextEffectsHandler::convertElementIdToPropertyId(sal_Int32 aElementId)
maElementName = "reflection";
break;
case NS_ooxml::LN_textOutline_textOutline:
+ maPropertyId = PROP_CHAR_TEXTOUTLINE_TEXT_EFFECT;
+ maElementName = "textOutline";
+ break;
case NS_ooxml::LN_textFill_textFill:
case NS_ooxml::LN_scene3d_scene3d:
case NS_ooxml::LN_props3d_props3d:
@@ -223,7 +321,6 @@ boost::optional<PropertyIds> TextEffectsHandler::getGrabBagPropertyId()
void TextEffectsHandler::lcl_attribute(Id aName, Value& aValue)
{
-
if (mpGrabBagStack->getCurrentName() != "attributes")
mpGrabBagStack->push("attributes");
@@ -302,6 +399,66 @@ void TextEffectsHandler::lcl_attribute(Id aName, Value& aValue)
mpGrabBagStack->appendElement("algn", aAny);
}
break;
+ case NS_ooxml::LN_CT_TextOutlineEffect_w:
+ mpGrabBagStack->addInt32("w", sal_Int32(aValue.getInt()));
+ break;
+ case NS_ooxml::LN_CT_TextOutlineEffect_cap:
+ {
+ uno::Any aAny = makeAny(getLineCapString(sal_Int32(aValue.getInt())));
+ mpGrabBagStack->appendElement("cap", aAny);
+ }
+ break;
+ case NS_ooxml::LN_CT_TextOutlineEffect_cmpd:
+ {
+ uno::Any aAny = makeAny(getCompoundLineString(sal_Int32(aValue.getInt())));
+ mpGrabBagStack->appendElement("cmpd", aAny);
+ }
+ break;
+ case NS_ooxml::LN_CT_TextOutlineEffect_algn:
+ {
+ uno::Any aAny = makeAny(getPenAlignmentString(sal_Int32(aValue.getInt())));
+ mpGrabBagStack->appendElement("algn", aAny);
+ }
+ break;
+ case NS_ooxml::LN_CT_GradientStop_pos:
+ mpGrabBagStack->addInt32("pos", sal_Int32(aValue.getInt()));
+ break;
+ case NS_ooxml::LN_CT_LinearShadeProperties_ang:
+ mpGrabBagStack->addInt32("ang", sal_Int32(aValue.getInt()));
+ break;
+ case NS_ooxml::LN_CT_LinearShadeProperties_scaled:
+ {
+ uno::Any aAny = makeAny(getOnOffString(sal_Int32(aValue.getInt())));
+ mpGrabBagStack->appendElement("scaled", aAny);
+ }
+ break;
+ case NS_ooxml::LN_CT_PathShadeProperties_path:
+ {
+ uno::Any aAny = makeAny(getPathShadeTypeString(sal_Int32(aValue.getInt())));
+ mpGrabBagStack->appendElement("path", aAny);
+ }
+ break;
+ case NS_ooxml::LN_CT_RelativeRect_l:
+ mpGrabBagStack->addInt32("l", sal_Int32(aValue.getInt()));
+ break;
+ case NS_ooxml::LN_CT_RelativeRect_t:
+ mpGrabBagStack->addInt32("t", sal_Int32(aValue.getInt()));
+ break;
+ case NS_ooxml::LN_CT_RelativeRect_r:
+ mpGrabBagStack->addInt32("r", sal_Int32(aValue.getInt()));
+ break;
+ case NS_ooxml::LN_CT_RelativeRect_b:
+ mpGrabBagStack->addInt32("b", sal_Int32(aValue.getInt()));
+ break;
+ case NS_ooxml::LN_CT_PresetLineDashProperties_val:
+ {
+ uno::Any aAny = makeAny(getPresetLineDashValString(sal_Int32(aValue.getInt())));
+ mpGrabBagStack->appendElement("val", aAny);
+ }
+ break;
+ case NS_ooxml::LN_CT_LineJoinMiterProperties_lim:
+ mpGrabBagStack->addInt32("lim", sal_Int32(aValue.getInt()));
+ break;
default:
break;
}
@@ -316,10 +473,10 @@ void TextEffectsHandler::lcl_sprm(Sprm& rSprm)
OUString aElementName = getNameForElementId(nSprmId);
if(aElementName.isEmpty())
{
- printf("Unknown element: %d\n", nSprmId);
- // Element is unknown - leave the method.
+ // Element is unknown -> leave.
return;
}
+
mpGrabBagStack->push(aElementName);
writerfilter::Reference<Properties>::Pointer_t pProperties = rSprm.getProps();
diff --git a/writerfilter/source/dmapper/TextEffectsHandler.hxx b/writerfilter/source/dmapper/TextEffectsHandler.hxx
index a2d2ca9..3a8fb50 100644
--- a/writerfilter/source/dmapper/TextEffectsHandler.hxx
+++ b/writerfilter/source/dmapper/TextEffectsHandler.hxx
@@ -53,6 +53,12 @@ public:
static OUString getSchemeColorValTypeString(sal_Int32 nType);
static OUString getRectAlignmentString(sal_Int32 nType);
+ static OUString getLineCapString(sal_Int32 nType);
+ static OUString getCompoundLineString(sal_Int32 nType);
+ static OUString getPenAlignmentString(sal_Int32 nType);
+ static OUString getOnOffString(sal_Int32 nType);
+ static OUString getPathShadeTypeString(sal_Int32 nType);
+ static OUString getPresetLineDashValString(sal_Int32 nType);
};
typedef boost::shared_ptr<TextEffectsHandler> TextEffectsHandlerPtr;
commit 029b2e15c255f4bfb24f908eb46900b2c25ff4ea
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.com>
Date: Tue Feb 25 11:50:33 2014 +0100
writerfilter: add w14:textOutline to model.xml
Change-Id: I3b4164a3fccff015a37b43e6fcba225947fb9d16
diff --git a/writerfilter/source/ooxml/model.xml b/writerfilter/source/ooxml/model.xml
index 0ee293c..e7ed883 100644
--- a/writerfilter/source/ooxml/model.xml
+++ b/writerfilter/source/ooxml/model.xml
@@ -5379,6 +5379,36 @@
<value>in</value>
</choice>
</define>
+ <define name="ST_OnOff">
+ <choice>
+ <value>true</value>
+ <value>false</value>
+ <value>0</value>
+ <value>1</value>
+ </choice>
+ </define>
+ <define name="ST_PathShadeType">
+ <choice>
+ <value>shape</value>
+ <value>circle</value>
+ <value>rect</value>
+ </choice>
+ </define>
+ <define name="ST_PresetLineDashVal">
+ <choice>
+ <value>solid</value>
+ <value>dot</value>
+ <value>sysDot</value>
+ <value>dash</value>
+ <value>sysDash</value>
+ <value>lgDash</value>
+ <value>dashDot</value>
+ <value>sysDashDot</value>
+ <value>lgDashDot</value>
+ <value>lgDashDotDot</value>
+ <value>sysDashDotDot</value>
+ </choice>
+ </define>
<define name="ST_PositiveCoordinate">
<data type="long">
@@ -5513,6 +5543,71 @@
</choice>
</define>
+ <define name="EG_FillProperties">
+ <choice>
+ <optional>
+ <element name="noFill">
+ <ref name="CT_Empty"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="solidFill">
+ <ref name="CT_SolidColorFillProperties"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="gradFill">
+ <ref name="CT_GradientFillProperties"/>
+ </element>
+ </optional>
+ </choice>
+ </define>
+
+ <define name="EG_ShadeProperties">
+ <choice>
+ <optional>
+ <element name="lin">
+ <ref name="CT_LinearShadeProperties"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="path">
+ <ref name="CT_PathShadeProperties"/>
+ </element>
+ </optional>
+ </choice>
+ </define>
+
+ <define name="EG_LineDashProperties">
+ <choice>
+ <optional>
+ <element name="prstDash">
+ <ref name="CT_PresetLineDashProperties"/>
+ </element>
+ </optional>
+ </choice>
+ </define>
+
+ <define name="EG_LineJoinProperties">
+ <choice>
+ <optional>
+ <element name="round">
+ <ref name="CT_Empty"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="bevel">
+ <ref name="CT_Empty"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="miter">
+ <ref name="CT_LineJoinMiterProperties"/>
+ </element>
+ </optional>
+ </choice>
+ </define>
+
<define name="CT_SRgbColor">
<ref name="EG_ColorTransform"/>
<attribute name="val">
@@ -5540,7 +5635,97 @@
<ref name="ST_Percentage"/>
</attribute>
</define>
+ <define name="CT_Empty">
+ <empty/>
+ </define>
+ <define name="CT_SolidColorFillProperties">
+ <ref name="EG_ColorChoice"/>
+ </define>
+ <define name="CT_GradientFillProperties">
+ <optional>
+ <element name="gsLst">
+ <ref name="CT_GradientStopList"/>
+ </element>
+ </optional>
+ <optional>
+ <ref name="EG_ShadeProperties"/>
+ </optional>
+ </define>
+ <define name="CT_LinearShadeProperties">
+ <optional>
+ <attribute name="ang">
+ <ref name="ST_PositiveFixedAngle"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="scaled">
+ <ref name="ST_OnOff"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_PathShadeProperties">
+ <optional>
+ <element name="fillToRect">
+ <ref name="CT_RelativeRect"/>
+ </element>
+ </optional>
+ <optional>
+ <attribute name="path">
+ <ref name="ST_PathShadeType"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_GradientStopList">
+ <oneOrMore>
+ <element name="gs">
+ <ref name="CT_GradientStop"/>
+ </element>
+ </oneOrMore>
+ </define>
+ <define name="CT_GradientStop">
+ <ref name="EG_ColorChoice"/>
+ <attribute name="pos">
+ <ref name="ST_PositiveFixedPercentage"/>
+ </attribute>
+ </define>
+ <define name="CT_RelativeRect">
+ <optional>
+ <attribute name="l">
+ <ref name="ST_Percentage"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="t">
+ <ref name="ST_Percentage"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="r">
+ <ref name="ST_Percentage"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="b">
+ <ref name="ST_Percentage"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_PresetLineDashProperties">
+ <optional>
+ <attribute name="val">
+ <ref name="ST_PresetLineDashVal"/>
+ </attribute>
+ </optional>
+ </define>
+ <define name="CT_LineJoinMiterProperties">
+ <optional>
+ <attribute name="lim">
+ <ref name="ST_PositivePercentage"/>
+ </attribute>
+ </optional>
+ </define>
+ <!-- Main Elements-->
<define name="CT_Glow">
<optional>
<ref name="EG_ColorChoice"/>
@@ -5549,7 +5734,6 @@
<ref name="ST_PositiveCoordinate"/>
</attribute>
</define>
-
<define name="CT_Shadow">
<optional>
<ref name="EG_ColorChoice"/>
@@ -5595,7 +5779,6 @@
</attribute>
</optional>
</define>
-
<define name="CT_Reflection">
<optional>
<attribute name="blurRad">
@@ -5663,9 +5846,17 @@
</attribute>
</optional>
</define>
-
<define name="CT_TextOutlineEffect">
<optional>
+ <ref name="EG_FillProperties"/>
+ </optional>
+ <optional>
+ <ref name="EG_LineDashProperties"/>
+ </optional>
+ <optional>
+ <ref name="EG_LineJoinProperties"/>
+ </optional>
+ <optional>
<attribute name="w">
<ref name="ST_LineWidth"/>
</attribute>
@@ -5692,67 +5883,56 @@
<ref name="CT_Glow"/>
</element>
</define>
-
<define name="shadow">
<element name="shadow">
<ref name="CT_Shadow"/>
</element>
</define>
-
<define name="reflection">
<element name="reflection">
<ref name="CT_Reflection"/>
</element>
</define>
-
<define name="textOutline">
<element name="textOutline">
<ref name="CT_TextOutlineEffect"/>
</element>
</define>
-
<define name="textFill">
<element name="textFill">
<empty/>
</element>
</define>
-
<define name="scene3d">
<element name="scene3d">
<empty/>
</element>
</define>
-
<define name="props3d">
<element name="props3d">
<empty/>
</element>
</define>
-
<define name="ligatures">
<element name="ligatures">
<empty/>
</element>
</define>
-
<define name="numForm">
<element name="numForm">
<empty/>
</element>
</define>
-
<define name="numSpacing">
<element name="numSpacing">
<empty/>
</element>
</define>
-
<define name="stylisticSets">
<element name="stylisticSets">
<empty/>
</element>
</define>
-
<define name="cntxtAlts">
<element name="cntxtAlts">
<empty/>
@@ -5774,7 +5954,6 @@
<value name="accent5" tokenid="ooxml:ST_SchemeColorVal_accent5">accent5</value>
<value name="accent6" tokenid="ooxml:ST_SchemeColorVal_accent6">accent6</value>
</resource>
-
<resource name="ST_RectAlignment" resource="List" generated="yes">
<value name="none" tokenid="ooxml:ST_RectAlignment_none">none</value>
<value name="tl" tokenid="ooxml:ST_RectAlignment_tl">tl</value>
@@ -5787,13 +5966,11 @@
<value name="b" tokenid="ooxml:ST_RectAlignment_b">b</value>
<value name="br" tokenid="ooxml:ST_RectAlignment_br">br</value>
</resource>
-
<resource name="ST_LineCap" resource="List" generated="yes">
<value name="rnd" tokenid="ooxml:ST_LineCap_rnd">rnd</value>
<value name="sq" tokenid="ooxml:ST_LineCap_sq">sq</value>
<value name="flat" tokenid="ooxml:ST_LineCap_flat">flat</value>
</resource>
-
<resource name="ST_CompoundLine" resource="List" generated="yes">
<value name="sng" tokenid="ooxml:ST_CompoundLine_sng">sng</value>
<value name="dbl" tokenid="ooxml:ST_CompoundLine_dbl">dbl</value>
@@ -5801,11 +5978,33 @@
<value name="thinThick" tokenid="ooxml:ST_CompoundLine_thinThick">thinThick</value>
<value name="tri" tokenid="ooxml:ST_CompoundLine_tri">tri</value>
</resource>
-
<resource name="ST_PenAlignment" resource="List" generated="yes">
<value name="ctr" tokenid="ooxml:ST_PenAlignment_ctr">ctr</value>
<value name="in" tokenid="ooxml:ST_PenAlignment_in">in</value>
- <value name="flat" tokenid="ooxml:ST_PenAlignment_flat">flat</value>
+ </resource>
+ <resource name="ST_OnOff" resource="List" generated="yes">
+ <value name="true" tokenid="ooxml:ST_OnOff_true">true</value>
+ <value name="false" tokenid="ooxml:ST_OnOff_false">false</value>
+ <value name="0" tokenid="ooxml:ST_OnOff_0">0</value>
+ <value name="1" tokenid="ooxml:ST_OnOff_1">1</value>
+ </resource>
+ <resource name="ST_PathShadeType" resource="List" generated="yes">
+ <value name="shape" tokenid="ooxml:ST_PathShadeType_shape">shape</value>
+ <value name="circle" tokenid="ooxml:ST_PathShadeType_circle">circle</value>
+ <value name="rect" tokenid="ooxml:ST_PathShadeType_rect">rect</value>
+ </resource>
+ <resource name="ST_PresetLineDashVal" resource="List" generated="yes">
+ <value name="solid" tokenid="ooxml:ST_PresetLineDashVal_solid">solid</value>
+ <value name="dot" tokenid="ooxml:ST_PresetLineDashVal_dot">dot</value>
+ <value name="sysDot" tokenid="ooxml:ST_PresetLineDashVal_sysDot">sysDot</value>
+ <value name="dash" tokenid="ooxml:ST_PresetLineDashVal_dash">dash</value>
+ <value name="sysDash" tokenid="ooxml:ST_PresetLineDashVal_sysDash">sysDash</value>
+ <value name="lgDash" tokenid="ooxml:ST_PresetLineDashVal_lgDash">lgDash</value>
+ <value name="dashDot" tokenid="ooxml:ST_PresetLineDashVal_dashDot">dashDot</value>
+ <value name="sysDashDot" tokenid="ooxml:ST_PresetLineDashVal_sysDashDot">sysDashDot</value>
+ <value name="lgDashDot" tokenid="ooxml:ST_PresetLineDashVal_lgDashDot">lgDashDot</value>
+ <value name="lgDashDotDot" tokenid="ooxml:ST_PresetLineDashVal_lgDashDotDot">lgDashDotDot</value>
+ <value name="sysDashDotDot" tokenid="ooxml:ST_PresetLineDashVal_sysDashDotDot">sysDashDotDot</value>
</resource>
<resource name="ST_PositiveCoordinate" resource="Integer" generated="yes"/>
@@ -5834,6 +6033,23 @@
<element name="srgbClr" tokenid="ooxml:EG_ColorChoice_srgbClr"/>
<element name="schemeClr" tokenid="ooxml:EG_ColorChoice_schemeClr"/>
</resource>
+ <resource name="EG_FillProperties" resource="Properties" tag="character">
+ <element name="noFill" tokenid="ooxml:EG_FillProperties_noFill"/>
+ <element name="solidFill" tokenid="ooxml:EG_FillProperties_solidFill"/>
+ <element name="gradFill" tokenid="ooxml:EG_FillProperties_gradFill"/>
+ </resource>
+ <resource name="EG_ShadeProperties" resource="Properties" tag="character">
+ <element name="lin" tokenid="ooxml:EG_ShadeProperties_lin"/>
+ <element name="path" tokenid="ooxml:EG_ShadeProperties_path"/>
+ </resource>
+ <resource name="EG_LineDashProperties" resource="Properties" tag="character">
+ <element name="prstDash" tokenid="ooxml:EG_LineDashProperties_prstDash"/>
+ </resource>
+ <resource name="EG_LineJoinProperties" resource="Properties" tag="character">
+ <element name="round" tokenid="ooxml:EG_LineJoinProperties_round"/>
+ <element name="bevel" tokenid="ooxml:EG_LineJoinProperties_bevel"/>
+ <element name="miter" tokenid="ooxml:EG_LineJoinProperties_miter"/>
+ </resource>
<!-- Complex Types Resource Definitions -->
<resource name="CT_Glow" resource="Properties" tag="character">
@@ -5854,6 +6070,38 @@
<resource name="CT_Percentage" resource="Properties" tag="character">
<attribute name="val" tokenid="ooxml:CT_Percentage_val"/>
</resource>
+ <resource name="CT_Empty" resource="Properties" tag="character"/>
+ <resource name="CT_SolidColorFillProperties" resource="Properties" tag="character"/>
+ <resource name="CT_GradientFillProperties" resource="Properties" tag="character">
+ <element name="gsLst" tokenid="ooxml:CT_GradientFillProperties_gsLst"/>
+ </resource>
+ <resource name="CT_GradientStopList" resource="Properties" tag="character">
+ <element name="gs" tokenid="ooxml:CT_GradientStopList_gs"/>
+ </resource>
+ <resource name="CT_GradientStop" resource="Properties" tag="character">
+ <attribute name="pos" tokenid="ooxml:CT_GradientStop_pos"/>
+ </resource>
+ <resource name="CT_LinearShadeProperties" resource="Properties" tag="character">
+ <attribute name="ang" tokenid="ooxml:CT_LinearShadeProperties_ang"/>
+ <attribute name="scaled" tokenid="ooxml:CT_LinearShadeProperties_scaled"/>
+ </resource>
+ <resource name="CT_PathShadeProperties" resource="Properties" tag="character">
+ <element name="fillToRect" tokenid="ooxml:CT_PathShadeProperties_fillToRect"/>
+ <attribute name="path" tokenid="ooxml:CT_PathShadeProperties_path"/>
+ </resource>
+ <resource name="CT_RelativeRect" resource="Properties" tag="character">
+ <attribute name="l" tokenid="ooxml:CT_RelativeRect_l"/>
+ <attribute name="t" tokenid="ooxml:CT_RelativeRect_t"/>
+ <attribute name="r" tokenid="ooxml:CT_RelativeRect_r"/>
+ <attribute name="b" tokenid="ooxml:CT_RelativeRect_b"/>
+ </resource>
+ <resource name="CT_PresetLineDashProperties" resource="Properties" tag="character">
+ <attribute name="val" tokenid="ooxml:CT_PresetLineDashProperties_val"/>
+ </resource>
+ <resource name="CT_LineJoinMiterProperties" resource="Properties" tag="character">
+ <attribute name="lim" tokenid="ooxml:CT_LineJoinMiterProperties_lim"/>
+ </resource>
+
<resource name="CT_Shadow" resource="Properties" tag="character">
<attribute name="blurRad" tokenid="ooxml:CT_Shadow_blurRad"/>
<attribute name="dist" tokenid="ooxml:CT_Shadow_dist"/>
@@ -17570,12 +17818,12 @@
<ref name="BUILT_IN_ANY_TYPE"/>
</element>
</optional>
- <!--<optional>
+ <optional>
<element name="w14:textOutline">
<ref name="BUILT_IN_ANY_TYPE"/>
</element>
</optional>
- <optional>
+ <!--<optional>
<element name="w14:textFill">
<ref name="BUILT_IN_ANY_TYPE"/>
</element>
@@ -23585,8 +23833,8 @@
<element name="w14:glow" tokenid="ooxml:EG_RPrBase_w14_glow"/>
<element name="w14:shadow" tokenid="ooxml:EG_RPrBase_w14_shadow"/>
<element name="w14:reflection" tokenid="ooxml:EG_RPrBase_w14_reflection"/>
- <!--<element name="w14:textOutline" tokenid="ooxml:EG_RPrBase_w14_textOutline"/>
- <element name="w14:textFill" tokenid="ooxml:EG_RPrBase_w14_textFill"/>
+ <element name="w14:textOutline" tokenid="ooxml:EG_RPrBase_w14_textOutline"/>
+ <!--<element name="w14:textFill" tokenid="ooxml:EG_RPrBase_w14_textFill"/>
<element name="w14:scene3d" tokenid="ooxml:EG_RPrBase_w14_scene3d"/>
<element name="w14:props3d" tokenid="ooxml:EG_RPrBase_w14_props3d"/>
<element name="w14:ligatures" tokenid="ooxml:EG_RPrBase_w14_ligatures"/>
commit 55d1464407776e8c11bb49b024a7a451c110745f
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.com>
Date: Tue Feb 25 09:55:25 2014 +0100
ooxml: also change the document name in the test
Change-Id: I930d7da93d49545a1622a158943ab7ef03fc4d1f
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
index ae014f1..57e5b27 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
@@ -3444,7 +3444,7 @@ DECLARE_OOXMLEXPORT_TEST(testDMLGroupShapeParaSpacing, "dml-groupshape-paraspaci
CPPUNIT_ASSERT_EQUAL(sal_Int32(0), getProperty<sal_Int32>(xRun, "ParaBottomMargin"));
}
-DECLARE_OOXMLEXPORT_TEST(testW14TextEffects, "TextEffects.docx")
+DECLARE_OOXMLEXPORT_TEST(testW14TextEffects, "TextEffects_Glow_Shadow_Reflection.docx")
{
xmlDocPtr pXmlDoc = parseExport("word/document.xml");
if (!pXmlDoc)
commit 6eb247f4e9cfc53aebe01d7393a2cc1464f737aa
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.com>
Date: Tue Feb 25 09:49:49 2014 +0100
ooxml: extend roundtrip test with w14:shadow and w14:reflection
Change-Id: If5843a6e5b18102d0a3379ece168d06ad0020275
diff --git a/sw/qa/extras/ooxmlexport/data/TextEffects.docx b/sw/qa/extras/ooxmlexport/data/TextEffects_Glow_Shadow_Reflection.docx
similarity index 60%
rename from sw/qa/extras/ooxmlexport/data/TextEffects.docx
rename to sw/qa/extras/ooxmlexport/data/TextEffects_Glow_Shadow_Reflection.docx
index d164cd9..e741207 100644
Binary files a/sw/qa/extras/ooxmlexport/data/TextEffects.docx and b/sw/qa/extras/ooxmlexport/data/TextEffects_Glow_Shadow_Reflection.docx differ
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
index 7b7c904..ae014f1 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
@@ -3451,7 +3451,66 @@ DECLARE_OOXMLEXPORT_TEST(testW14TextEffects, "TextEffects.docx")
return;
CPPUNIT_ASSERT(getXPath(pXmlDoc, "/w:document/w:body/w:p/w:r[1]/w:rPr/w14:glow", "rad").match("63500"));
+ CPPUNIT_ASSERT(getXPath(pXmlDoc, "/w:document/w:body/w:p/w:r[1]/w:rPr/w14:glow/w14:srgbClr", "val").match("00B0F0"));
+ CPPUNIT_ASSERT(getXPath(pXmlDoc, "/w:document/w:body/w:p/w:r[1]/w:rPr/w14:glow/w14:srgbClr/w14:alpha", "val").match("60000"));
+
CPPUNIT_ASSERT(getXPath(pXmlDoc, "/w:document/w:body/w:p/w:r[2]/w:rPr/w14:glow", "rad").match("228600"));
+ CPPUNIT_ASSERT(getXPath(pXmlDoc, "/w:document/w:body/w:p/w:r[2]/w:rPr/w14:glow/w14:schemeClr", "val").match("accent6"));
+ CPPUNIT_ASSERT(getXPath(pXmlDoc, "/w:document/w:body/w:p/w:r[2]/w:rPr/w14:glow/w14:schemeClr/w14:alpha", "val").match("60000"));
+ CPPUNIT_ASSERT(getXPath(pXmlDoc, "/w:document/w:body/w:p/w:r[2]/w:rPr/w14:glow/w14:schemeClr/w14:satMod", "val").match("175000"));
+
+ CPPUNIT_ASSERT(getXPath(pXmlDoc, "/w:document/w:body/w:p/w:r[4]/w:rPr/w14:shadow", "blurRad").match("63500"));
+ CPPUNIT_ASSERT(getXPath(pXmlDoc, "/w:document/w:body/w:p/w:r[4]/w:rPr/w14:shadow", "dist").match("0"));
+ CPPUNIT_ASSERT(getXPath(pXmlDoc, "/w:document/w:body/w:p/w:r[4]/w:rPr/w14:shadow", "dir").match("1800000"));
+ CPPUNIT_ASSERT(getXPath(pXmlDoc, "/w:document/w:body/w:p/w:r[4]/w:rPr/w14:shadow", "sx").match("100000"));
+ CPPUNIT_ASSERT(getXPath(pXmlDoc, "/w:document/w:body/w:p/w:r[4]/w:rPr/w14:shadow", "sy").match("-30000"));
+ CPPUNIT_ASSERT(getXPath(pXmlDoc, "/w:document/w:body/w:p/w:r[4]/w:rPr/w14:shadow", "kx").match("-800400"));
+ CPPUNIT_ASSERT(getXPath(pXmlDoc, "/w:document/w:body/w:p/w:r[4]/w:rPr/w14:shadow", "ky").match("0"));
+ CPPUNIT_ASSERT(getXPath(pXmlDoc, "/w:document/w:body/w:p/w:r[4]/w:rPr/w14:shadow", "algn").match("bl"));
+
+ CPPUNIT_ASSERT(getXPath(pXmlDoc, "/w:document/w:body/w:p/w:r[4]/w:rPr/w14:shadow/w14:schemeClr", "val").match("accent3"));
+ CPPUNIT_ASSERT(getXPath(pXmlDoc, "/w:document/w:body/w:p/w:r[4]/w:rPr/w14:shadow/w14:schemeClr/w14:alpha", "val").match("38000"));
+ CPPUNIT_ASSERT(getXPath(pXmlDoc, "/w:document/w:body/w:p/w:r[4]/w:rPr/w14:shadow/w14:schemeClr/w14:lumMod", "val").match("75000"));
+
+ CPPUNIT_ASSERT(getXPath(pXmlDoc, "/w:document/w:body/w:p/w:r[5]/w:rPr/w14:shadow", "blurRad").match("190500"));
+ CPPUNIT_ASSERT(getXPath(pXmlDoc, "/w:document/w:body/w:p/w:r[5]/w:rPr/w14:shadow", "dist").match("190500"));
+ CPPUNIT_ASSERT(getXPath(pXmlDoc, "/w:document/w:body/w:p/w:r[5]/w:rPr/w14:shadow", "dir").match("3000000"));
+ CPPUNIT_ASSERT(getXPath(pXmlDoc, "/w:document/w:body/w:p/w:r[5]/w:rPr/w14:shadow", "sx").match("100000"));
+ CPPUNIT_ASSERT(getXPath(pXmlDoc, "/w:document/w:body/w:p/w:r[5]/w:rPr/w14:shadow", "sy").match("100000"));
+ CPPUNIT_ASSERT(getXPath(pXmlDoc, "/w:document/w:body/w:p/w:r[5]/w:rPr/w14:shadow", "kx").match("0"));
+ CPPUNIT_ASSERT(getXPath(pXmlDoc, "/w:document/w:body/w:p/w:r[5]/w:rPr/w14:shadow", "ky").match("0"));
+ CPPUNIT_ASSERT(getXPath(pXmlDoc, "/w:document/w:body/w:p/w:r[5]/w:rPr/w14:shadow", "algn").match("ctr"));
+
+ CPPUNIT_ASSERT(getXPath(pXmlDoc, "/w:document/w:body/w:p/w:r[5]/w:rPr/w14:shadow/w14:srgbClr", "val").match("FF0000"));
+ CPPUNIT_ASSERT(getXPath(pXmlDoc, "/w:document/w:body/w:p/w:r[5]/w:rPr/w14:shadow/w14:srgbClr/w14:alpha", "val").match("10000"));
+
+ CPPUNIT_ASSERT(getXPath(pXmlDoc, "/w:document/w:body/w:p/w:r[6]/w:rPr/w14:reflection", "blurRad").match("6350"));
+ CPPUNIT_ASSERT(getXPath(pXmlDoc, "/w:document/w:body/w:p/w:r[6]/w:rPr/w14:reflection", "stA").match("60000"));
+ CPPUNIT_ASSERT(getXPath(pXmlDoc, "/w:document/w:body/w:p/w:r[6]/w:rPr/w14:reflection", "stPos").match("0"));
+ CPPUNIT_ASSERT(getXPath(pXmlDoc, "/w:document/w:body/w:p/w:r[6]/w:rPr/w14:reflection", "endA").match("900"));
+ CPPUNIT_ASSERT(getXPath(pXmlDoc, "/w:document/w:body/w:p/w:r[6]/w:rPr/w14:reflection", "endPos").match("60000"));
+ CPPUNIT_ASSERT(getXPath(pXmlDoc, "/w:document/w:body/w:p/w:r[6]/w:rPr/w14:reflection", "dist").match("60007"));
+ CPPUNIT_ASSERT(getXPath(pXmlDoc, "/w:document/w:body/w:p/w:r[6]/w:rPr/w14:reflection", "dir").match("5400000"));
+ CPPUNIT_ASSERT(getXPath(pXmlDoc, "/w:document/w:body/w:p/w:r[6]/w:rPr/w14:reflection", "fadeDir").match("5400000"));
+ CPPUNIT_ASSERT(getXPath(pXmlDoc, "/w:document/w:body/w:p/w:r[6]/w:rPr/w14:reflection", "sx").match("100000"));
+ CPPUNIT_ASSERT(getXPath(pXmlDoc, "/w:document/w:body/w:p/w:r[6]/w:rPr/w14:reflection", "sy").match("-100000"));
+ CPPUNIT_ASSERT(getXPath(pXmlDoc, "/w:document/w:body/w:p/w:r[6]/w:rPr/w14:reflection", "kx").match("0"));
+ CPPUNIT_ASSERT(getXPath(pXmlDoc, "/w:document/w:body/w:p/w:r[6]/w:rPr/w14:reflection", "ky").match("0"));
+ CPPUNIT_ASSERT(getXPath(pXmlDoc, "/w:document/w:body/w:p/w:r[6]/w:rPr/w14:reflection", "algn").match("bl"));
+
+ CPPUNIT_ASSERT(getXPath(pXmlDoc, "/w:document/w:body/w:p/w:r[7]/w:rPr/w14:reflection", "blurRad").match("6350"));
+ CPPUNIT_ASSERT(getXPath(pXmlDoc, "/w:document/w:body/w:p/w:r[7]/w:rPr/w14:reflection", "stA").match("55000"));
+ CPPUNIT_ASSERT(getXPath(pXmlDoc, "/w:document/w:body/w:p/w:r[7]/w:rPr/w14:reflection", "stPos").match("0"));
+ CPPUNIT_ASSERT(getXPath(pXmlDoc, "/w:document/w:body/w:p/w:r[7]/w:rPr/w14:reflection", "endA").match("300"));
+ CPPUNIT_ASSERT(getXPath(pXmlDoc, "/w:document/w:body/w:p/w:r[7]/w:rPr/w14:reflection", "endPos").match("45500"));
+ CPPUNIT_ASSERT(getXPath(pXmlDoc, "/w:document/w:body/w:p/w:r[7]/w:rPr/w14:reflection", "dist").match("0"));
+ CPPUNIT_ASSERT(getXPath(pXmlDoc, "/w:document/w:body/w:p/w:r[7]/w:rPr/w14:reflection", "dir").match("5400000"));
+ CPPUNIT_ASSERT(getXPath(pXmlDoc, "/w:document/w:body/w:p/w:r[7]/w:rPr/w14:reflection", "fadeDir").match("5400000"));
+ CPPUNIT_ASSERT(getXPath(pXmlDoc, "/w:document/w:body/w:p/w:r[7]/w:rPr/w14:reflection", "sx").match("100000"));
+ CPPUNIT_ASSERT(getXPath(pXmlDoc, "/w:document/w:body/w:p/w:r[7]/w:rPr/w14:reflection", "sy").match("-100000"));
+ CPPUNIT_ASSERT(getXPath(pXmlDoc, "/w:document/w:body/w:p/w:r[7]/w:rPr/w14:reflection", "kx").match("0"));
+ CPPUNIT_ASSERT(getXPath(pXmlDoc, "/w:document/w:body/w:p/w:r[7]/w:rPr/w14:reflection", "ky").match("0"));
+ CPPUNIT_ASSERT(getXPath(pXmlDoc, "/w:document/w:body/w:p/w:r[7]/w:rPr/w14:reflection", "algn").match("bl"));
}
DECLARE_OOXMLEXPORT_TEST(testAbi11739, "abi11739.docx")
commit 73f4fcc0f6b2c948f53f41d3e1e1914600f42561
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.com>
Date: Mon Feb 24 22:39:09 2014 +0100
writerfilter: simplify element id->name mapping
Change-Id: I842c27a8717d63fef0c11ee57a998e73bce0e1b9
diff --git a/writerfilter/source/dmapper/TextEffectsHandler.cxx b/writerfilter/source/dmapper/TextEffectsHandler.cxx
index fa0e2ad..36e0257 100644
--- a/writerfilter/source/dmapper/TextEffectsHandler.cxx
+++ b/writerfilter/source/dmapper/TextEffectsHandler.cxx
@@ -108,6 +108,32 @@ public:
}
};
+namespace
+{
+
+OUString getNameForElementId(sal_uInt32 aId)
+{
+ static std::map<sal_uInt32, OUString> aIdMap;
+ if(aIdMap.empty())
+ {
+ aIdMap[NS_ooxml::LN_EG_ColorChoice_srgbClr] = "srgbClr";
+ aIdMap[NS_ooxml::LN_EG_ColorChoice_schemeClr] = "schemeClr";
+ aIdMap[NS_ooxml::LN_EG_ColorTransform_tint] = "tint";
+ aIdMap[NS_ooxml::LN_EG_ColorTransform_shade] = "shade";
+ aIdMap[NS_ooxml::LN_EG_ColorTransform_alpha] = "alpha";
+ aIdMap[NS_ooxml::LN_EG_ColorTransform_hueMod] = "hueMod";
+ aIdMap[NS_ooxml::LN_EG_ColorTransform_sat] = "sat";
+ aIdMap[NS_ooxml::LN_EG_ColorTransform_satOff] = "satOff";
+ aIdMap[NS_ooxml::LN_EG_ColorTransform_satMod] = "satMod";
+ aIdMap[NS_ooxml::LN_EG_ColorTransform_lum] = "lum";
+ aIdMap[NS_ooxml::LN_EG_ColorTransform_lumOff] = "lumOff";
+ aIdMap[NS_ooxml::LN_EG_ColorTransform_lumMod] = "lumMod";
+ }
+ return aIdMap[aId];
+}
+
+}
+
OUString TextEffectsHandler::getSchemeColorValTypeString(sal_Int32 nType)
{
switch (nType)
@@ -287,49 +313,14 @@ void TextEffectsHandler::lcl_sprm(Sprm& rSprm)
mpGrabBagStack->pop();
sal_uInt32 nSprmId = rSprm.getId();
-
- switch(nSprmId)
+ OUString aElementName = getNameForElementId(nSprmId);
+ if(aElementName.isEmpty())
{
- case NS_ooxml::LN_EG_ColorChoice_srgbClr:
- mpGrabBagStack->push("srgbClr");
- break;
- case NS_ooxml::LN_EG_ColorChoice_schemeClr:
- mpGrabBagStack->push("schemeClr");
- break;
- case NS_ooxml::LN_EG_ColorTransform_tint:
- mpGrabBagStack->push("tint");
- break;
- case NS_ooxml::LN_EG_ColorTransform_shade:
- mpGrabBagStack->push("shade");
- break;
- case NS_ooxml::LN_EG_ColorTransform_alpha:
- mpGrabBagStack->push("alpha");
- break;
- case NS_ooxml::LN_EG_ColorTransform_hueMod:
- mpGrabBagStack->push("hueMod");
- break;
- case NS_ooxml::LN_EG_ColorTransform_sat:
- mpGrabBagStack->push("sat");
- break;
- case NS_ooxml::LN_EG_ColorTransform_satOff:
- mpGrabBagStack->push("satOff");
- break;
- case NS_ooxml::LN_EG_ColorTransform_satMod:
- mpGrabBagStack->push("satMod");
- break;
- case NS_ooxml::LN_EG_ColorTransform_lum:
- mpGrabBagStack->push("lum");
- break;
- case NS_ooxml::LN_EG_ColorTransform_lumOff:
- mpGrabBagStack->push("lumOff");
- break;
- case NS_ooxml::LN_EG_ColorTransform_lumMod:
- mpGrabBagStack->push("lumMod");
- break;
-
- default:
- break;
+ printf("Unknown element: %d\n", nSprmId);
+ // Element is unknown - leave the method.
+ return;
}
+ mpGrabBagStack->push(aElementName);
writerfilter::Reference<Properties>::Pointer_t pProperties = rSprm.getProps();
if( !pProperties.get())
@@ -340,23 +331,7 @@ void TextEffectsHandler::lcl_sprm(Sprm& rSprm)
if (mpGrabBagStack->getCurrentName() == "attributes")
mpGrabBagStack->pop();
- switch(nSprmId)
- {
- case NS_ooxml::LN_EG_ColorChoice_srgbClr:
- case NS_ooxml::LN_EG_ColorChoice_schemeClr:
- case NS_ooxml::LN_EG_ColorTransform_tint:
- case NS_ooxml::LN_EG_ColorTransform_shade:
- case NS_ooxml::LN_EG_ColorTransform_alpha:
- case NS_ooxml::LN_EG_ColorTransform_hueMod:
- case NS_ooxml::LN_EG_ColorTransform_sat:
- case NS_ooxml::LN_EG_ColorTransform_satOff:
- case NS_ooxml::LN_EG_ColorTransform_satMod:
- case NS_ooxml::LN_EG_ColorTransform_lum:
- case NS_ooxml::LN_EG_ColorTransform_lumOff:
- case NS_ooxml::LN_EG_ColorTransform_lumMod:
- mpGrabBagStack->pop();
- break;
- }
+ mpGrabBagStack->pop();
}
beans::PropertyValue TextEffectsHandler::getInteropGrabBag()
commit 12cf9f08f51c96783f62e29a04e507cc451a475b
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.com>
Date: Mon Feb 24 08:38:05 2014 +0100
writerfilter: add w14:textOutline attributes to model.xml
Change-Id: I3e29bbc68a6fa784831c9f56b902c1f67749751f
diff --git a/writerfilter/source/ooxml/model.xml b/writerfilter/source/ooxml/model.xml
index 8612d6b..0ee293c 100644
--- a/writerfilter/source/ooxml/model.xml
+++ b/writerfilter/source/ooxml/model.xml
@@ -5329,7 +5329,6 @@
<start name="stylisticSets"/>
<start name="cntxtAlts"/>
<grammar xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://relaxng.org/ns/structure/1.0" ns="http://schemas.microsoft.com/office/word/2010/wordml" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes" attributeFormDefault="qualified">
-
<define name="ST_SchemeColorVal">
<choice>
<value>bg1</value>
@@ -5344,7 +5343,6 @@
<value>accent6</value>
</choice>
</define>
-
<define name="ST_RectAlignment">
<choice>
<value>none</value>
@@ -5359,6 +5357,28 @@
<value>br</value>
</choice>
</define>
+ <define name="ST_LineCap">
+ <choice>
+ <value>rnd</value>
+ <value>sq</value>
+ <value>flat</value>
+ </choice>
+ </define>
+ <define name="ST_CompoundLine">
+ <choice>
+ <value>sng</value>
+ <value>dbl</value>
+ <value>thickThin</value>
+ <value>thinThick</value>
+ <value>tri</value>
+ </choice>
+ </define>
+ <define name="ST_PenAlignment">
+ <choice>
+ <value>ctr</value>
+ <value>in</value>
+ </choice>
+ </define>
<define name="ST_PositiveCoordinate">
<data type="long">
@@ -5415,6 +5435,14 @@
</data>
</define>
+ <define name="ST_LineWidth">
+ <data type="int">
+ <xs:documentation>Line width</xs:documentation>
+ <param name="minInclusive">0</param>
+ <param name="maxInclusive">20116800</param>
+ </data>
+ </define>
+
<define name="EG_ColorChoice">
<choice>
<optional>
@@ -5637,7 +5665,26 @@
</define>
<define name="CT_TextOutlineEffect">
- <empty/>
+ <optional>
+ <attribute name="w">
+ <ref name="ST_LineWidth"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="cap">
+ <ref name="ST_LineCap"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="cmpd">
+ <ref name="ST_CompoundLine"/>
+ </attribute>
+ </optional>
+ <optional>
+ <attribute name="algn">
+ <ref name="ST_PenAlignment"/>
+ </attribute>
+ </optional>
</define>
<define name="glow">
@@ -5741,6 +5788,26 @@
<value name="br" tokenid="ooxml:ST_RectAlignment_br">br</value>
</resource>
+ <resource name="ST_LineCap" resource="List" generated="yes">
+ <value name="rnd" tokenid="ooxml:ST_LineCap_rnd">rnd</value>
+ <value name="sq" tokenid="ooxml:ST_LineCap_sq">sq</value>
+ <value name="flat" tokenid="ooxml:ST_LineCap_flat">flat</value>
+ </resource>
+
+ <resource name="ST_CompoundLine" resource="List" generated="yes">
+ <value name="sng" tokenid="ooxml:ST_CompoundLine_sng">sng</value>
+ <value name="dbl" tokenid="ooxml:ST_CompoundLine_dbl">dbl</value>
+ <value name="thickThin" tokenid="ooxml:ST_CompoundLine_thickThin">thickThin</value>
+ <value name="thinThick" tokenid="ooxml:ST_CompoundLine_thinThick">thinThick</value>
+ <value name="tri" tokenid="ooxml:ST_CompoundLine_tri">tri</value>
+ </resource>
+
+ <resource name="ST_PenAlignment" resource="List" generated="yes">
+ <value name="ctr" tokenid="ooxml:ST_PenAlignment_ctr">ctr</value>
+ <value name="in" tokenid="ooxml:ST_PenAlignment_in">in</value>
+ <value name="flat" tokenid="ooxml:ST_PenAlignment_flat">flat</value>
+ </resource>
+
<resource name="ST_PositiveCoordinate" resource="Integer" generated="yes"/>
<resource name="ST_HexColorRGB" resource="Hex"/>
<resource name="ST_PositivePercentage" resource="Integer" generated="yes"/>
@@ -5748,6 +5815,7 @@
<resource name="ST_Percentage" resource="Integer" generated="yes"/>
<resource name="ST_PositiveFixedAngle" resource="Integer" generated="yes"/>
<resource name="ST_FixedAngle" resource="Integer" generated="yes"/>
+ <resource name="ST_LineWidth" resource="Integer" generated="yes"/>
<!-- Groups Resource Definitions -->
<resource name="EG_ColorTransform" resource="Properties" tag="character">
@@ -5811,6 +5879,13 @@
<attribute name="ky" tokenid="ooxml:CT_Reflection_ky"/>
<attribute name="algn" tokenid="ooxml:CT_Reflection_algn"/>
</resource>
+ <resource name="CT_TextOutlineEffect" resource="Properties" tag="character">
+ <attribute name="w" tokenid="ooxml:CT_TextOutlineEffect_w"/>
+ <attribute name="cap" tokenid="ooxml:CT_TextOutlineEffect_cap"/>
+ <attribute name="cmpd" tokenid="ooxml:CT_TextOutlineEffect_cmpd"/>
+ <attribute name="algn" tokenid="ooxml:CT_TextOutlineEffect_algn"/>
+ </resource>
+
<resource name="glow" resource="Properties" tag="character">
<element name="glow" tokenid="ooxml:glow_glow"/>
</resource>
More information about the Libreoffice-commits
mailing list