diff options
author | Miklos Vajna <vmiklos@collabora.com> | 2021-12-16 10:16:02 +0100 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.com> | 2021-12-16 12:43:11 +0100 |
commit | 90556b6df0f6378fb60d7dee18b2f5d275ece530 (patch) | |
tree | 14bad912d7f464f360146c4b01631995d2498d16 /oox/source/vml/vmlshapecontext.cxx | |
parent | 69a68bc38d29964ef9af8c30ea457975f9e568fe (diff) |
VML import: handle <v:imagedata gain="..." blacklevel="...">
Map it to (the UNO API of) GraphicDrawMode::Watermark, similar to what
the binary import does in SvxMSDffManager::ImportGraphic() and how the
drawingML import does it in
oox::drawingml::GraphicProperties::pushToPropMap().
On export, the drawingML export is used, and that already maps
GraphicDrawMode::Watermark to <a:lum bright="70000" contrast="-70000">.
Change-Id: I33986a03bf3d3863da5c5b1f0a2e0da0fa595c9e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/126908
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Tested-by: Jenkins
Diffstat (limited to 'oox/source/vml/vmlshapecontext.cxx')
-rw-r--r-- | oox/source/vml/vmlshapecontext.cxx | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/oox/source/vml/vmlshapecontext.cxx b/oox/source/vml/vmlshapecontext.cxx index e9284747774b..4ed3f83fd076 100644 --- a/oox/source/vml/vmlshapecontext.cxx +++ b/oox/source/vml/vmlshapecontext.cxx @@ -395,6 +395,34 @@ ContextHandlerRef ShapeTypeContext::onCreateContext( sal_Int32 nElement, const A mrTypeModel.moCropLeft = rAttribs.getString(XML_cropleft); mrTypeModel.moCropRight = rAttribs.getString(XML_cropright); mrTypeModel.moCropTop = rAttribs.getString(XML_croptop); + + // Gain / contrast. + OptValue<OUString> oGain = rAttribs.getString(XML_gain); + sal_Int32 nGain = 0x10000; + if (oGain.has() && oGain.get().endsWith("f")) + { + nGain = oGain.get().toInt32(); + } + if (nGain < 0x10000) + { + nGain *= 101; // 100 + 1 to round + nGain /= 0x10000; + nGain -= 100; + } + mrTypeModel.mnGain = nGain; + + // Blacklevel / brightness. + OptValue<OUString> oBlacklevel = rAttribs.getString(XML_blacklevel); + sal_Int16 nBlacklevel = 0; + if (oBlacklevel.has() && oBlacklevel.get().endsWith("f")) + { + nBlacklevel = oBlacklevel.get().toInt32(); + } + if (nBlacklevel != 0) + { + nBlacklevel /= 327; + } + mrTypeModel.mnBlacklevel = nBlacklevel; } break; case NMSP_vmlWord | XML_wrap: |