File indexing completed on 2024-05-12 15:58:22
0001 /* 0002 * SPDX-FileCopyrightText: 2011 Dmitry Kazakov <dimula73@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #ifndef __KIS_IMAGE_INTERFACES_H 0008 #define __KIS_IMAGE_INTERFACES_H 0009 0010 #include "kis_types.h" 0011 #include <kritaimage_export.h> 0012 0013 class QRect; 0014 class KisStrokeStrategy; 0015 class KisStrokeJobData; 0016 class KisPostExecutionUndoAdapter; 0017 0018 0019 class KRITAIMAGE_EXPORT KisStrokesFacade 0020 { 0021 public: 0022 virtual ~KisStrokesFacade(); 0023 virtual KisStrokeId startStroke(KisStrokeStrategy *strokeStrategy) = 0; 0024 virtual void addJob(KisStrokeId id, KisStrokeJobData *data) = 0; 0025 virtual void endStroke(KisStrokeId id) = 0; 0026 virtual bool cancelStroke(KisStrokeId id) = 0; 0027 }; 0028 0029 class KRITAIMAGE_EXPORT KisUpdatesFacade 0030 { 0031 public: 0032 virtual ~KisUpdatesFacade(); 0033 0034 virtual void blockUpdates() = 0; 0035 virtual void unblockUpdates() = 0; 0036 0037 virtual void disableUIUpdates() = 0; 0038 virtual QVector<QRect> enableUIUpdates() = 0; 0039 0040 virtual bool hasUpdatesRunning() const = 0; 0041 0042 virtual void notifyBatchUpdateStarted() = 0; 0043 virtual void notifyBatchUpdateEnded() = 0; 0044 virtual void notifyUIUpdateCompleted(const QRect &rc) = 0; 0045 0046 virtual QRect bounds() const = 0; 0047 0048 virtual void disableDirtyRequests() = 0; 0049 virtual void enableDirtyRequests() = 0; 0050 0051 enum UpdateFlag { 0052 None = 0x0, 0053 NoFilthyUpdate = 0x1 0054 }; 0055 Q_DECLARE_FLAGS(UpdateFlags, UpdateFlag) 0056 0057 virtual void refreshGraphAsync(KisNodeSP root, UpdateFlags flags = None) = 0; 0058 virtual void refreshGraphAsync(KisNodeSP root, const QRect &rc, UpdateFlags flags = None) = 0; 0059 virtual void refreshGraphAsync(KisNodeSP root, const QRect &rc, const QRect &cropRect, UpdateFlags flags = None) = 0; 0060 virtual void refreshGraphAsync(KisNodeSP root, const QVector<QRect> &rc, const QRect &cropRect, UpdateFlags flags = None) = 0; 0061 0062 virtual KisProjectionUpdatesFilterCookie addProjectionUpdatesFilter(KisProjectionUpdatesFilterSP filter) = 0; 0063 virtual KisProjectionUpdatesFilterSP removeProjectionUpdatesFilter(KisProjectionUpdatesFilterCookie cookie) = 0; 0064 virtual KisProjectionUpdatesFilterCookie currentProjectionUpdatesFilter() const = 0; 0065 0066 }; 0067 0068 Q_DECLARE_OPERATORS_FOR_FLAGS(KisUpdatesFacade::UpdateFlags); 0069 0070 class KRITAIMAGE_EXPORT KisProjectionUpdateListener 0071 { 0072 public: 0073 virtual ~KisProjectionUpdateListener(); 0074 virtual void notifyProjectionUpdated(const QRect &rc) = 0; 0075 }; 0076 0077 class KRITAIMAGE_EXPORT KisStrokeUndoFacade 0078 { 0079 public: 0080 virtual ~KisStrokeUndoFacade(); 0081 virtual KisPostExecutionUndoAdapter* postExecutionUndoAdapter() const = 0; 0082 virtual const KUndo2Command* lastExecutedCommand() const = 0; 0083 }; 0084 0085 #endif /* __KIS_IMAGE_INTERFACES_H */