summaryrefslogtreecommitdiff
path: root/editeng
diff options
context:
space:
mode:
authorTomaž Vajngerl <tomaz.vajngerl@collabora.co.uk>2018-03-01 06:33:30 +0900
committerTomaž Vajngerl <quikee@gmail.com>2018-03-07 02:37:10 +0100
commit6b39ed0eaffabb6ffe11496d833053c094c72f7b (patch)
tree4c9b283409c66b6490ab2d8c577701c85710a6a5 /editeng
parentf480bda7a8ddc40da300d0faebda159cd94ac052 (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.cxx52
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() )