summaryrefslogtreecommitdiffstats
path: root/chalk/sdk/kis_canvas_subject.h
diff options
context:
space:
mode:
Diffstat (limited to 'chalk/sdk/kis_canvas_subject.h')
-rw-r--r--chalk/sdk/kis_canvas_subject.h192
1 files changed, 192 insertions, 0 deletions
diff --git a/chalk/sdk/kis_canvas_subject.h b/chalk/sdk/kis_canvas_subject.h
new file mode 100644
index 00000000..07713576
--- /dev/null
+++ b/chalk/sdk/kis_canvas_subject.h
@@ -0,0 +1,192 @@
+/*
+ * Copyright (c) 2003 Patrick Julien <freak@codepimps.org>
+ *
+ * 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.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+#ifndef KIS_CANVAS_SUBJECT_H_
+#define KIS_CANVAS_SUBJECT_H_
+
+#include "kis_types.h"
+#include "kis_id.h"
+
+class KisDoc;
+class KisBrush;
+class KisCanvasController;
+class KisCanvasObserver;
+class KisGradient;
+class KisPattern;
+class KisPaintOpFactory;
+class KisToolControllerInterface;
+class KisUndoAdapter;
+class KisProgressDisplayInterface;
+class KisSelectionManager;
+class TQWidget;
+class TQCursor;
+class KisColor;
+class KoPaletteManager;
+class KisProfile;
+class KisPaintOpSettings;
+class KisPerspectiveGridManager;
+
+/**
+ * KisCanvasSubject is part of the Observer pattern. Classes implementing KisCanvasObserver
+ * that have attached themselves to a class implementing this interface will be notified
+ * whenever any of the methods defined in this class will return something different.
+ *
+ * Historical notes: This class has grown a bit an now seems to be the abstract definition
+ * of the View part in the Model-View-Controller pattern. We need to fix this!
+ */
+class KisCanvasSubject {
+
+public:
+ KisCanvasSubject() {};
+ virtual ~KisCanvasSubject() {};
+
+public:
+
+ /**
+ * From now on, the observer will be notified of changes in
+ * brush, foreground color, background color, pattern, gradient
+ * and paintop
+ */
+ virtual void attach(KisCanvasObserver *observer) = 0;
+
+ /**
+ * From now on, the specified observer will no longer be informed
+ * of changes.
+ */
+ virtual void detach(KisCanvasObserver *observer) = 0;
+
+ /**
+ * Calling this method will notify all observers. Do not call this
+ * method from the Update method of a KisCanvasObserver!
+ */
+ virtual void notifyObservers() = 0;
+
+ /**
+ * @return the image that is currently active.
+ */
+ virtual KisImageSP currentImg() const = 0;
+
+ /**
+ * @return the background color
+ */
+ virtual KisColor bgColor() const = 0;
+
+ /**
+ * Set the background color. This should cause all observers to be notified. Do not call from KisCanvasObserver::update()!
+ *
+ * @param c the new background color
+ */
+ virtual void setBGColor(const KisColor& c) = 0;
+
+ /**
+ * @return the currently set foreground or painting color
+ */
+ virtual KisColor fgColor() const = 0;
+
+ /**
+ * Set the foreground or painting color. This should cause all observers to be notified. Do not call from KisCanvasObserver::update()!
+ *
+ * @param c the new foreground color
+ */
+ virtual void setFGColor(const KisColor& c) = 0;
+
+ /**
+ * @return the exposure value. This determines which exposure of multiple exposure or HDR images will be displayed
+ */
+ virtual float HDRExposure() const = 0;
+
+ /**
+ * Set the exposure value. This determines which exposure of multiple exposure or HDR images will be displayed. All observers should be notified.
+ *
+ * @param exposure the new exposure value
+ */
+ virtual void setHDRExposure(float exposure) = 0;
+
+ /**
+ * @return the current brush object.
+ */
+ virtual KisBrush *currentBrush() const = 0;
+
+ /**
+ * @return the current pattern object.
+ */
+ virtual KisPattern *currentPattern() const = 0;
+
+ /**
+ * @return the current gradient object
+ */
+ virtual KisGradient *currentGradient() const = 0;
+
+ /**
+ * @return the identification of the current paintop object, not the paintop object itself.
+ */
+ virtual KisID currentPaintop() const = 0;
+
+ /**
+ * @return the settings for the current paintop object, or 0 if there are no options set.
+ */
+ virtual const KisPaintOpSettings *currentPaintopSettings() const = 0;
+
+ /**
+ * @return the currently applied zoom factor. XXX: Shouldn't this be in the canvas controller?
+ */
+ virtual double zoomFactor() const = 0;
+
+ /**
+ * retrieve the undo adapater -- there is one undo adapter
+ * per document, and it collects all transactions
+ */
+ virtual KisUndoAdapter *undoAdapter() const = 0;
+
+ /**
+ * @return the interface to the canvas widget
+ */
+ virtual KisCanvasController *canvasController() const = 0;
+
+ /// XXX: Remove this method
+ virtual KisToolControllerInterface *toolController() const = 0;
+
+ /// XXX: Remove this method
+ virtual KisDoc * document() const = 0;
+
+ /// XXX: Remove this method
+ virtual KisProgressDisplayInterface *progressDisplay() const = 0;
+
+ /// XXX: Remove this method
+ virtual KisSelectionManager * selectionManager() = 0;
+
+ /// XXX: Remove this method
+ virtual KoPaletteManager * paletteManager() = 0;
+
+ /**
+ * Get the profile that this view uses to display itself on
+ * he monitor.
+ */
+ virtual KisProfile * monitorProfile() = 0;
+
+ /**
+ * Get the perspective grid manager.
+ */
+ virtual KisPerspectiveGridManager* perspectiveGridManager() = 0;
+private:
+ KisCanvasSubject(const KisCanvasSubject&);
+ KisCanvasSubject& operator=(const KisCanvasSubject&);
+};
+
+#endif // KIS_CANVAS_SUBJECT_H_
+