KEYStyles.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 libetonyek 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 KEYSTYLES_H_INCLUDED
11 #define KEYSTYLES_H_INCLUDED
12 
13 #include <string>
14 
15 #include <boost/optional.hpp>
16 #include <boost/shared_ptr.hpp>
17 #include <boost/unordered_map.hpp>
18 
19 #include "KEYEnum.h"
20 #include "KEYPropertyMap.h"
21 #include "KEYStyle.h"
22 #include "KEYStyleContext.h"
23 #include "KEYStyles_fwd.h"
24 #include "KEYTypes.h"
25 
26 namespace libetonyek
27 {
28 
31 class KEYStyleBase : public KEYStyle
32 {
33 public:
34  virtual bool link(const KEYStylesheetPtr_t &stylesheet);
35 
36  virtual void flatten();
37 
38 // ensure that this class cannot be instantiated
39 protected:
40  KEYStyleBase(const KEYPropertyMap &props, const boost::optional<std::string> &ident, const boost::optional<std::string> &parentIdent);
41  virtual ~KEYStyleBase();
42 
43  virtual const KEYPropertyMap &getPropertyMap() const;
44 
45  virtual KEYStylePtr_t find(const KEYStylesheetPtr_t &stylesheet, const std::string &ident) const = 0;
46 
53  boost::any lookup(const char *property, const KEYStyleContext &context = KEYStyleContext()) const;
54 
55 private:
57 
58  const boost::optional<std::string> m_ident;
59  const boost::optional<std::string> m_parentIdent;
61 };
62 
65 class KEYCellStyle : public KEYStyleBase
66 {
67 public:
68  KEYCellStyle(const KEYPropertyMap &props, const boost::optional<std::string> &ident, const boost::optional<std::string> &parentIdent);
69 
70 private:
71  virtual KEYStylePtr_t find(const KEYStylesheetPtr_t &stylesheet, const std::string &ident) const;
72 };
73 
77 {
78 public:
79  KEYCharacterStyle(const KEYPropertyMap &props, const boost::optional<std::string> &ident, const boost::optional<std::string> &parentIdent);
80 
81  boost::optional<KEYBaseline> getBaseline(const KEYStyleContext &context = KEYStyleContext()) const;
82  boost::optional<double> getBaselineShift(const KEYStyleContext &context = KEYStyleContext()) const;
83  boost::optional<bool> getBold(const KEYStyleContext &context = KEYStyleContext()) const;
84  boost::optional<KEYCapitalization> getCapitalization(const KEYStyleContext &context = KEYStyleContext()) const;
85  boost::optional<bool> getItalic(const KEYStyleContext &context = KEYStyleContext()) const;
86  boost::optional<KEYColor> getFontColor(const KEYStyleContext &context = KEYStyleContext()) const;
87  boost::optional<double> getFontSize(const KEYStyleContext &context = KEYStyleContext()) const;
88  boost::optional<std::string> getFontName(const KEYStyleContext &context = KEYStyleContext()) const;
89  boost::optional<bool> getOutline(const KEYStyleContext &context = KEYStyleContext()) const;
90  boost::optional<bool> getStrikethru(const KEYStyleContext &context = KEYStyleContext()) const;
91  boost::optional<bool> getUnderline(const KEYStyleContext &context = KEYStyleContext()) const;
92 
93 private:
94  virtual KEYStylePtr_t find(const KEYStylesheetPtr_t &stylesheet, const std::string &ident) const;
95 };
96 
100 {
101 public:
102  KEYConnectionStyle(const KEYPropertyMap &props, const boost::optional<std::string> &ident, const boost::optional<std::string> &parentIdent);
103 
104 private:
105  virtual KEYStylePtr_t find(const KEYStylesheetPtr_t &stylesheet, const std::string &ident) const;
106 };
107 
111 {
112 public:
113  KEYGraphicStyle(const KEYPropertyMap &props, const boost::optional<std::string> &ident, const boost::optional<std::string> &parentIdent);
114 
115 private:
116  virtual KEYStylePtr_t find(const KEYStylesheetPtr_t &stylesheet, const std::string &ident) const;
117 };
118 
122 {
123 public:
124  KEYLayoutStyle(const KEYPropertyMap &props, const boost::optional<std::string> &ident, const boost::optional<std::string> &parentIdent);
125 
126 private:
127  virtual KEYStylePtr_t find(const KEYStylesheetPtr_t &stylesheet, const std::string &ident) const;
128 };
129 
133 {
134 public:
135  KEYListStyle(const KEYPropertyMap &props, const boost::optional<std::string> &ident, const boost::optional<std::string> &parentIdent);
136 
137 private:
138  virtual KEYStylePtr_t find(const KEYStylesheetPtr_t &stylesheet, const std::string &ident) const;
139 };
140 
144 {
145 public:
146  KEYParagraphStyle(const KEYPropertyMap &props, const boost::optional<std::string> &ident, const boost::optional<std::string> &parentIdent);
147 
148  boost::optional<KEYAlignment> getAlignment(const KEYStyleContext &context = KEYStyleContext()) const;
149  boost::optional<KEYTabStops_t> getTabs(const KEYStyleContext &context = KEYStyleContext()) const;
150 
151 private:
152  virtual KEYStylePtr_t find(const KEYStylesheetPtr_t &stylesheet, const std::string &ident) const;
153 };
154 
158 {
159 public:
160  KEYPlaceholderStyle(const KEYPropertyMap &props, const boost::optional<std::string> &ident, const boost::optional<std::string> &parentIdent);
161 
163 
164 private:
165  virtual KEYStylePtr_t find(const KEYStylesheetPtr_t &stylesheet, const std::string &ident) const;
166 };
167 
171 {
172 public:
173  KEYSlideStyle(const KEYPropertyMap &props, const boost::optional<std::string> &ident, const boost::optional<std::string> &parentIdent);
174 
175 private:
176  virtual KEYStylePtr_t find(const KEYStylesheetPtr_t &stylesheet, const std::string &ident) const;
177 };
178 
182 {
183 public:
184  KEYTabularStyle(const KEYPropertyMap &props, const boost::optional<std::string> &ident, const boost::optional<std::string> &parentIdent);
185 
186 private:
187  virtual KEYStylePtr_t find(const KEYStylesheetPtr_t &stylesheet, const std::string &ident) const;
188 };
189 
193 {
194 public:
195  KEYVectorStyle(const KEYPropertyMap &props, const boost::optional<std::string> &ident, const boost::optional<std::string> &parentIdent);
196 
197 private:
198  virtual KEYStylePtr_t find(const KEYStylesheetPtr_t &stylesheet, const std::string &ident) const;
199 };
200 
201 }
202 
203 #endif // KEYSTYLES_H_INCLUDED
204 
205 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */
boost::optional< KEYTabStops_t > getTabs(const KEYStyleContext &context=KEYStyleContext()) const
Definition: KEYStyles.cpp:209
virtual KEYStylePtr_t find(const KEYStylesheetPtr_t &stylesheet, const std::string &ident) const
Definition: KEYStyles.cpp:164
KEYListStyle(const KEYPropertyMap &props, const boost::optional< std::string > &ident, const boost::optional< std::string > &parentIdent)
Definition: KEYStyles.cpp:189
KEYVectorStyle(const KEYPropertyMap &props, const boost::optional< std::string > &ident, const boost::optional< std::string > &parentIdent)
Definition: KEYStyles.cpp:254
const boost::optional< std::string > m_ident
Definition: KEYStyles.h:58
KEYStyleBase(const KEYPropertyMap &props, const boost::optional< std::string > &ident, const boost::optional< std::string > &parentIdent)
Definition: KEYStyles.cpp:68
KEYTabularStyle(const KEYPropertyMap &props, const boost::optional< std::string > &ident, const boost::optional< std::string > &parentIdent)
Definition: KEYStyles.cpp:244
KEYGraphicStyle(const KEYPropertyMap &props, const boost::optional< std::string > &ident, const boost::optional< std::string > &parentIdent)
Definition: KEYStyles.cpp:169
virtual KEYStylePtr_t find(const KEYStylesheetPtr_t &stylesheet, const std::string &ident) const
Definition: KEYStyles.cpp:229
KEYLayoutStyle(const KEYPropertyMap &props, const boost::optional< std::string > &ident, const boost::optional< std::string > &parentIdent)
Definition: KEYStyles.cpp:179
KEYPropertyMap m_props
Definition: KEYStyles.h:56
const boost::optional< std::string > m_parentIdent
Definition: KEYStyles.h:59
Represents a (hierarchical) property map.
Definition: KEYPropertyMap.h:21
boost::optional< std::string > getFontName(const KEYStyleContext &context=KEYStyleContext()) const
Definition: KEYStyles.cpp:134
boost::optional< bool > getStrikethru(const KEYStyleContext &context=KEYStyleContext()) const
Definition: KEYStyles.cpp:144
Represents a list style.
Definition: KEYStyles.h:132
boost::optional< double > getFontSize(const KEYStyleContext &context=KEYStyleContext()) const
Definition: KEYStyles.cpp:129
Represents a layout style.
Definition: KEYStyles.h:121
boost::optional< KEYAlignment > getAlignment(const KEYStyleContext &context=KEYStyleContext()) const
Definition: KEYStyles.cpp:204
KEYSlideStyle(const KEYPropertyMap &props, const boost::optional< std::string > &ident, const boost::optional< std::string > &parentIdent)
Definition: KEYStyles.cpp:234
Represents a vector style.
Definition: KEYStyles.h:192
virtual KEYStylePtr_t find(const KEYStylesheetPtr_t &stylesheet, const std::string &ident) const =0
KEYCharacterStyle(const KEYPropertyMap &props, const boost::optional< std::string > &ident, const boost::optional< std::string > &parentIdent)
Definition: KEYStyles.cpp:104
boost::shared_ptr< KEYStyle > KEYStylePtr_t
Definition: KEYStyle.h:49
Represents a tabular style.
Definition: KEYStyles.h:181
boost::optional< double > getBaselineShift(const KEYStyleContext &context=KEYStyleContext()) const
virtual KEYStylePtr_t find(const KEYStylesheetPtr_t &stylesheet, const std::string &ident) const
Definition: KEYStyles.cpp:194
Represents a cell style.
Definition: KEYStyles.h:65
virtual KEYStylePtr_t find(const KEYStylesheetPtr_t &stylesheet, const std::string &ident) const
Definition: KEYStyles.cpp:99
virtual bool link(const KEYStylesheetPtr_t &stylesheet)
Find the parent style by its ID.
Definition: KEYStyles.cpp:43
virtual KEYStylePtr_t find(const KEYStylesheetPtr_t &stylesheet, const std::string &ident) const
Definition: KEYStyles.cpp:259
KEYCellStyle(const KEYPropertyMap &props, const boost::optional< std::string > &ident, const boost::optional< std::string > &parentIdent)
Definition: KEYStyles.cpp:94
boost::optional< KEYBaseline > getBaseline(const KEYStyleContext &context=KEYStyleContext()) const
boost::optional< KEYColor > getFontColor(const KEYStyleContext &context=KEYStyleContext()) const
Definition: KEYStyles.cpp:124
A common implementation of a style.
Definition: KEYStyles.h:31
virtual KEYStylePtr_t find(const KEYStylesheetPtr_t &stylesheet, const std::string &ident) const
Definition: KEYStyles.cpp:214
Definition: KEY2Token.h:800
Represents a placeholder style.
Definition: KEYStyles.h:157
boost::any lookup(const char *property, const KEYStyleContext &context=KEYStyleContext()) const
Look up a property in this style.
Definition: KEYStyles.cpp:85
boost::optional< bool > getBold(const KEYStyleContext &context=KEYStyleContext()) const
Definition: KEYStyles.cpp:109
Definition: PAGToken.h:938
Represents a connection style.
Definition: KEYStyles.h:99
KEYStylePtr_t m_parent
Definition: KEYStyles.h:60
boost::optional< KEYCapitalization > getCapitalization(const KEYStyleContext &context=KEYStyleContext()) const
Definition: KEYStyles.cpp:114
virtual KEYStylePtr_t find(const KEYStylesheetPtr_t &stylesheet, const std::string &ident) const
Definition: KEYStyles.cpp:184
KEYConnectionStyle(const KEYPropertyMap &props, const boost::optional< std::string > &ident, const boost::optional< std::string > &parentIdent)
Definition: KEYStyles.cpp:159
KEYPlaceholderStyle(const KEYPropertyMap &props, const boost::optional< std::string > &ident, const boost::optional< std::string > &parentIdent)
Definition: KEYStyles.cpp:219
virtual const KEYPropertyMap & getPropertyMap() const
Get the style's property map.
Definition: KEYStyles.cpp:80
Represents a character style.
Definition: KEYStyles.h:76
Represents a paragraph style.
Definition: KEYStyles.h:143
boost::shared_ptr< KEYGeometry > KEYGeometryPtr_t
Definition: KEYTypes_fwd.h:25
virtual void flatten()
Copy attributes from parent style (recursively).
Definition: KEYStyles.cpp:63
KEYGeometryPtr_t getGeometry(const KEYStyleContext &context=KEYStyleContext()) const
Definition: KEYStyles.cpp:224
virtual KEYStylePtr_t find(const KEYStylesheetPtr_t &stylesheet, const std::string &ident) const
Definition: KEYStyles.cpp:249
virtual KEYStylePtr_t find(const KEYStylesheetPtr_t &stylesheet, const std::string &ident) const
Definition: KEYStyles.cpp:239
Represents a graphic style.
Definition: KEYStyles.h:110
boost::optional< bool > getItalic(const KEYStyleContext &context=KEYStyleContext()) const
Definition: KEYStyles.cpp:119
boost::optional< bool > getUnderline(const KEYStyleContext &context=KEYStyleContext()) const
Definition: KEYStyles.cpp:149
virtual KEYStylePtr_t find(const KEYStylesheetPtr_t &stylesheet, const std::string &ident) const
Definition: KEYStyles.cpp:154
Represents a hierarchical style.
Definition: KEYStyle.h:26
virtual ~KEYStyleBase()
Definition: KEYStyles.cpp:76
boost::optional< bool > getOutline(const KEYStyleContext &context=KEYStyleContext()) const
Definition: KEYStyles.cpp:139
boost::shared_ptr< KEYStylesheet > KEYStylesheetPtr_t
Definition: KEYStylesheet.h:19
Definition: KEY2Token.h:997
Definition: KEY1Token.h:75
virtual KEYStylePtr_t find(const KEYStylesheetPtr_t &stylesheet, const std::string &ident) const
Definition: KEYStyles.cpp:174
Representation of a dynamic inheritance of styles.
Definition: KEYStyleContext.h:34
Represents a slide style.
Definition: KEYStyles.h:170
KEYParagraphStyle(const KEYPropertyMap &props, const boost::optional< std::string > &ident, const boost::optional< std::string > &parentIdent)
Definition: KEYStyles.cpp:199

Generated for libetonyek by doxygen 1.8.7