Coverage Report

Created: 2025-12-31 10:39

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/libreoffice/lotuswordpro/inc/lwpobjstrm.hxx
Line
Count
Source
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
#ifndef INCLUDED_LOTUSWORDPRO_INC_LWPOBJSTRM_HXX
63
#define INCLUDED_LOTUSWORDPRO_INC_LWPOBJSTRM_HXX
64
65
#include <config_lgpl.h>
66
67
#include <rtl/ustring.hxx>
68
#include <vector>
69
70
#include "lwpsvstream.hxx"
71
72
/**
73
 * @brief   stream class for LwpObject body data
74
 *          provide stream like interface to read object data
75
*/
76
class LwpObjectStream
77
{
78
public:
79
    LwpObjectStream(LwpSvStream* pStrm, bool isCompressed, sal_uInt16 size);
80
    ~LwpObjectStream();
81
82
private:
83
    sal_uInt8* m_pContentBuf; //The content buffer of the object
84
    sal_uInt8 m_SmallBuffer[100]; //To avoid frequent new
85
    std::vector<sal_uInt8> m_BigBuffer; //otherwise use this
86
    enum
87
    {
88
        IO_BUFFERSIZE = 0xFF00 //Refer to LWP, not sure if it is enough
89
    };
90
    sal_uInt16 m_nBufSize; //The total size of m_pContentBuf
91
    sal_uInt16 m_nReadPos; //The position of the quick read
92
    LwpSvStream* m_pStrm;
93
    bool m_bCompressed;
94
95
public:
96
    sal_uInt16 remainingSize() const;
97
    sal_uInt16 QuickRead(void* buf, sal_uInt16 len);
98
735k
    sal_uInt16 GetPos() const { return m_nReadPos; }
99
    void SeekRel(sal_uInt16 pos);
100
    void Seek(sal_uInt16 pos);
101
    void SkipExtra();
102
    sal_uInt16 CheckExtra();
103
104
    bool QuickReadBool();
105
    sal_uInt32 QuickReaduInt32(bool* pFailure = nullptr);
106
    sal_uInt16 QuickReaduInt16(bool* pFailure = nullptr);
107
    sal_uInt8 QuickReaduInt8(bool* pFailure = nullptr);
108
    sal_Int32 QuickReadInt32();
109
    sal_Int16 QuickReadInt16();
110
    double QuickReadDouble();
111
112
    OUString QuickReadStringPtr();
113
114
    void ReadComplete();
115
    LwpSvStream* GetStream();
116
117
private:
118
    void Read2Buffer();
119
    sal_uInt8* AllocBuffer(sal_uInt16 size);
120
    static sal_uInt16 DecompressBuffer(sal_uInt8* pDst, sal_uInt8* pSrc, sal_uInt16 Size);
121
    void ReleaseBuffer();
122
};
123
124
8.52k
inline LwpSvStream* LwpObjectStream::GetStream() { return m_pStrm; }
125
#endif
126
127
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */