File indexing completed on 2024-05-19 04:32:39
0001 /* 0002 * SPDX-FileCopyrightText: 2011 Dmitry Kazakov <dimula73@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #ifndef __STROKE_TESTING_UTILS_H 0008 #define __STROKE_TESTING_UTILS_H 0009 0010 #include <QString> 0011 #include <KoCanvasResourceProvider.h> 0012 #include "kis_node.h" 0013 #include "kis_types.h" 0014 #include "kis_stroke_strategy.h" 0015 #include "kis_resources_snapshot.h" 0016 0017 0018 class KisUndoStore; 0019 0020 0021 namespace utils { 0022 0023 KisImageSP createImage(KisUndoStore *undoStore, const QSize &imageSize); 0024 KoCanvasResourceProvider* createResourceManager(KisImageWSP image, 0025 KisNodeSP node = 0, 0026 const QString &presetFileName = "autobrush_300px.kpp"); 0027 0028 class StrokeTester 0029 { 0030 public: 0031 StrokeTester(const QString &name, const QSize &imageSize, const QString &presetFileName = "autobrush_300px.kpp"); 0032 virtual ~StrokeTester(); 0033 0034 void testSimpleStroke(); 0035 void testSimpleStrokeCancelled(); 0036 void test(); 0037 void benchmark(); 0038 void testSimpleStrokeNoVerification(); 0039 0040 void setNumIterations(int value); 0041 void setBaseFuzziness(int value); 0042 void setCancelOnIteration(int value); 0043 0044 int lastStrokeTime() const; 0045 0046 protected: 0047 KisStrokeId strokeId() { 0048 return m_strokeId; 0049 } 0050 0051 virtual void modifyResourceManager(KoCanvasResourceProvider *manager, 0052 KisImageWSP image, int iteration); 0053 0054 virtual void initImage(KisImageWSP image, KisNodeSP activeNode, int iteration); 0055 0056 // overload 0057 virtual void modifyResourceManager(KoCanvasResourceProvider *manager, 0058 KisImageWSP image); 0059 0060 // overload 0061 virtual void initImage(KisImageWSP image, KisNodeSP activeNode); 0062 virtual void beforeCheckingResult(KisImageWSP image, KisNodeSP activeNode); 0063 virtual void iterationEndedCallback(KisImageWSP image, KisNodeSP activeNode, int iteration); 0064 0065 virtual KisStrokeStrategy* createStroke(KisResourcesSnapshotSP resources, 0066 KisImageWSP image) = 0; 0067 0068 virtual void addPaintingJobs(KisImageWSP image, 0069 KisResourcesSnapshotSP resources, 0070 int iteration); 0071 0072 // overload 0073 virtual void addPaintingJobs(KisImageWSP image, 0074 KisResourcesSnapshotSP resources); 0075 0076 private: 0077 void testOneStroke(bool cancelled, bool indirectPainting, 0078 bool externalLayer, bool testUpdates = false); 0079 0080 QImage doStroke(bool cancelled, 0081 bool externalLayer, bool testUpdates = false, 0082 bool needQImage = true); 0083 0084 QString formatTestName(const QString &baseName, bool cancelled, 0085 bool indirectPainting, bool externalLayer); 0086 QString referenceFile(const QString &testName); 0087 QString dumpReferenceFile(const QString &testName); 0088 QString resultFile(const QString &testName); 0089 0090 private: 0091 KisStrokeId m_strokeId; 0092 QString m_name; 0093 QSize m_imageSize; 0094 QString m_presetFilename; 0095 int m_numIterations; 0096 int m_baseFuzziness; 0097 int m_strokeTime = 0; 0098 int m_cancelOnIteration = 0; 0099 }; 0100 } 0101 0102 #endif /* __STROKE_TESTING_UTILS_H */