[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