File indexing completed on 2024-06-23 04:27:06
0001 /* 0002 * KDE. Krita Project. 0003 * 0004 * SPDX-FileCopyrightText: 2020 Deif Lou <ginoba@gmail.com> 0005 * 0006 * SPDX-License-Identifier: GPL-2.0-or-later 0007 */ 0008 0009 #include <KisGlobalResourcesInterface.h> 0010 #include <KoColorSpace.h> 0011 #include <KoColorSpaceRegistry.h> 0012 #include <KoProgressUpdater.h> 0013 #include <KoUpdater.h> 0014 #include <generator/kis_generator_registry.h> 0015 #include <kis_filter_configuration.h> 0016 #include <kis_processing_information.h> 0017 #include <kis_selection.h> 0018 #include <simpletest.h> 0019 #include <testimage.h> 0020 #include <testutil.h> 0021 0022 0023 #include "KisScreentoneGeneratorTest.h" 0024 0025 void KisScreentoneGeneratorTest::initTestCase() 0026 { 0027 KisGeneratorRegistry::instance(); 0028 } 0029 0030 void testGenerate(const QString &testName, const QHash<QString, QVariant> &properties) 0031 { 0032 KisGeneratorSP generator = KisGeneratorRegistry::instance()->get("screentone"); 0033 QVERIFY(generator); 0034 0035 KisFilterConfigurationSP config = generator->defaultConfiguration(KisGlobalResourcesInterface::instance()); 0036 QVERIFY(config); 0037 0038 KisPaintDeviceSP paintDevice = new KisPaintDevice(KoColorSpaceRegistry::instance()->rgb8()); 0039 KisProcessingInformation processingInformation(paintDevice, QPoint(0, 0), KisSelectionSP()); 0040 TestUtil::TestProgressBar *testProgressBar = new TestUtil::TestProgressBar(); 0041 KoProgressUpdater *progressUpdater = new KoProgressUpdater(testProgressBar); 0042 KoUpdaterPtr updater = progressUpdater->startSubtask(); 0043 0044 QSize testImageSize(256, 256); 0045 0046 QHashIterator<QString, QVariant> it(properties); 0047 while (it.hasNext()) { 0048 it.next(); 0049 config->setProperty(it.key(), it.value()); 0050 } 0051 0052 generator->generate(processingInformation, testImageSize, config, updater); 0053 0054 QImage referenceImage(QString(FILES_DATA_DIR) + QDir::separator() + testName + ".png"); 0055 QImage deviceImage = paintDevice->convertToQImage(0, 0, 0, testImageSize.width(), testImageSize.height()); 0056 0057 QPoint differingPoint; 0058 if (!TestUtil::compareQImages(differingPoint, referenceImage, deviceImage)) { 0059 deviceImage.save(testName + "_generated.png"); 0060 QFAIL(QString(testName + ": failed to compare images, first different pixel: %1,%2 ").arg(differingPoint.x()).arg(differingPoint.y()).toLatin1()); 0061 } 0062 0063 delete progressUpdater; 0064 delete testProgressBar; 0065 } 0066 0067 void KisScreentoneGeneratorTest::testGenerate01() 0068 { 0069 QHash<QString, QVariant> properties; 0070 0071 properties.insert("equalization_mode", 0); 0072 properties.insert("brightness", 70); 0073 0074 testGenerate("test01", properties); 0075 } 0076 0077 void KisScreentoneGeneratorTest::testGenerate02() 0078 { 0079 QHash<QString, QVariant> properties; 0080 0081 properties.insert("equalization_mode", 1); 0082 properties.insert("brightness", 70); 0083 0084 testGenerate("test02", properties); 0085 } 0086 0087 void KisScreentoneGeneratorTest::testGenerate03() 0088 { 0089 QHash<QString, QVariant> properties; 0090 0091 properties.insert("equalization_mode", 2); 0092 properties.insert("brightness", 70); 0093 0094 testGenerate("test03", properties); 0095 } 0096 0097 void KisScreentoneGeneratorTest::testGenerate04() 0098 { 0099 QHash<QString, QVariant> properties; 0100 0101 properties.insert("equalization_mode", 0); 0102 properties.insert("align_to_pixel_grid", false); 0103 properties.insert("brightness", 70); 0104 0105 testGenerate("test04", properties); 0106 } 0107 0108 void KisScreentoneGeneratorTest::testGenerate05() 0109 { 0110 QHash<QString, QVariant> properties; 0111 0112 properties.insert("equalization_mode", 1); 0113 properties.insert("align_to_pixel_grid", false); 0114 properties.insert("brightness", 70); 0115 0116 testGenerate("test05", properties); 0117 } 0118 0119 void KisScreentoneGeneratorTest::testGenerate06() 0120 { 0121 QHash<QString, QVariant> properties; 0122 0123 properties.insert("equalization_mode", 2); 0124 properties.insert("align_to_pixel_grid", false); 0125 properties.insert("brightness", 70); 0126 0127 testGenerate("test06", properties); 0128 } 0129 0130 void KisScreentoneGeneratorTest::testGenerate07() 0131 { 0132 QHash<QString, QVariant> properties; 0133 0134 properties.insert("pattern", 1); 0135 properties.insert("shape", 1); 0136 properties.insert("equalization_mode", 0); 0137 0138 properties.insert("size_mode", 1); 0139 properties.insert("keep_size_square", false); 0140 properties.insert("size_x", 100.0); 0141 properties.insert("rotation", 15.0); 0142 0143 QVariant v; 0144 v.setValue(KoColor(QColor(255, 0, 0), KoColorSpaceRegistry::instance()->rgb8())); 0145 properties.insert("foreground_color", v); 0146 properties.insert("background_opacity", 0); 0147 properties.insert("brightness", 75); 0148 properties.insert("contrast", 90); 0149 0150 testGenerate("test07", properties); 0151 } 0152 0153 void KisScreentoneGeneratorTest::testGenerate08() 0154 { 0155 QHash<QString, QVariant> properties; 0156 0157 properties.insert("pattern", 1); 0158 properties.insert("shape", 1); 0159 properties.insert("equalization_mode", 1); 0160 0161 properties.insert("size_mode", 1); 0162 properties.insert("keep_size_square", false); 0163 properties.insert("size_x", 100.0); 0164 properties.insert("rotation", 15.0); 0165 0166 QVariant v; 0167 v.setValue(KoColor(QColor(255, 0, 0), KoColorSpaceRegistry::instance()->rgb8())); 0168 properties.insert("foreground_color", v); 0169 properties.insert("background_opacity", 0); 0170 properties.insert("brightness", 75); 0171 properties.insert("contrast", 90); 0172 0173 testGenerate("test08", properties); 0174 } 0175 0176 void KisScreentoneGeneratorTest::testGenerate09() 0177 { 0178 QHash<QString, QVariant> properties; 0179 0180 properties.insert("pattern", 1); 0181 properties.insert("shape", 1); 0182 properties.insert("equalization_mode", 2); 0183 0184 properties.insert("size_mode", 1); 0185 properties.insert("keep_size_square", false); 0186 properties.insert("size_x", 100.0); 0187 properties.insert("rotation", 15.0); 0188 0189 QVariant v; 0190 v.setValue(KoColor(QColor(255, 0, 0), KoColorSpaceRegistry::instance()->rgb8())); 0191 properties.insert("foreground_color", v); 0192 properties.insert("background_opacity", 0); 0193 properties.insert("brightness", 75); 0194 properties.insert("contrast", 90); 0195 0196 testGenerate("test09", properties); 0197 } 0198 0199 KISTEST_MAIN(KisScreentoneGeneratorTest)