/************************************************************************* * * $RCSfile: embeddoc.hxx,v $ * * $Revision: 1.1 $ * * last change: $Author: mav $ $Date: 2003-03-05 15:49:20 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses * * - GNU Lesser General Public License Version 2.1 * - Sun Industry Standards Source License Version 1.1 * * Sun Microsystems Inc., October, 2000 * * GNU Lesser General Public License Version 2.1 * ============================================= * Copyright 2000 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 * * * Sun Industry Standards Source License Version 1.1 * ================================================= * The contents of this file are subject to the Sun Industry Standards * Source License Version 1.1 (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.openoffice.org/license.html. * * Software provided under this License is provided on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. * See the License for the specific provisions governing your rights and * obligations concerning the Software. * * The Initial Developer of the Original Code is: Sun Microsystems, Inc. * * Copyright: 2000 by Sun Microsystems, Inc. * * All Rights Reserved. * * Contributor(s): _______________________________________ * * ************************************************************************/ #ifndef _EMBEDDOC_HXX_ #define _EMBEDDOC_HXX_ #include "common.h" #include #ifndef _COM_SUN_STAR_UNO_REFERENCE_H_ #include #endif #ifndef _COM_SUN_STAR_UNO_SEQUENCE_H_ #include #endif class GDIMetaFile; class EmbedDocument_Impl : public IPersistStorage , public IDataObject , public IOleObject { protected: ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > fillArgsForLoading_Impl( ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream > xStream, DWORD nStreamMode ); ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > fillArgsForStoring_Impl( ::com::sun::star::uno::Reference< ::com::sun::star::io::XOutputStream > xStream ); HRESULT SaveTo_Impl( IStorage* pStg ); sal_uInt64 getMetaFileHandle_Impl( sal_Bool isEnhMeta ); public: EmbedDocument_Impl( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& smgr, const GUID* guid ); ~EmbedDocument_Impl(); /* IUnknown methods */ STDMETHOD(QueryInterface)(REFIID riid, LPVOID FAR * ppvObj); STDMETHOD_(ULONG, AddRef)(); STDMETHOD_(ULONG, Release)(); /* IPersistMethod */ STDMETHOD(GetClassID)(CLSID *pClassID); /* IPersistStorage methods */ STDMETHOD(IsDirty) (); STDMETHOD(InitNew) ( IStorage *pStg ); STDMETHOD(Load) ( IStorage* pStr ); STDMETHOD(Save) ( IStorage *pStgSave, BOOL fSameAsLoad ); STDMETHOD(SaveCompleted) ( IStorage *pStgNew ); STDMETHOD(HandsOffStorage) (void); /* IDataObject methods */ STDMETHOD(GetData) ( FORMATETC * pFormatetc, STGMEDIUM * pMedium ); STDMETHOD(GetDataHere) ( FORMATETC * pFormatetc, STGMEDIUM * pMedium ); STDMETHOD(QueryGetData) ( FORMATETC * pFormatetc ); STDMETHOD(GetCanonicalFormatEtc) ( FORMATETC * pFormatetcIn, FORMATETC * pFormatetcOut ); STDMETHOD(SetData) ( FORMATETC * pFormatetc, STGMEDIUM * pMedium, BOOL fRelease ); STDMETHOD(EnumFormatEtc) ( DWORD dwDirection, IEnumFORMATETC ** ppFormatetc ); STDMETHOD(DAdvise) ( FORMATETC * pFormatetc, DWORD advf, IAdviseSink * pAdvSink, DWORD * pdwConnection ); STDMETHOD(DUnadvise) ( DWORD dwConnection ); STDMETHOD(EnumDAdvise) ( IEnumSTATDATA ** ppenumAdvise ); /* IOleObject methods */ STDMETHOD(SetClientSite) ( IOleClientSite* pSite ); STDMETHOD(GetClientSite) ( IOleClientSite** pSite ); STDMETHOD(SetHostNames) ( LPCOLESTR szContainerApp, LPCOLESTR szContainerObj ); STDMETHOD(Close) ( DWORD dwSaveOption); STDMETHOD(SetMoniker) ( DWORD dwWhichMoniker, IMoniker *pmk ); STDMETHOD(GetMoniker) ( DWORD dwAssign, DWORD dwWhichMoniker, IMoniker **ppmk ); STDMETHOD(InitFromData) ( IDataObject *pDataObject, BOOL fCreation, DWORD dwReserved ); STDMETHOD(GetClipboardData) ( DWORD dwReserved, IDataObject **ppDataObject ); STDMETHOD(DoVerb) ( LONG iVerb, LPMSG lpmsg, IOleClientSite *pActiveSite, LONG lindex, HWND hwndParent, LPCRECT lprcPosRect ); STDMETHOD(EnumVerbs) ( IEnumOLEVERB **ppEnumOleVerb ); STDMETHOD(Update) (); STDMETHOD(IsUpToDate) (); STDMETHOD(GetUserClassID) ( CLSID *pClsid ); STDMETHOD(GetUserType) ( DWORD dwFormOfType, LPOLESTR *pszUserType ); STDMETHOD(SetExtent) ( DWORD dwDrawAspect, SIZEL *psizel ); STDMETHOD(GetExtent) ( DWORD dwDrawAspect, SIZEL *psizel ); STDMETHOD(Advise) ( IAdviseSink *pAdvSink, DWORD *pdwConnection ); STDMETHOD(Unadvise) ( DWORD dwConnection ); STDMETHOD(EnumAdvise) ( IEnumSTATDATA **ppenumAdvise ); STDMETHOD(GetMiscStatus) ( DWORD dwAspect, DWORD *pdwStatus ); STDMETHOD(SetColorScheme) ( LOGPALETTE *pLogpal ); protected: oslInterlockedCount m_refCount; ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > m_xFactory; ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > m_xDocument; CComPtr< IStorage > m_pMasterStorage; CComPtr< IStream > m_pOwnStream; GUID m_guid; sal_Bool m_bIsDirty; CComPtr< IOleClientSite > m_pClientSite; }; #endif //_EMBEDDOC_HXX_