Warning, file /graphics/krita/sdk/tests/stroke_testing_utils.h was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

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 test();
0036         void benchmark();
0037         void testSimpleStrokeNoVerification();
0038 
0039         void setNumIterations(int value);
0040         void setBaseFuzziness(int value);
0041 
0042         int lastStrokeTime() const;
0043 
0044     protected:
0045         KisStrokeId strokeId() {
0046             return m_strokeId;
0047         }
0048 
0049         virtual void modifyResourceManager(KoCanvasResourceProvider *manager,
0050                                            KisImageWSP image, int iteration);
0051 
0052         virtual void initImage(KisImageWSP image, KisNodeSP activeNode, int iteration);
0053 
0054         // overload
0055         virtual void modifyResourceManager(KoCanvasResourceProvider *manager,
0056                                            KisImageWSP image);
0057 
0058         // overload
0059         virtual void initImage(KisImageWSP image, KisNodeSP activeNode);
0060         virtual void beforeCheckingResult(KisImageWSP image, KisNodeSP activeNode);
0061 
0062         virtual KisStrokeStrategy* createStroke(KisResourcesSnapshotSP resources,
0063                                                 KisImageWSP image) = 0;
0064 
0065         virtual void addPaintingJobs(KisImageWSP image,
0066                                      KisResourcesSnapshotSP resources,
0067                                      int iteration);
0068 
0069         // overload
0070         virtual void addPaintingJobs(KisImageWSP image,
0071                                      KisResourcesSnapshotSP resources);
0072 
0073     private:
0074         void testOneStroke(bool cancelled, bool indirectPainting,
0075                            bool externalLayer, bool testUpdates = false);
0076 
0077         QImage doStroke(bool cancelled,
0078                         bool externalLayer, bool testUpdates = false,
0079                         bool needQImage = true);
0080 
0081         QString formatTestName(const QString &baseName, bool cancelled,
0082                                bool indirectPainting, bool externalLayer);
0083         QString referenceFile(const QString &testName);
0084         QString dumpReferenceFile(const QString &testName);
0085         QString resultFile(const QString &testName);
0086 
0087     private:
0088         KisStrokeId m_strokeId;
0089         QString m_name;
0090         QSize m_imageSize;
0091         QString m_presetFilename;
0092         int m_numIterations;
0093         int m_baseFuzziness;
0094         int m_strokeTime = 0;
0095     };
0096 }
0097 
0098 #endif /* __STROKE_TESTING_UTILS_H */