diff options
author | Tomaž Vajngerl <tomaz.vajngerl@collabora.co.uk> | 2023-04-12 11:18:42 +0900 |
---|---|---|
committer | Tomaž Vajngerl <quikee@gmail.com> | 2023-04-25 13:38:18 +0200 |
commit | 6252959192c07973af698ce30fa67b1a29e4871e (patch) | |
tree | 5713580848f0608f7143b6dad041d50a342c752e /oox/source/export | |
parent | b09c377888e2e75859fff37fdf9408065eb522d6 (diff) |
oox: add support for theme import and export of blip effects
This adds support for (most) blip effects import, export and
the document model.
Change-Id: Iec15f4de22c31268019fa1a60432e40ae8f03635
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/150262
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
Diffstat (limited to 'oox/source/export')
-rw-r--r-- | oox/source/export/ThemeExport.cxx | 8 | ||||
-rw-r--r-- | oox/source/export/drawingml.cxx | 112 |
2 files changed, 113 insertions, 7 deletions
diff --git a/oox/source/export/ThemeExport.cxx b/oox/source/export/ThemeExport.cxx index 16da603fa14c..88ff2d6364fc 100644 --- a/oox/source/export/ThemeExport.cxx +++ b/oox/source/export/ThemeExport.cxx @@ -581,13 +581,13 @@ OString convertRectangleAlignment(model::RectangleAlignment eFlipMode) } } // end anonymous ns -void ThemeExport::writeBlip(model::BlipFill const& rBlipFil) +void ThemeExport::writeBlip(model::BlipFill const& rBlipFill) { - if (!rBlipFil.mxGraphic.is()) + if (!rBlipFill.mxGraphic.is()) return; oox::drawingml::GraphicExport aExporter(mpFS, mpFilterBase, meDocumentType); - Graphic aGraphic(rBlipFil.mxGraphic); - aExporter.writeBlip(aGraphic, false); + Graphic aGraphic(rBlipFill.mxGraphic); + aExporter.writeBlip(aGraphic, rBlipFill.maBlipEffects, false); } void ThemeExport::writeBlipFill(model::BlipFill const& rBlipFill) diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx index f58e76eda95e..aaad66b4d083 100644 --- a/oox/source/export/drawingml.cxx +++ b/oox/source/export/drawingml.cxx @@ -1475,7 +1475,7 @@ const char* DrawingML::GetRelationCompPrefix() const return getRelationCompPrefix(meDocumentType); } -OUString GraphicExport::writeBlip(Graphic const& rGraphic , bool bRelPathToMedia) +OUString GraphicExport::writeBlip(Graphic const& rGraphic, std::vector<model::BlipEffect> const& rEffects, bool bRelPathToMedia) { OUString sRelId; @@ -1483,8 +1483,114 @@ OUString GraphicExport::writeBlip(Graphic const& rGraphic , bool bRelPathToMedia mpFS->startElementNS(XML_a, XML_blip, FSNS(XML_r, XML_embed), sRelId); - //WriteImageBrightnessContrastTransparence(rXPropSet); - //WriteArtisticEffect(rXPropSet); + for (auto const& rEffect : rEffects) + { + switch (rEffect.meType) + { + case model::BlipEffectType::AlphaBiLevel: + { + mpFS->singleElementNS(XML_a, XML_alphaBiLevel, XML_thresh, OString::number(rEffect.mnThreshold)); + } + break; + case model::BlipEffectType::AlphaCeiling: + { + mpFS->singleElementNS(XML_a, XML_alphaCeiling); + } + break; + case model::BlipEffectType::AlphaFloor: + { + mpFS->singleElementNS(XML_a, XML_alphaFloor); + } + break; + case model::BlipEffectType::AlphaInverse: + { + mpFS->singleElementNS(XML_a, XML_alphaInv); + // TODO: export rEffect.maColor1 + } + break; + case model::BlipEffectType::AlphaModulate: + { + mpFS->singleElementNS(XML_a, XML_alphaMod); + // TODO + } + break; + case model::BlipEffectType::AlphaModulateFixed: + { + mpFS->singleElementNS(XML_a, XML_alphaModFix, XML_amt, OString::number(rEffect.mnAmount)); + } + break; + case model::BlipEffectType::AlphaReplace: + { + mpFS->singleElementNS(XML_a, XML_alphaRepl, XML_a, OString::number(rEffect.mnAlpha)); + } + break; + case model::BlipEffectType::BiLevel: + { + mpFS->singleElementNS(XML_a, XML_biLevel, XML_thresh, OString::number(rEffect.mnThreshold)); + } + break; + case model::BlipEffectType::Blur: + { + mpFS->singleElementNS(XML_a, XML_blur, + XML_rad, OString::number(rEffect.mnRadius), + XML_grow, rEffect.mbGrow ? "1" : "0"); + } + break; + case model::BlipEffectType::ColorChange: + { + mpFS->startElementNS(XML_a, XML_clrChange, XML_useA, rEffect.mbUseAlpha ? "1" : "0"); + mpFS->endElementNS(XML_a, XML_clrChange); + } + break; + case model::BlipEffectType::ColorReplace: + { + mpFS->startElementNS(XML_a, XML_clrRepl); + mpFS->endElementNS(XML_a, XML_clrRepl); + } + break; + case model::BlipEffectType::DuoTone: + { + mpFS->startElementNS(XML_a, XML_duotone); + mpFS->endElementNS(XML_a, XML_duotone); + } + break; + case model::BlipEffectType::FillOverlay: + { + mpFS->singleElementNS(XML_a, XML_fillOverlay); + } + break; + case model::BlipEffectType::Grayscale: + { + mpFS->singleElementNS(XML_a, XML_grayscl); + } + break; + case model::BlipEffectType::HSL: + { + mpFS->singleElementNS(XML_a, XML_hsl, + XML_hue, OString::number(rEffect.mnHue), + XML_sat, OString::number(rEffect.mnSaturation), + XML_lum, OString::number(rEffect.mnLuminance)); + } + break; + case model::BlipEffectType::Luminance: + { + mpFS->singleElementNS(XML_a, XML_lum, + XML_bright, OString::number(rEffect.mnBrightness), + XML_contrast, OString::number(rEffect.mnContrast)); + } + break; + case model::BlipEffectType::Tint: + { + mpFS->singleElementNS(XML_a, XML_tint, + XML_hue, OString::number(rEffect.mnHue), + XML_amt, OString::number(rEffect.mnAmount)); + } + break; + + default: + break; + } + } mpFS->endElementNS(XML_a, XML_blip); |