diff options
author | Tomaž Vajngerl <tomaz.vajngerl@collabora.co.uk> | 2018-03-01 06:33:30 +0900 |
---|---|---|
committer | Tomaž Vajngerl <quikee@gmail.com> | 2018-03-07 02:37:10 +0100 |
commit | 6b39ed0eaffabb6ffe11496d833053c094c72f7b (patch) | |
tree | 4c9b283409c66b6490ab2d8c577701c85710a6a5 /editeng | |
parent | f480bda7a8ddc40da300d0faebda159cd94ac052 (diff) |
MID_GRAPHIC as alternative to set graphic to the SvxBrushItem
Change-Id: I6e17d1a34f0bd17a0eafd7c741162f23279e9d1a
Reviewed-on: https://gerrit.libreoffice.org/50539
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
Diffstat (limited to 'editeng')
-rw-r--r-- | editeng/source/items/frmitems.cxx | 52 |
1 files changed, 44 insertions, 8 deletions
diff --git a/editeng/source/items/frmitems.cxx b/editeng/source/items/frmitems.cxx index 5d3f3370bbde..f7a73d190229 100644 --- a/editeng/source/items/frmitems.cxx +++ b/editeng/source/items/frmitems.cxx @@ -44,6 +44,7 @@ #include <com/sun/star/frame/status/UpperLowerMarginScale.hpp> #include <com/sun/star/frame/status/LeftRightMarginScale.hpp> #include <com/sun/star/drawing/ShadingPattern.hpp> +#include <com/sun/star/graphic/XGraphic.hpp> #include <i18nutil/unicode.hxx> #include <unotools/ucbstreamhelper.hxx> @@ -84,6 +85,7 @@ #include <editeng/editerr.hxx> #include <libxml/xmlwriter.h> #include <o3tl/enumrange.hxx> +#include <vcl/GraphicLoader.hxx> using namespace ::editeng; using namespace ::com::sun::star; @@ -3190,10 +3192,6 @@ bool SvxBrushItem::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const rVal <<= static_cast<style::GraphicLocation>(static_cast<sal_Int16>(eGraphicPos)); break; - case MID_GRAPHIC: - SAL_WARN( "editeng.items", "not implemented" ); - break; - case MID_GRAPHIC_TRANSPARENT: rVal <<= ( aColor.GetTransparency() == 0xff ); break; @@ -3214,6 +3212,22 @@ bool SvxBrushItem::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const } break; + case MID_GRAPHIC: + { + uno::Reference<graphic::XGraphic> xGraphic; + if (!maStrLink.isEmpty()) + { + Graphic aGraphic(vcl::graphic::loadFromURL(maStrLink)); + xGraphic = aGraphic.GetXGraphic(); + } + else if (xGraphicObject) + { + xGraphic = xGraphicObject->GetGraphic().GetXGraphic(); + } + rVal <<= xGraphic; + } + break; + case MID_GRAPHIC_FILTER: { rVal <<= maStrFilter; @@ -3276,10 +3290,6 @@ bool SvxBrushItem::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId ) } break; - case MID_GRAPHIC: - SAL_WARN( "editeng.items", "not implemented" ); - break; - case MID_GRAPHIC_TRANSPARENT: aColor.SetTransparency( Any2Bool( rVal ) ? 0xff : 0 ); break; @@ -3316,6 +3326,32 @@ bool SvxBrushItem::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId ) } break; + case MID_GRAPHIC: + { + if (rVal.getValueType() == cppu::UnoType<graphic::XGraphic>::get()) + { + auto xGraphic = rVal.get<uno::Reference<graphic::XGraphic>>(); + + Graphic aGraphic(xGraphic); + maStrLink.clear(); + + std::unique_ptr<GraphicObject> xOldGrfObj(std::move(xGraphicObject)); + xGraphicObject.reset(new GraphicObject(aGraphic)); + ApplyGraphicTransparency_Impl(); + xOldGrfObj.reset(); + + if (aGraphic && eGraphicPos == GPOS_NONE) + { + eGraphicPos = GPOS_MM; + } + else if (!aGraphic) + { + eGraphicPos = GPOS_NONE; + } + } + } + break; + case MID_GRAPHIC_FILTER: { if( rVal.getValueType() == ::cppu::UnoType<OUString>::get() ) |