diff options
author | Tomaž Vajngerl <tomaz.vajngerl@collabora.com> | 2014-02-25 12:01:00 +0100 |
---|---|---|
committer | Tomaž Vajngerl <tomaz.vajngerl@collabora.com> | 2014-02-25 12:08:52 +0100 |
commit | a6f73aca84311c43b400092d033024de6dae7887 (patch) | |
tree | 899d9d78b46178defa57d52221516b701ea081ab /writerfilter | |
parent | 029b2e15c255f4bfb24f908eb46900b2c25ff4ea (diff) |
writerfilter: put w14:textOutline attributes into a GrabBag
Change-Id: Id2ca1ee04a44c4fe17f057397646f621f8d899f7
Diffstat (limited to 'writerfilter')
-rw-r--r-- | writerfilter/source/dmapper/TextEffectsHandler.cxx | 187 | ||||
-rw-r--r-- | writerfilter/source/dmapper/TextEffectsHandler.hxx | 6 |
2 files changed, 178 insertions, 15 deletions
diff --git a/writerfilter/source/dmapper/TextEffectsHandler.cxx b/writerfilter/source/dmapper/TextEffectsHandler.cxx index 36e02572a01f..9789b01bb911 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 a2d2ca99de3f..3a8fb508b4e3 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; |