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: */

Generated for libetonyek by doxygen 1.8.3.1