Line data Source code
1 : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : /*************************************************************************
3 : *
4 : * The Contents of this file are made available subject to the terms of
5 : * either of the following licenses
6 : *
7 : * - GNU Lesser General Public License Version 2.1
8 : * - Sun Industry Standards Source License Version 1.1
9 : *
10 : * Sun Microsystems Inc., October, 2000
11 : *
12 : * GNU Lesser General Public License Version 2.1
13 : * =============================================
14 : * Copyright 2000 by Sun Microsystems, Inc.
15 : * 901 San Antonio Road, Palo Alto, CA 94303, USA
16 : *
17 : * This library is free software; you can redistribute it and/or
18 : * modify it under the terms of the GNU Lesser General Public
19 : * License version 2.1, as published by the Free Software Foundation.
20 : *
21 : * This library is distributed in the hope that it will be useful,
22 : * but WITHOUT ANY WARRANTY; without even the implied warranty of
23 : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
24 : * Lesser General Public License for more details.
25 : *
26 : * You should have received a copy of the GNU Lesser General Public
27 : * License along with this library; if not, write to the Free Software
28 : * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
29 : * MA 02111-1307 USA
30 : *
31 : *
32 : * Sun Industry Standards Source License Version 1.1
33 : * =================================================
34 : * The contents of this file are subject to the Sun Industry Standards
35 : * Source License Version 1.1 (the "License"); You may not use this file
36 : * except in compliance with the License. You may obtain a copy of the
37 : * License at http://www.openoffice.org/license.html.
38 : *
39 : * Software provided under this License is provided on an "AS IS" basis,
40 : * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
41 : * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
42 : * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
43 : * See the License for the specific provisions governing your rights and
44 : * obligations concerning the Software.
45 : *
46 : * The Initial Developer of the Original Code is: IBM Corporation
47 : *
48 : * Copyright: 2008 by IBM Corporation
49 : *
50 : * All Rights Reserved.
51 : *
52 : * Contributor(s): _______________________________________
53 : *
54 : *
55 : ************************************************************************/
56 : /*************************************************************************
57 : * @file
58 : * object stream header file
59 : * stream for one LwpObject body data
60 : ************************************************************************/
61 : /*************************************************************************
62 : * Change History
63 : Jan 2005 Created
64 : ************************************************************************/
65 :
66 : #ifndef INCLUDED_LOTUSWORDPRO_SOURCE_FILTER_LWPOBJSTRM_HXX
67 : #define INCLUDED_LOTUSWORDPRO_SOURCE_FILTER_LWPOBJSTRM_HXX
68 :
69 : #include "lwpheader.hxx"
70 : #include "lwpsvstream.hxx"
71 : /**
72 : * @brief stream class for LwpObject body data
73 : * provide stream like interface to read object data
74 : */
75 : class LwpObjectStream
76 : {
77 : public:
78 : LwpObjectStream(LwpSvStream *pStrm, bool isCompressed, sal_uInt16 size);
79 : ~LwpObjectStream();
80 : private:
81 : sal_uInt8* m_pContentBuf; //The content buffer of the object
82 : sal_uInt8 m_SmallBuffer[100]; //To avoid frequent new
83 : enum
84 : {
85 : IO_BUFFERSIZE = 0xFF00 //Refer to LWP, not sure if it is enough
86 : };
87 : sal_uInt16 m_nBufSize; //The total size of m_pContentBuf
88 : sal_uInt16 m_nReadPos; //The position of the quick read
89 : LwpSvStream* m_pStrm;
90 : bool m_bCompressed;
91 : public:
92 : sal_uInt16 QuickRead(void* buf, sal_uInt16 len);
93 903 : sal_uInt16 GetPos() { return m_nReadPos; }
94 : void SeekRel(sal_uInt16 pos);
95 : bool Seek( sal_uInt16 pos);
96 : void SkipExtra();
97 : sal_uInt16 CheckExtra();
98 :
99 : bool QuickReadBool(bool *pFailure=NULL);
100 : sal_uInt32 QuickReaduInt32(bool *pFailure=NULL);
101 : sal_uInt16 QuickReaduInt16(bool *pFailure=NULL);
102 : sal_uInt8 QuickReaduInt8(bool *pFailure=NULL);
103 : sal_Int32 QuickReadInt32(bool *pFailure=NULL);
104 : sal_Int16 QuickReadInt16(bool *pFailure=NULL);
105 : double QuickReadDouble(bool *pFailure=NULL);
106 :
107 : OUString QuickReadStringPtr();
108 : void QuickReadStringWithMax(unsigned char * pString, sal_uInt16 MaxLen);
109 :
110 : public:
111 : void ReadComplete();
112 : LwpSvStream *GetStream();
113 : private:
114 : void ReadStream();
115 : void Read2Buffer();
116 : sal_uInt8* AllocBuffer(sal_uInt16 size);
117 : static sal_uInt16 DecompressBuffer(sal_uInt8* pDst, sal_uInt8* pSrc, sal_uInt16 Size);
118 : void ReleaseBuffer();
119 : };
120 :
121 0 : inline LwpSvStream *LwpObjectStream::GetStream()
122 : {
123 0 : return m_pStrm;
124 : }
125 : #endif
126 :
127 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|