summaryrefslogtreecommitdiffstats
path: root/scribus/styles/stylecontextproxy.h
diff options
context:
space:
mode:
authorcraig <craig@11d20701-8431-0410-a711-e3c959e3b870>2012-01-01 11:40:09 +0000
committercraig <craig@11d20701-8431-0410-a711-e3c959e3b870>2012-01-01 11:40:09 +0000
commit7ed83b6c6666eb8b6b104c211ae7e52907350372 (patch)
tree4430b556abac0ad660a0aacf1887d77f85d8be02 /scribus/styles/stylecontextproxy.h
downloadscribus-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.h78
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