summaryrefslogtreecommitdiff
path: root/sc
diff options
context:
space:
mode:
authorKohei Yoshida <kohei.yoshida@gmail.com>2013-08-24 12:49:20 -0400
committerKohei Yoshida <kohei.yoshida@gmail.com>2013-08-24 17:16:57 -0400
commit3e1bc81ad888cab1e31382f5a4faa3d2f0373577 (patch)
tree8bd6ec31c8e7ff9047b4dfa86275b18fcad3828c /sc
parent9ae7d6762b81adfdbd87034652cb2d4550a6dcf8 (diff)
Make this a separate function.
Change-Id: I387470b42e967dd549b5bcfc418e9e566d2ccecc
Diffstat (limited to 'sc')
-rw-r--r--sc/source/filter/xml/xmlexprt.cxx386
1 files changed, 198 insertions, 188 deletions
diff --git a/sc/source/filter/xml/xmlexprt.cxx b/sc/source/filter/xml/xmlexprt.cxx
index 28708bafbfec..b94ccc245fe8 100644
--- a/sc/source/filter/xml/xmlexprt.cxx
+++ b/sc/source/filter/xml/xmlexprt.cxx
@@ -1111,234 +1111,244 @@ void ScXMLExport::ExportExternalRefCacheStyles()
}
}
-void ScXMLExport::ExportCellTextAutoStyles(sal_Int32 nTable)
-{
- if (!ValidTab(nTable))
- return;
+namespace {
- UniReference<XMLPropertySetMapper> xMapper = GetTextParagraphExport()->GetTextPropMapper()->getPropertySetMapper();
+void toXMLPropertyStates(
+ std::vector<XMLPropertyState>& rPropStates, const std::vector<const SfxPoolItem*>& rSecAttrs,
+ const UniReference<XMLPropertySetMapper>& xMapper, const ScXMLEditAttributeMap& rAttrMap )
+{
sal_Int32 nEntryCount = xMapper->GetEntryCount();
- UniReference<SvXMLAutoStylePoolP> xStylePool = GetAutoStylePool();
- const ScXMLEditAttributeMap& rAttrMap = GetEditAttributeMap();
-
- sc::EditTextIterator aIter(*pDoc, nTable);
- sal_Int32 nCellCount = 0;
- for (const EditTextObject* pEdit = aIter.first(); pEdit; pEdit = aIter.next(), ++nCellCount)
+ rPropStates.reserve(rSecAttrs.size());
+ std::vector<const SfxPoolItem*>::const_iterator it = rSecAttrs.begin(), itEnd = rSecAttrs.end();
+ for (; it != itEnd; ++it)
{
- std::vector<editeng::SectionAttribute> aAttrs;
- pEdit->GetAllSectionAttributes(aAttrs);
- if (aAttrs.empty())
+ const SfxPoolItem* p = *it;
+ const ScXMLEditAttributeMap::Entry* pEntry = rAttrMap.getEntryByItemID(p->Which());
+ if (!pEntry)
continue;
- std::vector<editeng::SectionAttribute>::const_iterator itSec = aAttrs.begin(), itSecEnd = aAttrs.end();
- for (; itSec != itSecEnd; ++itSec)
- {
- const std::vector<const SfxPoolItem*>& rSecAttrs = itSec->maAttributes;
- if (rSecAttrs.empty())
- // No formats applied to this section. Skip it.
- continue;
+ sal_Int32 nIndex = xMapper->GetEntryIndex(
+ pEntry->nmXMLNS, OUString::createFromAscii(pEntry->mpXMLName), 0);
- std::vector<XMLPropertyState> aPropStates;
- aPropStates.reserve(rSecAttrs.size());
- std::vector<const SfxPoolItem*>::const_iterator it = rSecAttrs.begin(), itEnd = rSecAttrs.end();
- for (; it != itEnd; ++it)
+ if (nIndex == -1 || nIndex >= nEntryCount)
+ continue;
+
+ uno::Any aAny;
+ switch (p->Which())
+ {
+ case EE_CHAR_FONTINFO:
+ case EE_CHAR_FONTINFO_CJK:
+ case EE_CHAR_FONTINFO_CTL:
{
- const SfxPoolItem* p = *it;
- const ScXMLEditAttributeMap::Entry* pEntry = rAttrMap.getEntryByItemID(p->Which());
- if (!pEntry)
+ if (!static_cast<const SvxFontItem*>(p)->QueryValue(aAny, pEntry->mnFlag))
continue;
- sal_Int32 nIndex = xMapper->GetEntryIndex(
- pEntry->nmXMLNS, OUString::createFromAscii(pEntry->mpXMLName), 0);
+ rPropStates.push_back(XMLPropertyState(nIndex, aAny));
+ }
+ break;
+ case EE_CHAR_WEIGHT:
+ case EE_CHAR_WEIGHT_CJK:
+ case EE_CHAR_WEIGHT_CTL:
+ {
+ if (!static_cast<const SvxWeightItem*>(p)->QueryValue(aAny, pEntry->mnFlag))
+ continue;
- if (nIndex == -1 || nIndex >= nEntryCount)
+ rPropStates.push_back(XMLPropertyState(nIndex, aAny));
+ }
+ break;
+ case EE_CHAR_FONTHEIGHT:
+ case EE_CHAR_FONTHEIGHT_CJK:
+ case EE_CHAR_FONTHEIGHT_CTL:
+ {
+ if (!static_cast<const SvxFontHeightItem*>(p)->QueryValue(aAny, pEntry->mnFlag))
continue;
- uno::Any aAny;
- switch (p->Which())
- {
- case EE_CHAR_FONTINFO:
- case EE_CHAR_FONTINFO_CJK:
- case EE_CHAR_FONTINFO_CTL:
- {
- if (!static_cast<const SvxFontItem*>(p)->QueryValue(aAny, pEntry->mnFlag))
- continue;
+ rPropStates.push_back(XMLPropertyState(nIndex, aAny));
+ }
+ break;
+ case EE_CHAR_ITALIC:
+ case EE_CHAR_ITALIC_CJK:
+ case EE_CHAR_ITALIC_CTL:
+ {
+ if (!static_cast<const SvxPostureItem*>(p)->QueryValue(aAny, pEntry->mnFlag))
+ continue;
- aPropStates.push_back(XMLPropertyState(nIndex, aAny));
- }
+ rPropStates.push_back(XMLPropertyState(nIndex, aAny));
+ }
+ break;
+ case EE_CHAR_UNDERLINE:
+ {
+ // Underline attribute needs to export multiple entries.
+ sal_Int32 nIndexStyle = xMapper->GetEntryIndex(XML_NAMESPACE_STYLE, "text-underline-style", 0);
+ if (nIndexStyle == -1 || nIndexStyle > nEntryCount)
break;
- case EE_CHAR_WEIGHT:
- case EE_CHAR_WEIGHT_CJK:
- case EE_CHAR_WEIGHT_CTL:
- {
- if (!static_cast<const SvxWeightItem*>(p)->QueryValue(aAny, pEntry->mnFlag))
- continue;
- aPropStates.push_back(XMLPropertyState(nIndex, aAny));
- }
+ sal_Int32 nIndexWidth = xMapper->GetEntryIndex(XML_NAMESPACE_STYLE, "text-underline-width", 0);
+ if (nIndexWidth == -1 || nIndexWidth > nEntryCount)
break;
- case EE_CHAR_FONTHEIGHT:
- case EE_CHAR_FONTHEIGHT_CJK:
- case EE_CHAR_FONTHEIGHT_CTL:
- {
- if (!static_cast<const SvxFontHeightItem*>(p)->QueryValue(aAny, pEntry->mnFlag))
- continue;
- aPropStates.push_back(XMLPropertyState(nIndex, aAny));
- }
+ sal_Int32 nIndexColor = xMapper->FindEntryIndex("CharUnderlineColor", XML_NAMESPACE_STYLE, "text-underline-color");
+ if (nIndexColor == -1 || nIndexColor > nEntryCount)
break;
- case EE_CHAR_ITALIC:
- case EE_CHAR_ITALIC_CJK:
- case EE_CHAR_ITALIC_CTL:
- {
- if (!static_cast<const SvxPostureItem*>(p)->QueryValue(aAny, pEntry->mnFlag))
- continue;
- aPropStates.push_back(XMLPropertyState(nIndex, aAny));
- }
+ sal_Int32 nIndexHasColor = xMapper->FindEntryIndex("CharUnderlineHasColor", XML_NAMESPACE_STYLE, "text-underline-color");
+ if (nIndexHasColor == -1 || nIndexHasColor > nEntryCount)
break;
- case EE_CHAR_UNDERLINE:
- {
- // Underline attribute needs to export multiple entries.
- sal_Int32 nIndexStyle = xMapper->GetEntryIndex(XML_NAMESPACE_STYLE, "text-underline-style", 0);
- if (nIndexStyle == -1 || nIndexStyle > nEntryCount)
- break;
- sal_Int32 nIndexWidth = xMapper->GetEntryIndex(XML_NAMESPACE_STYLE, "text-underline-width", 0);
- if (nIndexWidth == -1 || nIndexWidth > nEntryCount)
- break;
+ const SvxUnderlineItem* pUL = static_cast<const SvxUnderlineItem*>(p);
+ pUL->QueryValue(aAny, MID_TL_STYLE);
+ rPropStates.push_back(XMLPropertyState(nIndexStyle, aAny));
+ rPropStates.push_back(XMLPropertyState(nIndexWidth, aAny));
- sal_Int32 nIndexColor = xMapper->FindEntryIndex("CharUnderlineColor", XML_NAMESPACE_STYLE, "text-underline-color");
- if (nIndexColor == -1 || nIndexColor > nEntryCount)
- break;
+ pUL->QueryValue(aAny, MID_TL_COLOR);
+ rPropStates.push_back(XMLPropertyState(nIndexColor, aAny));
- sal_Int32 nIndexHasColor = xMapper->FindEntryIndex("CharUnderlineHasColor", XML_NAMESPACE_STYLE, "text-underline-color");
- if (nIndexHasColor == -1 || nIndexHasColor > nEntryCount)
- break;
+ pUL->QueryValue(aAny, MID_TL_HASCOLOR);
+ rPropStates.push_back(XMLPropertyState(nIndexHasColor, aAny));
+ }
+ break;
+ case EE_CHAR_OVERLINE:
+ {
+ if (!static_cast<const SvxOverlineItem*>(p)->QueryValue(aAny, pEntry->mnFlag))
+ continue;
- const SvxUnderlineItem* pUL = static_cast<const SvxUnderlineItem*>(p);
- pUL->QueryValue(aAny, MID_TL_STYLE);
- aPropStates.push_back(XMLPropertyState(nIndexStyle, aAny));
- aPropStates.push_back(XMLPropertyState(nIndexWidth, aAny));
+ rPropStates.push_back(XMLPropertyState(nIndex, aAny));
+ }
+ break;
+ case EE_CHAR_COLOR:
+ {
+ if (!static_cast<const SvxColorItem*>(p)->QueryValue(aAny, pEntry->mnFlag))
+ continue;
- pUL->QueryValue(aAny, MID_TL_COLOR);
- aPropStates.push_back(XMLPropertyState(nIndexColor, aAny));
+ rPropStates.push_back(XMLPropertyState(nIndex, aAny));
+ }
+ break;
+ case EE_CHAR_WLM:
+ {
+ if (!static_cast<const SvxWordLineModeItem*>(p)->QueryValue(aAny, pEntry->mnFlag))
+ continue;
- pUL->QueryValue(aAny, MID_TL_HASCOLOR);
- aPropStates.push_back(XMLPropertyState(nIndexHasColor, aAny));
- }
- break;
- case EE_CHAR_OVERLINE:
- {
- if (!static_cast<const SvxOverlineItem*>(p)->QueryValue(aAny, pEntry->mnFlag))
- continue;
+ rPropStates.push_back(XMLPropertyState(nIndex, aAny));
+ }
+ break;
+ case EE_CHAR_STRIKEOUT:
+ {
+ if (!static_cast<const SvxCrossedOutItem*>(p)->QueryValue(aAny, pEntry->mnFlag))
+ continue;
- aPropStates.push_back(XMLPropertyState(nIndex, aAny));
- }
- break;
- case EE_CHAR_COLOR:
- {
- if (!static_cast<const SvxColorItem*>(p)->QueryValue(aAny, pEntry->mnFlag))
- continue;
+ rPropStates.push_back(XMLPropertyState(nIndex, aAny));
+ }
+ break;
+ case EE_CHAR_RELIEF:
+ {
+ if (!static_cast<const SvxCharReliefItem*>(p)->QueryValue(aAny, pEntry->mnFlag))
+ continue;
- aPropStates.push_back(XMLPropertyState(nIndex, aAny));
- }
- break;
- case EE_CHAR_WLM:
- {
- if (!static_cast<const SvxWordLineModeItem*>(p)->QueryValue(aAny, pEntry->mnFlag))
- continue;
+ rPropStates.push_back(XMLPropertyState(nIndex, aAny));
+ }
+ break;
+ case EE_CHAR_OUTLINE:
+ {
+ if (!static_cast<const SvxContourItem*>(p)->QueryValue(aAny, pEntry->mnFlag))
+ continue;
- aPropStates.push_back(XMLPropertyState(nIndex, aAny));
- }
- break;
- case EE_CHAR_STRIKEOUT:
- {
- if (!static_cast<const SvxCrossedOutItem*>(p)->QueryValue(aAny, pEntry->mnFlag))
- continue;
+ rPropStates.push_back(XMLPropertyState(nIndex, aAny));
+ }
+ break;
+ case EE_CHAR_SHADOW:
+ {
+ if (!static_cast<const SvxShadowedItem*>(p)->QueryValue(aAny, pEntry->mnFlag))
+ continue;
- aPropStates.push_back(XMLPropertyState(nIndex, aAny));
- }
- break;
- case EE_CHAR_RELIEF:
- {
- if (!static_cast<const SvxCharReliefItem*>(p)->QueryValue(aAny, pEntry->mnFlag))
- continue;
+ rPropStates.push_back(XMLPropertyState(nIndex, aAny));
+ }
+ break;
+ case EE_CHAR_KERNING:
+ {
+ if (!static_cast<const SvxKerningItem*>(p)->QueryValue(aAny, pEntry->mnFlag))
+ continue;
- aPropStates.push_back(XMLPropertyState(nIndex, aAny));
- }
- break;
- case EE_CHAR_OUTLINE:
- {
- if (!static_cast<const SvxContourItem*>(p)->QueryValue(aAny, pEntry->mnFlag))
- continue;
+ rPropStates.push_back(XMLPropertyState(nIndex, aAny));
+ }
+ break;
+ case EE_CHAR_PAIRKERNING:
+ {
+ if (!static_cast<const SvxAutoKernItem*>(p)->QueryValue(aAny, pEntry->mnFlag))
+ continue;
- aPropStates.push_back(XMLPropertyState(nIndex, aAny));
- }
- break;
- case EE_CHAR_SHADOW:
- {
- if (!static_cast<const SvxShadowedItem*>(p)->QueryValue(aAny, pEntry->mnFlag))
- continue;
+ rPropStates.push_back(XMLPropertyState(nIndex, aAny));
+ }
+ break;
+ case EE_CHAR_FONTWIDTH:
+ {
+ if (!static_cast<const SvxCharScaleWidthItem*>(p)->QueryValue(aAny, pEntry->mnFlag))
+ continue;
- aPropStates.push_back(XMLPropertyState(nIndex, aAny));
- }
- break;
- case EE_CHAR_KERNING:
- {
- if (!static_cast<const SvxKerningItem*>(p)->QueryValue(aAny, pEntry->mnFlag))
- continue;
+ rPropStates.push_back(XMLPropertyState(nIndex, aAny));
+ }
+ break;
+ case EE_CHAR_ESCAPEMENT:
+ {
+ if (!static_cast<const SvxEscapementItem*>(p)->QueryValue(aAny, pEntry->mnFlag))
+ continue;
- aPropStates.push_back(XMLPropertyState(nIndex, aAny));
- }
- break;
- case EE_CHAR_PAIRKERNING:
- {
- if (!static_cast<const SvxAutoKernItem*>(p)->QueryValue(aAny, pEntry->mnFlag))
- continue;
+ rPropStates.push_back(XMLPropertyState(nIndex, aAny));
+ }
+ break;
+ case EE_CHAR_EMPHASISMARK:
+ {
+ if (!static_cast<const SvxEmphasisMarkItem*>(p)->QueryValue(aAny, pEntry->mnFlag))
+ continue;
- aPropStates.push_back(XMLPropertyState(nIndex, aAny));
- }
- break;
- case EE_CHAR_FONTWIDTH:
- {
- if (!static_cast<const SvxCharScaleWidthItem*>(p)->QueryValue(aAny, pEntry->mnFlag))
- continue;
+ rPropStates.push_back(XMLPropertyState(nIndex, aAny));
+ }
+ break;
+ case EE_CHAR_LANGUAGE:
+ case EE_CHAR_LANGUAGE_CJK:
+ case EE_CHAR_LANGUAGE_CTL:
+ {
+ if (!static_cast<const SvxLanguageItem*>(p)->QueryValue(aAny, pEntry->mnFlag))
+ continue;
- aPropStates.push_back(XMLPropertyState(nIndex, aAny));
- }
- break;
- case EE_CHAR_ESCAPEMENT:
- {
- if (!static_cast<const SvxEscapementItem*>(p)->QueryValue(aAny, pEntry->mnFlag))
- continue;
+ rPropStates.push_back(XMLPropertyState(nIndex, aAny));
+ }
+ break;
+ default:
+ continue;
+ }
+ }
+}
- aPropStates.push_back(XMLPropertyState(nIndex, aAny));
- }
- break;
- case EE_CHAR_EMPHASISMARK:
- {
- if (!static_cast<const SvxEmphasisMarkItem*>(p)->QueryValue(aAny, pEntry->mnFlag))
- continue;
+}
- aPropStates.push_back(XMLPropertyState(nIndex, aAny));
- }
- break;
- case EE_CHAR_LANGUAGE:
- case EE_CHAR_LANGUAGE_CJK:
- case EE_CHAR_LANGUAGE_CTL:
- {
- if (!static_cast<const SvxLanguageItem*>(p)->QueryValue(aAny, pEntry->mnFlag))
- continue;
+void ScXMLExport::ExportCellTextAutoStyles(sal_Int32 nTable)
+{
+ if (!ValidTab(nTable))
+ return;
- aPropStates.push_back(XMLPropertyState(nIndex, aAny));
- }
- break;
- default:
- continue;
- }
- }
+ UniReference<XMLPropertySetMapper> xMapper = GetTextParagraphExport()->GetTextPropMapper()->getPropertySetMapper();
+ UniReference<SvXMLAutoStylePoolP> xStylePool = GetAutoStylePool();
+ const ScXMLEditAttributeMap& rAttrMap = GetEditAttributeMap();
+
+ sc::EditTextIterator aIter(*pDoc, nTable);
+ sal_Int32 nCellCount = 0;
+ for (const EditTextObject* pEdit = aIter.first(); pEdit; pEdit = aIter.next(), ++nCellCount)
+ {
+ std::vector<editeng::SectionAttribute> aAttrs;
+ pEdit->GetAllSectionAttributes(aAttrs);
+ if (aAttrs.empty())
+ continue;
+ std::vector<editeng::SectionAttribute>::const_iterator itSec = aAttrs.begin(), itSecEnd = aAttrs.end();
+ for (; itSec != itSecEnd; ++itSec)
+ {
+ const std::vector<const SfxPoolItem*>& rSecAttrs = itSec->maAttributes;
+ if (rSecAttrs.empty())
+ // No formats applied to this section. Skip it.
+ continue;
+
+ std::vector<XMLPropertyState> aPropStates;
+ toXMLPropertyStates(aPropStates, rSecAttrs, xMapper, rAttrMap);
if (!aPropStates.empty())
xStylePool->Add(XML_STYLE_FAMILY_TEXT_TEXT, OUString(), aPropStates, false);
}