diff options
author | Tomaž Vajngerl <tomaz.vajngerl@collabora.co.uk> | 2023-02-25 23:07:20 +0900 |
---|---|---|
committer | Tomaž Vajngerl <quikee@gmail.com> | 2023-04-08 07:56:27 +0200 |
commit | dad60bd52a25c1997d3724361ea81c0fe99b1872 (patch) | |
tree | 19e1e2067f00754789b347569a48be4aa7ab8af5 /oox | |
parent | 4f347ebabad6355014889f0a81b107dc774590fe (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.cxx | 5 | ||||
-rw-r--r-- | oox/source/drawingml/shape.cxx | 3 | ||||
-rw-r--r-- | oox/source/drawingml/theme.cxx | 67 | ||||
-rw-r--r-- | oox/source/drawingml/themefragmenthandler.cxx | 4 | ||||
-rw-r--r-- | oox/source/ppt/presentationfragmenthandler.cxx | 6 | ||||
-rw-r--r-- | oox/source/shape/ShapeContextHandler.cxx | 9 |
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); } } |