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

Generated for libvisio by doxygen 1.8.9.1