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

Generated for libvisio by doxygen 1.8.10