MSPUBTypes.h
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /*
3  * This file is part of the libmspub project.
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 
10 #ifndef INCLUDED_MSPUBTYPES_H
11 #define INCLUDED_MSPUBTYPES_H
12 
13 #include <string>
14 #include <vector>
15 
16 #include <boost/optional.hpp>
17 
18 #include "ListInfo.h"
19 #include "MSPUBBlockID.h"
20 #include "MSPUBBlockType.h"
21 #include "MSPUBConstants.h"
22 #include "MSPUBContentChunkType.h"
23 
24 namespace libmspub
25 {
27 {
31 };
32 
34 {
38 };
39 
40 enum class Underline
41 {
42  None,
43  Single,
44  WordsOnly,
45  Double,
46  Dotted,
47  Thick,
48  Dash,
49  DotDash,
50  DotDotDash,
51  Wave,
52  ThickWave,
53  ThickDot,
54  ThickDash,
57  LongDash,
59  DoubleWave,
60 };
61 
63 {
64  LEFT = 0,
65  CENTER = 2,
66  RIGHT = 1,
67  JUSTIFY = 6
68 };
69 
71 {
72  unsigned short initial;
73  unsigned short type;
74  unsigned long contentsLength;
75  unsigned long contentsOffset;
76 };
77 
79 {
80  MSPUBBlockInfo() : id(0), type(0), startPosition(0), dataOffset(0), dataLength(0), data(0), stringData() { }
81  unsigned id;
82  unsigned type;
83  unsigned long startPosition;
84  unsigned long dataOffset;
85  unsigned long dataLength;
86  unsigned data;
87  std::vector<unsigned char> stringData;
88 };
89 
91 {
92  ContentChunkReference() : type(0), offset(0), end(0), seqNum(0), parentSeqNum(0) { }
93  ContentChunkReference(unsigned t, unsigned long o, unsigned long e, unsigned sn, unsigned psn) :
94  type(t), offset(o), end(e), seqNum(sn), parentSeqNum(psn) {}
95  unsigned type;
96  unsigned long offset;
97  unsigned long end; //offset of the last element plus one.
98  unsigned seqNum;
99  unsigned parentSeqNum;
100 };
101 
103 {
104  QuillChunkReference() : length(0), offset(0), id(0), name(), name2() { }
105  unsigned long length;
106  unsigned long offset;
107  unsigned short id;
108  std::string name;
109  std::string name2;
110 };
111 
113 {
115  underline(), italic(), bold(),
116  textSizeInPt(), colorIndex(-1), fontIndex(), superSubType(NO_SUPER_SUB)
117  , outline(false)
118  , shadow(false)
119  , smallCaps(false)
120  , allCaps(false)
121  , emboss(false)
122  , engrave(false)
123  , textScale()
124  , lcid()
125  {
126  }
127  boost::optional<Underline> underline;
128  bool italic;
129  bool bold;
130  boost::optional<double> textSizeInPt;
132  boost::optional<unsigned> fontIndex;
134  bool outline;
135  bool shadow;
136  bool smallCaps;
137  bool allCaps;
138  bool emboss;
139  bool engrave;
140  boost::optional<double> textScale;
141  boost::optional<unsigned> lcid;
142 };
143 
145 {
148 };
149 
151 {
153  double m_amount;
154  LineSpacingInfo() : m_type(LINE_SPACING_SP), m_amount(1)
155  {
156  }
157  LineSpacingInfo(LineSpacingType type, double amount) :
158  m_type(type), m_amount(amount)
159  {
160  }
161 };
162 
164 {
165  boost::optional<Alignment> m_align;
166  boost::optional<unsigned> m_defaultCharStyleIndex;
167  boost::optional<LineSpacingInfo> m_lineSpacing;
168  boost::optional<unsigned> m_spaceBeforeEmu;
169  boost::optional<unsigned> m_spaceAfterEmu;
170  boost::optional<int> m_firstLineIndentEmu;
171  boost::optional<unsigned> m_leftIndentEmu;
172  boost::optional<unsigned> m_rightIndentEmu;
173  boost::optional<ListInfo> m_listInfo;
174  std::vector<unsigned> m_tabStopsInEmu;
175  boost::optional<unsigned> m_dropCapLines;
176  boost::optional<unsigned> m_dropCapLetters;
178  m_align(), m_defaultCharStyleIndex(), m_lineSpacing(), m_spaceBeforeEmu(),
179  m_spaceAfterEmu(), m_firstLineIndentEmu(), m_leftIndentEmu(),
180  m_rightIndentEmu(), m_listInfo(), m_tabStopsInEmu(), m_dropCapLines(), m_dropCapLetters()
181  {
182  }
183 };
184 
185 struct TextSpan
186 {
187  TextSpan(const std::vector<unsigned char> &c, const CharacterStyle &s) : chars(c), style(s) { }
188  std::vector<unsigned char> chars;
190 };
191 
193 {
194  TextParagraph(const std::vector<TextSpan> &sp, const ParagraphStyle &st) : spans(sp), style(st) { }
195  std::vector<TextSpan> spans;
197 };
198 
199 struct Color
200 {
201  Color() : r(0), g(0), b(0) { }
202  Color(unsigned char red, unsigned char green, unsigned char blue) : r(red), g(green), b(blue) { }
203  unsigned char r, g, b;
204 };
205 
207 {
211 };
212 
214 {
224 };
225 
226 } // namespace libmspub
227 
228 #endif /* INCLUDED_MSPUBTYPES_H */
229 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */
Definition: MSPUBTypes.h:208
Definition: MSPUBTypes.h:67
unsigned short initial
Definition: MSPUBTypes.h:72
Definition: MSPUBTypes.h:29
unsigned long offset
Definition: MSPUBTypes.h:96
Definition: MSPUBTypes.h:192
TextParagraph(const std::vector< TextSpan > &sp, const ParagraphStyle &st)
Definition: MSPUBTypes.h:194
unsigned long contentsLength
Definition: MSPUBTypes.h:74
Definition: MSPUBTypes.h:199
int colorIndex
Definition: MSPUBTypes.h:131
bool emboss
Definition: MSPUBTypes.h:138
SuperSubType
Definition: MSPUBTypes.h:33
Definition: MSPUBTypes.h:185
double m_amount
Definition: MSPUBTypes.h:153
unsigned seqNum
Definition: MSPUBTypes.h:98
Definition: MSPUBTypes.h:217
ContentChunkReference(unsigned t, unsigned long o, unsigned long e, unsigned sn, unsigned psn)
Definition: MSPUBTypes.h:93
boost::optional< double > textScale
Definition: MSPUBTypes.h:140
Definition: MSPUBTypes.h:30
ParagraphStyle style
Definition: MSPUBTypes.h:196
Definition: MSPUBTypes.h:64
bool outline
Definition: MSPUBTypes.h:134
std::string name2
Definition: MSPUBTypes.h:109
Definition: MSPUBTypes.h:218
Definition: MSPUBTypes.h:146
bool bold
Definition: MSPUBTypes.h:129
Color(unsigned char red, unsigned char green, unsigned char blue)
Definition: MSPUBTypes.h:202
CharacterStyle style
Definition: MSPUBTypes.h:189
TextSpan(const std::vector< unsigned char > &c, const CharacterStyle &s)
Definition: MSPUBTypes.h:187
boost::optional< unsigned > m_defaultCharStyleIndex
Definition: MSPUBTypes.h:166
Definition: MSPUBTypes.h:78
LineSpacingType
Definition: MSPUBTypes.h:144
unsigned char r
Definition: MSPUBTypes.h:203
Definition: MSPUBTypes.h:221
MSPUBBlockInfo()
Definition: MSPUBTypes.h:80
unsigned long dataOffset
Definition: MSPUBTypes.h:84
boost::optional< unsigned > m_dropCapLines
Definition: MSPUBTypes.h:175
BorderPosition
Definition: MSPUBTypes.h:26
Definition: MSPUBTypes.h:37
std::string name
Definition: MSPUBTypes.h:108
Definition: MSPUBTypes.h:219
std::vector< unsigned char > chars
Definition: MSPUBTypes.h:188
Definition: MSPUBTypes.h:65
Definition: MSPUBTypes.h:28
Definition: MSPUBTypes.h:220
boost::optional< unsigned > lcid
Definition: MSPUBTypes.h:141
boost::optional< unsigned > m_spaceAfterEmu
Definition: MSPUBTypes.h:169
boost::optional< Alignment > m_align
Definition: MSPUBTypes.h:165
Definition: MSPUBTypes.h:150
unsigned short type
Definition: MSPUBTypes.h:73
Definition: MSPUBTypes.h:90
boost::optional< unsigned > m_rightIndentEmu
Definition: MSPUBTypes.h:172
std::vector< unsigned > m_tabStopsInEmu
Definition: MSPUBTypes.h:174
Definition: MSPUBTypes.h:36
Alignment
Definition: MSPUBTypes.h:62
unsigned parentSeqNum
Definition: MSPUBTypes.h:99
Definition: MSPUBTypes.h:215
boost::optional< ListInfo > m_listInfo
Definition: MSPUBTypes.h:173
Definition: MSPUBTypes.h:35
boost::optional< unsigned > m_spaceBeforeEmu
Definition: MSPUBTypes.h:168
PageType
Definition: MSPUBTypes.h:206
ImgType
Definition: MSPUBTypes.h:213
std::vector< unsigned char > stringData
Definition: MSPUBTypes.h:87
unsigned type
Definition: MSPUBTypes.h:95
QuillChunkReference()
Definition: MSPUBTypes.h:104
Definition: MSPUBTypes.h:223
boost::optional< int > m_firstLineIndentEmu
Definition: MSPUBTypes.h:170
bool allCaps
Definition: MSPUBTypes.h:137
unsigned long dataLength
Definition: MSPUBTypes.h:85
Definition: MSPUBTypes.h:70
boost::optional< double > textSizeInPt
Definition: MSPUBTypes.h:130
unsigned short id
Definition: MSPUBTypes.h:107
bool engrave
Definition: MSPUBTypes.h:139
bool shadow
Definition: MSPUBTypes.h:135
boost::optional< unsigned > fontIndex
Definition: MSPUBTypes.h:132
Definition: MSPUBTypes.h:216
Definition: MSPUBTypes.h:163
Definition: MSPUBTypes.h:66
Definition: Arrow.h:13
boost::optional< Underline > underline
Definition: MSPUBTypes.h:127
Definition: MSPUBTypes.h:147
unsigned long length
Definition: MSPUBTypes.h:105
Underline
Definition: MSPUBTypes.h:40
Definition: MSPUBTypes.h:102
unsigned id
Definition: MSPUBTypes.h:81
boost::optional< LineSpacingInfo > m_lineSpacing
Definition: MSPUBTypes.h:167
Definition: MSPUBTypes.h:112
boost::optional< unsigned > m_leftIndentEmu
Definition: MSPUBTypes.h:171
unsigned long contentsOffset
Definition: MSPUBTypes.h:75
std::vector< TextSpan > spans
Definition: MSPUBTypes.h:195
bool smallCaps
Definition: MSPUBTypes.h:136
bool italic
Definition: MSPUBTypes.h:128
Color()
Definition: MSPUBTypes.h:201
Definition: MSPUBTypes.h:210
unsigned long end
Definition: MSPUBTypes.h:97
LineSpacingInfo()
Definition: MSPUBTypes.h:154
unsigned type
Definition: MSPUBTypes.h:82
ContentChunkReference()
Definition: MSPUBTypes.h:92
unsigned data
Definition: MSPUBTypes.h:86
LineSpacingType m_type
Definition: MSPUBTypes.h:152
Definition: MSPUBTypes.h:209
Definition: MSPUBTypes.h:222
boost::optional< unsigned > m_dropCapLetters
Definition: MSPUBTypes.h:176
unsigned long startPosition
Definition: MSPUBTypes.h:83
CharacterStyle()
Definition: MSPUBTypes.h:114
SuperSubType superSubType
Definition: MSPUBTypes.h:133
unsigned long offset
Definition: MSPUBTypes.h:106
LineSpacingInfo(LineSpacingType type, double amount)
Definition: MSPUBTypes.h:157
ParagraphStyle()
Definition: MSPUBTypes.h:177

Generated for libmspub by doxygen 1.8.13