| /************************************************************** |
| * |
| * 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. |
| * |
| *************************************************************/ |
| |
| |
| |
| // MARKER(update_precomp.py): autogen include statement, do not remove |
| #include "precompiled_svx.hxx" |
| |
| // include --------------------------------------------------------------- |
| |
| #include <sot/formats.hxx> |
| #include <tools/vcompat.hxx> |
| #include <svx/xflasit.hxx> |
| #include <svx/xfillit0.hxx> |
| #ifndef _SFXIPOOL_HXX |
| #include <svl/itempool.hxx> |
| #endif |
| #include <svl/whiter.hxx> |
| #ifndef _SFXIPOOL_HXX |
| #include <svl/itempool.hxx> |
| #endif |
| #include <svl/itemset.hxx> |
| #include <svx/xdef.hxx> |
| #include "svx/xexch.hxx" |
| |
| |
| TYPEINIT1_AUTOFACTORY( XFillExchangeData, SvDataCopyStream ); |
| |
| |
| /************************************************************************* |
| |* |
| |* Default-Ctor (Fuer Assign()) |
| |* |
| *************************************************************************/ |
| XFillExchangeData::XFillExchangeData() : |
| pXFillAttrSetItem( NULL ), |
| pPool( NULL ) |
| { |
| } |
| |
| |
| /************************************************************************* |
| |* |
| |* Ctor |
| |* |
| *************************************************************************/ |
| XFillExchangeData::XFillExchangeData( const XFillAttrSetItem rXFillAttrSetItem ) : |
| pXFillAttrSetItem( (XFillAttrSetItem*) rXFillAttrSetItem.Clone( rXFillAttrSetItem.GetItemSet().GetPool() ) ), |
| pPool( rXFillAttrSetItem.GetItemSet().GetPool() ) |
| { |
| } |
| |
| |
| /************************************************************************* |
| |* |
| |* Dtor |
| |* |
| *************************************************************************/ |
| XFillExchangeData::~XFillExchangeData() |
| { |
| delete pXFillAttrSetItem; |
| } |
| |
| /************************************************************************* |
| |* |
| |* |
| |* |
| *************************************************************************/ |
| sal_uIntPtr XFillExchangeData::RegisterClipboardFormatName() |
| { |
| return( SOT_FORMATSTR_ID_XFA ); |
| } |
| |
| /****************************************************************************** |
| |* |
| |* Binaer-Export (z.Z. ohne Versionsverwaltung, da nicht persistent!) |
| |* |
| \******************************************************************************/ |
| |
| SvStream& operator<<( SvStream& rOStm, const XFillExchangeData& rData ) |
| { |
| if( rData.pXFillAttrSetItem ) |
| { |
| SfxWhichIter aIter( rData.pXFillAttrSetItem->GetItemSet() ); |
| sal_uInt16 nWhich = aIter.FirstWhich(); |
| const SfxPoolItem* pItem; |
| sal_uInt32 nItemCount = 0; |
| sal_Size nFirstPos = rOStm.Tell(); |
| |
| rOStm << nItemCount; |
| |
| while( nWhich ) |
| { |
| if( SFX_ITEM_SET == rData.pXFillAttrSetItem->GetItemSet().GetItemState( nWhich, sal_False, &pItem ) ) |
| { |
| VersionCompat aCompat( rOStm, STREAM_WRITE ); |
| const sal_uInt16 nItemVersion2 = pItem->GetVersion( (sal_uInt16) rOStm.GetVersion() ); |
| |
| rOStm << nWhich << nItemVersion2; |
| pItem->Store( rOStm, nItemVersion2 ); |
| |
| nItemCount++; |
| } |
| |
| nWhich = aIter.NextWhich(); |
| } |
| |
| const sal_uIntPtr nLastPos = rOStm.Tell(); |
| rOStm.Seek( nFirstPos ); |
| rOStm << nItemCount; |
| rOStm.Seek( nLastPos ); |
| } |
| |
| return rOStm; |
| } |
| |
| |
| /****************************************************************************** |
| |* |
| |* Binaer-Import (z.Z. ohne Versionsverwaltung, da nicht persistent!) |
| |* |
| \******************************************************************************/ |
| |
| SvStream& operator>>( SvStream& rIStm, XFillExchangeData& rData ) |
| { |
| DBG_ASSERT( rData.pPool, "XFillExchangeData has no pool" ); |
| |
| SfxItemSet* pSet = new SfxItemSet ( *rData.pPool, XATTR_FILL_FIRST, XATTR_FILL_LAST ); |
| SfxPoolItem* pNewItem; |
| sal_uInt32 nItemCount = 0; |
| sal_uInt16 nWhich, nItemVersion; |
| |
| rIStm >> nItemCount; |
| |
| if( nItemCount > ( XATTR_FILL_LAST - XATTR_FILL_FIRST + 1 ) ) |
| nItemCount = ( XATTR_FILL_LAST - XATTR_FILL_FIRST + 1 ); |
| |
| for( sal_uInt32 i = 0; i < nItemCount; i++ ) |
| { |
| VersionCompat aCompat( rIStm, STREAM_READ ); |
| |
| rIStm >> nWhich >> nItemVersion; |
| |
| if( nWhich ) |
| { |
| pNewItem = rData.pPool->GetDefaultItem( nWhich ).Create( rIStm, nItemVersion ); |
| |
| if( pNewItem ) |
| { |
| pSet->Put( *pNewItem ); |
| delete pNewItem; |
| } |
| } |
| } |
| |
| delete rData.pXFillAttrSetItem; |
| rData.pXFillAttrSetItem = new XFillAttrSetItem( pSet ); |
| rData.pPool = rData.pXFillAttrSetItem->GetItemSet().GetPool(); |
| |
| return rIStm; |
| } |
| |
| /************************************************************************* |
| |* |
| |* XBitmap& XBitmap::operator=( const XBitmap& rXBmp ) |
| |* |
| *************************************************************************/ |
| |
| XFillExchangeData& XFillExchangeData::operator=( const XFillExchangeData& rData ) |
| { |
| delete pXFillAttrSetItem; |
| |
| if( rData.pXFillAttrSetItem ) |
| pXFillAttrSetItem = (XFillAttrSetItem*) rData.pXFillAttrSetItem->Clone( pPool = rData.pXFillAttrSetItem->GetItemSet().GetPool() ); |
| else |
| { |
| pPool = NULL; |
| pXFillAttrSetItem = NULL; |
| } |
| |
| return( *this ); |
| } |