1*1d2dbeb0SAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3*1d2dbeb0SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*1d2dbeb0SAndrew Rist * or more contributor license agreements. See the NOTICE file 5*1d2dbeb0SAndrew Rist * distributed with this work for additional information 6*1d2dbeb0SAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*1d2dbeb0SAndrew Rist * to you under the Apache License, Version 2.0 (the 8*1d2dbeb0SAndrew Rist * "License"); you may not use this file except in compliance 9*1d2dbeb0SAndrew Rist * with the License. You may obtain a copy of the License at 10*1d2dbeb0SAndrew Rist * 11*1d2dbeb0SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12*1d2dbeb0SAndrew Rist * 13*1d2dbeb0SAndrew Rist * Unless required by applicable law or agreed to in writing, 14*1d2dbeb0SAndrew Rist * software distributed under the License is distributed on an 15*1d2dbeb0SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*1d2dbeb0SAndrew Rist * KIND, either express or implied. See the License for the 17*1d2dbeb0SAndrew Rist * specific language governing permissions and limitations 18*1d2dbeb0SAndrew Rist * under the License. 19*1d2dbeb0SAndrew Rist * 20*1d2dbeb0SAndrew Rist *************************************************************/ 21*1d2dbeb0SAndrew Rist 22*1d2dbeb0SAndrew Rist 23cdf0e10cSrcweir #ifndef _LAYCACHE_HXX 24cdf0e10cSrcweir #define _LAYCACHE_HXX 25cdf0e10cSrcweir 26cdf0e10cSrcweir #include <tools/solar.h> 27cdf0e10cSrcweir 28cdf0e10cSrcweir class SwDoc; 29cdf0e10cSrcweir class SwLayCacheImpl; 30cdf0e10cSrcweir class SvStream; 31cdf0e10cSrcweir 32cdf0e10cSrcweir /************************************************************************* 33cdf0e10cSrcweir * class SwLayoutCache 34cdf0e10cSrcweir * 35cdf0e10cSrcweir * This class allows to save layout information in the file and it contains 36cdf0e10cSrcweir * this information after loading of a file. 37cdf0e10cSrcweir * Call Write(..) with a stream and the document to save and the page break 38cdf0e10cSrcweir * information of the document will be written. 39cdf0e10cSrcweir * Call Read(..) with a stream and the member pLayCacheImpl will 40cdf0e10cSrcweir * read the information from the stream and store it in an internal structur. 41cdf0e10cSrcweir * There's a simple locking mechanism at these classes, 42cdf0e10cSrcweir * if somebody reads the information, he increments the lock count by 1, 43cdf0e10cSrcweir * during the Read(..) function the lock count will set to $8000. 44cdf0e10cSrcweir * 45cdf0e10cSrcweir **************************************************************************/ 46cdf0e10cSrcweir 47cdf0e10cSrcweir class SwLayoutCache 48cdf0e10cSrcweir { 49cdf0e10cSrcweir SwLayCacheImpl *pImpl; 50cdf0e10cSrcweir sal_uInt16 nLockCount; 51cdf0e10cSrcweir public: SwLayoutCache()52cdf0e10cSrcweir SwLayoutCache() : pImpl( NULL ), nLockCount( 0 ) {} 53cdf0e10cSrcweir ~SwLayoutCache(); 54cdf0e10cSrcweir 55cdf0e10cSrcweir void Read( SvStream &rStream ); 56cdf0e10cSrcweir void Write( SvStream &rStream, const SwDoc& rDoc ); 57cdf0e10cSrcweir 58cdf0e10cSrcweir void ClearImpl(); IsLocked() const59cdf0e10cSrcweir sal_Bool IsLocked() const { return nLockCount > 0; } GetLockCount()60cdf0e10cSrcweir sal_uInt16& GetLockCount() { return nLockCount; } LockImpl()61cdf0e10cSrcweir SwLayCacheImpl *LockImpl() 62cdf0e10cSrcweir { if( nLockCount & 0x8000 ) return NULL; 63cdf0e10cSrcweir if ( pImpl ) 64cdf0e10cSrcweir ++nLockCount; 65cdf0e10cSrcweir return pImpl; } UnlockImpl()66cdf0e10cSrcweir void UnlockImpl() { --nLockCount; } 67cdf0e10cSrcweir 68cdf0e10cSrcweir #ifdef DBG_UTIL 69cdf0e10cSrcweir sal_Bool CompareLayout( const SwDoc& rDoc ) const; 70cdf0e10cSrcweir #endif 71cdf0e10cSrcweir }; 72cdf0e10cSrcweir 73cdf0e10cSrcweir #endif 74