summaryrefslogtreecommitdiff
path: root/oox
diff options
context:
space:
mode:
authorTomaž Vajngerl <tomaz.vajngerl@collabora.co.uk>2023-02-25 23:07:20 +0900
committerTomaž Vajngerl <quikee@gmail.com>2023-04-08 07:56:27 +0200
commitdad60bd52a25c1997d3724361ea81c0fe99b1872 (patch)
tree19e1e2067f00754789b347569a48be4aa7ab8af5 /oox
parent4f347ebabad6355014889f0a81b107dc774590fe (diff)
oox: add model::Theme to oox::Theme and remove createSvxTheme
This is the start of the change where oox::Theme is only a holder of model::Theme and not a oox structure. This is probably the easiest way how to refactor that. In this commit only prepare that and make the code work the same as it did before. Change-Id: I926a35fd0db383ddb182dc83b36411b2d40b8530 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/147692 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
Diffstat (limited to 'oox')
-rw-r--r--oox/source/drawingml/diagram/diagramhelper.cxx5
-rw-r--r--oox/source/drawingml/shape.cxx3
-rw-r--r--oox/source/drawingml/theme.cxx67
-rw-r--r--oox/source/drawingml/themefragmenthandler.cxx4
-rw-r--r--oox/source/ppt/presentationfragmenthandler.cxx6
-rw-r--r--oox/source/shape/ShapeContextHandler.cxx9
6 files changed, 17 insertions, 77 deletions
diff --git a/oox/source/drawingml/diagram/diagramhelper.cxx b/oox/source/drawingml/diagram/diagramhelper.cxx
index daf3047b6433..3b25951bb910 100644
--- a/oox/source/drawingml/diagram/diagramhelper.cxx
+++ b/oox/source/drawingml/diagram/diagramhelper.cxx
@@ -251,11 +251,12 @@ const std::shared_ptr< ::oox::drawingml::Theme >& AdvancedDiagramHelper::getOrCr
// reset local Theme ModelData *always* to get rid of former data that would
// else be added additionally
const_cast<AdvancedDiagramHelper*>(this)->mpThemePtr = std::make_shared<oox::drawingml::Theme>();
- model::Theme aTheme;
+ auto pTheme = std::make_shared<model::Theme>();
+ mpThemePtr->setTheme(pTheme);
// import Theme ModelData
rxFilter->importFragment(
- new ThemeFragmentHandler(*rxFilter, OUString(), *mpThemePtr, aTheme),
+ new ThemeFragmentHandler(*rxFilter, OUString(), *mpThemePtr, *pTheme),
uno::Reference< css::xml::sax::XFastSAXSerializable >(
xThemeDocument,
uno::UNO_QUERY_THROW));
diff --git a/oox/source/drawingml/shape.cxx b/oox/source/drawingml/shape.cxx
index 41d2befad1a7..fbd3e79c5a6e 100644
--- a/oox/source/drawingml/shape.cxx
+++ b/oox/source/drawingml/shape.cxx
@@ -2198,9 +2198,8 @@ void Shape::finalizeXShape( XmlFilterBase& rFilter, const Reference< XShapes >&
rFilter.importFragment(aThemeOverrideFragmentPath), uno::UNO_QUERY_THROW);
pTheme = pPowerPointImport->getActualSlidePersist()->getTheme();
auto pThemeOverride = std::make_shared<Theme>(*pTheme);
- model::Theme aTheme;
rFilter.importFragment(
- new ThemeOverrideFragmentHandler(rFilter, aThemeOverrideFragmentPath, *pThemeOverride, aTheme),
+ new ThemeOverrideFragmentHandler(rFilter, aThemeOverrideFragmentPath, *pThemeOverride, *pThemeOverride->getTheme()),
xDoc);
pPowerPointImport->getActualSlidePersist()->setTheme(pThemeOverride);
}
diff --git a/oox/source/drawingml/theme.cxx b/oox/source/drawingml/theme.cxx
index b108d8106322..e8511a32eb5d 100644
--- a/oox/source/drawingml/theme.cxx
+++ b/oox/source/drawingml/theme.cxx
@@ -109,71 +109,6 @@ const TextFont* Theme::resolveFont( std::u16string_view rName ) const
return nullptr;
}
-std::shared_ptr<model::Theme> Theme::createSvxTheme() const
-{
- auto pTheme = std::make_shared<model::Theme>(maThemeName);
-
- auto pColorSet = std::make_unique<model::ColorSet>(maClrScheme.GetName());
- maClrScheme.fill(*pColorSet);
- pTheme->SetColorSet(std::move(pColorSet));
-
- model::FontScheme aFontScheme(maFontSchemeName);
-
- if (auto* pCharProps = getFontStyle(XML_minor))
- {
- model::ThemeFont aMinorLatin;
- pCharProps->maLatinFont.fillThemeFont(aMinorLatin);
- aFontScheme.setMinorLatin(aMinorLatin);
-
- model::ThemeFont aMinorAsian;
- pCharProps->maAsianFont.fillThemeFont(aMinorAsian);
- aFontScheme.setMinorAsian(aMinorAsian);
-
- model::ThemeFont aMinorComplex;
- pCharProps->maComplexFont.fillThemeFont(aMinorComplex);
- aFontScheme.setMinorComplex(aMinorComplex);
- }
-
- if (auto* pCharProps = getFontStyle(XML_major))
- {
- model::ThemeFont aMajorLatin;
- pCharProps->maLatinFont.fillThemeFont(aMajorLatin);
- aFontScheme.setMajorLatin(aMajorLatin);
-
- model::ThemeFont aMajorAsian;
- pCharProps->maAsianFont.fillThemeFont(aMajorAsian);
- aFontScheme.setMajorAsian(aMajorAsian);
-
- model::ThemeFont aMajorComplex;
- pCharProps->maComplexFont.fillThemeFont(aMajorComplex);
- aFontScheme.setMajorComplex(aMajorComplex);
- }
-
- if (maSupplementalFontMap.find(XML_minor) != maSupplementalFontMap.cend())
- {
- std::vector<model::ThemeSupplementalFont> aList;
- for (auto const& [rScript, rTypeface] : maSupplementalFontMap.at(XML_minor))
- {
- aList.push_back(model::ThemeSupplementalFont{rScript, rTypeface});
- }
- aFontScheme.setMinorSupplementalFontList(aList);
- }
-
- if (maSupplementalFontMap.find(XML_major) != maSupplementalFontMap.cend())
- {
- std::vector<model::ThemeSupplementalFont> aList;
- for (auto const& [rScript, rTypeface] : maSupplementalFontMap.at(XML_major))
- {
- aList.push_back(model::ThemeSupplementalFont{rScript, rTypeface});
- }
- aFontScheme.setMajorSupplementalFontList(aList);
- }
-
- pTheme->setFontScheme(aFontScheme);
-
- return pTheme;
-}
-
void Theme::addTheme(const css::uno::Reference<css::drawing::XDrawPage>& xDrawPage) const
{
SAL_WARN_IF(!xDrawPage.is(), "oox", "DrawPage is not set");
@@ -185,7 +120,7 @@ void Theme::addTheme(const css::uno::Reference<css::drawing::XDrawPage>& xDrawPa
if (!pPage)
return;
- pPage->getSdrPageProperties().SetTheme(createSvxTheme());
+ pPage->getSdrPageProperties().SetTheme(getTheme());
}
} // namespace oox::drawingml
diff --git a/oox/source/drawingml/themefragmenthandler.cxx b/oox/source/drawingml/themefragmenthandler.cxx
index baaec066219b..ed654aac9dff 100644
--- a/oox/source/drawingml/themefragmenthandler.cxx
+++ b/oox/source/drawingml/themefragmenthandler.cxx
@@ -71,7 +71,9 @@ void ThemeFragmentHandler::onStartElement(const AttributeList& rAttribs)
{
if (getCurrentElement() == A_TOKEN(theme))
{
- mrOoxTheme.setThemeName(rAttribs.getStringDefaulted(XML_name));
+ OUString aName = rAttribs.getStringDefaulted(XML_name);
+ mrOoxTheme.setThemeName(aName);
+ mrTheme.SetName(aName);
}
}
diff --git a/oox/source/ppt/presentationfragmenthandler.cxx b/oox/source/ppt/presentationfragmenthandler.cxx
index b8906c735d16..5f35dbdfdb1c 100644
--- a/oox/source/ppt/presentationfragmenthandler.cxx
+++ b/oox/source/ppt/presentationfragmenthandler.cxx
@@ -351,9 +351,11 @@ void PresentationFragmentHandler::importSlide(sal_uInt32 nSlide, bool bFirstPage
Reference<xml::dom::XDocument> xDoc=
rFilter.importFragment(aThemeFragmentPath);
- model::Theme aTheme;
+ auto pTheme = std::make_shared<model::Theme>();
+ pThemePtr->setTheme(pTheme);
+
rFilter.importFragment(
- new ThemeFragmentHandler(rFilter, aThemeFragmentPath, *pThemePtr, aTheme),
+ new ThemeFragmentHandler(rFilter, aThemeFragmentPath, *pThemePtr, *pTheme),
Reference<xml::sax::XFastSAXSerializable>(
xDoc,
UNO_QUERY_THROW));
diff --git a/oox/source/shape/ShapeContextHandler.cxx b/oox/source/shape/ShapeContextHandler.cxx
index b6d4bcab0345..7665022c56df 100644
--- a/oox/source/shape/ShapeContextHandler.cxx
+++ b/oox/source/shape/ShapeContextHandler.cxx
@@ -267,7 +267,6 @@ void SAL_CALL ShapeContextHandler::startFastElement
// Parse the theme relation, if available; the diagram won't have colors without it.
if (!mpThemePtr && !msRelationFragmentPath.isEmpty())
{
- mpThemePtr = std::make_shared<Theme>();
// Get Target for Type = "officeDocument" from _rels/.rels file
// aOfficeDocumentFragmentPath is pointing to "word/document.xml" for docx & to "ppt/presentation.xml" for pptx
FragmentHandlerRef rFragmentHandlerRef(new ShapeFragmentHandler(*mxShapeFilterBase, "/"));
@@ -278,11 +277,13 @@ void SAL_CALL ShapeContextHandler::startFastElement
FragmentHandlerRef rFragmentHandler(new ShapeFragmentHandler(*mxShapeFilterBase, aOfficeDocumentFragmentPath));
OUString aThemeFragmentPath = rFragmentHandler->getFragmentPathFromFirstTypeFromOfficeDoc( u"theme" );
- if(!aThemeFragmentPath.isEmpty())
+ if (!aThemeFragmentPath.isEmpty())
{
- model::Theme aTheme;
+ mpThemePtr = std::make_shared<Theme>();
+ auto pTheme = std::make_shared<model::Theme>();
+ mpThemePtr->setTheme(pTheme);
uno::Reference<xml::sax::XFastSAXSerializable> xDoc(mxShapeFilterBase->importFragment(aThemeFragmentPath), uno::UNO_QUERY_THROW);
- mxShapeFilterBase->importFragment(new ThemeFragmentHandler(*mxShapeFilterBase, aThemeFragmentPath, *mpThemePtr, aTheme), xDoc);
+ mxShapeFilterBase->importFragment(new ThemeFragmentHandler(*mxShapeFilterBase, aThemeFragmentPath, *mpThemePtr, *pTheme), xDoc);
mxShapeFilterBase->setCurrentTheme(mpThemePtr);
}
}