Main Page
Namespaces
Classes
Files
File List
File Members
WPS8Struct.h
Go to the documentation of this file.
1
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
2
/* libwps
3
* Version: MPL 2.0 / LGPLv2.1+
4
*
5
* This Source Code Form is subject to the terms of the Mozilla Public
6
* License, v. 2.0. If a copy of the MPL was not distributed with this
7
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
8
*
9
* Major Contributor(s):
10
* Copyright (C) 2009, 2011 Alonso Laurent (alonso@loria.fr)
11
* Copyright (C) 2006, 2007 Andrew Ziem
12
* Copyright (C) 2004-2006 Fridrich Strba (fridrich.strba@bluewin.ch)
13
* Copyright (C) 2004 Marc Maurer (uwog@uwog.net)
14
* Copyright (C) 2003-2005 William Lachance (william.lachance@sympatico.ca)
15
*
16
* For minor contributions see the git repository.
17
*
18
* Alternatively, the contents of this file may be used under the terms
19
* of the GNU Lesser General Public License Version 2.1 or later
20
* (LGPLv2.1+), in which case the provisions of the LGPLv2.1+ are
21
* applicable instead of those above.
22
*
23
* For further information visit http://libwps.sourceforge.net
24
*/
25
26
#ifndef WPS8_STRUCT_H
27
#define WPS8_STRUCT_H
28
29
#include <string>
30
#include <vector>
31
32
#include "
libwps_internal.h
"
33
35
// Internal structure
37
39
namespace
WPS8Struct
40
{
41
struct
FileData;
43
bool
readData
(
WPXInputStreamPtr
input,
long
endPos, FileData &dt, std::string &error);
45
bool
readBlockData
(
WPXInputStreamPtr
input,
long
endPos, FileData &dt, std::string &error);
47
std::ostream &
operator<<
(std::ostream &o, FileData
const
&dt);
48
63
struct
FileData
64
{
66
FileData
() :
m_value
(0),
m_text
(
""
),
m_recursData
(),
m_type
(-1),
m_id
(-1),
m_beginOffset
(-1),
m_endOffset
(-1),
m_input
() {}
68
bool
isBad
()
const
69
{
70
return
m_type
==-1;
71
}
73
bool
hasStr
()
const
74
{
75
return
m_text
.size() != 0;
76
}
78
bool
isNumber
()
const
79
{
80
return
!
hasStr
() && (
m_type
& 0x30) != 0;
81
}
83
uint32_t
getRGBColor
()
const
84
{
85
uint32_t col = (uint32_t) (
m_value
&0xFFFFFF);
86
return
(((col>>16)&0xFF) |(col&0xFF00)|((col&0xFF)<<16));
87
}
89
WPSBorder::Style
getBorderStyle
(std::string &mess)
const
;
90
92
bool
isBool
()
const
93
{
94
return
!
hasStr
() && (
m_type
& 0xb0)==0;
95
}
97
bool
isTrue
()
const
98
{
99
return
m_type
== 0xa;
100
}
102
bool
isFalse
()
const
103
{
104
return
m_type
== 0x2;
105
}
107
bool
isArray
()
const
108
{
109
return
!
hasStr
() && (
m_type
& 0x80)==0x80;
110
}
112
bool
isRead
()
const
113
{
114
return
(
m_type
& 0x80) !=0x80 || !(
m_input
.get() &&
m_beginOffset
> 0 &&
m_endOffset
>=
m_beginOffset
+2);
115
}
116
118
int
type
()
const
119
{
120
if
(
m_type
== 0xa)
return
2;
121
return
m_type
;
122
}
124
int
id
()
const
125
{
126
return
m_id
;
127
}
128
130
bool
readArrayBlock
()
const
;
131
133
long
m_value
;
135
std::string
m_text
;
137
std::vector<FileData>
m_recursData
;
138
140
long
begin
()
const
141
{
142
return
m_beginOffset
;
143
}
145
long
end
()
const
146
{
147
return
m_endOffset
;
148
}
149
protected
:
151
static
std::string
createErrorString
(
WPXInputStreamPtr
input,
long
endPos);
152
154
int
m_type
;
156
int
m_id
;
157
158
long
m_beginOffset
,
m_endOffset
;
160
WPXInputStreamPtr
m_input
;
161
163
friend
std::ostream &
operator<<
(std::ostream &o,
FileData
const
&dt);
165
friend
bool
readData
(
WPXInputStreamPtr
input,
long
endPos,
FileData
&dt, std::string &error);
167
friend
bool
readBlockData
(
WPXInputStreamPtr
input,
long
endPos,
FileData
&dt, std::string &error);
168
};
169
}
170
171
#endif
172
/* vim:set shiftwidth=4 softtabstop=4 noexpandtab: */
Generated on Tue Sep 24 2013 15:50:46 for libwps by
doxygen
1.8.3.1