20 #include <config_features.h>
24 #include <rtl/ustring.hxx>
25 #include <rtl/ustrbuf.hxx>
36 #include <svx/strings.hrc>
89 return std::make_unique<sdr::contact::ViewContactOfSdrMediaObj>( *this );
125 if (!aName.isEmpty())
133 return sName.makeStringAndClear();
138 return SvxResId(STR_ObjNamePluralMEDIA);
148 #if HAVE_FEATURE_AVMEDIA
149 if( !
m_xImpl->m_xCachedSnapshot.is() )
151 OUString aRealURL =
m_xImpl->m_MediaProperties.getTempURL();
152 if( aRealURL.isEmpty() )
153 aRealURL =
m_xImpl->m_MediaProperties.getURL();
157 return m_xImpl->m_xCachedSnapshot;
163 static_cast< sdr::contact::ViewContactOfSdrMediaObj& >(
GetViewContact() ).getPreferredSize(),
164 MapMode(MapUnit::Map100thMM)) );
173 if ( (!bShrinkOnly ||
174 ( aSize.
Height() > aMaxSize.Height() ) ||
175 ( aSize.
Width() > aMaxSize.Width() ) )&&
176 aSize.
Height() && aMaxSize.Height() )
178 float fGrfWH =
static_cast<float>(aSize.
Width()) /
179 static_cast<float>(aSize.
Height());
180 float fWinWH =
static_cast<float>(aMaxSize.Width()) /
181 static_cast<float>(aMaxSize.Height());
184 if ( fGrfWH < fWinWH )
186 aSize.
setWidth( static_cast<tools::Long>(aMaxSize.Height() * fGrfWH) );
189 else if ( fGrfWH > 0.
F )
192 aSize.
setHeight( static_cast<tools::Long>(aMaxSize.Width() / fGrfWH) );
201 aPos.AdjustX( -(aSize.
Width() / 2) );
202 aPos.AdjustY( -(aSize.
Height() / 2) );
209 #if HAVE_FEATURE_AVMEDIA
210 if( !rMimeType.isEmpty() )
211 m_xImpl->m_MediaProperties.setMimeType(rMimeType);
212 aURLItem.
setURL( rURL,
"", rReferer );
223 #if HAVE_FEATURE_AVMEDIA
224 return m_xImpl->m_MediaProperties.getURL();
239 return m_xImpl->m_MediaProperties;
246 SAL_WARN(
"svx",
"this is only intended for embedded media");
250 uno::Reference<ucb::XCommandEnvironment>(),
257 if (
m_xImpl->m_pTempFile ||
m_xImpl->m_LastFailedPkgURL.isEmpty())
259 SAL_WARN(
"svx",
"this is only intended for embedded media");
263 OUString tempFileURL;
272 m_xImpl->m_pTempFile = std::make_shared<::avmedia::MediaTempFile>(tempFileURL);
273 #if HAVE_FEATURE_AVMEDIA
274 m_xImpl->m_MediaProperties.setURL(
275 m_xImpl->m_LastFailedPkgURL, tempFileURL,
"");
278 m_xImpl->m_LastFailedPkgURL.clear();
282 #if HAVE_FEATURE_AVMEDIA
283 static bool lcl_HandlePackageURL(
284 OUString
const & rURL,
286 OUString & o_rTempFileURL)
289 uno::Reference<io::XInputStream> xInStream;
293 catch (container::NoSuchElementException
const&)
295 SAL_INFO(
"svx",
"not found: '" << rURL <<
"'");
298 catch (uno::Exception
const&)
311 sal_Int32 nLastDot = rURL.lastIndexOf(
'.');
312 sal_Int32 nLastSlash = rURL.lastIndexOf(
'/');
313 OUString sDesiredExtension;
314 if (nLastDot > nLastSlash && nLastDot+1 < rURL.getLength())
315 sDesiredExtension = rURL.copy(nLastDot);
316 return ::avmedia::CreateMediaTempFile(xInStream, o_rTempFileURL, sDesiredExtension);
322 bool bBroadcastChanged =
false;
323 #if HAVE_FEATURE_AVMEDIA
327 if( AVMediaSetMask::MIME_TYPE & nMaskSet )
328 m_xImpl->m_MediaProperties.setMimeType( rNewProperties.getMimeType() );
330 if (nMaskSet & AVMediaSetMask::GRAPHIC)
332 m_xImpl->m_MediaProperties.setGraphic(rNewProperties.getGraphic());
335 if( ( AVMediaSetMask::URL & nMaskSet ) &&
336 ( rNewProperties.getURL() !=
getURL() ))
338 m_xImpl->m_xCachedSnapshot.clear();
339 OUString
const& url(rNewProperties.getURL());
340 if (url.startsWithIgnoreAsciiCase(
"vnd.sun.star.Package:"))
343 || (
m_xImpl->m_pTempFile->m_TempFileURL !=
344 rNewProperties.getTempURL()))
346 OUString tempFileURL;
348 lcl_HandlePackageURL(
356 std::make_shared<::avmedia::MediaTempFile>(tempFileURL);
357 m_xImpl->m_MediaProperties.setURL(url, tempFileURL,
"");
362 m_xImpl->m_MediaProperties.setURL(
"",
"",
"");
365 m_xImpl->m_LastFailedPkgURL = url;
370 m_xImpl->m_MediaProperties.setURL(url,
371 rNewProperties.getTempURL(),
"");
377 m_xImpl->m_MediaProperties.setURL(url,
"", rNewProperties.getReferer());
379 bBroadcastChanged =
true;
382 if( AVMediaSetMask::LOOP & nMaskSet )
383 m_xImpl->m_MediaProperties.setLoop( rNewProperties.isLoop() );
385 if( AVMediaSetMask::MUTE & nMaskSet )
386 m_xImpl->m_MediaProperties.setMute( rNewProperties.isMute() );
388 if( AVMediaSetMask::VOLUMEDB & nMaskSet )
389 m_xImpl->m_MediaProperties.setVolumeDB( rNewProperties.getVolumeDB() );
391 if( AVMediaSetMask::ZOOM & nMaskSet )
392 m_xImpl->m_MediaProperties.setZoom( rNewProperties.getZoom() );
394 (
void) rNewProperties;
397 if( bBroadcastChanged )
void setWidth(tools::Long nWidth)
sdr::contact::ViewContact & GetViewContact() const
Rectangle objects (rectangle, circle, ...)
static OutputDevice * GetDefaultDevice()
constexpr tools::Long Width() const
OUString SvxResId(const char *pId)
#define TOOLS_WARN_EXCEPTION(area, stream)
void BroadcastObjectChange() const
SdrModel & getSdrModelFromSdrObject() const
virtual void SetLogicRect(const tools::Rectangle &rRect)
css::uno::Reference< css::io::XInputStream > openStream()
constexpr tools::Long Height() const
#define SAL_INFO(area, stream)
Reference< XComponentContext > getProcessComponentContext()
void setHeight(tools::Long nHeight)
#define SAL_WARN(area, stream)
virtual void SetChanged()
css::uno::Reference< css::io::XInputStream > GetDocumentStream(OUString const &rURL,::comphelper::LifecycleProxy const &rProxy) const