blob: bf4d96f6bd6a5c97e7fdd472e1ff2818dfcc85b8 [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
#ifndef _SVDOOLE2_HXX
#define _SVDOOLE2_HXX
#include <svtools/embedhlp.hxx>
#include <com/sun/star/uno/Reference.h>
#include <com/sun/star/frame/XModel.hpp>
#include <com/sun/star/datatransfer/XTransferable.hpp>
#include "com/sun/star/awt/XWindow.hpp"
#include <svx/svdorect.hxx>
#include <vcl/graph.hxx>
#include <vcl/gdimtf.hxx>
#include <sot/storage.hxx>
#include "svx/svxdllapi.h"
//************************************************************
// SdrOle2Obj
//************************************************************
class SvxUnoShapeModifyListener;
class SdrOle2ObjImpl;
class SVX_DLLPUBLIC SdrOle2Obj : public SdrRectObj
{
private:
SVX_DLLPRIVATE void Connect_Impl();
SVX_DLLPRIVATE void Disconnect_Impl();
SVX_DLLPRIVATE void Reconnect_Impl();
SVX_DLLPRIVATE void AddListeners_Impl();
SVX_DLLPRIVATE void RemoveListeners_Impl();
SVX_DLLPRIVATE ::com::sun::star::uno::Reference < ::com::sun::star::datatransfer::XTransferable > GetTransferable_Impl() const;
SVX_DLLPRIVATE void GetObjRef_Impl();
SVX_DLLPRIVATE void SetGraphic_Impl(const Graphic* pGrf);
// #i118485# helper added
SdrObject* createSdrGrafObjReplacement(bool bAddText, bool bUseHCGraphic) const;
protected:
virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact();
virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties();
svt::EmbeddedObjectRef xObjRef;
Graphic* pGraphic;
String aProgName;
// wg. Kompatibilitaet erstmal am SdrTextObj
sal_Bool bFrame : 1;
sal_Bool bInDestruction : 1;
// #i118524#
bool mbSuppressSetVisAreaSize : 1;
mutable bool m_bTypeAsked;
mutable bool m_bChart;
SdrOle2ObjImpl* mpImpl;
SvxUnoShapeModifyListener* pModifyListener;
protected:
void ImpSetVisAreaSize();
void Init();
public:
String GetStyleString();
TYPEINFO();
SdrOle2Obj(FASTBOOL bFrame_=sal_False);
SdrOle2Obj(const svt::EmbeddedObjectRef& rNewObjRef, FASTBOOL bFrame_=sal_False);
SdrOle2Obj(const svt::EmbeddedObjectRef& rNewObjRef, const String& rNewObjName, FASTBOOL bFrame_=sal_False);
SdrOle2Obj(const svt::EmbeddedObjectRef& rNewObjRef, const String& rNewObjName, const Rectangle& rNewRect, FASTBOOL bFrame_=sal_False);
virtual ~SdrOle2Obj();
// access to svt::EmbeddedObjectRef
const svt::EmbeddedObjectRef& getEmbeddedObjectRef() const { return xObjRef; }
sal_Int64 GetAspect() const { return xObjRef.GetViewAspect(); }
bool isInplaceActive() const;
bool isUiActive() const;
void SetAspect( sal_Int64 nAspect );
// Ein OLE-Zeichenobjekt kann eine StarView-Grafik beinhalten.
// Diese wird angezeigt, wenn das OLE-Objekt leer ist.
void SetGraphic(const Graphic* pGrf);
Graphic* GetGraphic() const;
void GetNewReplacement();
// the original size of the object ( size of the icon for iconified object )
// no conversion is done if no target mode is provided
Size GetOrigObjSize( MapMode* pTargetMapMode = NULL ) const;
// #i118524# Allow suppress SetVisAreaSize in changing methods when call
// comes from OLE client
void setSuppressSetVisAreaSize(bool bNew) { mbSuppressSetVisAreaSize = bNew; }
// OLE object has got a separate PersistName member now;
// !!! use ::SetPersistName( ... ) only, if you know what you do !!!
String GetPersistName() const;
void SetPersistName( const String& rPersistName );
// Einem SdrOle2Obj kann man ein Applikationsnamen verpassen, den man
// spaeter wieder abfragen kann (SD braucht das fuer Praesentationsobjekte).
void SetProgName(const String& rNam) { aProgName=rNam; }
const String& GetProgName() const { return aProgName; }
FASTBOOL IsEmpty() const;
void SetObjRef(const com::sun::star::uno::Reference < com::sun::star::embed::XEmbeddedObject >& rNewObjRef);
com::sun::star::uno::Reference < com::sun::star::embed::XEmbeddedObject > GetObjRef() const;
SVX_DLLPRIVATE com::sun::star::uno::Reference < com::sun::star::embed::XEmbeddedObject > GetObjRef_NoInit() const;
void AbandonObject();
virtual void SetPage(SdrPage* pNewPage);
virtual void SetModel(SdrModel* pModel);
/** Change the IsClosedObj attribute
@param bIsClosed
Whether the OLE object is closed, i.e. has opaque background
*/
void SetClosedObj( bool bIsClosed );
// FullDrag support
virtual SdrObject* getFullDragClone() const;
virtual void TakeObjInfo(SdrObjTransformInfoRec& rInfo) const;
virtual sal_uInt16 GetObjIdentifier() const;
virtual void TakeObjNameSingul(String& rName) const;
virtual void TakeObjNamePlural(String& rName) const;
virtual void operator=(const SdrObject& rObj);
virtual void NbcMove(const Size& rSize);
virtual void NbcResize(const Point& rRef, const Fraction& xFact, const Fraction& yFact);
virtual void NbcSetSnapRect(const Rectangle& rRect);
virtual void NbcSetLogicRect(const Rectangle& rRect);
virtual void SetGeoData(const SdrObjGeoData& rGeo);
static sal_Bool CanUnloadRunningObj( const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XEmbeddedObject >& xObj,
sal_Int64 nAspect );
static sal_Bool Unload( const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XEmbeddedObject >& xObj, sal_Int64 nAspect );
sal_Bool Unload();
void Connect();
void Disconnect();
void ObjectLoaded();
::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > getXModel() const;
// #109985#
sal_Bool IsChart() const;
sal_Bool IsCalc() const;
sal_Bool UpdateLinkURL_Impl();
void BreakFileLink_Impl();
void DisconnectFileLink_Impl();
void CheckFileLink_Impl();
// allows to transfer the graphics to the object helper
void SetGraphicToObj( const Graphic& aGraphic, const ::rtl::OUString& aMediaType );
void SetGraphicToObj( const ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream >& xGrStream,
const ::rtl::OUString& aMediaType );
::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > GetParentXModel() const;
sal_Bool CalculateNewScaling( Fraction& aScaleWidth, Fraction& aScaleHeight, Size& aObjAreaSize );
sal_Bool AddOwnLightClient();
// handy to get the empty replacement bitmap without accessing all the old stuff
static Bitmap GetEmtyOLEReplacementBitmap();
void SetWindow(const com::sun::star::uno::Reference < com::sun::star::awt::XWindow >& _xWindow);
// #i118485# missing converter added
virtual SdrObject* DoConvertToPolyObj(sal_Bool bBezier, bool bAddText) const;
};
#endif //_SVDOOLE2_HXX