VSDXTheme.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 __VSDXTHEME_H__
11 #define __VSDXTHEME_H__
12 
13 #include <vector>
14 #include <map>
15 #include <optional>
16 #include <array>
17 #include <librevenge-stream/librevenge-stream.h>
18 #include "VSDXMLHelper.h"
19 
20 namespace libvisio
21 {
22 
23 class VSDCollector;
24 
26 {
34 
36 };
37 
39 {
53  std::vector<VSDXVariationClrScheme> m_variationClrSchemeLst;
54 
55  VSDXClrScheme();
56 };
57 
58 struct VSDXFont
59 {
60  librevenge::RVNGString m_latinTypeFace;
61  librevenge::RVNGString m_eaTypeFace;
62  librevenge::RVNGString m_csTypeFace;
63  std::map<unsigned, librevenge::RVNGString> m_typeFaces;
64 
65  VSDXFont();
66 };
67 
69 {
72  unsigned m_schemeId;
73 
75 };
76 
78 {
79  std::array<std::array<unsigned, 4>, 4> m_varStyles;
80 
82 };
83 
84 class VSDXTheme
85 {
86 public:
87  VSDXTheme();
88  ~VSDXTheme();
89  bool parse(librevenge::RVNGInputStream *input);
90  std::optional<Colour> getThemeColour(unsigned value, unsigned variationIndex = 0) const;
91  std::optional<Colour> getStyleColour(unsigned value, unsigned variationIndex = 0) const;
92  std::optional<Colour> getFillStyleColour(unsigned value) const;
93 
94 private:
95  VSDXTheme(const VSDXTheme &);
96  VSDXTheme &operator=(const VSDXTheme &);
97 
98  std::optional<Colour> readSrgbClr(xmlTextReaderPtr reader);
99  std::optional<Colour> readSysClr(xmlTextReaderPtr reader);
100 
101  void readClrScheme(xmlTextReaderPtr reader);
102  bool readThemeColour(xmlTextReaderPtr reader, int idToken, Colour &clr);
103  void readVariationClrSchemeLst(xmlTextReaderPtr reader);
104  void readVariationClrScheme(xmlTextReaderPtr reader, VSDXVariationClrScheme &varClrSch);
105  void readVariationStyleSchemeLst(xmlTextReaderPtr reader);
106  void readVariationStyleScheme(xmlTextReaderPtr reader, int idToken, VSDXVariationStyleScheme &vaStyleSch);
107  void readVarIdx(xmlTextReaderPtr reader, std::array<unsigned, 4>& varStyle);
108  void readFontScheme(xmlTextReaderPtr reader);
109  void readFont(xmlTextReaderPtr reader, int idToken, VSDXFont &font);
110  bool readTypeFace(xmlTextReaderPtr reader, librevenge::RVNGString &typeFace);
111  bool readTypeFace(xmlTextReaderPtr reader, int &script, librevenge::RVNGString &typeFace);
112  void readFmtScheme(xmlTextReaderPtr reader);
113  void readFillStyleLst(xmlTextReaderPtr reader);
114 
115  int getElementToken(xmlTextReaderPtr reader);
116  void skipUnimplemented(xmlTextReaderPtr reader, int idToken);
117 
120  std::vector<std::optional<Colour>> m_fillStyleLst;
121  std::vector<VSDXVariationStyleScheme> m_variationStyleSchemeLst;
122 };
123 
124 } // namespace libvisio
125 
126 #endif // __VSDXTHEME_H__
127 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */
Colour m_accent5
Definition: VSDXTheme.h:48
Colour m_varColor7
Definition: VSDXTheme.h:33
VSDXVariationStyleScheme()
Definition: VSDXTheme.cpp:64
bool parse(librevenge::RVNGInputStream *input)
Definition: VSDXTheme.cpp:87
Colour m_varColor4
Definition: VSDXTheme.h:30
void readVarIdx(xmlTextReaderPtr reader, std::array< unsigned, 4 > &varStyle)
Definition: VSDXTheme.cpp:579
Colour m_lt2
Definition: VSDXTheme.h:43
VSDXFont m_minorFont
Definition: VSDXTheme.h:71
Colour m_varColor3
Definition: VSDXTheme.h:29
Colour m_varColor2
Definition: VSDXTheme.h:28
Colour m_bkgnd
Definition: VSDXTheme.h:52
Colour m_lt1
Definition: VSDXTheme.h:41
Definition: VSDTypes.h:70
std::array< std::array< unsigned, 4 >, 4 > m_varStyles
Definition: VSDXTheme.h:79
VSDXTheme()
Definition: VSDXTheme.cpp:69
Colour m_dk1
Definition: VSDXTheme.h:40
Colour m_varColor1
Definition: VSDXTheme.h:27
Definition: VSDXTheme.h:25
unsigned m_schemeId
Definition: VSDXTheme.h:72
void readFmtScheme(xmlTextReaderPtr reader)
Definition: VSDXTheme.cpp:638
Colour m_accent6
Definition: VSDXTheme.h:49
void readVariationClrScheme(xmlTextReaderPtr reader, VSDXVariationClrScheme &varClrSch)
Definition: VSDXTheme.cpp:404
Colour m_varColor6
Definition: VSDXTheme.h:32
std::optional< Colour > getFillStyleColour(unsigned value) const
Definition: VSDXTheme.cpp:733
void readFillStyleLst(xmlTextReaderPtr reader)
Definition: VSDXTheme.cpp:686
bool readThemeColour(xmlTextReaderPtr reader, int idToken, Colour &clr)
Definition: VSDXTheme.cpp:336
Definition: VSDXTheme.h:38
VSDXClrScheme m_clrScheme
Definition: VSDXTheme.h:118
void readClrScheme(xmlTextReaderPtr reader)
Definition: VSDXTheme.cpp:269
Colour m_accent4
Definition: VSDXTheme.h:47
bool readTypeFace(xmlTextReaderPtr reader, librevenge::RVNGString &typeFace)
Definition: VSDXTheme.cpp:244
librevenge::RVNGString m_latinTypeFace
Definition: VSDXTheme.h:60
VSDXFontScheme()
Definition: VSDXTheme.cpp:57
~VSDXTheme()
Definition: VSDXTheme.cpp:77
Definition: VSDXTheme.h:68
VSDXClrScheme()
Definition: VSDXTheme.cpp:31
std::optional< Colour > readSysClr(xmlTextReaderPtr reader)
Definition: VSDXTheme.cpp:151
VSDXTheme & operator=(const VSDXTheme &)
std::optional< Colour > getStyleColour(unsigned value, unsigned variationIndex=0) const
Definition: VSDXTheme.cpp:598
Colour m_accent1
Definition: VSDXTheme.h:44
librevenge::RVNGString m_eaTypeFace
Definition: VSDXTheme.h:61
librevenge::RVNGString m_csTypeFace
Definition: VSDXTheme.h:62
std::optional< Colour > readSrgbClr(xmlTextReaderPtr reader)
Definition: VSDXTheme.cpp:131
void readVariationStyleSchemeLst(xmlTextReaderPtr reader)
Definition: VSDXTheme.cpp:511
Colour m_folHlink
Definition: VSDXTheme.h:51
void skipUnimplemented(xmlTextReaderPtr reader, int idToken)
Definition: VSDXTheme.cpp:668
std::map< unsigned, librevenge::RVNGString > m_typeFaces
Definition: VSDXTheme.h:63
void readFont(xmlTextReaderPtr reader, int idToken, VSDXFont &font)
Definition: VSDXTheme.cpp:203
Colour m_dk2
Definition: VSDXTheme.h:42
Definition: VSDXTheme.h:77
std::vector< VSDXVariationStyleScheme > m_variationStyleSchemeLst
Definition: VSDXTheme.h:121
Definition: libvisio_utils.h:46
Colour m_hlink
Definition: VSDXTheme.h:50
void readVariationStyleScheme(xmlTextReaderPtr reader, int idToken, VSDXVariationStyleScheme &vaStyleSch)
Definition: VSDXTheme.cpp:543
int getElementToken(xmlTextReaderPtr reader)
Definition: VSDXTheme.cpp:82
VSDXFont m_majorFont
Definition: VSDXTheme.h:70
Colour m_varColor5
Definition: VSDXTheme.h:31
std::optional< Colour > getThemeColour(unsigned value, unsigned variationIndex=0) const
Definition: VSDXTheme.cpp:449
Definition: VSDXTheme.h:58
std::vector< std::optional< Colour > > m_fillStyleLst
Definition: VSDXTheme.h:120
void readVariationClrSchemeLst(xmlTextReaderPtr reader)
Definition: VSDXTheme.cpp:373
Definition: VSDXTheme.h:84
void readFontScheme(xmlTextReaderPtr reader)
Definition: VSDXTheme.cpp:171
VSDXVariationClrScheme()
Definition: VSDXTheme.cpp:20
Colour m_accent3
Definition: VSDXTheme.h:46
Colour m_accent2
Definition: VSDXTheme.h:45
std::vector< VSDXVariationClrScheme > m_variationClrSchemeLst
Definition: VSDXTheme.h:53
VSDXFontScheme m_fontScheme
Definition: VSDXTheme.h:119
VSDXFont()
Definition: VSDXTheme.cpp:49

Generated for libvisio by doxygen 1.8.14