File indexing completed on 2025-02-23 04:11:56
0001 /* 0002 * This file is part of Krita 0003 * 0004 * SPDX-FileCopyrightText: 2020 L. E. Segovia <amy@amyspark.me> 0005 * 0006 * SPDX-License-Identifier: GPL-2.0-or-later 0007 */ 0008 0009 #include <KisGlobalResourcesInterface.h> 0010 #include <KisImageResolutionProxy.h> 0011 #include <KoColorSpace.h> 0012 #include <KoColorSpaceRegistry.h> 0013 #include <KoProgressUpdater.h> 0014 #include <KoUpdater.h> 0015 #include <generator/kis_generator_registry.h> 0016 #include <kis_default_bounds.h> 0017 #include <kis_fill_painter.h> 0018 #include <kis_filter_configuration.h> 0019 #include <kis_processing_information.h> 0020 #include <kis_selection.h> 0021 #include <resources/KisSeExprScript.h> 0022 #include <simpletest.h> 0023 #include <testimage.h> 0024 #include <testutil.h> 0025 0026 0027 #include "kis_seexpr_generator_test.h" 0028 0029 #define BASE_SCRIPT \ 0030 "$val=voronoi(5*[$u,$v,.5],4,.6,.2); \n \ 0031 $color=ccurve($val,\n\ 0032 0.000, [0.141, 0.059, 0.051], 4,\n\ 0033 0.185, [0.302, 0.176, 0.122], 4,\n\ 0034 0.301, [0.651, 0.447, 0.165], 4,\n\ 0035 0.462, [0.976, 0.976, 0.976], 4);\n\ 0036 $color\n\ 0037 " 0038 0039 void KisSeExprGeneratorTest::initTestCase() 0040 { 0041 KisGeneratorRegistry::instance(); 0042 } 0043 0044 void KisSeExprGeneratorTest::testGenerationFromScript() 0045 { 0046 KisGeneratorSP generator = KisGeneratorRegistry::instance()->get("seexpr"); 0047 QVERIFY(generator); 0048 0049 KisFilterConfigurationSP config = generator->defaultConfiguration(KisGlobalResourcesInterface::instance()); 0050 QVERIFY(config); 0051 0052 config->setProperty("script", BASE_SCRIPT); 0053 0054 QPoint point(0, 0); 0055 QSize testSize(256, 256); 0056 0057 KisDefaultBoundsBaseSP bounds(new KisWrapAroundBoundsWrapper(new KisDefaultBounds(), QRect(point.x(), point.y(), testSize.width(), testSize.height()))); 0058 const KoColorSpace *cs = KoColorSpaceRegistry::instance()->rgb8(); 0059 KisPaintDeviceSP dev = new KisPaintDevice(cs); 0060 dev->setDefaultBounds(bounds); 0061 dev->setSupportsWraparoundMode(true); 0062 0063 KisFillPainter fillPainter(dev); 0064 fillPainter.fillRect(point.x(), point.y(), 256, 256, config); 0065 0066 QImage qimage(QString(FILES_DATA_DIR) + QDir::separator() + "noisecolor2.png"); 0067 0068 QPoint errpoint; 0069 if (!TestUtil::compareQImages(errpoint, qimage, dev->convertToQImage(nullptr, point.x(), point.y(), testSize.width(), testSize.height()), 1)) { 0070 dev->convertToQImage(nullptr, point.x(), point.y(), testSize.width(), testSize.height()).save("filtertest.png"); 0071 QFAIL(QString("Failed to create image, first different pixel: %1,%2 ").arg(errpoint.x()).arg(errpoint.y()).toLatin1()); 0072 } 0073 } 0074 0075 void KisSeExprGeneratorTest::testGenerationFromKoResource() 0076 { 0077 KisGeneratorSP generator = KisGeneratorRegistry::instance()->get("seexpr"); 0078 QVERIFY(generator); 0079 0080 KisFilterConfigurationSP config = generator->defaultConfiguration(KisGlobalResourcesInterface::instance()); 0081 QVERIFY(config); 0082 0083 auto resource = new KisSeExprScript(TestUtil::fetchDataFileLazy("Disney_noisecolor2.kse")); 0084 resource->load(KisGlobalResourcesInterface::instance()); 0085 Q_ASSERT(resource->valid()); 0086 0087 config->setProperty("script", resource->script()); 0088 0089 QPoint point(0, 0); 0090 QSize testSize(256, 256); 0091 0092 KisDefaultBoundsBaseSP bounds(new KisWrapAroundBoundsWrapper(new KisDefaultBounds(), QRect(point.x(), point.y(), testSize.width(), testSize.height()))); 0093 const KoColorSpace *cs = KoColorSpaceRegistry::instance()->rgb8(); 0094 KisPaintDeviceSP dev = new KisPaintDevice(cs); 0095 dev->setDefaultBounds(bounds); 0096 dev->setSupportsWraparoundMode(true); 0097 0098 KisFillPainter fillPainter(dev); 0099 fillPainter.fillRect(point.x(), point.y(), 256, 256, config); 0100 0101 QImage qimage(QString(FILES_DATA_DIR) + QDir::separator() + "noisecolor2.png"); 0102 0103 QPoint errpoint; 0104 if (!TestUtil::compareQImages(errpoint, qimage, dev->convertToQImage(nullptr, point.x(), point.y(), testSize.width(), testSize.height()), 1)) { 0105 dev->convertToQImage(nullptr, point.x(), point.y(), testSize.width(), testSize.height()).save("filtertest.png"); 0106 QFAIL(QString("Failed to create image, first different pixel: %1,%2 ").arg(errpoint.x()).arg(errpoint.y()).toLatin1()); 0107 } 0108 } 0109 0110 KISTEST_MAIN(KisSeExprGeneratorTest)