VSDContentCollector.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 libvisio 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 VSDCONTENTCOLLECTOR_H
11 #define VSDCONTENTCOLLECTOR_H
12 
13 #include <locale.h>
14 #include <sstream>
15 #include <string>
16 #include <cmath>
17 #include <map>
18 #include <memory>
19 #include <list>
20 #include <vector>
21 #include "libvisio_utils.h"
22 #include "VSDCollector.h"
23 #include "VSDParser.h"
24 #include "VSDOutputElementList.h"
25 #include "VSDStyles.h"
26 #include "VSDPages.h"
27 
28 namespace libvisio
29 {
30 
32 {
33 public:
35  librevenge::RVNGDrawingInterface *painter,
36  std::vector<std::map<unsigned, XForm> > &groupXFormsSequence,
37  std::vector<std::map<unsigned, unsigned> > &groupMembershipsSequence,
38  std::vector<std::list<unsigned> > &documentPageShapeOrders,
39  VSDStyles &styles, VSDStencils &stencils, const std::optional<unsigned> &varColInd,
40  const std::optional<unsigned> &varStyInd
41  );
42 
43  void collectDocumentTheme(const VSDXTheme *theme) override;
44  void collectEllipticalArcTo(unsigned id, unsigned level, double x3, double y3, double x2, double y2, double angle, double ecc) override;
45  void collectForeignData(unsigned level, const librevenge::RVNGBinaryData &binaryData) override;
46  void collectOLEList(unsigned id, unsigned level) override;
47  void collectOLEData(unsigned id, unsigned level, const librevenge::RVNGBinaryData &oleData) override;
48  void collectEllipse(unsigned id, unsigned level, double cx, double cy, double xleft, double yleft, double xtop, double ytop) override;
49  void collectLine(unsigned level, const std::optional<double> &strokeWidth, const std::optional<Colour> &c, const std::optional<unsigned char> &linePattern,
50  const std::optional<unsigned char> &startMarker, const std::optional<unsigned char> &endMarker,
51  const std::optional<unsigned char> &lineCap, const std::optional<double> &rounding,
52  const std::optional<long> &qsLineColour, const std::optional<long> &qsLineMatrix) override;
53  void collectFillAndShadow(unsigned level, const std::optional<Colour> &colourFG, const std::optional<Colour> &colourBG,
54  const std::optional<unsigned char> &fillPattern, const std::optional<double> &fillFGTransparency,
55  const std::optional<double> &fillBGTransparency, const std::optional<unsigned char> &shadowPattern,
56  const std::optional<Colour> &shfgc, const std::optional<double> &shadowOffsetX, const std::optional<double> &shadowOffsetY,
57  const std::optional<long> &qsFc, const std::optional<long> &qsSc, const std::optional<long> &qsLm) override;
58  void collectFillAndShadow(unsigned level, const std::optional<Colour> &colourFG, const std::optional<Colour> &colourBG,
59  const std::optional<unsigned char> &fillPattern, const std::optional<double> &fillFGTransparency,
60  const std::optional<double> &fillBGTransparency, const std::optional<unsigned char> &shadowPattern,
61  const std::optional<Colour> &shfgc) override;
62  void collectGeometry(unsigned id, unsigned level, bool noFill, bool noLine, bool noShow) override;
63  void collectMoveTo(unsigned id, unsigned level, double x, double y) override;
64  void collectLineTo(unsigned id, unsigned level, double x, double y) override;
65  void collectArcTo(unsigned id, unsigned level, double x2, double y2, double bow) override;
66  void collectNURBSTo(unsigned id, unsigned level, double x2, double y2, unsigned char xType, unsigned char yType, unsigned degree,
67  const std::vector<std::pair<double, double> > &ctrlPnts, const std::vector<double> &kntVec, const std::vector<double> &weights) override;
68  void collectNURBSTo(unsigned id, unsigned level, double x2, double y2, double knot, double knotPrev, double weight, double weightPrev, unsigned dataID) override;
69  void collectNURBSTo(unsigned id, unsigned level, double x2, double y2, double knot, double knotPrev, double weight, double weightPrev, const NURBSData &data) override;
70  void collectPolylineTo(unsigned id, unsigned level, double x, double y, unsigned char xType, unsigned char yType,
71  const std::vector<std::pair<double, double> > &points) override;
72  void collectPolylineTo(unsigned id, unsigned level, double x, double y, unsigned dataID) override;
73  void collectPolylineTo(unsigned id, unsigned level, double x, double y, const PolylineData &data) override;
74  void collectShapeData(unsigned id, unsigned level, unsigned char xType, unsigned char yType, unsigned degree, double lastKnot,
75  std::vector<std::pair<double, double> > controlPoints, std::vector<double> knotVector, std::vector<double> weights) override;
76  void collectShapeData(unsigned id, unsigned level, unsigned char xType, unsigned char yType, std::vector<std::pair<double, double> > points) override;
77  void collectXFormData(unsigned level, const XForm &xform) override;
78  void collectTxtXForm(unsigned level, const XForm &txtxform) override;
79  void collectShapesOrder(unsigned id, unsigned level, const std::vector<unsigned> &shapeIds) override;
80  void collectForeignDataType(unsigned level, unsigned foreignType, unsigned foreignFormat, double offsetX, double offsetY, double width, double height) override;
81  void collectPageProps(unsigned id, unsigned level, double pageWidth, double pageHeight, double shadowOffsetX, double shadowOffsetY, double scale,
82  unsigned char drawingScaleUnit, const std::optional<unsigned> variationColorIndex, const std::optional<unsigned> variationStyleIndex) override;
83  void collectPage(unsigned id, unsigned level, unsigned backgroundPageID, bool isBackgroundPage, const VSDName &pageName) override;
84  void collectShape(unsigned id, unsigned level, unsigned parent, unsigned masterPage, unsigned masterShape, unsigned lineStyle, unsigned fillStyle, unsigned textStyle, const VSDName &aShapeType) override;
85  void collectSplineStart(unsigned id, unsigned level, double x, double y, double secondKnot, double firstKnot, double lastKnot, unsigned degree) override;
86  void collectSplineKnot(unsigned id, unsigned level, double x, double y, double knot) override;
87  void collectSplineEnd() override;
88  void collectInfiniteLine(unsigned id, unsigned level, double x1, double y1, double x2, double y2) override;
89  void collectRelCubBezTo(unsigned id, unsigned level, double x, double y, double a, double b, double c, double d) override;
90  void collectRelEllipticalArcTo(unsigned id, unsigned level, double x, double y, double a, double b, double c, double d) override;
91  void collectRelLineTo(unsigned id, unsigned level, double x, double y) override;
92  void collectRelMoveTo(unsigned id, unsigned level, double x, double y) override;
93  void collectRelQuadBezTo(unsigned id, unsigned level, double x, double y, double a, double b) override;
94 
95  void collectUnhandledChunk(unsigned id, unsigned level) override;
96 
97  void collectText(unsigned level, const librevenge::RVNGBinaryData &textStream, TextFormat format) override;
98  void collectCharIX(unsigned id, unsigned level, unsigned charCount, const std::optional<VSDName> &font,
99  const std::optional<Colour> &fontColour, const std::optional<double> &fontSize, const std::optional<bool> &bold,
100  const std::optional<bool> &italic, const std::optional<bool> &underline, const std::optional<bool> &doubleunderline,
101  const std::optional<bool> &strikeout, const std::optional<bool> &doublestrikeout, const std::optional<bool> &allcaps,
102  const std::optional<bool> &initcaps, const std::optional<bool> &smallcaps, const std::optional<bool> &superscript,
103  const std::optional<bool> &subscript, const std::optional<double> &scaleWidth) override;
104  void collectDefaultCharStyle(unsigned charCount, const std::optional<VSDName> &font, const std::optional<Colour> &fontColour,
105  const std::optional<double> &fontSize, const std::optional<bool> &bold, const std::optional<bool> &italic,
106  const std::optional<bool> &underline, const std::optional<bool> &doubleunderline, const std::optional<bool> &strikeout,
107  const std::optional<bool> &doublestrikeout, const std::optional<bool> &allcaps, const std::optional<bool> &initcaps,
108  const std::optional<bool> &smallcaps, const std::optional<bool> &superscript, const std::optional<bool> &subscript,
109  const std::optional<double> &scaleWidth) override;
110  void collectParaIX(unsigned id, unsigned level, unsigned charCount, const std::optional<double> &indFirst,
111  const std::optional<double> &indLeft, const std::optional<double> &indRight, const std::optional<double> &spLine,
112  const std::optional<double> &spBefore, const std::optional<double> &spAfter, const std::optional<unsigned char> &align,
113  const std::optional<unsigned char> &bullet, const std::optional<VSDName> &bulletStr, const std::optional<VSDName> &bulletFont,
114  const std::optional<double> &bulletFontSize, const std::optional<double> &textPosAfterBullet,
115  const std::optional<unsigned> &flags) override;
116  void collectDefaultParaStyle(unsigned charCount, const std::optional<double> &indFirst, const std::optional<double> &indLeft,
117  const std::optional<double> &indRight, const std::optional<double> &spLine, const std::optional<double> &spBefore,
118  const std::optional<double> &spAfter, const std::optional<unsigned char> &align,
119  const std::optional<unsigned char> &bullet, const std::optional<VSDName> &bulletStr,
120  const std::optional<VSDName> &bulletFont, const std::optional<double> &bulletFontSize,
121  const std::optional<double> &textPosAfterBullet, const std::optional<unsigned> &flags) override;
122  void collectTextBlock(unsigned level, const std::optional<double> &leftMargin, const std::optional<double> &rightMargin,
123  const std::optional<double> &topMargin, const std::optional<double> &bottomMargin,
124  const std::optional<unsigned char> &verticalAlign, const std::optional<bool> &isBgFilled,
125  const std::optional<Colour> &bgColour, const std::optional<double> &defaultTabStop,
126  const std::optional<unsigned char> &textDirection) override;
127  void collectNameList(unsigned id, unsigned level) override;
128  void collectName(unsigned id, unsigned level, const librevenge::RVNGBinaryData &name, TextFormat format) override;
129  void collectPageSheet(unsigned id, unsigned level) override;
130  void collectMisc(unsigned level, const VSDMisc &misc) override;
131  void collectLayer(unsigned id, unsigned level, const VSDLayer &layer) override;
132  void collectLayerMem(unsigned level, const VSDName &layerMem) override;
133  void collectTabsDataList(unsigned level, const std::map<unsigned, VSDTabSet> &tabSets) override;
134 
135  // Style collectors
136  void collectStyleSheet(unsigned id, unsigned level, unsigned parentLineStyle, unsigned parentFillStyle, unsigned parentTextStyle) override;
137  void collectLineStyle(unsigned level, const std::optional<double> &strokeWidth, const std::optional<Colour> &c, const std::optional<unsigned char> &linePattern,
138  const std::optional<unsigned char> &startMarker, const std::optional<unsigned char> &endMarker,
139  const std::optional<unsigned char> &lineCap, const std::optional<double> &rounding,
140  const std::optional<long> &qsLineColour, const std::optional<long> &qsLineMatrix) override;
141  void collectFillStyle(unsigned level, const std::optional<Colour> &colourFG, const std::optional<Colour> &colourBG,
142  const std::optional<unsigned char> &fillPattern, const std::optional<double> &fillFGTransparency,
143  const std::optional<double> &fillBGTransparency, const std::optional<unsigned char> &shadowPattern,
144  const std::optional<Colour> &shfgc, const std::optional<double> &shadowOffsetX, const std::optional<double> &shadowOffsetY,
145  const std::optional<long> &qsFillColour, const std::optional<long> &qsShadowColour,
146  const std::optional<long> &qsFillMatrix) override;
147  void collectFillStyle(unsigned level, const std::optional<Colour> &colourFG, const std::optional<Colour> &colourBG,
148  const std::optional<unsigned char> &fillPattern, const std::optional<double> &fillFGTransparency,
149  const std::optional<double> &fillBGTransparency, const std::optional<unsigned char> &shadowPattern,
150  const std::optional<Colour> &shfgc) override;
151  void collectCharIXStyle(unsigned id, unsigned level, unsigned charCount, const std::optional<VSDName> &font,
152  const std::optional<Colour> &fontColour, const std::optional<double> &fontSize, const std::optional<bool> &bold,
153  const std::optional<bool> &italic, const std::optional<bool> &underline, const std::optional<bool> &doubleunderline,
154  const std::optional<bool> &strikeout, const std::optional<bool> &doublestrikeout, const std::optional<bool> &allcaps,
155  const std::optional<bool> &initcaps, const std::optional<bool> &smallcaps, const std::optional<bool> &superscript,
156  const std::optional<bool> &subscript, const std::optional<double> &scaleWidth) override;
157  void collectParaIXStyle(unsigned id, unsigned level, unsigned charCount, const std::optional<double> &indFirst,
158  const std::optional<double> &indLeft, const std::optional<double> &indRight, const std::optional<double> &spLine,
159  const std::optional<double> &spBefore, const std::optional<double> &spAfter, const std::optional<unsigned char> &align,
160  const std::optional<unsigned char> &bullet, const std::optional<VSDName> &bulletStr,
161  const std::optional<VSDName> &bulletFont, const std::optional<double> &bulletFontSize,
162  const std::optional<double> &textPosAfterBullet, const std::optional<unsigned> &flags) override;
163  void collectTextBlockStyle(unsigned level, const std::optional<double> &leftMargin, const std::optional<double> &rightMargin,
164  const std::optional<double> &topMargin, const std::optional<double> &bottomMargin,
165  const std::optional<unsigned char> &verticalAlign, const std::optional<bool> &isBgFilled,
166  const std::optional<Colour> &bgColour, const std::optional<double> &defaultTabStop,
167  const std::optional<unsigned char> &textDirection) override;
168 
169  void collectMetaData(const librevenge::RVNGPropertyList &metaData) override;
170 
171 
172  // Field list
173  void collectFieldList(unsigned id, unsigned level) override;
174  void collectTextField(unsigned id, unsigned level, int nameId, int formatStringId) override;
175  void collectNumericField(unsigned id, unsigned level, unsigned short format, unsigned short cellType, double number, int formatStringId) override;
176 
177  void startPage(unsigned pageId) override;
178  void endPage() override;
179  void endPages() override;
180 
181 
182 private:
185  librevenge::RVNGDrawingInterface *m_painter;
186 
187  void applyXForm(double &x, double &y, const XForm &xform);
188 
189  void transformPoint(double &x, double &y, XForm *txtxform = nullptr);
190  void transformAngle(double &angle, XForm *txtxform = nullptr);
191  void transformFlips(bool &flipX, bool &flipY);
192 
193  double _NURBSBasis(unsigned knot, unsigned degree, double point, const std::vector<double> &knotVector);
194 
195  void _flushShape();
196  void _flushCurrentPath(unsigned id);
197  void _flushText();
199  void _flushCurrentPage();
200 
201  void _handleLevelChange(unsigned level);
202  bool _isDefaultShapeFormat();
203 
204  void _handleForeignData(const librevenge::RVNGBinaryData &data);
205 
206  void _lineProperties(const VSDLineStyle &style, librevenge::RVNGPropertyList &styleProps);
207  void _fillAndShadowProperties(const VSDFillStyle &style, librevenge::RVNGPropertyList &styleProps);
208 
209  void _applyLinePattern();
210  const char *_linePropertiesMarkerViewbox(unsigned marker);
211  const char *_linePropertiesMarkerPath(unsigned marker);
212  double _linePropertiesMarkerScale(unsigned marker);
213 
214  void appendCharacters(librevenge::RVNGString &text, const std::vector<unsigned char> &characters, TextFormat format);
215  void appendCharacters(librevenge::RVNGString &text, const std::vector<unsigned char> &characters);
216  void _convertDataToString(librevenge::RVNGString &result, const librevenge::RVNGBinaryData &data, TextFormat format);
217  bool parseFormatId(const char *formatString, unsigned short &result);
218  void _appendField(librevenge::RVNGString &text);
219 
220  // NURBS processing functions
221  bool _isUniform(const std::vector<double> &weights) const;
222  void _generatePolylineFromNURBS(unsigned degree, const std::vector<std::pair<double, double> > &controlPoints,
223  const std::vector<double> &knotVector, const std::vector<double> &weights);
224  void _generateBezierSegmentsFromNURBS(unsigned degree, const std::vector<std::pair<double, double> > &controlPoints,
225  const std::vector<double> &knotVector);
226  void _outputCubicBezierSegment(const std::vector<std::pair<double, double> > &points);
227  void _outputQuadraticBezierSegment(const std::vector<std::pair<double, double> > &points);
228  void _outputLinearBezierSegment(const std::vector<std::pair<double, double> > &points);
229  void _appendVisibleAndPrintable(librevenge::RVNGPropertyList &propList);
230  void _bulletFromParaFormat(VSDBullet &bullet, const VSDParaStyle &paraStyle);
231  void _listLevelFromBullet(librevenge::RVNGPropertyList &propList, const VSDBullet &bullet);
232  void _fillParagraphProperties(librevenge::RVNGPropertyList &propList, const VSDParaStyle &style);
233  void _fillTabSet(librevenge::RVNGPropertyList &propList, const VSDTabSet &tabSet);
234  void _fillCharProperties(librevenge::RVNGPropertyList &propList, const VSDCharStyle &style);
235  void _convertToPath(const std::vector<librevenge::RVNGPropertyList> &segmentVector,
236  librevenge::RVNGPropertyListVector &path, double rounding);
237 
239  double m_pageWidth;
240  double m_pageHeight;
243  double m_scale;
244  unsigned char m_defaultDrawingUnit;
245  double m_x;
246  double m_y;
247  double m_originalX;
248  double m_originalY;
250  std::unique_ptr<XForm> m_txtxform;
252  std::vector<librevenge::RVNGPropertyList> m_currentFillGeometry;
253  std::vector<librevenge::RVNGPropertyList> m_currentLineGeometry;
254  std::map<unsigned, XForm> *m_groupXForms;
255  librevenge::RVNGBinaryData m_currentForeignData;
256  librevenge::RVNGBinaryData m_currentOLEData;
257  librevenge::RVNGPropertyList m_currentForeignProps;
259  unsigned m_parentShapeId;
260  unsigned m_foreignType;
261  unsigned m_foreignFormat;
266  bool m_noLine;
267  bool m_noFill;
268  bool m_noShow;
269  std::map<unsigned short, VSDFont> m_fonts;
270  unsigned m_currentLevel;
272  std::vector<std::map<unsigned, XForm> > &m_groupXFormsSequence;
273  std::vector<std::map<unsigned, unsigned> > &m_groupMembershipsSequence;
274  std::vector<std::map<unsigned, unsigned> >::iterator m_groupMemberships;
277  std::map<unsigned, VSDOutputElementList> m_pageOutputDrawing;
278  std::map<unsigned, VSDOutputElementList> m_pageOutputText;
279  std::vector<std::list<unsigned> > &m_documentPageShapeOrders;
280  std::vector<std::list<unsigned> >::iterator m_pageShapeOrder;
282 
283  std::map<unsigned, NURBSData> m_NURBSData;
284  std::map<unsigned, PolylineData> m_polylineData;
286  std::map<unsigned, librevenge::RVNGString> m_names, m_stencilNames;
287  std::vector<librevenge::RVNGString> m_fields;
289  unsigned m_fieldIndex;
290  std::vector<VSDCharStyle> m_charFormats;
291  std::vector<VSDParaStyle> m_paraFormats;
292 
296 
299 
302 
303  std::optional<unsigned> m_variationColorIndex;
304  std::optional<unsigned> m_variationStyleIndex;
305 
309 
311 
313  unsigned m_currentPageID;
316 
318 
319  std::vector<std::pair<double, double> > m_splineControlPoints;
320  std::vector<double> m_splineKnotVector;
323  unsigned m_splineDegree;
324  unsigned m_splineLevel;
327 
329  std::vector<unsigned> m_currentLayerMem;
330  std::vector<VSDTabSet> m_tabSets;
331 
333  librevenge::RVNGString m_currentShapeType;
334 };
335 
336 } // namespace libvisio
337 
338 #endif /* VSDCONTENTCOLLECTOR_H */
339 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */
std::vector< std::list< unsigned > >::iterator m_pageShapeOrder
Definition: VSDContentCollector.h:280
Definition: VSDStyles.h:507
void collectDefaultCharStyle(unsigned charCount, const std::optional< VSDName > &font, const std::optional< Colour > &fontColour, const std::optional< double > &fontSize, const std::optional< bool > &bold, const std::optional< bool > &italic, const std::optional< bool > &underline, const std::optional< bool > &doubleunderline, const std::optional< bool > &strikeout, const std::optional< bool > &doublestrikeout, const std::optional< bool > &allcaps, const std::optional< bool > &initcaps, const std::optional< bool > &smallcaps, const std::optional< bool > &superscript, const std::optional< bool > &subscript, const std::optional< double > &scaleWidth) override
Definition: VSDContentCollector.cpp:2831
std::vector< std::map< unsigned, unsigned > >::iterator m_groupMemberships
Definition: VSDContentCollector.h:274
void _generateBezierSegmentsFromNURBS(unsigned degree, const std::vector< std::pair< double, double > > &controlPoints, const std::vector< double > &knotVector)
Definition: VSDContentCollector.cpp:2018
bool m_noLine
Definition: VSDContentCollector.h:266
Definition: VSDStencils.h:27
XForm m_xform
Definition: VSDContentCollector.h:249
bool parseFormatId(const char *formatString, unsigned short &result)
Definition: VSDContentCollector.cpp:3662
void collectForeignData(unsigned level, const librevenge::RVNGBinaryData &binaryData) override
Definition: VSDContentCollector.cpp:1710
void _flushCurrentPath(unsigned id)
Definition: VSDContentCollector.cpp:384
void _convertToPath(const std::vector< librevenge::RVNGPropertyList > &segmentVector, librevenge::RVNGPropertyListVector &path, double rounding)
Definition: VSDContentCollector.cpp:554
void collectNumericField(unsigned id, unsigned level, unsigned short format, unsigned short cellType, double number, int formatStringId) override
Definition: VSDContentCollector.cpp:3524
bool m_isPageStarted
Definition: VSDContentCollector.h:238
void _fillCharProperties(librevenge::RVNGPropertyList &propList, const VSDCharStyle &style)
Definition: VSDContentCollector.cpp:1185
void collectDefaultParaStyle(unsigned charCount, const std::optional< double > &indFirst, const std::optional< double > &indLeft, const std::optional< double > &indRight, const std::optional< double > &spLine, const std::optional< double > &spBefore, const std::optional< double > &spAfter, const std::optional< unsigned char > &align, const std::optional< unsigned char > &bullet, const std::optional< VSDName > &bulletStr, const std::optional< VSDName > &bulletFont, const std::optional< double > &bulletFontSize, const std::optional< double > &textPosAfterBullet, const std::optional< unsigned > &flags) override
Definition: VSDContentCollector.cpp:2795
std::vector< librevenge::RVNGString > m_fields
Definition: VSDContentCollector.h:287
std::vector< std::map< unsigned, XForm > > & m_groupXFormsSequence
Definition: VSDContentCollector.h:272
VSDContentCollector(librevenge::RVNGDrawingInterface *painter, std::vector< std::map< unsigned, XForm > > &groupXFormsSequence, std::vector< std::map< unsigned, unsigned > > &groupMembershipsSequence, std::vector< std::list< unsigned > > &documentPageShapeOrders, VSDStyles &styles, VSDStencils &stencils, const std::optional< unsigned > &varColInd, const std::optional< unsigned > &varStyInd)
Definition: VSDContentCollector.cpp:118
void collectShapeData(unsigned id, unsigned level, unsigned char xType, unsigned char yType, unsigned degree, double lastKnot, std::vector< std::pair< double, double > > controlPoints, std::vector< double > knotVector, std::vector< double > weights) override
Definition: VSDContentCollector.cpp:2392
VSDLayerList m_currentLayerList
Definition: VSDContentCollector.h:328
std::vector< VSDParaStyle > m_paraFormats
Definition: VSDContentCollector.h:291
void collectStyleSheet(unsigned id, unsigned level, unsigned parentLineStyle, unsigned parentFillStyle, unsigned parentTextStyle) override
Definition: VSDContentCollector.cpp:2884
void collectXFormData(unsigned level, const XForm &xform) override
Definition: VSDContentCollector.cpp:2417
bool m_noShow
Definition: VSDContentCollector.h:268
void collectSplineEnd() override
Definition: VSDContentCollector.cpp:2753
void collectPageProps(unsigned id, unsigned level, double pageWidth, double pageHeight, double shadowOffsetX, double shadowOffsetY, double scale, unsigned char drawingScaleUnit, const std::optional< unsigned > variationColorIndex, const std::optional< unsigned > variationStyleIndex) override
Definition: VSDContentCollector.cpp:2569
void collectText(unsigned level, const librevenge::RVNGBinaryData &textStream, TextFormat format) override
Definition: VSDContentCollector.cpp:2771
Definition: VSDLayerList.h:33
std::optional< unsigned > m_variationColorIndex
Definition: VSDContentCollector.h:303
Definition: VSDStyles.h:62
double m_originalX
Definition: VSDContentCollector.h:247
Definition: VSDTypes.h:93
Definition: VSDTypes.h:231
const char * _linePropertiesMarkerViewbox(unsigned marker)
Definition: VSDContentCollector.cpp:152
void _generatePolylineFromNURBS(unsigned degree, const std::vector< std::pair< double, double > > &controlPoints, const std::vector< double > &knotVector, const std::vector< double > &weights)
Definition: VSDContentCollector.cpp:2131
void collectMisc(unsigned level, const VSDMisc &misc) override
Definition: VSDContentCollector.cpp:3842
void collectPage(unsigned id, unsigned level, unsigned backgroundPageID, bool isBackgroundPage, const VSDName &pageName) override
Definition: VSDContentCollector.cpp:2587
void appendCharacters(librevenge::RVNGString &text, const std::vector< unsigned char > &characters, TextFormat format)
Definition: VSDContentCollector.cpp:3683
unsigned m_currentLevel
Definition: VSDContentCollector.h:270
librevenge::RVNGDrawingInterface * m_painter
Definition: VSDContentCollector.h:185
double m_shadowOffsetX
Definition: VSDContentCollector.h:241
Definition: VSDStyles.h:471
Definition: VSDTypes.h:222
void collectTabsDataList(unsigned level, const std::map< unsigned, VSDTabSet > &tabSets) override
Definition: VSDContentCollector.cpp:2821
void _flushCurrentPage()
Definition: VSDContentCollector.cpp:1336
libvisio::VSDName m_currentText
Definition: VSDContentCollector.h:285
void transformAngle(double &angle, XForm *txtxform=nullptr)
Definition: VSDContentCollector.cpp:2493
bool m_noFill
Definition: VSDContentCollector.h:267
void collectParaIXStyle(unsigned id, unsigned level, unsigned charCount, const std::optional< double > &indFirst, const std::optional< double > &indLeft, const std::optional< double > &indRight, const std::optional< double > &spLine, const std::optional< double > &spBefore, const std::optional< double > &spAfter, const std::optional< unsigned char > &align, const std::optional< unsigned char > &bullet, const std::optional< VSDName > &bulletStr, const std::optional< VSDName > &bulletFont, const std::optional< double > &bulletFontSize, const std::optional< double > &textPosAfterBullet, const std::optional< unsigned > &flags) override
Definition: VSDContentCollector.cpp:2927
void collectForeignDataType(unsigned level, unsigned foreignType, unsigned foreignFormat, double offsetX, double offsetY, double width, double height) override
Definition: VSDContentCollector.cpp:2558
void _flushShape()
Definition: VSDContentCollector.cpp:320
Definition: VSDPages.h:34
VSDParaStyle m_defaultParaStyle
Definition: VSDContentCollector.h:298
unsigned m_splineDegree
Definition: VSDContentCollector.h:323
void collectSplineKnot(unsigned id, unsigned level, double x, double y, double knot) override
Definition: VSDContentCollector.cpp:2744
void startPage(unsigned pageId) override
Definition: VSDContentCollector.cpp:3616
void collectTextBlockStyle(unsigned level, const std::optional< double > &leftMargin, const std::optional< double > &rightMargin, const std::optional< double > &topMargin, const std::optional< double > &bottomMargin, const std::optional< unsigned char > &verticalAlign, const std::optional< bool > &isBgFilled, const std::optional< Colour > &bgColour, const std::optional< double > &defaultTabStop, const std::optional< unsigned char > &textDirection) override
Definition: VSDContentCollector.cpp:2954
double m_scale
Definition: VSDContentCollector.h:243
double m_splineX
Definition: VSDContentCollector.h:321
std::vector< std::map< unsigned, unsigned > > & m_groupMembershipsSequence
Definition: VSDContentCollector.h:273
Definition: VSDTypes.h:203
double m_pageHeight
Definition: VSDContentCollector.h:240
double m_foreignOffsetY
Definition: VSDContentCollector.h:263
void _outputQuadraticBezierSegment(const std::vector< std::pair< double, double > > &points)
Definition: VSDContentCollector.cpp:1977
std::vector< std::list< unsigned > > & m_documentPageShapeOrders
Definition: VSDContentCollector.h:279
const VSDShape * m_stencilShape
Definition: VSDContentCollector.h:307
void collectUnhandledChunk(unsigned id, unsigned level) override
Definition: VSDContentCollector.cpp:2727
VSDPage m_currentPage
Definition: VSDContentCollector.h:314
std::vector< librevenge::RVNGPropertyList > m_currentFillGeometry
Definition: VSDContentCollector.h:252
void _handleLevelChange(unsigned level)
Definition: VSDContentCollector.cpp:3554
void collectOLEList(unsigned id, unsigned level) override
Definition: VSDContentCollector.cpp:1716
std::vector< VSDCharStyle > m_charFormats
Definition: VSDContentCollector.h:290
Definition: VSDStencils.h:79
double m_foreignOffsetX
Definition: VSDContentCollector.h:262
std::map< unsigned, XForm > * m_groupXForms
Definition: VSDContentCollector.h:254
Definition: VSDOutputElementList.h:24
void _fillAndShadowProperties(const VSDFillStyle &style, librevenge::RVNGPropertyList &styleProps)
Definition: VSDContentCollector.cpp:3191
bool m_isStencilStarted
Definition: VSDContentCollector.h:308
void collectName(unsigned id, unsigned level, const librevenge::RVNGBinaryData &name, TextFormat format) override
Definition: VSDContentCollector.cpp:2868
void collectEllipse(unsigned id, unsigned level, double cx, double cy, double xleft, double yleft, double xtop, double ytop) override
Definition: VSDContentCollector.cpp:1462
Definition: VSDContentCollector.h:31
VSDContentCollector & operator=(const VSDContentCollector &)
void collectLayer(unsigned id, unsigned level, const VSDLayer &layer) override
Definition: VSDContentCollector.cpp:3870
Definition: VSDCollector.h:20
void collectRelCubBezTo(unsigned id, unsigned level, double x, double y, double a, double b, double c, double d) override
Definition: VSDContentCollector.cpp:1604
double _NURBSBasis(unsigned knot, unsigned degree, double point, const std::vector< double > &knotVector)
Definition: VSDContentCollector.cpp:2108
void endPages() override
Definition: VSDContentCollector.cpp:3657
void _listLevelFromBullet(librevenge::RVNGPropertyList &propList, const VSDBullet &bullet)
Definition: VSDContentCollector.cpp:3947
VSDMisc m_misc
Definition: VSDContentCollector.h:251
unsigned m_foreignType
Definition: VSDContentCollector.h:260
void collectLine(unsigned level, const std::optional< double > &strokeWidth, const std::optional< Colour > &c, const std::optional< unsigned char > &linePattern, const std::optional< unsigned char > &startMarker, const std::optional< unsigned char > &endMarker, const std::optional< unsigned char > &lineCap, const std::optional< double > &rounding, const std::optional< long > &qsLineColour, const std::optional< long > &qsLineMatrix) override
Definition: VSDContentCollector.cpp:1682
void collectOLEData(unsigned id, unsigned level, const librevenge::RVNGBinaryData &oleData) override
Definition: VSDContentCollector.cpp:1724
void collectParaIX(unsigned id, unsigned level, unsigned charCount, const std::optional< double > &indFirst, const std::optional< double > &indLeft, const std::optional< double > &indRight, const std::optional< double > &spLine, const std::optional< double > &spBefore, const std::optional< double > &spAfter, const std::optional< unsigned char > &align, const std::optional< unsigned char > &bullet, const std::optional< VSDName > &bulletStr, const std::optional< VSDName > &bulletFont, const std::optional< double > &bulletFontSize, const std::optional< double > &textPosAfterBullet, const std::optional< unsigned > &flags) override
Definition: VSDContentCollector.cpp:2780
unsigned char m_defaultDrawingUnit
Definition: VSDContentCollector.h:244
Definition: VSDFieldList.h:87
void collectNameList(unsigned id, unsigned level) override
Definition: VSDContentCollector.cpp:2852
Definition: VSDStyles.h:280
double m_splineLastKnot
Definition: VSDContentCollector.h:322
std::map< unsigned, VSDOutputElementList > m_pageOutputText
Definition: VSDContentCollector.h:278
const VSDXTheme * m_documentTheme
Definition: VSDContentCollector.h:332
std::optional< unsigned > m_variationStyleIndex
Definition: VSDContentCollector.h:304
std::map< unsigned short, VSDFont > m_fonts
Definition: VSDContentCollector.h:269
VSDFieldList m_stencilFields
Definition: VSDContentCollector.h:288
void collectTextField(unsigned id, unsigned level, int nameId, int formatStringId) override
Definition: VSDContentCollector.cpp:3501
unsigned m_foreignFormat
Definition: VSDContentCollector.h:261
void collectShape(unsigned id, unsigned level, unsigned parent, unsigned masterPage, unsigned masterShape, unsigned lineStyle, unsigned fillStyle, unsigned textStyle, const VSDName &aShapeType) override
Definition: VSDContentCollector.cpp:2597
double m_foreignWidth
Definition: VSDContentCollector.h:264
double _linePropertiesMarkerScale(unsigned marker)
Definition: VSDContentCollector.cpp:301
void _flushText()
Definition: VSDContentCollector.cpp:669
double m_foreignHeight
Definition: VSDContentCollector.h:265
librevenge::RVNGPropertyList m_currentForeignProps
Definition: VSDContentCollector.h:257
unsigned m_splineLevel
Definition: VSDContentCollector.h:324
std::map< unsigned, librevenge::RVNGString > m_names
Definition: VSDContentCollector.h:286
std::vector< librevenge::RVNGPropertyList > m_currentLineGeometry
Definition: VSDContentCollector.h:253
void applyXForm(double &x, double &y, const XForm &xform)
Definition: VSDContentCollector.cpp:2431
std::vector< unsigned > m_currentLayerMem
Definition: VSDContentCollector.h:329
void _appendVisibleAndPrintable(librevenge::RVNGPropertyList &propList)
Definition: VSDContentCollector.cpp:3876
VSDLayerList m_layerList
Definition: VSDContentCollector.h:317
std::map< unsigned, VSDOutputElementList > m_pageOutputDrawing
Definition: VSDContentCollector.h:277
librevenge::RVNGString m_currentShapeType
Definition: VSDContentCollector.h:333
unsigned m_currentStyleSheet
Definition: VSDContentCollector.h:300
std::map< unsigned, librevenge::RVNGString > m_stencilNames
Definition: VSDContentCollector.h:286
void _outputCubicBezierSegment(const std::vector< std::pair< double, double > > &points)
Definition: VSDContentCollector.cpp:1949
void transformFlips(bool &flipX, bool &flipY)
Definition: VSDContentCollector.cpp:2512
void collectPolylineTo(unsigned id, unsigned level, double x, double y, unsigned char xType, unsigned char yType, const std::vector< std::pair< double, double > > &points) override
Definition: VSDContentCollector.cpp:2311
std::map< unsigned, PolylineData > m_polylineData
Definition: VSDContentCollector.h:284
std::vector< VSDTabSet > m_tabSets
Definition: VSDContentCollector.h:330
Definition: VSDLayerList.h:21
librevenge::RVNGBinaryData m_currentOLEData
Definition: VSDContentCollector.h:256
void collectRelMoveTo(unsigned id, unsigned level, double x, double y) override
Definition: VSDContentCollector.cpp:1650
TextFormat
Definition: VSDTypes.h:149
void collectCharIXStyle(unsigned id, unsigned level, unsigned charCount, const std::optional< VSDName > &font, const std::optional< Colour > &fontColour, const std::optional< double > &fontSize, const std::optional< bool > &bold, const std::optional< bool > &italic, const std::optional< bool > &underline, const std::optional< bool > &doubleunderline, const std::optional< bool > &strikeout, const std::optional< bool > &doublestrikeout, const std::optional< bool > &allcaps, const std::optional< bool > &initcaps, const std::optional< bool > &smallcaps, const std::optional< bool > &superscript, const std::optional< bool > &subscript, const std::optional< double > &scaleWidth) override
Definition: VSDContentCollector.cpp:2942
void collectMoveTo(unsigned id, unsigned level, double x, double y) override
Definition: VSDContentCollector.cpp:1864
void collectEllipticalArcTo(unsigned id, unsigned level, double x3, double y3, double x2, double y2, double angle, double ecc) override
Definition: VSDContentCollector.cpp:1389
VSDStyles m_styles
Definition: VSDContentCollector.h:301
Definition: VSDStyles.h:157
void collectRelEllipticalArcTo(unsigned id, unsigned level, double x, double y, double a, double b, double c, double d) override
Definition: VSDContentCollector.cpp:1634
double m_pageWidth
Definition: VSDContentCollector.h:239
unsigned m_fieldIndex
Definition: VSDContentCollector.h:289
unsigned m_backgroundPageID
Definition: VSDContentCollector.h:312
void collectCharIX(unsigned id, unsigned level, unsigned charCount, const std::optional< VSDName > &font, const std::optional< Colour > &fontColour, const std::optional< double > &fontSize, const std::optional< bool > &bold, const std::optional< bool > &italic, const std::optional< bool > &underline, const std::optional< bool > &doubleunderline, const std::optional< bool > &strikeout, const std::optional< bool > &doublestrikeout, const std::optional< bool > &allcaps, const std::optional< bool > &initcaps, const std::optional< bool > &smallcaps, const std::optional< bool > &superscript, const std::optional< bool > &subscript, const std::optional< double > &scaleWidth) override
Definition: VSDContentCollector.cpp:2807
VSDPages m_pages
Definition: VSDContentCollector.h:315
VSDLineStyle m_lineStyle
Definition: VSDContentCollector.h:293
VSDCharStyle m_defaultCharStyle
Definition: VSDContentCollector.h:297
VSDFillStyle m_fillStyle
Definition: VSDContentCollector.h:294
void collectTextBlock(unsigned level, const std::optional< double > &leftMargin, const std::optional< double > &rightMargin, const std::optional< double > &topMargin, const std::optional< double > &bottomMargin, const std::optional< unsigned char > &verticalAlign, const std::optional< bool > &isBgFilled, const std::optional< Colour > &bgColour, const std::optional< double > &defaultTabStop, const std::optional< unsigned char > &textDirection) override
Definition: VSDContentCollector.cpp:2843
void collectLayerMem(unsigned level, const VSDName &layerMem) override
Definition: VSDContentCollector.cpp:3848
void collectInfiniteLine(unsigned id, unsigned level, double x1, double y1, double x2, double y2) override
Definition: VSDContentCollector.cpp:1515
bool m_isFirstGeometry
Definition: VSDContentCollector.h:281
void _handleForeignData(const librevenge::RVNGBinaryData &data)
Definition: VSDContentCollector.cpp:1730
void collectFillAndShadow(unsigned level, const std::optional< Colour > &colourFG, const std::optional< Colour > &colourBG, const std::optional< unsigned char > &fillPattern, const std::optional< double > &fillFGTransparency, const std::optional< double > &fillBGTransparency, const std::optional< unsigned char > &shadowPattern, const std::optional< Colour > &shfgc, const std::optional< double > &shadowOffsetX, const std::optional< double > &shadowOffsetY, const std::optional< long > &qsFc, const std::optional< long > &qsSc, const std::optional< long > &qsLm) override
Definition: VSDContentCollector.cpp:1690
void _convertDataToString(librevenge::RVNGString &result, const librevenge::RVNGBinaryData &data, TextFormat format)
Definition: VSDContentCollector.cpp:2859
Definition: libvisio_utils.h:46
void _outputLinearBezierSegment(const std::vector< std::pair< double, double > > &points)
Definition: VSDContentCollector.cpp:2000
std::vector< double > m_splineKnotVector
Definition: VSDContentCollector.h:320
double m_originalY
Definition: VSDContentCollector.h:248
Definition: VSDStyles.h:386
Definition: VSDPages.h:19
void _flushCurrentForeignData()
Definition: VSDContentCollector.cpp:1288
void transformPoint(double &x, double &y, XForm *txtxform=nullptr)
Definition: VSDContentCollector.cpp:2450
bool _isDefaultShapeFormat()
Definition: VSDContentCollector.cpp:3594
void collectLineTo(unsigned id, unsigned level, double x, double y) override
Definition: VSDContentCollector.cpp:1882
librevenge::RVNGBinaryData m_currentForeignData
Definition: VSDContentCollector.h:255
void collectPageSheet(unsigned id, unsigned level) override
Definition: VSDContentCollector.cpp:2877
unsigned m_currentShapeId
Definition: VSDContentCollector.h:258
bool m_isBackgroundPage
Definition: VSDContentCollector.h:326
std::map< unsigned, NURBSData > m_NURBSData
Definition: VSDContentCollector.h:283
void collectShapesOrder(unsigned id, unsigned level, const std::vector< unsigned > &shapeIds) override
Definition: VSDContentCollector.cpp:2553
VSDStencils m_stencils
Definition: VSDContentCollector.h:306
void collectLineStyle(unsigned level, const std::optional< double > &strokeWidth, const std::optional< Colour > &c, const std::optional< unsigned char > &linePattern, const std::optional< unsigned char > &startMarker, const std::optional< unsigned char > &endMarker, const std::optional< unsigned char > &lineCap, const std::optional< double > &rounding, const std::optional< long > &qsLineColour, const std::optional< long > &qsLineMatrix) override
Definition: VSDContentCollector.cpp:2895
double m_x
Definition: VSDContentCollector.h:245
double m_splineY
Definition: VSDContentCollector.h:321
void _lineProperties(const VSDLineStyle &style, librevenge::RVNGPropertyList &styleProps)
Definition: VSDContentCollector.cpp:2963
void collectTxtXForm(unsigned level, const XForm &txtxform) override
Definition: VSDContentCollector.cpp:2423
const char * _linePropertiesMarkerPath(unsigned marker)
Definition: VSDContentCollector.cpp:194
unsigned m_currentShapeLevel
Definition: VSDContentCollector.h:325
void endPage() override
Definition: VSDContentCollector.cpp:3638
Definition: VSDTypes.h:114
std::vector< std::pair< double, double > > m_splineControlPoints
Definition: VSDContentCollector.h:319
bool m_isShapeStarted
Definition: VSDContentCollector.h:271
void _fillTabSet(librevenge::RVNGPropertyList &propList, const VSDTabSet &tabSet)
Definition: VSDContentCollector.cpp:1259
VSDTextBlockStyle m_textBlockStyle
Definition: VSDContentCollector.h:295
void collectFillStyle(unsigned level, const std::optional< Colour > &colourFG, const std::optional< Colour > &colourBG, const std::optional< unsigned char > &fillPattern, const std::optional< double > &fillFGTransparency, const std::optional< double > &fillBGTransparency, const std::optional< unsigned char > &shadowPattern, const std::optional< Colour > &shfgc, const std::optional< double > &shadowOffsetX, const std::optional< double > &shadowOffsetY, const std::optional< long > &qsFillColour, const std::optional< long > &qsShadowColour, const std::optional< long > &qsFillMatrix) override
Definition: VSDContentCollector.cpp:2905
Definition: VSDTypes.h:22
void _fillParagraphProperties(librevenge::RVNGPropertyList &propList, const VSDParaStyle &style)
Definition: VSDContentCollector.cpp:1220
void collectRelQuadBezTo(unsigned id, unsigned level, double x, double y, double a, double b) override
Definition: VSDContentCollector.cpp:1657
unsigned m_currentPageID
Definition: VSDContentCollector.h:313
void collectGeometry(unsigned id, unsigned level, bool noFill, bool noLine, bool noShow) override
Definition: VSDContentCollector.cpp:1849
std::unique_ptr< XForm > m_txtxform
Definition: VSDContentCollector.h:250
unsigned m_currentGeometryCount
Definition: VSDContentCollector.h:310
double m_y
Definition: VSDContentCollector.h:246
void collectRelLineTo(unsigned id, unsigned level, double x, double y) override
Definition: VSDContentCollector.cpp:1643
VSDOutputElementList * m_shapeOutputText
Definition: VSDContentCollector.h:276
Definition: VSDXTheme.h:84
Definition: VSDTypes.h:170
VSDOutputElementList * m_shapeOutputDrawing
Definition: VSDContentCollector.h:276
void _appendField(librevenge::RVNGString &text)
Definition: VSDContentCollector.cpp:3834
void collectMetaData(const librevenge::RVNGPropertyList &metaData) override
Definition: VSDContentCollector.cpp:3611
void collectArcTo(unsigned id, unsigned level, double x2, double y2, double bow) override
Definition: VSDContentCollector.cpp:1900
void collectDocumentTheme(const VSDXTheme *theme) override
Definition: VSDContentCollector.cpp:1382
double m_shadowOffsetY
Definition: VSDContentCollector.h:242
unsigned m_currentPageNumber
Definition: VSDContentCollector.h:275
unsigned m_parentShapeId
Definition: VSDContentCollector.h:259
void collectFieldList(unsigned id, unsigned level) override
Definition: VSDContentCollector.cpp:3495
void collectNURBSTo(unsigned id, unsigned level, double x2, double y2, unsigned char xType, unsigned char yType, unsigned degree, const std::vector< std::pair< double, double > > &ctrlPnts, const std::vector< double > &kntVec, const std::vector< double > &weights) override
Definition: VSDContentCollector.cpp:2188
void _bulletFromParaFormat(VSDBullet &bullet, const VSDParaStyle &paraStyle)
Definition: VSDContentCollector.cpp:3891
void collectSplineStart(unsigned id, unsigned level, double x, double y, double secondKnot, double firstKnot, double lastKnot, unsigned degree) override
Definition: VSDContentCollector.cpp:2732
bool _isUniform(const std::vector< double > &weights) const
Definition: VSDContentCollector.cpp:2171

Generated for libvisio by doxygen 1.8.14