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 "KEYPropertyMap.h"
20 #include "KEYStyle.h"
21 #include "KEYStyleContext.h"
22 #include "KEYStyles_fwd.h"
23 
24 namespace libetonyek
25 {
26 
29 class KEYStyleBase : public KEYStyle
30 {
31 public:
32  virtual bool link(const KEYStylesheetPtr_t &stylesheet);
33 
34  virtual void flatten();
35 
36 // ensure that this class cannot be instantiated
37 protected:
38  KEYStyleBase(const KEYPropertyMap &props, const boost::optional<std::string> &ident, const boost::optional<std::string> &parentIdent);
39  virtual ~KEYStyleBase();
40 
41  virtual const KEYPropertyMap &getPropertyMap() const;
42 
43  virtual KEYStylePtr_t find(const KEYStylesheetPtr_t &stylesheet, const std::string &ident) const = 0;
44 
51  boost::any lookup(const char *property, const KEYStyleContext &context = KEYStyleContext()) const;
52 
53 private:
55 
56  const boost::optional<std::string> m_ident;
57  const boost::optional<std::string> m_parentIdent;
59 };
60 
63 class KEYCellStyle : public KEYStyleBase
64 {
65 public:
66  KEYCellStyle(const KEYPropertyMap &props, const boost::optional<std::string> &ident, const boost::optional<std::string> &parentIdent);
67 
68 private:
69  virtual KEYStylePtr_t find(const KEYStylesheetPtr_t &stylesheet, const std::string &ident) const;
70 };
71 
75 {
76 public:
77  KEYCharacterStyle(const KEYPropertyMap &props, const boost::optional<std::string> &ident, const boost::optional<std::string> &parentIdent);
78 
79 private:
80  virtual KEYStylePtr_t find(const KEYStylesheetPtr_t &stylesheet, const std::string &ident) const;
81 };
82 
86 {
87 public:
88  KEYConnectionStyle(const KEYPropertyMap &props, const boost::optional<std::string> &ident, const boost::optional<std::string> &parentIdent);
89 
90 private:
91  virtual KEYStylePtr_t find(const KEYStylesheetPtr_t &stylesheet, const std::string &ident) const;
92 };
93 
97 {
98 public:
99  KEYGraphicStyle(const KEYPropertyMap &props, const boost::optional<std::string> &ident, const boost::optional<std::string> &parentIdent);
100 
101 private:
102  virtual KEYStylePtr_t find(const KEYStylesheetPtr_t &stylesheet, const std::string &ident) const;
103 };
104 
108 {
109 public:
110  KEYLayoutStyle(const KEYPropertyMap &props, const boost::optional<std::string> &ident, const boost::optional<std::string> &parentIdent);
111 
112 private:
113  virtual KEYStylePtr_t find(const KEYStylesheetPtr_t &stylesheet, const std::string &ident) const;
114 };
115 
119 {
120 public:
121  KEYListStyle(const KEYPropertyMap &props, const boost::optional<std::string> &ident, const boost::optional<std::string> &parentIdent);
122 
123 private:
124  virtual KEYStylePtr_t find(const KEYStylesheetPtr_t &stylesheet, const std::string &ident) const;
125 };
126 
130 {
131 public:
132  KEYParagraphStyle(const KEYPropertyMap &props, const boost::optional<std::string> &ident, const boost::optional<std::string> &parentIdent);
133 
134 private:
135  virtual KEYStylePtr_t find(const KEYStylesheetPtr_t &stylesheet, const std::string &ident) const;
136 };
137 
141 {
142 public:
143  KEYPlaceholderStyle(const KEYPropertyMap &props, const boost::optional<std::string> &ident, const boost::optional<std::string> &parentIdent);
144 
146 
147 private:
148  virtual KEYStylePtr_t find(const KEYStylesheetPtr_t &stylesheet, const std::string &ident) const;
149 };
150 
154 {
155 public:
156  KEYSlideStyle(const KEYPropertyMap &props, const boost::optional<std::string> &ident, const boost::optional<std::string> &parentIdent);
157 
158 private:
159  virtual KEYStylePtr_t find(const KEYStylesheetPtr_t &stylesheet, const std::string &ident) const;
160 };
161 
165 {
166 public:
167  KEYTabularStyle(const KEYPropertyMap &props, const boost::optional<std::string> &ident, const boost::optional<std::string> &parentIdent);
168 
169 private:
170  virtual KEYStylePtr_t find(const KEYStylesheetPtr_t &stylesheet, const std::string &ident) const;
171 };
172 
176 {
177 public:
178  KEYVectorStyle(const KEYPropertyMap &props, const boost::optional<std::string> &ident, const boost::optional<std::string> &parentIdent);
179 
180 private:
181  virtual KEYStylePtr_t find(const KEYStylesheetPtr_t &stylesheet, const std::string &ident) const;
182 };
183 
184 }
185 
186 #endif // KEYSTYLES_H_INCLUDED
187 
188 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */
virtual KEYStylePtr_t find(const KEYStylesheetPtr_t &stylesheet, const std::string &ident) const
Definition: KEYStyles.cpp:119
KEYListStyle(const KEYPropertyMap &props, const boost::optional< std::string > &ident, const boost::optional< std::string > &parentIdent)
Definition: KEYStyles.cpp:144
KEYVectorStyle(const KEYPropertyMap &props, const boost::optional< std::string > &ident, const boost::optional< std::string > &parentIdent)
Definition: KEYStyles.cpp:199
const boost::optional< std::string > m_ident
Definition: KEYStyles.h:56
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:189
KEYGraphicStyle(const KEYPropertyMap &props, const boost::optional< std::string > &ident, const boost::optional< std::string > &parentIdent)
Definition: KEYStyles.cpp:124
virtual KEYStylePtr_t find(const KEYStylesheetPtr_t &stylesheet, const std::string &ident) const
Definition: KEYStyles.cpp:174
KEYLayoutStyle(const KEYPropertyMap &props, const boost::optional< std::string > &ident, const boost::optional< std::string > &parentIdent)
Definition: KEYStyles.cpp:134
KEYPropertyMap m_props
Definition: KEYStyles.h:54
const boost::optional< std::string > m_parentIdent
Definition: KEYStyles.h:57
Represents a (hierarchical) property map.
Definition: KEYPropertyMap.h:21
Represents a list style.
Definition: KEYStyles.h:118
Represents a layout style.
Definition: KEYStyles.h:107
KEYSlideStyle(const KEYPropertyMap &props, const boost::optional< std::string > &ident, const boost::optional< std::string > &parentIdent)
Definition: KEYStyles.cpp:179
Represents a vector style.
Definition: KEYStyles.h:175
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:164
virtual KEYStylePtr_t find(const KEYStylesheetPtr_t &stylesheet, const std::string &ident) const
Definition: KEYStyles.cpp:149
Represents a cell style.
Definition: KEYStyles.h:63
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:204
KEYCellStyle(const KEYPropertyMap &props, const boost::optional< std::string > &ident, const boost::optional< std::string > &parentIdent)
Definition: KEYStyles.cpp:94
A common implementation of a style.
Definition: KEYStyles.h:29
virtual KEYStylePtr_t find(const KEYStylesheetPtr_t &stylesheet, const std::string &ident) const
Definition: KEYStyles.cpp:159
Definition: KEY2Token.h:799
Represents a placeholder style.
Definition: KEYStyles.h:140
boost::any lookup(const char *property, const KEYStyleContext &context=KEYStyleContext()) const
Look up a property in this style.
Definition: KEYStyles.cpp:85
Represents a connection style.
Definition: KEYStyles.h:85
KEYStylePtr_t m_parent
Definition: KEYStyles.h:58
virtual KEYStylePtr_t find(const KEYStylesheetPtr_t &stylesheet, const std::string &ident) const
Definition: KEYStyles.cpp:139
KEYConnectionStyle(const KEYPropertyMap &props, const boost::optional< std::string > &ident, const boost::optional< std::string > &parentIdent)
Definition: KEYStyles.cpp:114
KEYPlaceholderStyle(const KEYPropertyMap &props, const boost::optional< std::string > &ident, const boost::optional< std::string > &parentIdent)
Definition: KEYStyles.cpp:164
virtual const KEYPropertyMap & getPropertyMap() const
Get the style&#39;s property map.
Definition: KEYStyles.cpp:80
Represents a character style.
Definition: KEYStyles.h:74
Represents a paragraph style.
Definition: KEYStyles.h:129
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:169
virtual KEYStylePtr_t find(const KEYStylesheetPtr_t &stylesheet, const std::string &ident) const
Definition: KEYStyles.cpp:194
virtual KEYStylePtr_t find(const KEYStylesheetPtr_t &stylesheet, const std::string &ident) const
Definition: KEYStyles.cpp:184
Represents a graphic style.
Definition: KEYStyles.h:96
virtual KEYStylePtr_t find(const KEYStylesheetPtr_t &stylesheet, const std::string &ident) const
Definition: KEYStyles.cpp:109
Represents a hierarchical style.
Definition: KEYStyle.h:26
virtual ~KEYStyleBase()
Definition: KEYStyles.cpp:76
boost::shared_ptr< KEYStylesheet > KEYStylesheetPtr_t
Definition: KEYStylesheet.h:19
Definition: KEY2Token.h:996
Definition: KEY1Token.h:75
virtual KEYStylePtr_t find(const KEYStylesheetPtr_t &stylesheet, const std::string &ident) const
Definition: KEYStyles.cpp:129
Representation of a dynamic inheritance of styles.
Definition: KEYStyleContext.h:34
Represents a slide style.
Definition: KEYStyles.h:153
KEYParagraphStyle(const KEYPropertyMap &props, const boost::optional< std::string > &ident, const boost::optional< std::string > &parentIdent)
Definition: KEYStyles.cpp:154

Generated for libetonyek by doxygen 1.8.5