File indexing completed on 2024-05-12 15:58:37
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_PROCESSING_VISITOR_H 0008 #define __KIS_PROCESSING_VISITOR_H 0009 0010 #include "kritaimage_export.h" 0011 #include "kis_shared.h" 0012 0013 #include <QMutex> 0014 0015 class KisNode; 0016 class KoUpdater; 0017 class KoProgressUpdater; 0018 class KisUndoAdapter; 0019 class KisPaintLayer; 0020 class KisGroupLayer; 0021 class KisAdjustmentLayer; 0022 class KisExternalLayer; 0023 class KisCloneLayer; 0024 class KisFilterMask; 0025 class KisTransformMask; 0026 class KisTransparencyMask; 0027 class KisSelectionMask; 0028 class KisGeneratorLayer; 0029 class KisColorizeMask; 0030 class KUndo2Command; 0031 0032 /** 0033 * A visitor that processes a single layer; it does not recurse into the 0034 * layer's children. Classes inheriting KisProcessingVisitor must not 0035 * emit signals or ask the image to update the projection. 0036 */ 0037 class KRITAIMAGE_EXPORT KisProcessingVisitor : public KisShared 0038 { 0039 public: 0040 virtual ~KisProcessingVisitor(); 0041 0042 virtual void visit(KisNode *node, KisUndoAdapter *undoAdapter) = 0; 0043 virtual void visit(KisPaintLayer *layer, KisUndoAdapter *undoAdapter) = 0; 0044 virtual void visit(KisGroupLayer *layer, KisUndoAdapter *undoAdapter) = 0; 0045 virtual void visit(KisAdjustmentLayer *layer, KisUndoAdapter *undoAdapter) = 0; 0046 virtual void visit(KisExternalLayer *layer, KisUndoAdapter *undoAdapter) = 0; 0047 virtual void visit(KisGeneratorLayer *layer, KisUndoAdapter *undoAdapter) = 0; 0048 virtual void visit(KisCloneLayer *layer, KisUndoAdapter *undoAdapter) = 0; 0049 virtual void visit(KisFilterMask *mask, KisUndoAdapter *undoAdapter) = 0; 0050 virtual void visit(KisTransformMask *mask, KisUndoAdapter *undoAdapter) = 0; 0051 virtual void visit(KisTransparencyMask *mask, KisUndoAdapter *undoAdapter) = 0; 0052 virtual void visit(KisColorizeMask *mask, KisUndoAdapter *undoAdapter) = 0; 0053 virtual void visit(KisSelectionMask *mask, KisUndoAdapter *undoAdapter) = 0; 0054 0055 /** 0056 * Create a command that initializes the processing visitor before running 0057 * on all the layers. The command is executed sequentially, non-exclusively 0058 * on the image by applicator. 0059 */ 0060 virtual KUndo2Command* createInitCommand(); 0061 0062 public: 0063 class KRITAIMAGE_EXPORT ProgressHelper { 0064 public: 0065 ProgressHelper(const KisNode *node); 0066 ~ProgressHelper(); 0067 0068 KoUpdater* updater() const; 0069 private: 0070 KoProgressUpdater *m_progressUpdater; 0071 }; 0072 }; 0073 0074 #endif /* __KIS_PROCESSING_VISITOR_H */