254 lines
7.5 KiB
C++
254 lines
7.5 KiB
C++
/*************************************************************************
|
|
*
|
|
* OpenOffice.org - a multi-platform office productivity suite
|
|
*
|
|
* $RCSfile: svdomedia.cxx,v $
|
|
*
|
|
* $Revision: 1.6 $
|
|
*
|
|
* last change: $Author: hr $ $Date: 2006-06-19 16:42:58 $
|
|
*
|
|
* The Contents of this file are made available subject to
|
|
* the terms of GNU Lesser General Public License Version 2.1.
|
|
*
|
|
*
|
|
* GNU Lesser General Public License Version 2.1
|
|
* =============================================
|
|
* Copyright 2005 by Sun Microsystems, Inc.
|
|
* 901 San Antonio Road, Palo Alto, CA 94303, USA
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
* License version 2.1, as published by the Free Software Foundation.
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with this library; if not, write to the Free Software
|
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
|
* MA 02111-1307 USA
|
|
*
|
|
************************************************************************/
|
|
|
|
#include "svdomedia.hxx"
|
|
#include "svdglob.hxx"
|
|
#include "svdstr.hrc"
|
|
|
|
#ifndef _SDR_CONTACT_VIEWCONTACTOFSDRMEDIAOBJ_HXX
|
|
#include <svx/sdr/contact/viewcontactofsdrmediaobj.hxx>
|
|
#endif
|
|
#ifndef _AVMEDIA_MEDIAWINDOW_HXX
|
|
#include <avmedia/mediawindow.hxx>
|
|
#endif
|
|
|
|
// ---------------
|
|
// - SdrMediaObj -
|
|
// ---------------
|
|
|
|
TYPEINIT1( SdrMediaObj, SdrRectObj );
|
|
|
|
// ------------------------------------------------------------------------------
|
|
|
|
SdrMediaObj::SdrMediaObj()
|
|
{
|
|
}
|
|
|
|
// ------------------------------------------------------------------------------
|
|
|
|
SdrMediaObj::SdrMediaObj( const Rectangle& rRect ) :
|
|
SdrRectObj( rRect )
|
|
{
|
|
}
|
|
|
|
// ------------------------------------------------------------------------------
|
|
|
|
SdrMediaObj::~SdrMediaObj()
|
|
{
|
|
}
|
|
|
|
// ------------------------------------------------------------------------------
|
|
|
|
FASTBOOL SdrMediaObj::HasTextEdit() const
|
|
{
|
|
return FALSE;
|
|
}
|
|
|
|
// ------------------------------------------------------------------------------
|
|
|
|
sdr::contact::ViewContact* SdrMediaObj::CreateObjectSpecificViewContact()
|
|
{
|
|
return new ::sdr::contact::ViewContactOfSdrMediaObj( *this );
|
|
}
|
|
|
|
// ------------------------------------------------------------------------------
|
|
|
|
void SdrMediaObj::TakeObjInfo( SdrObjTransformInfoRec& rInfo ) const
|
|
{
|
|
rInfo.bSelectAllowed = true;
|
|
rInfo.bMoveAllowed = true;
|
|
rInfo.bResizeFreeAllowed = true;
|
|
rInfo.bResizePropAllowed = true;
|
|
rInfo.bRotateFreeAllowed = false;
|
|
rInfo.bRotate90Allowed = false;
|
|
rInfo.bMirrorFreeAllowed = false;
|
|
rInfo.bMirror45Allowed = false;
|
|
rInfo.bMirror90Allowed = false;
|
|
rInfo.bTransparenceAllowed = false;
|
|
rInfo.bGradientAllowed = false;
|
|
rInfo.bShearAllowed = false;
|
|
rInfo.bEdgeRadiusAllowed = false;
|
|
rInfo.bNoOrthoDesired = false;
|
|
rInfo.bNoContortion = false;
|
|
rInfo.bCanConvToPath = false;
|
|
rInfo.bCanConvToPoly = false;
|
|
rInfo.bCanConvToContour = false;
|
|
rInfo.bCanConvToPathLineToArea = false;
|
|
rInfo.bCanConvToPolyLineToArea = false;
|
|
}
|
|
|
|
// ------------------------------------------------------------------------------
|
|
|
|
UINT16 SdrMediaObj::GetObjIdentifier() const
|
|
{
|
|
return UINT16( OBJ_MEDIA );
|
|
}
|
|
|
|
// ------------------------------------------------------------------------------
|
|
|
|
sal_Bool SdrMediaObj::DoPaintObject(XOutputDevice& /*rXOut*/, const SdrPaintInfoRec& /*rInfoRec*/) const
|
|
{
|
|
return true;
|
|
}
|
|
|
|
// ------------------------------------------------------------------------------
|
|
|
|
void SdrMediaObj::TakeObjNameSingul(XubString& rName) const
|
|
{
|
|
rName=ImpGetResStr(STR_ObjNameSingulMEDIA);
|
|
|
|
String aName( GetName() );
|
|
|
|
if(aName.Len())
|
|
{
|
|
rName += sal_Unicode(' ');
|
|
rName += sal_Unicode('\'');
|
|
rName += aName;
|
|
rName += sal_Unicode('\'');
|
|
}
|
|
}
|
|
|
|
// ------------------------------------------------------------------------------
|
|
|
|
void SdrMediaObj::TakeObjNamePlural(XubString& rName) const
|
|
{
|
|
rName=ImpGetResStr(STR_ObjNamePluralMEDIA);
|
|
}
|
|
|
|
// ------------------------------------------------------------------------------
|
|
|
|
void SdrMediaObj::operator=(const SdrObject& rObj)
|
|
{
|
|
SdrRectObj::operator=( rObj );
|
|
|
|
if( rObj.ISA( SdrMediaObj ) )
|
|
{
|
|
const SdrMediaObj& rMediaObj = static_cast< const SdrMediaObj& >( rObj );
|
|
|
|
setMediaProperties( rMediaObj.getMediaProperties() );
|
|
setGraphic( rMediaObj.mapGraphic.get() );
|
|
}
|
|
}
|
|
|
|
// ------------------------------------------------------------------------------
|
|
|
|
void SdrMediaObj::setURL( const ::rtl::OUString& rURL )
|
|
{
|
|
::avmedia::MediaItem aURLItem;
|
|
|
|
aURLItem.setURL( rURL );
|
|
setMediaProperties( aURLItem );
|
|
}
|
|
|
|
// ------------------------------------------------------------------------------
|
|
|
|
const ::rtl::OUString& SdrMediaObj::getURL() const
|
|
{
|
|
return getMediaProperties().getURL();
|
|
}
|
|
|
|
// ------------------------------------------------------------------------------
|
|
|
|
void SdrMediaObj::setMediaProperties( const ::avmedia::MediaItem& rState )
|
|
{
|
|
mediaPropertiesChanged( rState );
|
|
static_cast< ::sdr::contact::ViewContactOfSdrMediaObj& >( GetViewContact() ).executeMediaItem( getMediaProperties() );
|
|
}
|
|
|
|
// ------------------------------------------------------------------------------
|
|
|
|
const ::avmedia::MediaItem& SdrMediaObj::getMediaProperties() const
|
|
{
|
|
return maMediaProperties;
|
|
}
|
|
|
|
// ------------------------------------------------------------------------------
|
|
|
|
bool SdrMediaObj::hasPreferredSize() const
|
|
{
|
|
return static_cast< ::sdr::contact::ViewContactOfSdrMediaObj& >( GetViewContact() ).hasPreferredSize();
|
|
}
|
|
|
|
// ------------------------------------------------------------------------------
|
|
|
|
Size SdrMediaObj::getPreferredSize() const
|
|
{
|
|
return static_cast< ::sdr::contact::ViewContactOfSdrMediaObj& >( GetViewContact() ).getPreferredSize();
|
|
}
|
|
|
|
// ------------------------------------------------------------------------------
|
|
|
|
const Graphic& SdrMediaObj::getGraphic() const
|
|
{
|
|
if( !mapGraphic.get() )
|
|
const_cast< SdrMediaObj* >( this )->mapGraphic.reset( new Graphic( ::avmedia::MediaWindow::grabFrame( getURL(), true ) ) );
|
|
|
|
return *mapGraphic;
|
|
}
|
|
|
|
// ------------------------------------------------------------------------------
|
|
|
|
void SdrMediaObj::setGraphic( const Graphic* pGraphic )
|
|
{
|
|
mapGraphic.reset( pGraphic ? new Graphic( *pGraphic ) : NULL );
|
|
}
|
|
|
|
// ------------------------------------------------------------------------------
|
|
|
|
void SdrMediaObj::mediaPropertiesChanged( const ::avmedia::MediaItem& rNewProperties )
|
|
{
|
|
const sal_uInt32 nMaskSet = rNewProperties.getMaskSet();
|
|
|
|
// use only a subset of MediaItem properties for own own properties
|
|
if( ( AVMEDIA_SETMASK_URL & nMaskSet ) &&
|
|
( rNewProperties.getURL() != getURL() ) )
|
|
{
|
|
setGraphic();
|
|
maMediaProperties.setURL( rNewProperties.getURL() );
|
|
}
|
|
|
|
if( AVMEDIA_SETMASK_LOOP & nMaskSet )
|
|
maMediaProperties.setLoop( rNewProperties.isLoop() );
|
|
|
|
if( AVMEDIA_SETMASK_MUTE & nMaskSet )
|
|
maMediaProperties.setMute( rNewProperties.isMute() );
|
|
|
|
if( AVMEDIA_SETMASK_VOLUMEDB & nMaskSet )
|
|
maMediaProperties.setVolumeDB( rNewProperties.getVolumeDB() );
|
|
|
|
if( AVMEDIA_SETMASK_ZOOM & nMaskSet )
|
|
maMediaProperties.setZoom( rNewProperties.getZoom() );
|
|
}
|