Coverage Report

Created: 2026-09-06 07:18

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/libmwaw/src/lib/MWAWGraphicEncoder.cxx
Line
Count
Source
1
/* -*- Mode: C++; c-default-style: "k&r"; indent-tabs-mode: nil; tab-width: 2; c-basic-offset: 2 -*- */
2
3
/* libmwaw
4
* Version: MPL 2.0 / LGPLv2+
5
*
6
* The contents of this file are subject to the Mozilla Public License Version
7
* 2.0 (the "License"); you may not use this file except in compliance with
8
* the License or as specified alternatively below. You may obtain a copy of
9
* the License at http://www.mozilla.org/MPL/
10
*
11
* Software distributed under the License is distributed on an "AS IS" basis,
12
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
13
* for the specific language governing rights and limitations under the
14
* License.
15
*
16
* Major Contributor(s):
17
* Copyright (C) 2006 Ariya Hidayat (ariya@kde.org)
18
* Copyright (C) 2004 Marc Oude Kotte (marc@solcon.nl)
19
* Copyright (C) 2002 William Lachance (wrlach@gmail.com)
20
* Copyright (C) 2002,2004 Marc Maurer (uwog@uwog.net)
21
* Copyright (C) 2004-2006 Fridrich Strba (fridrich.strba@bluewin.ch)
22
* Copyright (C) 2006, 2007 Andrew Ziem
23
* Copyright (C) 2011, 2012 Alonso Laurent (alonso@loria.fr)
24
*
25
*
26
* All Rights Reserved.
27
*
28
* For minor contributions see the git repository.
29
*
30
* Alternatively, the contents of this file may be used under the terms of
31
* the GNU Lesser General Public License Version 2 or later (the "LGPLv2+"),
32
* in which case the provisions of the LGPLv2+ are applicable
33
* instead of those above.
34
*/
35
36
#include <string.h>
37
38
#include <map>
39
#include <sstream>
40
#include <string>
41
42
#include <librevenge/librevenge.h>
43
#include <libmwaw/libmwaw.hxx>
44
45
#include "libmwaw_internal.hxx"
46
47
#include "MWAWPropertyHandler.hxx"
48
49
#include "MWAWGraphicEncoder.hxx"
50
51
//! a name space used to define internal data of MWAWGraphicEncoder
52
namespace MWAWGraphicEncoderInternal
53
{
54
//! the state of a MWAWGraphicEncoder
55
struct State {
56
  //! constructor
57
  State()
58
6.89M
    : m_encoder()
59
6.89M
  {
60
6.89M
  }
61
  //! the encoder
62
  MWAWPropertyHandlerEncoder m_encoder;
63
};
64
65
}
66
67
MWAWGraphicEncoder::MWAWGraphicEncoder()
68
6.89M
  : librevenge::RVNGDrawingInterface()
69
6.89M
  , m_state(new MWAWGraphicEncoderInternal::State)
70
6.89M
{
71
6.89M
}
72
73
MWAWGraphicEncoder::~MWAWGraphicEncoder()
74
6.89M
{
75
6.89M
}
76
77
bool MWAWGraphicEncoder::getBinaryResult(MWAWEmbeddedObject &result)
78
6.89M
{
79
6.89M
  librevenge::RVNGBinaryData data;
80
6.89M
  if (!m_state->m_encoder.getData(data))
81
0
    return false;
82
6.89M
  result=MWAWEmbeddedObject(data, "image/mwaw-odg");
83
6.89M
  return true;
84
6.89M
}
85
86
void MWAWGraphicEncoder::startDocument(const librevenge::RVNGPropertyList &list)
87
6.89M
{
88
6.89M
  m_state->m_encoder.insertElement("StartDocument", list);
89
6.89M
}
90
91
void MWAWGraphicEncoder::endDocument()
92
6.89M
{
93
6.89M
  m_state->m_encoder.insertElement("EndDocument");
94
6.89M
}
95
96
void MWAWGraphicEncoder::setDocumentMetaData(const librevenge::RVNGPropertyList &list)
97
6.89M
{
98
6.89M
  m_state->m_encoder.insertElement("SetDocumentMetaData", list);
99
6.89M
}
100
101
void MWAWGraphicEncoder::defineEmbeddedFont(const librevenge::RVNGPropertyList &list)
102
0
{
103
0
  m_state->m_encoder.insertElement("DefineEmbeddedFont", list);
104
0
}
105
106
void MWAWGraphicEncoder::startPage(const librevenge::RVNGPropertyList &list)
107
6.89M
{
108
6.89M
  m_state->m_encoder.insertElement("StartPage", list);
109
6.89M
}
110
111
void MWAWGraphicEncoder::endPage()
112
6.89M
{
113
6.89M
  m_state->m_encoder.insertElement("EndPage");
114
6.89M
}
115
116
void MWAWGraphicEncoder::startMasterPage(const librevenge::RVNGPropertyList &list)
117
0
{
118
0
  m_state->m_encoder.insertElement("StartMasterPage", list);
119
0
}
120
121
void MWAWGraphicEncoder::endMasterPage()
122
0
{
123
0
  m_state->m_encoder.insertElement("EndMasterPage");
124
0
}
125
126
void MWAWGraphicEncoder::setStyle(const librevenge::RVNGPropertyList &list)
127
2.64M
{
128
2.64M
  m_state->m_encoder.insertElement("SetStyle", list);
129
2.64M
}
130
131
void MWAWGraphicEncoder::startLayer(const librevenge::RVNGPropertyList &list)
132
0
{
133
0
  m_state->m_encoder.insertElement("StartLayer", list);
134
0
}
135
136
void MWAWGraphicEncoder::endLayer()
137
0
{
138
0
  m_state->m_encoder.insertElement("EndLayer");
139
0
}
140
141
void MWAWGraphicEncoder::startEmbeddedGraphics(const librevenge::RVNGPropertyList &list)
142
0
{
143
0
  m_state->m_encoder.insertElement("StartEmbeddedGraphics", list);
144
0
}
145
146
void MWAWGraphicEncoder::endEmbeddedGraphics()
147
0
{
148
0
  m_state->m_encoder.insertElement("StartEmbeddedGraphics");
149
0
}
150
151
void MWAWGraphicEncoder::openGroup(const librevenge::RVNGPropertyList &list)
152
0
{
153
0
  m_state->m_encoder.insertElement("OpenGroup", list);
154
0
}
155
156
void MWAWGraphicEncoder::closeGroup()
157
0
{
158
0
  m_state->m_encoder.insertElement("CloseGroup");
159
0
}
160
161
void MWAWGraphicEncoder::drawRectangle(const librevenge::RVNGPropertyList &list)
162
614k
{
163
614k
  m_state->m_encoder.insertElement("DrawRectangle", list);
164
614k
}
165
166
void MWAWGraphicEncoder::drawEllipse(const librevenge::RVNGPropertyList &list)
167
152k
{
168
152k
  m_state->m_encoder.insertElement("DrawEllipse", list);
169
152k
}
170
171
void MWAWGraphicEncoder::drawPolygon(const librevenge::RVNGPropertyList &vertices)
172
10.7k
{
173
10.7k
  m_state->m_encoder.insertElement("DrawPolygon", vertices);
174
10.7k
}
175
176
void MWAWGraphicEncoder::drawPolyline(const librevenge::RVNGPropertyList &vertices)
177
457k
{
178
457k
  m_state->m_encoder.insertElement("DrawPolyline", vertices);
179
457k
}
180
181
void MWAWGraphicEncoder::drawPath(const librevenge::RVNGPropertyList &path)
182
1.26M
{
183
1.26M
  m_state->m_encoder.insertElement("DrawPath", path);
184
1.26M
}
185
186
void MWAWGraphicEncoder::drawConnector(const librevenge::RVNGPropertyList &list)
187
0
{
188
0
  m_state->m_encoder.insertElement("DrawConnector", list);
189
0
}
190
191
void MWAWGraphicEncoder::drawGraphicObject(const librevenge::RVNGPropertyList &list)
192
38.6k
{
193
38.6k
  m_state->m_encoder.insertElement("DrawGraphicObject", list);
194
38.6k
}
195
196
void MWAWGraphicEncoder::startTextObject(const librevenge::RVNGPropertyList &list)
197
920k
{
198
920k
  m_state->m_encoder.insertElement("StartTextObject", list);
199
920k
}
200
201
void MWAWGraphicEncoder::endTextObject()
202
920k
{
203
920k
  m_state->m_encoder.insertElement("EndTextObject");
204
920k
}
205
206
void MWAWGraphicEncoder::startTableObject(const librevenge::RVNGPropertyList &list)
207
0
{
208
0
  m_state->m_encoder.insertElement("StartTableObject", list);
209
0
}
210
211
void MWAWGraphicEncoder::endTableObject()
212
0
{
213
0
  m_state->m_encoder.insertElement("EndTableObject");
214
0
}
215
216
void MWAWGraphicEncoder::openTableRow(const librevenge::RVNGPropertyList &list)
217
0
{
218
0
  m_state->m_encoder.insertElement("OpenTableRow", list);
219
0
}
220
221
void MWAWGraphicEncoder::closeTableRow()
222
0
{
223
0
  m_state->m_encoder.insertElement("CloseTableRow");
224
0
}
225
226
void MWAWGraphicEncoder::openTableCell(const librevenge::RVNGPropertyList &list)
227
0
{
228
0
  m_state->m_encoder.insertElement("OpenTableCell", list);
229
0
}
230
231
void MWAWGraphicEncoder::closeTableCell()
232
0
{
233
0
  m_state->m_encoder.insertElement("CloseTableCell");
234
0
}
235
236
void MWAWGraphicEncoder::insertCoveredTableCell(const librevenge::RVNGPropertyList &list)
237
0
{
238
0
  m_state->m_encoder.insertElement("InsertCoveredTableCell", list);
239
0
}
240
241
void MWAWGraphicEncoder::insertTab()
242
414k
{
243
414k
  m_state->m_encoder.insertElement("InsertTab");
244
414k
}
245
246
void MWAWGraphicEncoder::insertSpace()
247
150k
{
248
150k
  m_state->m_encoder.insertElement("InsertSpace");
249
150k
}
250
251
void MWAWGraphicEncoder::insertText(const librevenge::RVNGString &text)
252
1.95M
{
253
1.95M
  m_state->m_encoder.characters(text);
254
1.95M
}
255
256
void MWAWGraphicEncoder::insertLineBreak()
257
1.12M
{
258
1.12M
  m_state->m_encoder.insertElement("InsertLineBreak");
259
1.12M
}
260
261
void MWAWGraphicEncoder::insertField(const librevenge::RVNGPropertyList &list)
262
1.59M
{
263
1.59M
  m_state->m_encoder.insertElement("InsertField", list);
264
1.59M
}
265
266
void MWAWGraphicEncoder::openLink(const librevenge::RVNGPropertyList &list)
267
0
{
268
0
  m_state->m_encoder.insertElement("OpenLink", list);
269
0
}
270
271
void MWAWGraphicEncoder::closeLink()
272
0
{
273
0
  m_state->m_encoder.insertElement("CloseLink");
274
0
}
275
276
void MWAWGraphicEncoder::openOrderedListLevel(const librevenge::RVNGPropertyList &list)
277
440
{
278
440
  m_state->m_encoder.insertElement("OpenOrderedListLevel", list);
279
440
}
280
281
void MWAWGraphicEncoder::openUnorderedListLevel(const librevenge::RVNGPropertyList &list)
282
814
{
283
814
  m_state->m_encoder.insertElement("OpenUnorderedListLevel", list);
284
814
}
285
286
void MWAWGraphicEncoder::closeOrderedListLevel()
287
440
{
288
440
  m_state->m_encoder.insertElement("CloseOrderedListLevel");
289
440
}
290
291
void MWAWGraphicEncoder::closeUnorderedListLevel()
292
814
{
293
814
  m_state->m_encoder.insertElement("CloseOrderedListLevel");
294
814
}
295
296
void MWAWGraphicEncoder::openListElement(const librevenge::RVNGPropertyList &list)
297
1.20k
{
298
1.20k
  m_state->m_encoder.insertElement("OpenListElement", list);
299
1.20k
}
300
301
void MWAWGraphicEncoder::closeListElement()
302
1.20k
{
303
1.20k
  m_state->m_encoder.insertElement("CloseListElement");
304
1.20k
}
305
306
void MWAWGraphicEncoder::defineParagraphStyle(const librevenge::RVNGPropertyList &list)
307
0
{
308
0
  m_state->m_encoder.insertElement("DefineParagraphStyle", list);
309
0
}
310
311
void MWAWGraphicEncoder::openParagraph(const librevenge::RVNGPropertyList &list)
312
980k
{
313
980k
  m_state->m_encoder.insertElement("OpenParagraph", list);
314
980k
}
315
316
void MWAWGraphicEncoder::closeParagraph()
317
980k
{
318
980k
  m_state->m_encoder.insertElement("CloseParagraph");
319
980k
}
320
321
void MWAWGraphicEncoder::defineCharacterStyle(const librevenge::RVNGPropertyList &list)
322
0
{
323
0
  m_state->m_encoder.insertElement("DefineCharacterStyle", list);
324
0
}
325
326
void MWAWGraphicEncoder::openSpan(const librevenge::RVNGPropertyList &list)
327
1.03M
{
328
1.03M
  m_state->m_encoder.insertElement("OpenSpan", list);
329
1.03M
}
330
331
void MWAWGraphicEncoder::closeSpan()
332
1.03M
{
333
1.03M
  m_state->m_encoder.insertElement("CloseSpan");
334
1.03M
}
335
336
// vim: set filetype=cpp tabstop=2 shiftwidth=2 cindent autoindent smartindent noexpandtab: