Coverage Report

Created: 2026-10-28 06:34

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/libstaroffice/src/lib/STOFFGraphicEncoder.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
/* libstaroffice
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 <libstaroffice/libstaroffice.hxx>
44
45
#include "libstaroffice_internal.hxx"
46
47
#include "STOFFPropertyHandler.hxx"
48
49
#include "STOFFGraphicEncoder.hxx"
50
51
//! a name space used to define internal data of STOFFGraphicEncoder
52
namespace STOFFGraphicEncoderInternal
53
{
54
//! the state of a STOFFGraphicEncoder
55
struct State {
56
  //! constructor
57
3.51k
  State() : m_encoder()
58
3.51k
  {
59
3.51k
  }
60
  //! the encoder
61
  STOFFPropertyHandlerEncoder m_encoder;
62
};
63
64
}
65
66
STOFFGraphicEncoder::STOFFGraphicEncoder()
67
3.51k
  : librevenge::RVNGDrawingInterface()
68
3.51k
  , m_state(new STOFFGraphicEncoderInternal::State)
69
3.51k
{
70
3.51k
}
71
72
STOFFGraphicEncoder::~STOFFGraphicEncoder()
73
3.51k
{
74
3.51k
}
75
76
bool STOFFGraphicEncoder::getBinaryResult(STOFFEmbeddedObject &result)
77
3.49k
{
78
3.49k
  librevenge::RVNGBinaryData data;
79
3.49k
  if (!m_state->m_encoder.getData(data))
80
0
    return false;
81
3.49k
  result=STOFFEmbeddedObject(data, "image/stoff-odg");
82
3.49k
  return true;
83
3.49k
}
84
85
void STOFFGraphicEncoder::startDocument(const ::librevenge::RVNGPropertyList &list)
86
3.51k
{
87
3.51k
  m_state->m_encoder.insertElement("StartDocument", list);
88
3.51k
}
89
90
void STOFFGraphicEncoder::endDocument()
91
3.49k
{
92
3.49k
  m_state->m_encoder.insertElement("EndDocument");
93
3.49k
}
94
95
void STOFFGraphicEncoder::setDocumentMetaData(const librevenge::RVNGPropertyList &list)
96
3.51k
{
97
3.51k
  m_state->m_encoder.insertElement("SetDocumentMetaData", list);
98
3.51k
}
99
100
void STOFFGraphicEncoder::defineEmbeddedFont(const librevenge::RVNGPropertyList &list)
101
0
{
102
0
  m_state->m_encoder.insertElement("DefineEmbeddedFont", list);
103
0
}
104
105
void STOFFGraphicEncoder::startPage(const ::librevenge::RVNGPropertyList &list)
106
3.51k
{
107
3.51k
  m_state->m_encoder.insertElement("StartPage", list);
108
3.51k
}
109
110
void STOFFGraphicEncoder::endPage()
111
3.49k
{
112
3.49k
  m_state->m_encoder.insertElement("EndPage");
113
3.49k
}
114
115
void STOFFGraphicEncoder::startMasterPage(const ::librevenge::RVNGPropertyList &list)
116
0
{
117
0
  m_state->m_encoder.insertElement("StartMasterPage", list);
118
0
}
119
120
void STOFFGraphicEncoder::endMasterPage()
121
0
{
122
0
  m_state->m_encoder.insertElement("EndMasterPage");
123
0
}
124
125
void STOFFGraphicEncoder::setStyle(const ::librevenge::RVNGPropertyList &list)
126
42.6k
{
127
42.6k
  m_state->m_encoder.insertElement("SetStyle", list);
128
42.6k
}
129
130
void STOFFGraphicEncoder::startLayer(const ::librevenge::RVNGPropertyList &list)
131
0
{
132
0
  m_state->m_encoder.insertElement("StartLayer", list);
133
0
}
134
135
void STOFFGraphicEncoder::endLayer()
136
0
{
137
0
  m_state->m_encoder.insertElement("EndLayer");
138
0
}
139
140
void STOFFGraphicEncoder::startEmbeddedGraphics(const ::librevenge::RVNGPropertyList &list)
141
0
{
142
0
  m_state->m_encoder.insertElement("StartEmbeddedGraphics", list);
143
0
}
144
145
void STOFFGraphicEncoder::endEmbeddedGraphics()
146
0
{
147
0
  m_state->m_encoder.insertElement("StartEmbeddedGraphics");
148
0
}
149
150
void STOFFGraphicEncoder::openGroup(const librevenge::RVNGPropertyList &list)
151
11.9k
{
152
11.9k
  m_state->m_encoder.insertElement("OpenGroup", list);
153
11.9k
}
154
155
void STOFFGraphicEncoder::closeGroup()
156
11.9k
{
157
11.9k
  m_state->m_encoder.insertElement("CloseGroup");
158
11.9k
}
159
160
void STOFFGraphicEncoder::drawRectangle(const ::librevenge::RVNGPropertyList &list)
161
19.1k
{
162
19.1k
  m_state->m_encoder.insertElement("DrawRectangle", list);
163
19.1k
}
164
165
void STOFFGraphicEncoder::drawEllipse(const ::librevenge::RVNGPropertyList &list)
166
108
{
167
108
  m_state->m_encoder.insertElement("DrawEllipse", list);
168
108
}
169
170
void STOFFGraphicEncoder::drawPolygon(const ::librevenge::RVNGPropertyList &vertices)
171
80
{
172
80
  m_state->m_encoder.insertElement("DrawPolygon", vertices);
173
80
}
174
175
void STOFFGraphicEncoder::drawPolyline(const ::librevenge::RVNGPropertyList &vertices)
176
15.9k
{
177
15.9k
  m_state->m_encoder.insertElement("DrawPolyline", vertices);
178
15.9k
}
179
180
void STOFFGraphicEncoder::drawPath(const ::librevenge::RVNGPropertyList &path)
181
7.02k
{
182
7.02k
  m_state->m_encoder.insertElement("DrawPath", path);
183
7.02k
}
184
185
void STOFFGraphicEncoder::drawConnector(const ::librevenge::RVNGPropertyList &list)
186
12
{
187
12
  m_state->m_encoder.insertElement("DrawConnector", list);
188
12
}
189
190
void STOFFGraphicEncoder::drawGraphicObject(const ::librevenge::RVNGPropertyList &list)
191
57
{
192
57
  m_state->m_encoder.insertElement("DrawGraphicObject", list);
193
57
}
194
195
void STOFFGraphicEncoder::startTextObject(const ::librevenge::RVNGPropertyList &list)
196
7.82k
{
197
7.82k
  m_state->m_encoder.insertElement("StartTextObject", list);
198
7.82k
}
199
200
void STOFFGraphicEncoder::endTextObject()
201
7.82k
{
202
7.82k
  m_state->m_encoder.insertElement("EndTextObject");
203
7.82k
}
204
205
void STOFFGraphicEncoder::startTableObject(const librevenge::RVNGPropertyList &list)
206
0
{
207
0
  m_state->m_encoder.insertElement("StartTableObject", list);
208
0
}
209
210
void STOFFGraphicEncoder::endTableObject()
211
0
{
212
0
  m_state->m_encoder.insertElement("EndTableObject");
213
0
}
214
215
void STOFFGraphicEncoder::openTableRow(const librevenge::RVNGPropertyList &list)
216
0
{
217
0
  m_state->m_encoder.insertElement("OpenTableRow", list);
218
0
}
219
220
void STOFFGraphicEncoder::closeTableRow()
221
0
{
222
0
  m_state->m_encoder.insertElement("CloseTableRow");
223
0
}
224
225
void STOFFGraphicEncoder::openTableCell(const librevenge::RVNGPropertyList &list)
226
0
{
227
0
  m_state->m_encoder.insertElement("OpenTableCell", list);
228
0
}
229
230
void STOFFGraphicEncoder::closeTableCell()
231
0
{
232
0
  m_state->m_encoder.insertElement("CloseTableCell");
233
0
}
234
235
void STOFFGraphicEncoder::insertCoveredTableCell(const librevenge::RVNGPropertyList &list)
236
0
{
237
0
  m_state->m_encoder.insertElement("InsertCoveredTableCell", list);
238
0
}
239
240
void STOFFGraphicEncoder::insertTab()
241
27
{
242
27
  m_state->m_encoder.insertElement("InsertTab");
243
27
}
244
245
void STOFFGraphicEncoder::insertSpace()
246
55
{
247
55
  m_state->m_encoder.insertElement("InsertSpace");
248
55
}
249
250
void STOFFGraphicEncoder::insertText(const librevenge::RVNGString &text)
251
7.51k
{
252
7.51k
  m_state->m_encoder.characters(text);
253
7.51k
}
254
255
void STOFFGraphicEncoder::insertLineBreak()
256
6
{
257
6
  m_state->m_encoder.insertElement("InsertLineBreak");
258
6
}
259
260
void STOFFGraphicEncoder::insertField(const librevenge::RVNGPropertyList &list)
261
0
{
262
0
  m_state->m_encoder.insertElement("InsertField", list);
263
0
}
264
265
void STOFFGraphicEncoder::openLink(const librevenge::RVNGPropertyList &list)
266
0
{
267
0
  m_state->m_encoder.insertElement("OpenLink", list);
268
0
}
269
270
void STOFFGraphicEncoder::closeLink()
271
0
{
272
0
  m_state->m_encoder.insertElement("CloseLink");
273
0
}
274
275
void STOFFGraphicEncoder::openOrderedListLevel(const librevenge::RVNGPropertyList &list)
276
0
{
277
0
  m_state->m_encoder.insertElement("OpenOrderedListLevel", list);
278
0
}
279
280
void STOFFGraphicEncoder::openUnorderedListLevel(const librevenge::RVNGPropertyList &list)
281
921
{
282
921
  m_state->m_encoder.insertElement("OpenUnorderedListLevel", list);
283
921
}
284
285
void STOFFGraphicEncoder::closeOrderedListLevel()
286
0
{
287
0
  m_state->m_encoder.insertElement("CloseOrderedListLevel");
288
0
}
289
290
void STOFFGraphicEncoder::closeUnorderedListLevel()
291
921
{
292
921
  m_state->m_encoder.insertElement("CloseOrderedListLevel");
293
921
}
294
295
void STOFFGraphicEncoder::openListElement(const librevenge::RVNGPropertyList &list)
296
113
{
297
113
  m_state->m_encoder.insertElement("OpenListElement", list);
298
113
}
299
300
void STOFFGraphicEncoder::closeListElement()
301
113
{
302
113
  m_state->m_encoder.insertElement("CloseListElement");
303
113
}
304
305
void STOFFGraphicEncoder::defineParagraphStyle(const librevenge::RVNGPropertyList &list)
306
0
{
307
0
  m_state->m_encoder.insertElement("DefineParagraphStyle", list);
308
0
}
309
310
void STOFFGraphicEncoder::openParagraph(const librevenge::RVNGPropertyList &list)
311
10.1k
{
312
10.1k
  m_state->m_encoder.insertElement("OpenParagraph", list);
313
10.1k
}
314
315
void STOFFGraphicEncoder::closeParagraph()
316
10.1k
{
317
10.1k
  m_state->m_encoder.insertElement("CloseParagraph");
318
10.1k
}
319
320
void STOFFGraphicEncoder::defineCharacterStyle(const librevenge::RVNGPropertyList &list)
321
0
{
322
0
  m_state->m_encoder.insertElement("DefineCharacterStyle", list);
323
0
}
324
325
void STOFFGraphicEncoder::openSpan(const librevenge::RVNGPropertyList &list)
326
10.2k
{
327
10.2k
  m_state->m_encoder.insertElement("OpenSpan", list);
328
10.2k
}
329
330
void STOFFGraphicEncoder::closeSpan()
331
10.2k
{
332
10.2k
  m_state->m_encoder.insertElement("CloseSpan");
333
10.2k
}
334
335
// vim: set filetype=cpp tabstop=2 shiftwidth=2 cindent autoindent smartindent noexpandtab: