diff options
| author | craig <craig@11d20701-8431-0410-a711-e3c959e3b870> | 2012-01-01 11:40:09 +0000 |
|---|---|---|
| committer | craig <craig@11d20701-8431-0410-a711-e3c959e3b870> | 2012-01-01 11:40:09 +0000 |
| commit | 7ed83b6c6666eb8b6b104c211ae7e52907350372 (patch) | |
| tree | 4430b556abac0ad660a0aacf1887d77f85d8be02 /scribus/styles/stylecontextproxy.h | |
| download | scribus-7ed83b6c6666eb8b6b104c211ae7e52907350372.tar.gz scribus-7ed83b6c6666eb8b6b104c211ae7e52907350372.tar.xz scribus-7ed83b6c6666eb8b6b104c211ae7e52907350372.zip | |
Branch 1.3.5 tree to 1.4.x tree, goodbye 1.3.x
git-svn-id: svn://scribus.net/branches/Version14x/Scribus@17163 11d20701-8431-0410-a711-e3c959e3b870
Diffstat (limited to 'scribus/styles/stylecontextproxy.h')
| -rw-r--r-- | scribus/styles/stylecontextproxy.h | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/scribus/styles/stylecontextproxy.h b/scribus/styles/stylecontextproxy.h new file mode 100644 index 0000000..3cb7a02 --- /dev/null +++ b/scribus/styles/stylecontextproxy.h @@ -0,0 +1,78 @@ +/* + For general Scribus (>=1.3.2) copyright and licensing information please refer + to the COPYING file provided with the program. Following this notice may exist + a copyright and/or license notice that predates the release of Scribus 1.3.2 + for which a new license (GPL+exception) is in place. + */ +/*************************************************************************** +* * +* This program is free software; you can redistribute it and/or modify * +* it under the terms of the GNU General Public License as published by * +* the Free Software Foundation; either version 2 of the License, or * +* (at your option) any later version. * +* * +***************************************************************************/ + + +#ifndef STYLECONTEXTPROXY_H +#define STYLECONTEXTPROXY_H + +#include <cassert> +#include <QString> +#include "scfonts.h" +#include "scribusapi.h" +#include "sccolor.h" +#include "styles/stylecontext.h" +#include <QList> + + +/** This class turns a style into a new stylecontext: +* it maps the empty name "" to the given default style and uses +* the style's context to resolve all other names. +*/ +class StyleContextProxy: public StyleContext +{ +public: + const Style* resolve(const QString& name) const; + + StyleContextProxy(const Style* style) + : StyleContext(), m_default(style) { + } + + StyleContextProxy(const StyleContextProxy& other) + : StyleContext(other), m_default(other.m_default) { + } + + StyleContextProxy& operator= (const StyleContextProxy& other) + { + static_cast<StyleContext&>(*this) = static_cast<const StyleContext&>(other); + m_default = other.m_default; + return *this; + } + + const Style* defaultStyle() const { return m_default; } + + void setDefaultStyle(const Style* def) { + assert(def); + m_default = def; + invalidate(); + } + + bool checkConsistency() const + { + const StyleContext* context = m_default->context(); + return !context || context == this || !context->contextContained(this); + } + + bool contextContained(const StyleContext* context) const + { + const StyleContext* mycontext = m_default->context(); + return context == this || + (mycontext && mycontext->contextContained(context)); + } + +private: + const Style* m_default; +}; + +#endif |
