oox/source/token/tokens.txt | 7 sw/source/filter/ww8/docxattributeoutput.cxx | 72 +++- sw/source/filter/ww8/docxattributeoutput.hxx | 2 writerfilter/source/dmapper/DomainMapper.cxx | 33 +- writerfilter/source/dmapper/PropertyIds.cxx | 2 writerfilter/source/dmapper/PropertyIds.hxx | 1 writerfilter/source/dmapper/TextEffectsHandler.cxx | 104 +++++- writerfilter/source/dmapper/TextEffectsHandler.hxx | 19 - writerfilter/source/ooxml/model.xml | 336 +++++++++++++++++++-- 9 files changed, 491 insertions(+), 85 deletions(-)
New commits: commit fb217f27eb0f3a34c89d262d2c71a4ac4427ec5f Author: Tomaž Vajngerl <tomaz.vajng...@collabora.com> Date: Sun Feb 23 17:26:30 2014 +0100 writerfilter: comment out incomplete w14 elements from model.xml Change-Id: Ifdc0c0802e8d13d57023cb24096f8364e6ee9e91 diff --git a/writerfilter/source/ooxml/model.xml b/writerfilter/source/ooxml/model.xml index 16fd71e..1f90369 100644 --- a/writerfilter/source/ooxml/model.xml +++ b/writerfilter/source/ooxml/model.xml @@ -5568,6 +5568,10 @@ </optional> </define> + <define name="CT_TextOutlineEffect"> + <empty/> + </define> + <define name="glow"> <element name="glow"> <ref name="CT_Glow"/> @@ -5588,7 +5592,7 @@ <define name="textOutline"> <element name="textOutline"> - <empty/> + <ref name="CT_TextOutlineEffect"/> </element> </define> @@ -17403,7 +17407,7 @@ <ref name="BUILT_IN_ANY_TYPE"/> </element> </optional> - <optional> + <!--<optional> <element name="w14:reflection"> <ref name="BUILT_IN_ANY_TYPE"/> </element> @@ -17452,7 +17456,7 @@ <element name="w14:cntxtAlts"> <ref name="BUILT_IN_ANY_TYPE"/> </element> - </optional> + </optional>--> </define> <define name="EG_RPrContent"> <optional> @@ -23422,7 +23426,7 @@ <element name="oMath" tokenid="ooxml:EG_RPrBase_oMath"/> <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: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:scene3d" tokenid="ooxml:EG_RPrBase_w14_scene3d"/> @@ -23431,7 +23435,7 @@ <element name="w14:numForm" tokenid="ooxml:EG_RPrBase_w14_numForm"/> <element name="w14:numSpacing" tokenid="ooxml:EG_RPrBase_w14_numSpacing"/> <element name="w14:stylisticSets" tokenid="ooxml:EG_RPrBase_w14_stylisticSets"/> - <element name="w14:cntxtAlts" tokenid="ooxml:EG_RPrBase_w14_cntxtAlts"/> + <element name="w14:cntxtAlts" tokenid="ooxml:EG_RPrBase_w14_cntxtAlts"/>--> </resource> <resource name="EG_RPrContent" resource="Properties" tag="character"> <element name="rPrChange" tokenid="ooxml:EG_RPrContent_rPrChange"/> commit ea7dd1a0551dd70093f7f46d86488b1bc01c3f40 Author: Tomaž Vajngerl <tomaz.vajng...@collabora.com> Date: Sun Feb 23 17:22:12 2014 +0100 writerfilter: restructure call to TextEffectsHandler Change-Id: Iba02edccfb09c2b42be164c62c57315b58884c98 diff --git a/writerfilter/source/dmapper/DomainMapper.cxx b/writerfilter/source/dmapper/DomainMapper.cxx index 8e43ede..b3c419b 100644 --- a/writerfilter/source/dmapper/DomainMapper.cxx +++ b/writerfilter/source/dmapper/DomainMapper.cxx @@ -2348,15 +2348,15 @@ void DomainMapper::sprmWithProps( Sprm& rSprm, PropertyMapPtr rContext, SprmType case NS_ooxml::LN_stylisticSets_stylisticSets: case NS_ooxml::LN_cntxtAlts_cntxtAlts: { - writerfilter::Reference<Properties>::Pointer_t pProperties = rSprm.getProps(); - if( pProperties.get()) + TextEffectsHandlerPtr pTextEffectsHandlerPtr( new TextEffectsHandler(nSprmId) ); + boost::optional<PropertyIds> aPropertyId = pTextEffectsHandlerPtr->getGrabBagPropertyId(); + if(aPropertyId) { - TextEffectsHandlerPtr pTextEffectsHandlerPtr( new TextEffectsHandler(nSprmId) ); - boost::optional<PropertyIds> aPropertyId = pTextEffectsHandlerPtr->getGrabBagPropertyId(); - - if(aPropertyId) + writerfilter::Reference<Properties>::Pointer_t pProperties = rSprm.getProps(); + if( pProperties.get()) { pProperties->resolve(*pTextEffectsHandlerPtr); + rContext->Insert(*aPropertyId, uno::makeAny(pTextEffectsHandlerPtr->getInteropGrabBag()), true, CHAR_GRAB_BAG); } } commit ab2b20b66394c1d219caafc380488f5296c1c12c Author: Tomaž Vajngerl <tomaz.vajng...@collabora.com> Date: Sat Feb 22 20:42:37 2014 +0100 ooxml: handle w14:shadow in import/export Refactor the code to support an additional main element at processing of w14 elements for rPr. Change-Id: Iaf18a11bbda245b0b5b629e5f2e9f1f9682e6d41 diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx index b81fcc6..b34ce93 100644 --- a/sw/source/filter/ww8/docxattributeoutput.cxx +++ b/sw/source/filter/ww8/docxattributeoutput.cxx @@ -1123,6 +1123,7 @@ void DocxAttributeOutput::InitCollectedRunProperties() FSNS( XML_w, XML_oMath ), FSNS( XML_w, XML_rPrChange ), FSNS( XML_w14, XML_glow ), + FSNS( XML_w14, XML_shadow ), }; // postpone the output so that we can later [in EndParagraphProperties()] @@ -1145,10 +1146,22 @@ struct NameToId const sal_Int32 maId; }; -const NameToId aNameToIdMapping[] = +const NameToId constNameToIdMapping[] = { + { OUString("glow"), FSNS( XML_w14, XML_glow ) }, + { OUString("shadow"), FSNS( XML_w14, XML_shadow ) }, + { OUString("val"), FSNS( XML_w14, XML_val ) }, { OUString("rad"), FSNS( XML_w14, XML_rad ) }, + { OUString("blurRad"), FSNS( XML_w14, XML_blurRad ) }, + { OUString("dist"), FSNS( XML_w14, XML_dist ) }, + { OUString("dir"), FSNS( XML_w14, XML_dir ) }, + { 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 ) }, @@ -1163,6 +1176,19 @@ const NameToId aNameToIdMapping[] = { OUString("lumMod"), FSNS( XML_w14, XML_lumMod ) }, }; +boost::optional<sal_Int32> lclGetElementIdForName(OUString aName) +{ + sal_Int32 aLength = sizeof (constNameToIdMapping) / sizeof(NameToId); + for (sal_Int32 i=0; i < aLength; ++i) + { + if(aName == constNameToIdMapping[i].maName) + { + return constNameToIdMapping[i].maId; + } + } + return boost::optional<sal_Int32>(); +} + void lclProcessRecursiveGrabBag(sal_Int32 aElementId, css::uno::Sequence<css::beans::PropertyValue> aElements, sax_fastparser::FSHelperPtr pSerializer) { css::uno::Sequence<css::beans::PropertyValue> aAttributes; @@ -1190,14 +1216,9 @@ void lclProcessRecursiveGrabBag(sal_Int32 aElementId, css::uno::Sequence<css::be aValue = OUStringToOString(aAny.get<OUString>(), RTL_TEXTENCODING_ASCII_US); } - sal_Int32 aLength = sizeof (aNameToIdMapping) / sizeof(NameToId); - for (sal_Int32 i=0; i < aLength; ++i) - { - if(aAttributes[j].Name == aNameToIdMapping[i].maName) - { - pAttributes->add( aNameToIdMapping[i].maId, aValue.getStr()); - } - } + boost::optional<sal_Int32> aSubElementId = lclGetElementIdForName(aAttributes[j].Name); + if(aSubElementId) + pAttributes->add(*aSubElementId, aValue.getStr()); } XFastAttributeListRef xAttributesList( pAttributes ); @@ -1208,14 +1229,11 @@ void lclProcessRecursiveGrabBag(sal_Int32 aElementId, css::uno::Sequence<css::be { css::uno::Sequence<css::beans::PropertyValue> aSumElements; - sal_Int32 aLength = sizeof (aNameToIdMapping) / sizeof(NameToId); - for (sal_Int32 i=0; i < aLength; ++i) + boost::optional<sal_Int32> aSubElementId = lclGetElementIdForName(aElements[j].Name); + if(aSubElementId) { - if( aElements[j].Name == aNameToIdMapping[i].maName) - { - aElements[j].Value >>= aSumElements; - lclProcessRecursiveGrabBag(aNameToIdMapping[i].maId, aSumElements, pSerializer); - } + aElements[j].Value >>= aSumElements; + lclProcessRecursiveGrabBag(*aSubElementId, aSumElements, pSerializer); } } @@ -1261,7 +1279,16 @@ void DocxAttributeOutput::WriteCollectedRunProperties() if (m_aTextEffectsGrabBag.getLength() > 0) { - lclProcessRecursiveGrabBag(FSNS( XML_w14, XML_glow ), m_aTextEffectsGrabBag, m_pSerializer); + for (sal_Int32 i=0; i < m_aTextEffectsGrabBag.getLength(); ++i) + { + boost::optional<sal_Int32> aElementId = lclGetElementIdForName(m_aTextEffectsGrabBag[i].Name); + if(aElementId) + { + uno::Sequence<beans::PropertyValue> aGrabBagSeq; + m_aTextEffectsGrabBag[i].Value >>= aGrabBagSeq; + lclProcessRecursiveGrabBag(*aElementId, aGrabBagSeq, m_pSerializer); + } + } m_aTextEffectsGrabBag.realloc(0); } } @@ -6437,11 +6464,14 @@ void DocxAttributeOutput::CharGrabBag( const SfxGrabBagItem& rItem ) { // just skip these, they were processed before } - else if (i->first == "CharGlowTextEffect") + else if (i->first == "CharGlowTextEffect" || + i->first == "CharShadowTextEffect") { - uno::Sequence<beans::PropertyValue> aGrabBagSeq; - i->second >>= aGrabBagSeq; - m_aTextEffectsGrabBag = aGrabBagSeq; + beans::PropertyValue aPropertyValue; + i->second >>= aPropertyValue; + sal_Int32 aLength = m_aTextEffectsGrabBag.getLength(); + m_aTextEffectsGrabBag.realloc(m_aTextEffectsGrabBag.getLength() + 1); + m_aTextEffectsGrabBag[aLength] = aPropertyValue; } else SAL_INFO("sw.ww8", "DocxAttributeOutput::CharGrabBag: unhandled grab bag property " << i->first); diff --git a/sw/source/filter/ww8/docxattributeoutput.hxx b/sw/source/filter/ww8/docxattributeoutput.hxx index 8463d39..30474f1 100644 --- a/sw/source/filter/ww8/docxattributeoutput.hxx +++ b/sw/source/filter/ww8/docxattributeoutput.hxx @@ -736,7 +736,7 @@ private: /// names of these bookmarks for each sequence. std::map<OUString, std::vector<OString> > m_aSeqBookmarksNames; - /// GrabBag for text effexts like glow + /// GrabBag for text effexts like glow, shadow, ... css::uno::Sequence<css::beans::PropertyValue> m_aTextEffectsGrabBag; /// The current table helper diff --git a/writerfilter/source/dmapper/DomainMapper.cxx b/writerfilter/source/dmapper/DomainMapper.cxx index 80f1ed8..8e43ede 100644 --- a/writerfilter/source/dmapper/DomainMapper.cxx +++ b/writerfilter/source/dmapper/DomainMapper.cxx @@ -2336,20 +2336,29 @@ void DomainMapper::sprmWithProps( Sprm& rSprm, PropertyMapPtr rContext, SprmType m_pImpl->m_nTableDepth--; break; case NS_ooxml::LN_glow_glow: + case NS_ooxml::LN_shadow_shadow: + case NS_ooxml::LN_reflection_reflection: + case NS_ooxml::LN_textOutline_textOutline: + case NS_ooxml::LN_textFill_textFill: + case NS_ooxml::LN_scene3d_scene3d: + case NS_ooxml::LN_props3d_props3d: + case NS_ooxml::LN_ligatures_ligatures: + case NS_ooxml::LN_numForm_numForm: + case NS_ooxml::LN_numSpacing_numSpacing: + case NS_ooxml::LN_stylisticSets_stylisticSets: + case NS_ooxml::LN_cntxtAlts_cntxtAlts: { writerfilter::Reference<Properties>::Pointer_t pProperties = rSprm.getProps(); if( pProperties.get()) { - TextEffectsHandlerPtr pTextEffectsHandlerPtr( new TextEffectsHandler ); - sal_Bool bEnableTempGrabBag = !pTextEffectsHandlerPtr->isInteropGrabBagEnabled(); - if( bEnableTempGrabBag ) - pTextEffectsHandlerPtr->enableInteropGrabBag( "glow" ); - - pProperties->resolve(*pTextEffectsHandlerPtr); + TextEffectsHandlerPtr pTextEffectsHandlerPtr( new TextEffectsHandler(nSprmId) ); + boost::optional<PropertyIds> aPropertyId = pTextEffectsHandlerPtr->getGrabBagPropertyId(); - rContext->Insert(PROP_CHAR_GLOW_TEXT_EFFECT, pTextEffectsHandlerPtr->getInteropGrabBag().Value, true, CHAR_GRAB_BAG); - if(bEnableTempGrabBag) - pTextEffectsHandlerPtr->disableInteropGrabBag(); + if(aPropertyId) + { + pProperties->resolve(*pTextEffectsHandlerPtr); + rContext->Insert(*aPropertyId, uno::makeAny(pTextEffectsHandlerPtr->getInteropGrabBag()), true, CHAR_GRAB_BAG); + } } } break; diff --git a/writerfilter/source/dmapper/PropertyIds.cxx b/writerfilter/source/dmapper/PropertyIds.cxx index ce007e2..c3792cc 100644 --- a/writerfilter/source/dmapper/PropertyIds.cxx +++ b/writerfilter/source/dmapper/PropertyIds.cxx @@ -115,7 +115,6 @@ OUString PropertyNameSupplier::GetName( PropertyIds eId ) const case PROP_CHAR_BOTTOM_BORDER_DISTANCE: sName = "CharBottomBorderDistance"; break; case PROP_CHAR_SHADOW_FORMAT: sName = "CharShadowFormat"; break; case PROP_CHAR_HIGHLIGHT: sName = "CharHighlight"; break; - case PROP_PARA_STYLE_NAME: sName = "ParaStyleName"; break; case PROP_PARA_ADJUST: sName = "ParaAdjust"; break; case PROP_PARA_VERT_ALIGNMENT: sName = "ParaVertAlignment"; break; @@ -377,6 +376,7 @@ OUString PropertyNameSupplier::GetName( PropertyIds eId ) const case PROP_TOC_PARAGRAPH_OUTLINE_LEVEL : sName = "TOCParagraphOutlineLevel"; break; case PROP_CHAR_THEME_COLOR_TINT : sName = "CharThemeColorTint"; break; case PROP_CHAR_GLOW_TEXT_EFFECT : sName = "CharGlowTextEffect"; break; + case PROP_CHAR_SHADOW_TEXT_EFFECT : sName = "CharShadowTextEffect"; break; } ::std::pair<PropertyNameMap_t::iterator,bool> aInsertIt = m_pImpl->aNameMap.insert( PropertyNameMap_t::value_type( eId, sName )); diff --git a/writerfilter/source/dmapper/PropertyIds.hxx b/writerfilter/source/dmapper/PropertyIds.hxx index c8155b1..18ba148 100644 --- a/writerfilter/source/dmapper/PropertyIds.hxx +++ b/writerfilter/source/dmapper/PropertyIds.hxx @@ -348,6 +348,7 @@ enum PropertyIds ,PROP_TOC_PARAGRAPH_OUTLINE_LEVEL ,PROP_CHAR_THEME_COLOR_TINT ,PROP_CHAR_GLOW_TEXT_EFFECT + ,PROP_CHAR_SHADOW_TEXT_EFFECT }; struct PropertyNameSupplier_Impl; class PropertyNameSupplier diff --git a/writerfilter/source/dmapper/TextEffectsHandler.cxx b/writerfilter/source/dmapper/TextEffectsHandler.cxx index 060a389..edb219e 100644 --- a/writerfilter/source/dmapper/TextEffectsHandler.cxx +++ b/writerfilter/source/dmapper/TextEffectsHandler.cxx @@ -98,7 +98,7 @@ public: } }; -OUString TextEffectsHandler::getSchemeColorTypeString(sal_Int32 nType) +OUString TextEffectsHandler::getSchemeColorValTypeString(sal_Int32 nType) { switch (nType) { @@ -118,17 +118,70 @@ OUString TextEffectsHandler::getSchemeColorTypeString(sal_Int32 nType) return OUString(); } +OUString TextEffectsHandler::getRectAlignmentString(sal_Int32 nType) +{ + switch (nType) + { + case NS_ooxml::LN_ST_RectAlignment_none: return OUString("none"); + case NS_ooxml::LN_ST_RectAlignment_tl: return OUString("tl"); + case NS_ooxml::LN_ST_RectAlignment_t: return OUString("t"); + case NS_ooxml::LN_ST_RectAlignment_tr: return OUString("tr"); + case NS_ooxml::LN_ST_RectAlignment_l: return OUString("l"); + case NS_ooxml::LN_ST_RectAlignment_ctr: return OUString("ctr"); + case NS_ooxml::LN_ST_RectAlignment_r: return OUString("r"); + case NS_ooxml::LN_ST_RectAlignment_bl: return OUString("bl"); + case NS_ooxml::LN_ST_RectAlignment_b: return OUString("b"); + case NS_ooxml::LN_ST_RectAlignment_br: return OUString("br"); -TextEffectsHandler::TextEffectsHandler() : + default: break; + } + return OUString(); +} + +void TextEffectsHandler::convertElementIdToPropertyId(sal_Int32 aElementId) +{ + switch(aElementId) + { + case NS_ooxml::LN_glow_glow: + maPropertyId = PROP_CHAR_GLOW_TEXT_EFFECT; + maElementName = "glow"; + break; + case NS_ooxml::LN_shadow_shadow: + maPropertyId = PROP_CHAR_SHADOW_TEXT_EFFECT; + maElementName = "shadow"; + break; + case NS_ooxml::LN_reflection_reflection: + case NS_ooxml::LN_textOutline_textOutline: + case NS_ooxml::LN_textFill_textFill: + case NS_ooxml::LN_scene3d_scene3d: + case NS_ooxml::LN_props3d_props3d: + case NS_ooxml::LN_ligatures_ligatures: + case NS_ooxml::LN_numForm_numForm: + case NS_ooxml::LN_numSpacing_numSpacing: + case NS_ooxml::LN_stylisticSets_stylisticSets: + case NS_ooxml::LN_cntxtAlts_cntxtAlts: + default: + break; + } +} + +TextEffectsHandler::TextEffectsHandler(sal_uInt32 aElementId) : LoggedProperties(dmapper_logger, "TextEffectsHandler"), mpGrabBagStack(NULL) { + convertElementIdToPropertyId(aElementId); + mpGrabBagStack.reset(new GrabBagStack(maElementName)); } TextEffectsHandler::~TextEffectsHandler() { } +boost::optional<PropertyIds> TextEffectsHandler::getGrabBagPropertyId() +{ + return maPropertyId; +} + void TextEffectsHandler::lcl_attribute(Id aName, Value& aValue) { @@ -147,7 +200,7 @@ void TextEffectsHandler::lcl_attribute(Id aName, Value& aValue) mpGrabBagStack->appendElement("val", makeAny(sal_Int32(aValue.getInt()))); break; case NS_ooxml::LN_CT_SchemeColor_val: - mpGrabBagStack->appendElement("val", makeAny(getSchemeColorTypeString(sal_Int32(aValue.getInt())))); + mpGrabBagStack->appendElement("val", makeAny(getSchemeColorValTypeString(sal_Int32(aValue.getInt())))); break; case NS_ooxml::LN_CT_SRgbColor_val: { @@ -155,12 +208,39 @@ void TextEffectsHandler::lcl_attribute(Id aName, Value& aValue) OUStringBuffer aStr; comphelper::string::padToLength(aStr, 6 - aBuf.getLength(), '0'); aStr.append(aBuf.getStr()); - mpGrabBagStack->appendElement("val", makeAny(aStr.makeStringAndClear())); + mpGrabBagStack->appendElement("val", makeAny(aStr.makeStringAndClear().toAsciiUpperCase())); } break; case NS_ooxml::LN_CT_Glow_rad: mpGrabBagStack->appendElement("rad", makeAny(sal_Int32(aValue.getInt()))); break; + case NS_ooxml::LN_CT_Shadow_blurRad: + mpGrabBagStack->appendElement("blurRad", makeAny(sal_Int32(aValue.getInt()))); + break; + case NS_ooxml::LN_CT_Shadow_dist: + mpGrabBagStack->appendElement("dist", makeAny(sal_Int32(aValue.getInt()))); + break; + case NS_ooxml::LN_CT_Shadow_dir: + mpGrabBagStack->appendElement("dir", makeAny(sal_Int32(aValue.getInt()))); + break; + case NS_ooxml::LN_CT_Shadow_sx: + mpGrabBagStack->appendElement("sx", makeAny(sal_Int32(aValue.getInt()))); + break; + case NS_ooxml::LN_CT_Shadow_sy: + mpGrabBagStack->appendElement("sy", makeAny(sal_Int32(aValue.getInt()))); + break; + case NS_ooxml::LN_CT_Shadow_kx: + mpGrabBagStack->appendElement("kx", makeAny(sal_Int32(aValue.getInt()))); + break; + case NS_ooxml::LN_CT_Shadow_ky: + mpGrabBagStack->appendElement("ky", makeAny(sal_Int32(aValue.getInt()))); + break; + case NS_ooxml::LN_CT_Shadow_algn: + { + uno::Any aAny = makeAny(getRectAlignmentString(sal_Int32(aValue.getInt()))); + mpGrabBagStack->appendElement("algn", aAny); + } + break; default: break; } @@ -251,22 +331,6 @@ beans::PropertyValue TextEffectsHandler::getInteropGrabBag() return aReturn; } -void TextEffectsHandler::enableInteropGrabBag(OUString aName) -{ - mpGrabBagStack.reset(new GrabBagStack(aName)); -} - -void TextEffectsHandler::disableInteropGrabBag() -{ - mpGrabBagStack.reset(); -} - -bool TextEffectsHandler::isInteropGrabBagEnabled() -{ - return mpGrabBagStack.get() != NULL; -} - - }//namespace dmapper } //namespace writerfilter diff --git a/writerfilter/source/dmapper/TextEffectsHandler.hxx b/writerfilter/source/dmapper/TextEffectsHandler.hxx index f224c63..a2d2ca9 100644 --- a/writerfilter/source/dmapper/TextEffectsHandler.hxx +++ b/writerfilter/source/dmapper/TextEffectsHandler.hxx @@ -13,10 +13,15 @@ #include <WriterFilterDllApi.hxx> #include <resourcemodel/LoggedResources.hxx> + #include <com/sun/star/beans/PropertyValue.hpp> #include <com/sun/star/lang/XComponent.hpp> #include <i18nlangtag/languagetag.hxx> + +#include <PropertyIds.hxx> + #include <boost/scoped_ptr.hpp> +#include <boost/optional.hpp> namespace writerfilter { namespace dmapper @@ -28,22 +33,26 @@ class GrabBagStack; class TextEffectsHandler : public LoggedProperties { private: + boost::optional<PropertyIds> maPropertyId; + OUString maElementName; boost::scoped_ptr<GrabBagStack> mpGrabBagStack; + void convertElementIdToPropertyId(sal_Int32 aElementId); + // LoggedProperties virtual void lcl_attribute(Id aName, Value& aValue); virtual void lcl_sprm(Sprm& sprm); public: - TextEffectsHandler(); + TextEffectsHandler(sal_uInt32 aElementId); virtual ~TextEffectsHandler(); + boost::optional<PropertyIds> getGrabBagPropertyId(); + css::beans::PropertyValue getInteropGrabBag(); - void enableInteropGrabBag(OUString aName); - void disableInteropGrabBag(); - bool isInteropGrabBagEnabled(); - static OUString getSchemeColorTypeString(sal_Int32 nType); + static OUString getSchemeColorValTypeString(sal_Int32 nType); + static OUString getRectAlignmentString(sal_Int32 nType); }; typedef boost::shared_ptr<TextEffectsHandler> TextEffectsHandlerPtr; commit 7f93b4001f3b7266695b46b3a5c95d0b9c66af35 Author: Tomaž Vajngerl <tomaz.vajng...@collabora.com> Date: Sat Feb 22 20:37:28 2014 +0100 writerfilter: add all main w14 elements for a rPr Change-Id: I8fa71bdf837eac6ea277d2e2507622a783625a11 diff --git a/writerfilter/source/ooxml/model.xml b/writerfilter/source/ooxml/model.xml index 69b97dd..16fd71e 100644 --- a/writerfilter/source/ooxml/model.xml +++ b/writerfilter/source/ooxml/model.xml @@ -5317,8 +5317,49 @@ </namespace> <namespace name="w14" file="w14.rng"> <start name="glow"/> + <start name="shadow"/> + <start name="reflection"/> + <start name="textOutline"/> + <start name="textFill"/> + <start name="scene3d"/> + <start name="props3d"/> + <start name="ligatures"/> + <start name="numForm"/> + <start name="numSpacing"/> + <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> + <value>tx1</value> + <value>bg2</value> + <value>tx2</value> + <value>accent1</value> + <value>accent2</value> + <value>accent3</value> + <value>accent4</value> + <value>accent5</value> + <value>accent6</value> + </choice> + </define> + + <define name="ST_RectAlignment"> + <choice> + <value>none</value> + <value>tl</value> + <value>t</value> + <value>tr</value> + <value>l</value> + <value>ctr</value> + <value>r</value> + <value>bl</value> + <value>b</value> + <value>br</value> + </choice> + </define> + <define name="ST_PositiveCoordinate"> <data type="long"> <xs:documentation>Positive Coordinate</xs:documentation> @@ -5358,19 +5399,20 @@ </data> </define> - <define name="ST_SchemeColorVal"> - <choice> - <value>bg1</value> - <value>tx1</value> - <value>bg2</value> - <value>tx2</value> - <value>accent1</value> - <value>accent2</value> - <value>accent3</value> - <value>accent4</value> - <value>accent5</value> - <value>accent6</value> - </choice> + <define name="ST_PositiveFixedAngle"> + <data type="int"> + <xs:documentation>Positive fixed angle</xs:documentation> + <param name="minInclusive">0</param> + <param name="maxInclusive">21600000</param> + </data> + </define> + + <define name="ST_FixedAngle"> + <data type="int"> + <xs:documentation>Fixed angle</xs:documentation> + <param name="minInclusive">-5400000</param> + <param name="maxInclusive">5400000</param> + </data> </define> <define name="EG_ColorChoice"> @@ -5443,29 +5485,18 @@ </choice> </define> - <define name="CT_Glow"> - <optional> - <ref name="EG_ColorChoice"/> - </optional> - <attribute name="rad"> - <ref name="ST_PositiveCoordinate"/> - </attribute> - </define> - <define name="CT_SRgbColor"> <ref name="EG_ColorTransform"/> <attribute name="val"> <ref name="ST_HexColorRGB"/> </attribute> </define> - <define name="CT_SchemeColor"> <ref name="EG_ColorTransform"/> <attribute name="val"> <ref name="ST_SchemeColorVal"/> </attribute> </define> - <define name="CT_PositiveFixedPercentage"> <attribute name="val"> <ref name="ST_PositiveFixedPercentage"/> @@ -5482,13 +5513,136 @@ </attribute> </define> + <define name="CT_Glow"> + <optional> + <ref name="EG_ColorChoice"/> + </optional> + <attribute name="rad"> + <ref name="ST_PositiveCoordinate"/> + </attribute> + </define> + + <define name="CT_Shadow"> + <optional> + <ref name="EG_ColorChoice"/> + </optional> + <optional> + <attribute name="blurRad"> + <ref name="ST_PositiveCoordinate"/> + </attribute> + </optional> + <optional> + <attribute name="dist"> + <ref name="ST_PositiveCoordinate"/> + </attribute> + </optional> + <optional> + <attribute name="dir"> + <ref name="ST_PositiveFixedAngle"/> + </attribute> + </optional> + <optional> + <attribute name="sx"> + <ref name="ST_Percentage"/> + </attribute> + </optional> + <optional> + <attribute name="sy"> + <ref name="ST_Percentage"/> + </attribute> + </optional> + <optional> + <attribute name="kx"> + <ref name="ST_FixedAngle"/> + </attribute> + </optional> + <optional> + <attribute name="ky"> + <ref name="ST_FixedAngle"/> + </attribute> + </optional> + <optional> + <attribute name="algn"> + <ref name="ST_RectAlignment"/> + </attribute> + </optional> + </define> + <define name="glow"> <element name="glow"> <ref name="CT_Glow"/> </element> </define> + + <define name="shadow"> + <element name="shadow"> + <ref name="CT_Shadow"/> + </element> + </define> + + <define name="reflection"> + <element name="reflection"> + <empty/> + </element> + </define> + + <define name="textOutline"> + <element name="textOutline"> + <empty/> + </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/> + </element> + </define> + </grammar> + <!-- Simple Types Resource Definitions --> <resource name="ST_SchemeColorVal" resource="List" generated="yes"> <value name="bg1" tokenid="ooxml:ST_SchemeColorVal_bg1">bg1</value> <value name="tx1" tokenid="ooxml:ST_SchemeColorVal_tx1">tx1</value> @@ -5501,12 +5655,29 @@ <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> + <value name="t" tokenid="ooxml:ST_RectAlignment_t">t</value> + <value name="tr" tokenid="ooxml:ST_RectAlignment_tr">tr</value> + <value name="l" tokenid="ooxml:ST_RectAlignment_l">l</value> + <value name="ctr" tokenid="ooxml:ST_RectAlignment_ctr">ctr</value> + <value name="r" tokenid="ooxml:ST_RectAlignment_r">r</value> + <value name="bl" tokenid="ooxml:ST_RectAlignment_bl">bl</value> + <value name="b" tokenid="ooxml:ST_RectAlignment_b">b</value> + <value name="br" tokenid="ooxml:ST_RectAlignment_br">br</value> + </resource> + <resource name="ST_PositiveCoordinate" resource="Integer" generated="yes"/> <resource name="ST_HexColorRGB" resource="Hex"/> <resource name="ST_PositivePercentage" resource="Integer" generated="yes"/> <resource name="ST_PositiveFixedPercentage" resource="Integer" generated="yes"/> <resource name="ST_Percentage" resource="Integer" generated="yes"/> + <resource name="ST_PositiveFixedAngle" resource="Integer" generated="yes"/> + <resource name="ST_FixedAngle" resource="Integer" generated="yes"/> + <!-- Groups Resource Definitions --> <resource name="EG_ColorTransform" resource="Properties" tag="character"> <element name="tint" tokenid="ooxml:EG_ColorTransform_tint"/> <element name="shade" tokenid="ooxml:EG_ColorTransform_shade"/> @@ -5523,6 +5694,8 @@ <element name="srgbClr" tokenid="ooxml:EG_ColorChoice_srgbClr"/> <element name="schemeClr" tokenid="ooxml:EG_ColorChoice_schemeClr"/> </resource> + + <!-- Complex Types Resource Definitions --> <resource name="CT_Glow" resource="Properties" tag="character"> <attribute name="rad" tokenid="ooxml:CT_Glow_rad"/> </resource> @@ -5541,9 +5714,52 @@ <resource name="CT_Percentage" resource="Properties" tag="character"> <attribute name="val" tokenid="ooxml:CT_Percentage_val"/> </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"/> + <attribute name="dir" tokenid="ooxml:CT_Shadow_dir"/> + <attribute name="sx" tokenid="ooxml:CT_Shadow_sx"/> + <attribute name="sy" tokenid="ooxml:CT_Shadow_sy"/> + <attribute name="kx" tokenid="ooxml:CT_Shadow_kx"/> + <attribute name="ky" tokenid="ooxml:CT_Shadow_ky"/> + <attribute name="algn" tokenid="ooxml:CT_Shadow_algn"/> + </resource> <resource name="glow" resource="Properties" tag="character"> <element name="glow" tokenid="ooxml:glow_glow"/> </resource> + <resource name="shadow" resource="Properties" tag="character"> + <element name="shadow" tokenid="ooxml:shadow_shadow"/> + </resource> + <resource name="reflection" resource="Properties" tag="character"> + <element name="reflection" tokenid="ooxml:reflection_reflection"/> + </resource> + <resource name="textOutline" resource="Properties" tag="character"> + <element name="textOutline" tokenid="ooxml:textOutline_textOutline"/> + </resource> + <resource name="textFill" resource="Properties" tag="character"> + <element name="textFill" tokenid="ooxml:textFill_textFill"/> + </resource> + <resource name="scene3d" resource="Properties" tag="character"> + <element name="scene3d" tokenid="ooxml:scene3d_scene3d"/> + </resource> + <resource name="props3d" resource="Properties" tag="character"> + <element name="props3d" tokenid="ooxml:props3d_props3d"/> + </resource> + <resource name="ligatures" resource="Properties" tag="character"> + <element name="ligatures" tokenid="ooxml:ligatures_ligatures"/> + </resource> + <resource name="numForm" resource="Properties" tag="character"> + <element name="numForm" tokenid="ooxml:numForm_numForm"/> + </resource> + <resource name="numSpacing" resource="Properties" tag="character"> + <element name="numSpacing" tokenid="ooxml:numSpacing_numSpacing"/> + </resource> + <resource name="stylisticSets" resource="Properties" tag="character"> + <element name="stylisticSets" tokenid="ooxml:stylisticSets_stylisticSets"/> + </resource> + <resource name="cntxtAlts" resource="Properties" tag="character"> + <element name="cntxtAlts" tokenid="ooxml:cntxtAlts_cntxtAlts"/> + </resource> </namespace> <namespace name="dml-shapeGeometry" file="dml-shapeGeometry.rng" todo="ignore"> <grammar xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2006/xpath-functions" xmlns="http://relaxng.org/ns/structure/1.0" ns="http://schemas.openxmlformats.org/drawingml/2006/main" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"> @@ -17177,11 +17393,66 @@ <ref name="CT_OnOff"/> </element> </optional> - <optional> + <optional> <element name="w14:glow"> <ref name="BUILT_IN_ANY_TYPE"/> </element> </optional> + <optional> + <element name="w14:shadow"> + <ref name="BUILT_IN_ANY_TYPE"/> + </element> + </optional> + <optional> + <element name="w14:reflection"> + <ref name="BUILT_IN_ANY_TYPE"/> + </element> + </optional> + <optional> + <element name="w14:textOutline"> + <ref name="BUILT_IN_ANY_TYPE"/> + </element> + </optional> + <optional> + <element name="w14:textFill"> + <ref name="BUILT_IN_ANY_TYPE"/> + </element> + </optional> + <optional> + <element name="w14:scene3d"> + <ref name="BUILT_IN_ANY_TYPE"/> + </element> + </optional> + <optional> + <element name="w14:props3d"> + <ref name="BUILT_IN_ANY_TYPE"/> + </element> + </optional> + <optional> + <element name="w14:ligatures"> + <ref name="BUILT_IN_ANY_TYPE"/> + </element> + </optional> + <optional> + <element name="w14:numForm"> + <ref name="BUILT_IN_ANY_TYPE"/> + </element> + </optional> + <optional> + <element name="w14:numSpacing"> + <ref name="BUILT_IN_ANY_TYPE"/> + </element> + </optional> + <optional> + <element name="w14:stylisticSets"> + <ref name="BUILT_IN_ANY_TYPE"/> + </element> + </optional> + <optional> + <element name="w14:cntxtAlts"> + <ref name="BUILT_IN_ANY_TYPE"/> + </element> + </optional> </define> <define name="EG_RPrContent"> <optional> @@ -23150,6 +23421,17 @@ <element name="specVanish" tokenid="sprm:CFspecVanish"/> <element name="oMath" tokenid="ooxml:EG_RPrBase_oMath"/> <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: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"/> + <element name="w14:numForm" tokenid="ooxml:EG_RPrBase_w14_numForm"/> + <element name="w14:numSpacing" tokenid="ooxml:EG_RPrBase_w14_numSpacing"/> + <element name="w14:stylisticSets" tokenid="ooxml:EG_RPrBase_w14_stylisticSets"/> + <element name="w14:cntxtAlts" tokenid="ooxml:EG_RPrBase_w14_cntxtAlts"/> </resource> <resource name="EG_RPrContent" resource="Properties" tag="character"> <element name="rPrChange" tokenid="ooxml:EG_RPrContent_rPrChange"/> commit c7f6b816469136aa9b444515a4dfbc5bebb47501 Author: Tomaž Vajngerl <tomaz.vajng...@collabora.com> Date: Sat Feb 22 20:36:35 2014 +0100 oox: add some more missing w14 tokens Change-Id: Ied80a30419ac809c0cb20f8c29427ff0945f5904 diff --git a/oox/source/token/tokens.txt b/oox/source/token/tokens.txt index 6f62edd..20ca75f 100644 --- a/oox/source/token/tokens.txt +++ b/oox/source/token/tokens.txt @@ -1224,6 +1224,7 @@ cmd cmpd cnfStyle cnt +cntxtAlts code codeName codePage @@ -3015,6 +3016,7 @@ lgDashDotDot lgGrid license lid +ligatures light1 light2 lightBulb @@ -3544,6 +3546,7 @@ numCol numFmt numFmtId numFmts +numForm numId numIdMacAtCleanup numLit @@ -3553,6 +3556,7 @@ numPr numRef numRestart numSld +numSpacing numStart numStyleLink numTab @@ -4026,6 +4030,7 @@ proofErr proofState property propertyName +props3d prot protected protectedRange @@ -4914,6 +4919,7 @@ stylePaneFormatFilter stylePaneSortMethod styleSheet styles +stylisticSets sub subDoc subFontBySize @@ -5123,6 +5129,7 @@ textInflateTop textInput textLength textNoShape +textOutline textPlain textPr textRingInside
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits