From e2d46da076f43a7c0d56fc486b9f15339243f7c9 Mon Sep 17 00:00:00 2001 From: Miklos Vajna Date: Thu, 21 Jan 2021 15:08:13 +0100 Subject: avmedia: add doc model for bitmap fill of slide narrations This allows specifying a custom bitmap for a media shape. It's mostly useful for audio-only streams where the additional bitmap may be e.g. a speaker icon to indicate this a narration. Change-Id: I21c1b492ac09b631cf6e3ec8120be8b82c01c26d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/109763 Reviewed-by: Miklos Vajna Tested-by: Jenkins --- svx/source/svdraw/svdomedia.cxx | 5 +++++ svx/source/unodraw/unoprov.cxx | 1 + svx/source/unodraw/unoshap4.cxx | 31 +++++++++++++++++++++++++++++-- 3 files changed, 35 insertions(+), 2 deletions(-) (limited to 'svx') diff --git a/svx/source/svdraw/svdomedia.cxx b/svx/source/svdraw/svdomedia.cxx index 47e30a1049ac..923be7d451ba 100644 --- a/svx/source/svdraw/svdomedia.cxx +++ b/svx/source/svdraw/svdomedia.cxx @@ -330,6 +330,11 @@ void SdrMediaObj::mediaPropertiesChanged( const ::avmedia::MediaItem& rNewProper if( AVMediaSetMask::MIME_TYPE & nMaskSet ) m_xImpl->m_MediaProperties.setMimeType( rNewProperties.getMimeType() ); + if (nMaskSet & AVMediaSetMask::GRAPHIC) + { + m_xImpl->m_MediaProperties.setGraphic(rNewProperties.getGraphic()); + } + if( ( AVMediaSetMask::URL & nMaskSet ) && ( rNewProperties.getURL() != getURL() )) { diff --git a/svx/source/unodraw/unoprov.cxx b/svx/source/unodraw/unoprov.cxx index 0531cff10bb9..865380d2a0c8 100644 --- a/svx/source/unodraw/unoprov.cxx +++ b/svx/source/unodraw/unoprov.cxx @@ -729,6 +729,7 @@ static SfxItemPropertyMapEntry const * ImplGetSvxMediaShapePropertyMap() {u"PrivateTempFileURL", OWN_ATTR_MEDIA_TEMPFILEURL, cppu::UnoType::get(), css::beans::PropertyAttribute::READONLY, 0}, { u"MediaMimeType", OWN_ATTR_MEDIA_MIMETYPE, cppu::UnoType::get(), 0, 0}, { u"FallbackGraphic", OWN_ATTR_FALLBACK_GRAPHIC, cppu::UnoType::get(), css::beans::PropertyAttribute::READONLY, 0}, + { u"" UNO_NAME_GRAPHOBJ_GRAPHIC, OWN_ATTR_VALUE_GRAPHIC , cppu::UnoType::get(), 0, 0}, { u"", 0, css::uno::Type(), 0, 0 } }; diff --git a/svx/source/unodraw/unoshap4.cxx b/svx/source/unodraw/unoshap4.cxx index 658cb2c8fd6c..17daf3f5a1ed 100644 --- a/svx/source/unodraw/unoshap4.cxx +++ b/svx/source/unodraw/unoshap4.cxx @@ -779,7 +779,8 @@ bool SvxMediaShape::setPropertyValueImpl( const OUString& rName, const SfxItemPr { if( ((pProperty->nWID >= OWN_ATTR_MEDIA_URL) && (pProperty->nWID <= OWN_ATTR_MEDIA_ZOOM)) || (pProperty->nWID == OWN_ATTR_MEDIA_STREAM) - || (pProperty->nWID == OWN_ATTR_MEDIA_MIMETYPE) ) + || (pProperty->nWID == OWN_ATTR_MEDIA_MIMETYPE) + || (pProperty->nWID == OWN_ATTR_VALUE_GRAPHIC)) { SdrMediaObj* pMedia = static_cast< SdrMediaObj* >( GetSdrObject() ); ::avmedia::MediaItem aItem; @@ -869,6 +870,19 @@ bool SvxMediaShape::setPropertyValueImpl( const OUString& rName, const SfxItemPr #endif break; + case OWN_ATTR_VALUE_GRAPHIC: +#if HAVE_FEATURE_AVMEDIA + { + uno::Reference xGraphic(rValue, uno::UNO_QUERY); + if (xGraphic.is()) + { + bOk = true; + aItem.setGraphic(Graphic(xGraphic)); + } + } +#endif + break; + case OWN_ATTR_MEDIA_STREAM: #if HAVE_FEATURE_AVMEDIA try @@ -924,7 +938,8 @@ bool SvxMediaShape::getPropertyValueImpl( const OUString& rName, const SfxItemPr || (pProperty->nWID == OWN_ATTR_MEDIA_STREAM) || (pProperty->nWID == OWN_ATTR_MEDIA_TEMPFILEURL) || (pProperty->nWID == OWN_ATTR_MEDIA_MIMETYPE) - || (pProperty->nWID == OWN_ATTR_FALLBACK_GRAPHIC)) + || (pProperty->nWID == OWN_ATTR_FALLBACK_GRAPHIC) + || (pProperty->nWID == OWN_ATTR_VALUE_GRAPHIC)) { SdrMediaObj* pMedia = static_cast< SdrMediaObj* >( GetSdrObject() ); const ::avmedia::MediaItem aItem( pMedia->getMediaProperties() ); @@ -995,6 +1010,18 @@ bool SvxMediaShape::getPropertyValueImpl( const OUString& rName, const SfxItemPr #endif break; + case OWN_ATTR_VALUE_GRAPHIC: +#if HAVE_FEATURE_AVMEDIA + { + Graphic aGraphic = aItem.getGraphic(); + if (!aGraphic.IsNone()) + { + rValue <<= aGraphic.GetXGraphic(); + } + } +#endif + break; + case OWN_ATTR_FALLBACK_GRAPHIC: rValue <<= pMedia->getSnapshot(); break; -- cgit