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

Generated for libetonyek by doxygen 1.9.3