VSDStyles.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 __VSDSTYLES_H__
11 #define __VSDSTYLES_H__
12 
13 #include <map>
14 #include <vector>
15 #include <optional>
16 #include "VSDTypes.h"
17 #include "VSDXTheme.h"
18 #include "libvisio_utils.h"
19 
20 namespace libvisio
21 {
22 
24 {
26  width(), colour(), pattern(), startMarker(), endMarker(), cap(), rounding(),
28  VSDOptionalLineStyle(const std::optional<double> &w, const std::optional<Colour> &col,
29  const std::optional<unsigned char> &p, const std::optional<unsigned char> &sm,
30  const std::optional<unsigned char> &em, const std::optional<unsigned char> &c,
31  const std::optional<double> &r, const std::optional<long> &qlc,
32  const std::optional<long> &qlm) :
33  width(w), colour(col), pattern(p), startMarker(sm), endMarker(em), cap(c), rounding(r),
34  qsLineColour(qlc), qsLineMatrix(qlm) {}
35  VSDOptionalLineStyle(const VSDOptionalLineStyle &style) = default;
37  VSDOptionalLineStyle &operator=(const VSDOptionalLineStyle &style) = default;
38  void override(const VSDOptionalLineStyle &style)
39  {
40  ASSIGN_OPTIONAL(style.width, width);
41  ASSIGN_OPTIONAL(style.colour, colour);
42  ASSIGN_OPTIONAL(style.pattern, pattern);
43  ASSIGN_OPTIONAL(style.startMarker, startMarker);
44  ASSIGN_OPTIONAL(style.endMarker, endMarker);
45  ASSIGN_OPTIONAL(style.cap, cap);
46  ASSIGN_OPTIONAL(style.rounding, rounding);
47  ASSIGN_OPTIONAL(style.qsLineColour, qsLineColour);
48  ASSIGN_OPTIONAL(style.qsLineMatrix, qsLineMatrix);
49  }
50 
51  std::optional<double> width;
52  std::optional<Colour> colour;
53  std::optional<unsigned char> pattern;
54  std::optional<unsigned char> startMarker;
55  std::optional<unsigned char> endMarker;
56  std::optional<unsigned char> cap;
57  std::optional<double> rounding;
58  std::optional<long> qsLineColour;
59  std::optional<long> qsLineMatrix;
60 };
61 
63 {
65  width(0.01), colour(), pattern(1), startMarker(0), endMarker(0), cap(0),
66  rounding(0.0), qsLineColour(-1), qsLineMatrix(-1) {}
67  VSDLineStyle(double w, Colour col, unsigned char p, unsigned char sm,
68  unsigned char em, unsigned char c, double r, long qlc, long qlm) :
69  width(w), colour(col), pattern(p), startMarker(sm), endMarker(em), cap(c),
70  rounding(r), qsLineColour(qlc), qsLineMatrix(qlm) {}
71  VSDLineStyle(const VSDLineStyle &style) = default;
73  VSDLineStyle &operator=(const VSDLineStyle &style) = default;
74  void override(const VSDOptionalLineStyle &style, const VSDXTheme *theme)
75  {
76  ASSIGN_OPTIONAL(style.width, width);
77  ASSIGN_OPTIONAL(style.pattern, pattern);
78  ASSIGN_OPTIONAL(style.startMarker, startMarker);
79  ASSIGN_OPTIONAL(style.endMarker, endMarker);
80  ASSIGN_OPTIONAL(style.cap, cap);
81  ASSIGN_OPTIONAL(style.rounding, rounding);
82  ASSIGN_OPTIONAL(style.qsLineColour, qsLineColour);
83  ASSIGN_OPTIONAL(style.qsLineMatrix, qsLineMatrix);
84  if (theme)
85  {
86  if (!!style.qsLineColour && style.qsLineColour.value() >= 0)
87  ASSIGN_OPTIONAL(theme->getThemeColour(style.qsLineColour.value()), colour);
88  }
89  ASSIGN_OPTIONAL(style.colour, colour);
90  }
91 
92  double width;
94  unsigned char pattern;
95  unsigned char startMarker;
96  unsigned char endMarker;
97  unsigned char cap;
98  double rounding;
101 };
102 
104 {
109  VSDOptionalFillStyle(const std::optional<Colour> &fgc, const std::optional<Colour> &bgc,
110  const std::optional<unsigned char> &p, const std::optional<double> &fga,
111  const std::optional<double> &bga, const std::optional<Colour> &sfgc,
112  const std::optional<unsigned char> &shp, const std::optional<double> &shX,
113  const std::optional<double> &shY, const std::optional<long> &qsFc,
114  const std::optional<long> &qsSc, const std::optional<long> &qsFm,
115  const std::optional<unsigned> &vCIn, const std::optional<unsigned> &vSIn) :
116  fgColour(fgc), bgColour(bgc), pattern(p), fgTransparency(fga), bgTransparency(bga),
118  qsFillColour(qsFc), qsShadowColour(qsSc), qsFillMatrix(qsFm), variationColorIndex(vCIn),
119  variationStyleIndex(vSIn) {}
120  VSDOptionalFillStyle(const VSDOptionalFillStyle &style) = default;
122  VSDOptionalFillStyle &operator=(const VSDOptionalFillStyle &style) = default;
123  void override(const VSDOptionalFillStyle &style)
124  {
125  ASSIGN_OPTIONAL(style.pattern, pattern);
126  ASSIGN_OPTIONAL(style.fgTransparency, fgTransparency);
127  ASSIGN_OPTIONAL(style.bgTransparency, bgTransparency);
128  ASSIGN_OPTIONAL(style.shadowPattern, shadowPattern);
129  ASSIGN_OPTIONAL(style.shadowOffsetX, shadowOffsetX);
130  ASSIGN_OPTIONAL(style.shadowOffsetY, shadowOffsetY);
131  ASSIGN_OPTIONAL(style.qsFillColour, qsFillColour);
132  ASSIGN_OPTIONAL(style.qsShadowColour, qsShadowColour);
133  ASSIGN_OPTIONAL(style.qsFillMatrix, qsFillMatrix);
134  ASSIGN_OPTIONAL(style.fgColour, fgColour);
135  ASSIGN_OPTIONAL(style.bgColour, bgColour);
136  ASSIGN_OPTIONAL(style.shadowFgColour, shadowFgColour);
137  ASSIGN_OPTIONAL(style.variationColorIndex, variationColorIndex);
138  ASSIGN_OPTIONAL(style.variationStyleIndex, variationStyleIndex);
139  }
140 
141  std::optional<Colour> fgColour;
142  std::optional<Colour> bgColour;
143  std::optional<unsigned char> pattern;
144  std::optional<double> fgTransparency;
145  std::optional<double> bgTransparency;
146  std::optional<Colour> shadowFgColour;
147  std::optional<unsigned char> shadowPattern;
148  std::optional<double> shadowOffsetX;
149  std::optional<double> shadowOffsetY;
150  std::optional<long> qsFillColour;
151  std::optional<long> qsShadowColour;
152  std::optional<long> qsFillMatrix;
153  std::optional<unsigned> variationColorIndex;
154  std::optional<unsigned> variationStyleIndex;
155 };
156 
158 {
160  : fgColour(), bgColour(0xff, 0xff, 0xff, 0), pattern(0), fgTransparency(0),
164  VSDFillStyle(const Colour &fgc, const Colour &bgc, unsigned char p,
165  double fga, double bga, const Colour &sfgc, unsigned char shp,
166  double shX, double shY, long qsFc, long qsSc, long qsFm, unsigned vCIn, unsigned vSIn)
167  : fgColour(fgc), bgColour(bgc), pattern(p), fgTransparency(fga), bgTransparency(bga),
169  qsFillColour(qsFc), qsShadowColour(qsSc), qsFillMatrix(qsFm), variationColorIndex(vCIn),
170  variationStyleIndex(vSIn) {}
171  VSDFillStyle(const VSDFillStyle &style) = default;
173  VSDFillStyle &operator=(const VSDFillStyle &style) = default;
174  void override(const VSDOptionalFillStyle &style, const VSDXTheme *theme)
175  {
176  ASSIGN_OPTIONAL(style.pattern, pattern);
177  ASSIGN_OPTIONAL(style.fgTransparency, fgTransparency);
178  ASSIGN_OPTIONAL(style.bgTransparency, bgTransparency);
179  ASSIGN_OPTIONAL(style.shadowPattern, shadowPattern);
180  ASSIGN_OPTIONAL(style.shadowOffsetX, shadowOffsetX);
181  ASSIGN_OPTIONAL(style.shadowOffsetY, shadowOffsetY);
182  ASSIGN_OPTIONAL(style.shadowOffsetY, shadowOffsetY);
183  ASSIGN_OPTIONAL(style.qsFillColour, qsFillColour);
184  ASSIGN_OPTIONAL(style.qsShadowColour, qsShadowColour);
185  ASSIGN_OPTIONAL(style.qsFillMatrix, qsFillMatrix);
186  ASSIGN_OPTIONAL(style.variationColorIndex, variationColorIndex);
187  ASSIGN_OPTIONAL(style.variationStyleIndex, variationStyleIndex);
188  if (theme)
189  {
190  // Quick Style Colour 100 is special. It is the default,
191  // and it is not saved explicitely in the VSDX file.
192  ASSIGN_OPTIONAL(theme->getThemeColour(qsFillColour, variationColorIndex), fgColour);
193  ASSIGN_OPTIONAL(theme->getThemeColour(qsFillColour, variationColorIndex), bgColour);
195  if (!!style.qsFillMatrix && style.qsFillMatrix.value() >= 0)
196  ASSIGN_OPTIONAL(theme->getFillStyleColour(style.qsFillMatrix.value()), fgColour);
197  // Check fill style color from variationStyleScheme --> varStyle --> fillIdx
198  ASSIGN_OPTIONAL(theme->getStyleColour(qsFillColour, variationStyleIndex), fgColour);
199  }
200  ASSIGN_OPTIONAL(style.fgColour, fgColour);
201  ASSIGN_OPTIONAL(style.bgColour, bgColour);
202  ASSIGN_OPTIONAL(style.shadowFgColour, shadowFgColour);
203  }
204 
207  unsigned char pattern;
211  unsigned char shadowPattern;
219 };
220 
222 {
224  : charCount(0), font(), colour(), size(), bold(), italic(),
227  scaleWidth() {}
228  VSDOptionalCharStyle(unsigned cc, const std::optional<VSDName> &ft,
229  const std::optional<Colour> &c, const std::optional<double> &s,
230  const std::optional<bool> &b, const std::optional<bool> &i,
231  const std::optional<bool> &u, const std::optional<bool> &du,
232  const std::optional<bool> &so, const std::optional<bool> &dso,
233  const std::optional<bool> &ac, const std::optional<bool> &ic,
234  const std::optional<bool> &sc, const std::optional<bool> &super,
235  const std::optional<bool> &sub, const std::optional<double> &sw) :
236  charCount(cc), font(ft), colour(c), size(s), bold(b), italic(i),
238  allcaps(ac), initcaps(ic), smallcaps(sc), superscript(super),
239  subscript(sub), scaleWidth(sw) {}
240  VSDOptionalCharStyle(const VSDOptionalCharStyle &style) = default;
242  VSDOptionalCharStyle &operator=(const VSDOptionalCharStyle &style) = default;
243  void override(const VSDOptionalCharStyle &style)
244  {
245  ASSIGN_OPTIONAL(style.font, font);
246  ASSIGN_OPTIONAL(style.colour, colour);
247  ASSIGN_OPTIONAL(style.size, size);
248  ASSIGN_OPTIONAL(style.bold, bold);
249  ASSIGN_OPTIONAL(style.italic, italic);
250  ASSIGN_OPTIONAL(style.underline, underline);
251  ASSIGN_OPTIONAL(style.doubleunderline, doubleunderline);
252  ASSIGN_OPTIONAL(style.strikeout, strikeout);
253  ASSIGN_OPTIONAL(style.doublestrikeout, doublestrikeout);
254  ASSIGN_OPTIONAL(style.allcaps, allcaps);
255  ASSIGN_OPTIONAL(style.initcaps, initcaps);
256  ASSIGN_OPTIONAL(style.smallcaps, smallcaps);
257  ASSIGN_OPTIONAL(style.superscript, superscript);
258  ASSIGN_OPTIONAL(style.subscript, subscript);
259  ASSIGN_OPTIONAL(style.scaleWidth, scaleWidth);
260  }
261 
262  unsigned charCount;
263  std::optional<VSDName> font;
264  std::optional<Colour> colour;
265  std::optional<double> size;
266  std::optional<bool> bold;
267  std::optional<bool> italic;
268  std::optional<bool> underline;
269  std::optional<bool> doubleunderline;
270  std::optional<bool> strikeout;
271  std::optional<bool> doublestrikeout;
272  std::optional<bool> allcaps;
273  std::optional<bool> initcaps;
274  std::optional<bool> smallcaps;
275  std::optional<bool> superscript;
276  std::optional<bool> subscript;
277  std::optional<double> scaleWidth;
278 };
279 
281 {
283  : charCount(0), font(), colour(), size(12.0/72.0), bold(false),
284  italic(false), underline(false), doubleunderline(false),
285  strikeout(false), doublestrikeout(false), allcaps(false),
286  initcaps(false), smallcaps(false), superscript(false),
287  subscript(false), scaleWidth(1.0) {}
288  VSDCharStyle(unsigned cc, const VSDName &ft, const Colour &c, double s,
289  bool b, bool i, bool u, bool du, bool so, bool dso, bool ac,
290  bool ic, bool sc, bool super, bool sub, double sw) :
291  charCount(cc), font(ft), colour(c), size(s), bold(b), italic(i),
293  allcaps(ac), initcaps(ic), smallcaps(sc), superscript(super),
294  subscript(sub), scaleWidth(sw) {}
295  VSDCharStyle(const VSDCharStyle &style) = default;
297  VSDCharStyle &operator=(const VSDCharStyle &style) = default;
298  void override(const VSDOptionalCharStyle &style, const VSDXTheme * /* theme */)
299  {
300  ASSIGN_OPTIONAL(style.font, font);
301  ASSIGN_OPTIONAL(style.colour, colour);
302  ASSIGN_OPTIONAL(style.size, size);
303  ASSIGN_OPTIONAL(style.bold, bold);
304  ASSIGN_OPTIONAL(style.italic, italic);
305  ASSIGN_OPTIONAL(style.underline, underline);
306  ASSIGN_OPTIONAL(style.doubleunderline, doubleunderline);
307  ASSIGN_OPTIONAL(style.strikeout, strikeout);
308  ASSIGN_OPTIONAL(style.doublestrikeout, doublestrikeout);
309  ASSIGN_OPTIONAL(style.allcaps, allcaps);
310  ASSIGN_OPTIONAL(style.initcaps, initcaps);
311  ASSIGN_OPTIONAL(style.smallcaps, smallcaps);
312  ASSIGN_OPTIONAL(style.superscript, superscript);
313  ASSIGN_OPTIONAL(style.subscript, subscript);
314  ASSIGN_OPTIONAL(style.scaleWidth, scaleWidth);
315  }
316 
317  unsigned charCount;
320  double size;
321  bool bold;
322  bool italic;
323  bool underline;
325  bool strikeout;
327  bool allcaps;
328  bool initcaps;
329  bool smallcaps;
331  bool subscript;
332  double scaleWidth;
333 };
334 
336 {
338  charCount(0), indFirst(), indLeft(), indRight(), spLine(), spBefore(), spAfter(), align(), bullet(),
340  VSDOptionalParaStyle(unsigned cc, const std::optional<double> &ifst, const std::optional<double> &il,
341  const std::optional<double> &ir, const std::optional<double> &sl,
342  const std::optional<double> &sb, const std::optional<double> &sa,
343  const std::optional<unsigned char> &a, const std::optional<unsigned char> &b,
344  const std::optional<VSDName> &bs, const std::optional<VSDName> &bf,
345  const std::optional<double> bfs, const std::optional<double> &tpab,
346  const std::optional<unsigned> &f) :
347  charCount(cc), indFirst(ifst), indLeft(il), indRight(ir), spLine(sl), spBefore(sb), spAfter(sa),
348  align(a), bullet(b), bulletStr(bs), bulletFont(bf), bulletFontSize(bfs),
349  textPosAfterBullet(tpab), flags(f) {}
350  VSDOptionalParaStyle(const VSDOptionalParaStyle &style) = default;
352  VSDOptionalParaStyle &operator=(const VSDOptionalParaStyle &style) = default;
353  void override(const VSDOptionalParaStyle &style)
354  {
355  ASSIGN_OPTIONAL(style.indFirst, indFirst);
356  ASSIGN_OPTIONAL(style.indLeft, indLeft);
357  ASSIGN_OPTIONAL(style.indRight,indRight);
358  ASSIGN_OPTIONAL(style.spLine, spLine);
359  ASSIGN_OPTIONAL(style.spBefore, spBefore);
360  ASSIGN_OPTIONAL(style.spAfter, spAfter);
361  ASSIGN_OPTIONAL(style.align, align);
362  ASSIGN_OPTIONAL(style.bullet, bullet);
363  ASSIGN_OPTIONAL(style.bulletStr, bulletStr);
364  ASSIGN_OPTIONAL(style.bulletFont, bulletFont);
365  ASSIGN_OPTIONAL(style.bulletFontSize, bulletFontSize);
366  ASSIGN_OPTIONAL(style.textPosAfterBullet, textPosAfterBullet);
367  ASSIGN_OPTIONAL(style.flags, flags);
368  }
369 
370  unsigned charCount;
371  std::optional<double> indFirst;
372  std::optional<double> indLeft;
373  std::optional<double> indRight;
374  std::optional<double> spLine;
375  std::optional<double> spBefore;
376  std::optional<double> spAfter;
377  std::optional<unsigned char> align;
378  std::optional<unsigned char> bullet;
379  std::optional<VSDName> bulletStr;
380  std::optional<VSDName> bulletFont;
381  std::optional<double> bulletFontSize;
382  std::optional<double> textPosAfterBullet;
383  std::optional<unsigned> flags;
384 };
385 
387 {
389  charCount(0), indFirst(0.0), indLeft(0.0), indRight(0.0), spLine(-1.2), spBefore(0.0), spAfter(0.0), align(1),
391  VSDParaStyle(unsigned cc, double ifst, double il, double ir, double sl, double sb,
392  double sa, unsigned char a, unsigned b, const VSDName &bs,
393  const VSDName &bf, double bfs, double tpab, unsigned f) :
394  charCount(cc), indFirst(ifst), indLeft(il), indRight(ir), spLine(sl), spBefore(sb), spAfter(sa), align(a),
395  bullet(b), bulletStr(bs), bulletFont(bf), bulletFontSize(bfs), textPosAfterBullet(tpab), flags(f) {}
396  VSDParaStyle(const VSDParaStyle &style) = default;
398  VSDParaStyle &operator=(const VSDParaStyle &style) = default;
399  void override(const VSDOptionalParaStyle &style, const VSDXTheme * /* theme */)
400  {
401  ASSIGN_OPTIONAL(style.indFirst, indFirst);
402  ASSIGN_OPTIONAL(style.indLeft, indLeft);
403  ASSIGN_OPTIONAL(style.indRight,indRight);
404  ASSIGN_OPTIONAL(style.spLine, spLine);
405  ASSIGN_OPTIONAL(style.spBefore, spBefore);
406  ASSIGN_OPTIONAL(style.spAfter, spAfter);
407  ASSIGN_OPTIONAL(style.align, align);
408  ASSIGN_OPTIONAL(style.bullet, bullet);
409  ASSIGN_OPTIONAL(style.bulletStr, bulletStr);
410  ASSIGN_OPTIONAL(style.bulletFont, bulletFont);
411  ASSIGN_OPTIONAL(style.bulletFontSize, bulletFontSize);
412  ASSIGN_OPTIONAL(style.textPosAfterBullet, textPosAfterBullet);
413  ASSIGN_OPTIONAL(style.flags, flags);
414  }
415 
416  unsigned charCount;
417  double indFirst;
418  double indLeft;
419  double indRight;
420  double spLine;
421  double spBefore;
422  double spAfter;
423  unsigned char align;
424  unsigned char bullet;
429  unsigned flags;
430 };
431 
433 {
437  VSDOptionalTextBlockStyle(const std::optional<double> &lm, const std::optional<double> &rm,
438  const std::optional<double> &tm, const std::optional<double> &bm,
439  const std::optional<unsigned char> &va, const std::optional<bool> &isBgFilled,
440  const std::optional<Colour> &bgClr, const std::optional<double> &defTab,
441  const std::optional<unsigned char> &td) :
443  isTextBkgndFilled(isBgFilled), textBkgndColour(bgClr), defaultTabStop(defTab), textDirection(td) {}
447  void override(const VSDOptionalTextBlockStyle &style)
448  {
449  ASSIGN_OPTIONAL(style.leftMargin, leftMargin);
450  ASSIGN_OPTIONAL(style.rightMargin, rightMargin);
451  ASSIGN_OPTIONAL(style.topMargin, topMargin);
452  ASSIGN_OPTIONAL(style.bottomMargin, bottomMargin);
453  ASSIGN_OPTIONAL(style.verticalAlign, verticalAlign);
454  ASSIGN_OPTIONAL(style.isTextBkgndFilled, isTextBkgndFilled);
455  ASSIGN_OPTIONAL(style.textBkgndColour, textBkgndColour);
456  ASSIGN_OPTIONAL(style.defaultTabStop, defaultTabStop);
457  ASSIGN_OPTIONAL(style.textDirection, textDirection);
458  }
459 
460  std::optional<double> leftMargin;
461  std::optional<double> rightMargin;
462  std::optional<double> topMargin;
463  std::optional<double> bottomMargin;
464  std::optional<unsigned char> verticalAlign;
465  std::optional<bool> isTextBkgndFilled;
466  std::optional<Colour> textBkgndColour;
467  std::optional<double> defaultTabStop;
468  std::optional<unsigned char> textDirection;
469 };
470 
472 {
474  leftMargin(0.0), rightMargin(0.0), topMargin(0.0), bottomMargin(0.0), verticalAlign(1),
475  isTextBkgndFilled(false), textBkgndColour(0xff,0xff,0xff,0), defaultTabStop(0.5), textDirection(0) {}
476  VSDTextBlockStyle(double lm, double rm, double tm, double bm, unsigned char va,
477  bool isBgFilled, Colour bgClr, double defTab, unsigned char td) :
479  isTextBkgndFilled(isBgFilled), textBkgndColour(bgClr), defaultTabStop(defTab), textDirection(td) {}
480  VSDTextBlockStyle(const VSDTextBlockStyle &style) = default;
482  VSDTextBlockStyle &operator=(const VSDTextBlockStyle &style) = default;
483  void override(const VSDOptionalTextBlockStyle &style, const VSDXTheme * /* theme */)
484  {
485  ASSIGN_OPTIONAL(style.leftMargin, leftMargin);
486  ASSIGN_OPTIONAL(style.rightMargin, rightMargin);
487  ASSIGN_OPTIONAL(style.topMargin, topMargin);
488  ASSIGN_OPTIONAL(style.bottomMargin, bottomMargin);
489  ASSIGN_OPTIONAL(style.verticalAlign, verticalAlign);
490  ASSIGN_OPTIONAL(style.isTextBkgndFilled, isTextBkgndFilled);
491  ASSIGN_OPTIONAL(style.textBkgndColour, textBkgndColour);
492  ASSIGN_OPTIONAL(style.defaultTabStop, defaultTabStop);
493  ASSIGN_OPTIONAL(style.textDirection, textDirection);
494  }
495 
496  double leftMargin;
497  double rightMargin;
498  double topMargin;
499  double bottomMargin;
500  unsigned char verticalAlign;
504  unsigned char textDirection;
505 };
506 
508 {
509 public:
510  VSDStyles();
511  VSDStyles(const VSDStyles &styles) = default;
512  ~VSDStyles();
513  VSDStyles &operator=(const VSDStyles &styles) = default;
514  void addLineStyle(unsigned lineStyleIndex, const VSDOptionalLineStyle &lineStyle);
515  void addFillStyle(unsigned fillStyleIndex, const VSDOptionalFillStyle &fillStyle);
516  void addTextBlockStyle(unsigned textStyleIndex, const VSDOptionalTextBlockStyle &textBlockStyle);
517  void addCharStyle(unsigned textStyleIndex, const VSDOptionalCharStyle &charStyle);
518  void addParaStyle(unsigned textStyleIndex, const VSDOptionalParaStyle &paraStyle);
519 
520  void addLineStyleMaster(unsigned lineStyleIndex, unsigned lineStyleMaster);
521  void addFillStyleMaster(unsigned fillStyleIndex, unsigned fillStyleMaster);
522  void addTextStyleMaster(unsigned textStyleIndex, unsigned textStyleMaster);
523 
524  VSDOptionalLineStyle getOptionalLineStyle(unsigned lineStyleIndex) const;
525  VSDFillStyle getFillStyle(unsigned fillStyleIndex, const VSDXTheme *theme) const;
526  VSDOptionalFillStyle getOptionalFillStyle(unsigned fillStyleIndex) const;
527  VSDOptionalTextBlockStyle getOptionalTextBlockStyle(unsigned textStyleIndex) const;
528  VSDOptionalCharStyle getOptionalCharStyle(unsigned textStyleIndex) const;
529  VSDOptionalParaStyle getOptionalParaStyle(unsigned textStyleIndex) const;
530 
531 private:
532  std::map<unsigned, VSDOptionalLineStyle> m_lineStyles;
533  std::map<unsigned, VSDOptionalFillStyle> m_fillStyles;
534  std::map<unsigned, VSDOptionalTextBlockStyle> m_textBlockStyles;
535  std::map<unsigned, VSDOptionalCharStyle> m_charStyles;
536  std::map<unsigned, VSDOptionalParaStyle> m_paraStyles;
537  std::map<unsigned, unsigned> m_lineStyleMasters;
538  std::map<unsigned, unsigned> m_fillStyleMasters;
539  std::map<unsigned, unsigned> m_textStyleMasters;
540 };
541 
542 
543 } // namespace libvisio
544 
545 #endif // __VSDSTYLES_H__
546 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */
Definition: VSDStyles.h:507
VSDOptionalCharStyle(unsigned cc, const std::optional< VSDName > &ft, const std::optional< Colour > &c, const std::optional< double > &s, const std::optional< bool > &b, const std::optional< bool > &i, const std::optional< bool > &u, const std::optional< bool > &du, const std::optional< bool > &so, const std::optional< bool > &dso, const std::optional< bool > &ac, const std::optional< bool > &ic, const std::optional< bool > &sc, const std::optional< bool > &super, const std::optional< bool > &sub, const std::optional< double > &sw)
Definition: VSDStyles.h:228
long qsShadowColour
Definition: VSDStyles.h:215
Colour colour
Definition: VSDStyles.h:319
VSDOptionalTextBlockStyle getOptionalTextBlockStyle(unsigned textStyleIndex) const
Definition: VSDStyles.cpp:125
VSDTextBlockStyle(double lm, double rm, double tm, double bm, unsigned char va, bool isBgFilled, Colour bgClr, double defTab, unsigned char td)
Definition: VSDStyles.h:476
std::optional< bool > doublestrikeout
Definition: VSDStyles.h:271
std::optional< unsigned char > pattern
Definition: VSDStyles.h:143
VSDOptionalCharStyle getOptionalCharStyle(unsigned textStyleIndex) const
Definition: VSDStyles.cpp:130
std::optional< bool > subscript
Definition: VSDStyles.h:276
double fgTransparency
Definition: VSDStyles.h:208
std::map< unsigned, unsigned > m_textStyleMasters
Definition: VSDStyles.h:539
VSDParaStyle()
Definition: VSDStyles.h:388
Definition: VSDStyles.h:103
std::optional< long > qsLineMatrix
Definition: VSDStyles.h:59
double leftMargin
Definition: VSDStyles.h:496
bool subscript
Definition: VSDStyles.h:331
~VSDTextBlockStyle()
Definition: VSDStyles.h:481
std::optional< double > indRight
Definition: VSDStyles.h:373
unsigned variationStyleIndex
Definition: VSDStyles.h:218
bool initcaps
Definition: VSDStyles.h:328
double spLine
Definition: VSDStyles.h:420
Definition: VSDStyles.h:62
std::map< unsigned, VSDOptionalLineStyle > m_lineStyles
Definition: VSDStyles.h:532
VSDOptionalFillStyle & operator=(const VSDOptionalFillStyle &style)=default
std::optional< unsigned char > textDirection
Definition: VSDStyles.h:468
~VSDFillStyle()
Definition: VSDStyles.h:172
unsigned char cap
Definition: VSDStyles.h:97
std::optional< double > defaultTabStop
Definition: VSDStyles.h:467
Definition: VSDTypes.h:70
std::optional< Colour > colour
Definition: VSDStyles.h:264
~VSDOptionalLineStyle()
Definition: VSDStyles.h:36
std::optional< VSDName > bulletFont
Definition: VSDStyles.h:380
double indRight
Definition: VSDStyles.h:419
unsigned char align
Definition: VSDStyles.h:423
VSDTextBlockStyle & operator=(const VSDTextBlockStyle &style)=default
unsigned char pattern
Definition: VSDStyles.h:207
Definition: VSDStyles.h:471
double shadowOffsetX
Definition: VSDStyles.h:212
Definition: VSDStyles.h:432
VSDCharStyle & operator=(const VSDCharStyle &style)=default
double textPosAfterBullet
Definition: VSDStyles.h:428
bool doublestrikeout
Definition: VSDStyles.h:326
std::optional< bool > isTextBkgndFilled
Definition: VSDStyles.h:465
~VSDCharStyle()
Definition: VSDStyles.h:296
VSDOptionalLineStyle(const std::optional< double > &w, const std::optional< Colour > &col, const std::optional< unsigned char > &p, const std::optional< unsigned char > &sm, const std::optional< unsigned char > &em, const std::optional< unsigned char > &c, const std::optional< double > &r, const std::optional< long > &qlc, const std::optional< long > &qlm)
Definition: VSDStyles.h:28
std::optional< double > shadowOffsetX
Definition: VSDStyles.h:148
VSDOptionalLineStyle()
Definition: VSDStyles.h:25
std::optional< bool > allcaps
Definition: VSDStyles.h:272
std::optional< Colour > bgColour
Definition: VSDStyles.h:142
~VSDStyles()
Definition: VSDStyles.cpp:64
bool doubleunderline
Definition: VSDStyles.h:324
VSDName font
Definition: VSDStyles.h:318
std::optional< VSDName > bulletStr
Definition: VSDStyles.h:379
unsigned char verticalAlign
Definition: VSDStyles.h:500
unsigned charCount
Definition: VSDStyles.h:262
std::optional< bool > doubleunderline
Definition: VSDStyles.h:269
std::map< unsigned, unsigned > m_lineStyleMasters
Definition: VSDStyles.h:537
double bulletFontSize
Definition: VSDStyles.h:427
std::optional< unsigned char > startMarker
Definition: VSDStyles.h:54
std::optional< double > topMargin
Definition: VSDStyles.h:462
std::optional< unsigned char > cap
Definition: VSDStyles.h:56
Definition: VSDStyles.h:23
std::optional< Colour > colour
Definition: VSDStyles.h:52
void addFillStyleMaster(unsigned fillStyleIndex, unsigned fillStyleMaster)
Definition: VSDStyles.cpp:98
std::optional< double > bgTransparency
Definition: VSDStyles.h:145
unsigned charCount
Definition: VSDStyles.h:370
VSDLineStyle & operator=(const VSDLineStyle &style)=default
std::optional< bool > smallcaps
Definition: VSDStyles.h:274
VSDParaStyle(unsigned cc, double ifst, double il, double ir, double sl, double sb, double sa, unsigned char a, unsigned b, const VSDName &bs, const VSDName &bf, double bfs, double tpab, unsigned f)
Definition: VSDStyles.h:391
std::optional< Colour > fgColour
Definition: VSDStyles.h:141
std::optional< long > qsFillColour
Definition: VSDStyles.h:150
unsigned char textDirection
Definition: VSDStyles.h:504
bool allcaps
Definition: VSDStyles.h:327
std::optional< unsigned char > endMarker
Definition: VSDStyles.h:55
VSDOptionalParaStyle getOptionalParaStyle(unsigned textStyleIndex) const
Definition: VSDStyles.cpp:135
unsigned char endMarker
Definition: VSDStyles.h:96
std::optional< double > spLine
Definition: VSDStyles.h:374
double spBefore
Definition: VSDStyles.h:421
bool bold
Definition: VSDStyles.h:321
double scaleWidth
Definition: VSDStyles.h:332
std::map< unsigned, unsigned > m_fillStyleMasters
Definition: VSDStyles.h:538
std::optional< bool > underline
Definition: VSDStyles.h:268
bool superscript
Definition: VSDStyles.h:330
std::optional< VSDName > font
Definition: VSDStyles.h:263
std::optional< unsigned > variationStyleIndex
Definition: VSDStyles.h:154
VSDOptionalTextBlockStyle(const std::optional< double > &lm, const std::optional< double > &rm, const std::optional< double > &tm, const std::optional< double > &bm, const std::optional< unsigned char > &va, const std::optional< bool > &isBgFilled, const std::optional< Colour > &bgClr, const std::optional< double > &defTab, const std::optional< unsigned char > &td)
Definition: VSDStyles.h:437
std::map< unsigned, VSDOptionalParaStyle > m_paraStyles
Definition: VSDStyles.h:536
void addLineStyle(unsigned lineStyleIndex, const VSDOptionalLineStyle &lineStyle)
Definition: VSDStyles.cpp:68
Definition: VSDStyles.h:335
VSDOptionalFillStyle getOptionalFillStyle(unsigned fillStyleIndex) const
Definition: VSDStyles.cpp:113
unsigned char bullet
Definition: VSDStyles.h:424
double indFirst
Definition: VSDStyles.h:417
Definition: VSDStyles.h:280
VSDOptionalParaStyle()
Definition: VSDStyles.h:337
VSDOptionalFillStyle(const std::optional< Colour > &fgc, const std::optional< Colour > &bgc, const std::optional< unsigned char > &p, const std::optional< double > &fga, const std::optional< double > &bga, const std::optional< Colour > &sfgc, const std::optional< unsigned char > &shp, const std::optional< double > &shX, const std::optional< double > &shY, const std::optional< long > &qsFc, const std::optional< long > &qsSc, const std::optional< long > &qsFm, const std::optional< unsigned > &vCIn, const std::optional< unsigned > &vSIn)
Definition: VSDStyles.h:109
std::optional< double > spBefore
Definition: VSDStyles.h:375
void addCharStyle(unsigned textStyleIndex, const VSDOptionalCharStyle &charStyle)
Definition: VSDStyles.cpp:83
VSDOptionalLineStyle getOptionalLineStyle(unsigned lineStyleIndex) const
Definition: VSDStyles.cpp:108
std::optional< double > indFirst
Definition: VSDStyles.h:371
VSDOptionalTextBlockStyle()
Definition: VSDStyles.h:434
unsigned charCount
Definition: VSDStyles.h:416
std::optional< double > rounding
Definition: VSDStyles.h:57
VSDStyles()
Definition: VSDStyles.cpp:58
std::optional< double > bulletFontSize
Definition: VSDStyles.h:381
std::optional< Colour > shadowFgColour
Definition: VSDStyles.h:146
std::optional< double > scaleWidth
Definition: VSDStyles.h:277
~VSDLineStyle()
Definition: VSDStyles.h:72
VSDCharStyle(unsigned cc, const VSDName &ft, const Colour &c, double s, bool b, bool i, bool u, bool du, bool so, bool dso, bool ac, bool ic, bool sc, bool super, bool sub, double sw)
Definition: VSDStyles.h:288
VSDParaStyle & operator=(const VSDParaStyle &style)=default
Colour shadowFgColour
Definition: VSDStyles.h:210
void addTextStyleMaster(unsigned textStyleIndex, unsigned textStyleMaster)
Definition: VSDStyles.cpp:103
Colour textBkgndColour
Definition: VSDStyles.h:502
VSDLineStyle()
Definition: VSDStyles.h:64
std::optional< double > size
Definition: VSDStyles.h:265
VSDFillStyle()
Definition: VSDStyles.h:159
std::optional< bool > superscript
Definition: VSDStyles.h:275
std::optional< long > qsShadowColour
Definition: VSDStyles.h:151
bool italic
Definition: VSDStyles.h:322
unsigned char startMarker
Definition: VSDStyles.h:95
VSDFillStyle & operator=(const VSDFillStyle &style)=default
long qsLineMatrix
Definition: VSDStyles.h:100
unsigned flags
Definition: VSDStyles.h:429
double rounding
Definition: VSDStyles.h:98
bool smallcaps
Definition: VSDStyles.h:329
VSDTextBlockStyle()
Definition: VSDStyles.h:473
std::optional< bool > strikeout
Definition: VSDStyles.h:270
std::optional< double > rightMargin
Definition: VSDStyles.h:461
unsigned char shadowPattern
Definition: VSDStyles.h:211
double bottomMargin
Definition: VSDStyles.h:499
Definition: VSDStyles.h:157
VSDFillStyle getFillStyle(unsigned fillStyleIndex, const VSDXTheme *theme) const
Definition: VSDStyles.cpp:118
std::optional< long > qsLineColour
Definition: VSDStyles.h:58
std::optional< double > width
Definition: VSDStyles.h:51
std::optional< unsigned > flags
Definition: VSDStyles.h:383
Colour fgColour
Definition: VSDStyles.h:205
std::optional< unsigned char > bullet
Definition: VSDStyles.h:378
void addFillStyle(unsigned fillStyleIndex, const VSDOptionalFillStyle &fillStyle)
Definition: VSDStyles.cpp:73
std::optional< double > fgTransparency
Definition: VSDStyles.h:144
~VSDOptionalParaStyle()
Definition: VSDStyles.h:351
Definition: VSDStyles.h:221
VSDOptionalLineStyle & operator=(const VSDOptionalLineStyle &style)=default
VSDOptionalParaStyle(unsigned cc, const std::optional< double > &ifst, const std::optional< double > &il, const std::optional< double > &ir, const std::optional< double > &sl, const std::optional< double > &sb, const std::optional< double > &sa, const std::optional< unsigned char > &a, const std::optional< unsigned char > &b, const std::optional< VSDName > &bs, const std::optional< VSDName > &bf, const std::optional< double > bfs, const std::optional< double > &tpab, const std::optional< unsigned > &f)
Definition: VSDStyles.h:340
std::optional< unsigned char > verticalAlign
Definition: VSDStyles.h:464
Definition: libvisio_utils.h:46
double size
Definition: VSDStyles.h:320
Definition: VSDStyles.h:386
std::optional< bool > italic
Definition: VSDStyles.h:267
std::map< unsigned, VSDOptionalCharStyle > m_charStyles
Definition: VSDStyles.h:535
~VSDOptionalFillStyle()
Definition: VSDStyles.h:121
~VSDOptionalCharStyle()
Definition: VSDStyles.h:241
std::optional< unsigned char > shadowPattern
Definition: VSDStyles.h:147
Colour colour
Definition: VSDStyles.h:93
std::optional< double > spAfter
Definition: VSDStyles.h:376
VSDStyles & operator=(const VSDStyles &styles)=default
double width
Definition: VSDStyles.h:92
std::optional< double > shadowOffsetY
Definition: VSDStyles.h:149
std::optional< double > bottomMargin
Definition: VSDStyles.h:463
void addParaStyle(unsigned textStyleIndex, const VSDOptionalParaStyle &paraStyle)
Definition: VSDStyles.cpp:88
std::optional< unsigned char > pattern
Definition: VSDStyles.h:53
VSDOptionalTextBlockStyle & operator=(const VSDOptionalTextBlockStyle &style)=default
std::optional< bool > initcaps
Definition: VSDStyles.h:273
#define ASSIGN_OPTIONAL(t, u)
Definition: VSDTypes.h:17
long qsFillColour
Definition: VSDStyles.h:214
bool underline
Definition: VSDStyles.h:323
bool strikeout
Definition: VSDStyles.h:325
std::map< unsigned, VSDOptionalFillStyle > m_fillStyles
Definition: VSDStyles.h:533
void addTextBlockStyle(unsigned textStyleIndex, const VSDOptionalTextBlockStyle &textBlockStyle)
Definition: VSDStyles.cpp:78
double indLeft
Definition: VSDStyles.h:418
double defaultTabStop
Definition: VSDStyles.h:503
std::optional< Colour > textBkgndColour
Definition: VSDStyles.h:466
~VSDOptionalTextBlockStyle()
Definition: VSDStyles.h:445
VSDName bulletFont
Definition: VSDStyles.h:426
std::optional< unsigned > variationColorIndex
Definition: VSDStyles.h:153
unsigned charCount
Definition: VSDStyles.h:317
double shadowOffsetY
Definition: VSDStyles.h:213
Definition: VSDXTheme.h:84
Definition: VSDTypes.h:170
std::optional< bool > bold
Definition: VSDStyles.h:266
Colour bgColour
Definition: VSDStyles.h:206
VSDOptionalFillStyle()
Definition: VSDStyles.h:105
VSDFillStyle(const Colour &fgc, const Colour &bgc, unsigned char p, double fga, double bga, const Colour &sfgc, unsigned char shp, double shX, double shY, long qsFc, long qsSc, long qsFm, unsigned vCIn, unsigned vSIn)
Definition: VSDStyles.h:164
unsigned char pattern
Definition: VSDStyles.h:94
VSDOptionalCharStyle & operator=(const VSDOptionalCharStyle &style)=default
VSDCharStyle()
Definition: VSDStyles.h:282
~VSDParaStyle()
Definition: VSDStyles.h:397
double rightMargin
Definition: VSDStyles.h:497
double spAfter
Definition: VSDStyles.h:422
std::optional< double > indLeft
Definition: VSDStyles.h:372
long qsFillMatrix
Definition: VSDStyles.h:216
std::optional< double > leftMargin
Definition: VSDStyles.h:460
double topMargin
Definition: VSDStyles.h:498
long qsLineColour
Definition: VSDStyles.h:99
std::optional< unsigned char > align
Definition: VSDStyles.h:377
std::optional< double > textPosAfterBullet
Definition: VSDStyles.h:382
double bgTransparency
Definition: VSDStyles.h:209
std::map< unsigned, VSDOptionalTextBlockStyle > m_textBlockStyles
Definition: VSDStyles.h:534
VSDOptionalParaStyle & operator=(const VSDOptionalParaStyle &style)=default
VSDLineStyle(double w, Colour col, unsigned char p, unsigned char sm, unsigned char em, unsigned char c, double r, long qlc, long qlm)
Definition: VSDStyles.h:67
std::optional< long > qsFillMatrix
Definition: VSDStyles.h:152
VSDName bulletStr
Definition: VSDStyles.h:425
void addLineStyleMaster(unsigned lineStyleIndex, unsigned lineStyleMaster)
Definition: VSDStyles.cpp:93
bool isTextBkgndFilled
Definition: VSDStyles.h:501
VSDOptionalCharStyle()
Definition: VSDStyles.h:223
unsigned variationColorIndex
Definition: VSDStyles.h:217

Generated for libvisio by doxygen 1.8.14