void ut_flip::testQuillImage() { QuillImage image(Unittests::generatePaletteImage()); image.setFullImageSize(QSize(16, 4)); image.setArea(QRect(0, 0, 8, 2)); QuillImageFilter *filter = new QuillImageFilter("org.maemo.flip"); QVERIFY(filter->isValid()); // Flip vertical QuillImage image2 = filter->apply(image); QCOMPARE((QImage)image2, image.mirrored(false, true)); QCOMPARE(image2.fullImageSize(), QSize(16, 4)); QCOMPARE(image2.area(), QRect(0, 2, 8,2)); // Flip horizontal filter->setOption(QuillImageFilter::Horizontal, true); QuillImage image3 = filter->apply(image2); QCOMPARE((QImage)image3, image.mirrored(true, true)); QCOMPARE(image3.fullImageSize(), QSize(16, 4)); QCOMPARE(image3.area(), QRect(8, 2, 8, 2)); delete filter; }
void ut_load::testLoadSameFilterTwice() { QTemporaryFile testFile; testFile.open(); QImage greenTestImage("/usr/share/quillimagefilter-tests/images/854x480_blue.png"); // Verify whether image exists QVERIFY(!greenTestImage.isNull()); greenTestImage.save(testFile.fileName(), "jpg"); QuillImage target = QuillImage(); target.setFullImageSize(QSize(854, 480)); target.setArea(QRect(0, 0, 854, 480)); QuillImage target2 = QuillImage(); target2.setFullImageSize(QSize(854, 480)); target2.setArea(QRect(0, 0, 854, 480)); QuillImageFilter *filter = QuillImageFilterFactory::createImageFilter("org.maemo.load"); filter->setOption(QuillImageFilter::FileName, testFile.fileName()); // Passing JPEG through the filter QuillImage imageAfter = filter->apply(target); // Passing JPEG through the filter QuillImage imageAfter2 = filter->apply(target2); // Checking the red channel value which should be always bigger than that of greeen channel QVERIFY( qBlue(imageAfter.pixel(QPoint(0, 0))) > qGreen(imageAfter.pixel(QPoint(0, 0))) ); // Checking the red channel value which should be always bigger than that of greeen channel QVERIFY( qBlue(imageAfter2.pixel(QPoint(0, 0))) > qGreen(imageAfter2.pixel(QPoint(0, 0))) ); delete filter; }
void ut_scale::testScaleFilter() { QuillImageFilter *filter = QuillImageFilterFactory::createImageFilter("org.maemo.scale"); QVERIFY(filter); QVERIFY(filter->supportsOption(QuillImageFilter::SizeAfter)); // Assuming full image, rescaling to half size QVERIFY(filter->setOption(QuillImageFilter::SizeAfter, QSize(4, 1))); QCOMPARE(filter->option(QuillImageFilter::SizeAfter), QVariant(QSize(4, 1))); QImage image = Unittests::generatePaletteImage(); QCOMPARE(image.size(), QSize(8, 2)); QImage filteredImage = filter->apply(image); QCOMPARE(filteredImage, image.scaled(QSize(4, 1), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); // full image, rescaling to different aspect ratio QVERIFY(filter->setOption(QuillImageFilter::SizeAfter, QSize(2, 8))); filteredImage = filter->apply(image); QCOMPARE(filteredImage, image.scaled(QSize(2, 8), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); delete filter; }
void ut_rotate::testQuillImage() { QuillImage image(Unittests::generatePaletteImage()); image.setFullImageSize(QSize(16, 4)); image.setArea(QRect(0, 0, 8, 2)); QuillImageFilter *filter = QuillImageFilterFactory::createImageFilter("org.maemo.rotate"); QVERIFY(filter); // Rotate 90 degrees cw QuillImage image2 = filter->apply(image); QCOMPARE((QImage)image2, image.transformed(QTransform().rotate(90))); QCOMPARE(image2.fullImageSize(), QSize(4, 16)); QCOMPARE(image2.area(), QRect(2, 0, 2, 8)); // Rotate 180 degrees cw filter->setOption(QuillImageFilter::Angle, 180); QuillImage image3 = filter->apply(image2); QCOMPARE((QImage)image3, image.transformed(QTransform().rotate(-90))); QCOMPARE(image3.fullImageSize(), QSize(4, 16)); QCOMPARE(image3.area(), QRect(0, 8, 2, 8)); // Rotate 90 degrees ccw filter->setOption(QuillImageFilter::Angle, -90); QuillImage image4 = filter->apply(image3); QCOMPARE((QImage)image4, image.transformed(QTransform().rotate(180))); QCOMPARE(image4.fullImageSize(), QSize(16, 4)); QCOMPARE(image4.area(), QRect(8, 2, 8, 2)); delete filter; }
void ut_rotate::testRotateFilter() { QuillImageFilter *filter = QuillImageFilterFactory::createImageFilter("org.maemo.rotate"); QVERIFY(filter); QVERIFY(filter->supportsOption(QuillImageFilter::Angle)); QVERIFY(filter->setOption(QuillImageFilter::Angle, QVariant(90))); bool bOK = true; QCOMPARE(filter->option(QuillImageFilter::Angle).toDouble(&bOK), 90.0); QVERIFY(bOK); QuillImage image = Unittests::generatePaletteImage(); QCOMPARE(image.size(), QSize(8, 2)); QuillImage filteredImage = filter->apply(image); QCOMPARE(filteredImage.size(), QSize(2, 8)); // Get reference image with QImage::transformed() QuillImage compareToQImage = image.transformed(QTransform().rotate(90)); QCOMPARE(filteredImage, compareToQImage); // Four rotates should produce the original image QCOMPARE(filter->apply(filter->apply(filter->apply(filteredImage))), image); delete filter; }
void ut_scale::testScaleTiled() { QuillImageFilter *filter = QuillImageFilterFactory::createImageFilter("org.maemo.scale"); QVERIFY(filter->setOption(QuillImageFilter::SizeAfter, QSize(4, 1))); QCOMPARE(filter->newFullImageSize(QSize(8, 2)), QSize(4, 1)); QCOMPARE(filter->newFullImageSize(QSize(4, 4)), QSize(4, 1)); // Rounded down QCOMPARE(filter->newArea(QSize(8, 2), QRect(2, 0, 3, 2)), QRect(1, 0, 1, 1)); QImage image = Unittests::generatePaletteImage(); QuillImage image1 = image.copy(0, 0, 3, 2); image1.setFullImageSize(QSize(8, 2)); image1.setArea(QRect(0, 0, 3, 2)); QuillImage resultImage1 = filter->apply(image1); QCOMPARE(resultImage1.area(), QRect(0, 0, 1, 1)); QCOMPARE(resultImage1.fullImageSize(), QSize(4, 1)); QCOMPARE((QImage)resultImage1, image1.scaled(QSize(1, 1), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); QuillImage image2 = image.copy(3, 0, 3, 2); image2.setFullImageSize(QSize(8, 2)); image2.setArea(QRect(3, 0, 3, 2)); QuillImage resultImage2 = filter->apply(image2); QCOMPARE(resultImage2.area(), QRect(1, 0, 2, 1)); QCOMPARE(resultImage2.fullImageSize(), QSize(4, 1)); QCOMPARE((QImage)resultImage2, image2.scaled(QSize(2, 1), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); QuillImage image3 = image.copy(6, 0, 2, 2); image3.setFullImageSize(QSize(8, 2)); image3.setArea(QRect(6, 0, 2, 2)); QuillImage resultImage3 = filter->apply(image3); QCOMPARE(resultImage3.area(), QRect(3, 0, 1, 1)); QCOMPARE(resultImage3.fullImageSize(), QSize(4, 1)); QCOMPARE((QImage)resultImage3, image3.scaled(QSize(1, 1), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); delete filter; }
// Such a strong downscaling that some tiles get resized into 0x0 void ut_scale::testScaleToMinimal() { QuillImageFilter *filter = QuillImageFilterFactory::createImageFilter("org.maemo.scale"); QVERIFY(filter->setOption(QuillImageFilter::SizeAfter, QSize(2, 1))); QImage image = Unittests::generatePaletteImage(); QuillImage tile1 = image.copy(0, 0, 2, 2); tile1.setFullImageSize(QSize(8, 2)); tile1.setArea(QRect(0, 0, 2, 2)); QuillImage tile2 = image.copy(2, 0, 2, 2); tile2.setFullImageSize(QSize(8, 2)); tile2.setArea(QRect(2, 0, 2, 2)); QuillImage tile3 = image.copy(4, 0, 2, 2); tile3.setFullImageSize(QSize(8, 2)); tile3.setArea(QRect(4, 0, 2, 2)); QuillImage tile4 = image.copy(6, 0, 2, 2); tile4.setFullImageSize(QSize(8, 2)); tile4.setArea(QRect(6, 0, 2, 2)); QuillImage resultTile1 = filter->apply(tile1); QCOMPARE(resultTile1.area(), QRect()); QCOMPARE(resultTile1.fullImageSize(), QSize(2, 1)); QCOMPARE(resultTile1, QuillImage()); QuillImage resultTile2 = filter->apply(tile2); QCOMPARE(resultTile2.area(), QRect(0, 0, 1, 1)); QCOMPARE(resultTile2.fullImageSize(), QSize(2, 1)); QCOMPARE((QImage)resultTile2, tile2.scaled(QSize(1, 1), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); QuillImage resultTile3 = filter->apply(tile3); QCOMPARE(resultTile3.area(), QRect()); QCOMPARE(resultTile3.fullImageSize(), QSize(2, 1)); QCOMPARE(resultTile3, QuillImage()); QuillImage resultTile4 = filter->apply(tile4); QCOMPARE(resultTile4.area(), QRect(1, 0, 1, 1)); QCOMPARE(resultTile4.fullImageSize(), QSize(2, 1)); QCOMPARE((QImage)resultTile4, tile4.scaled(QSize(1, 1), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); delete filter; }
void ut_crop::testFullImage() { QuillImageFilter *filter = //new QuillImageFilter("org.maemo.crop"); QuillImageFilterFactory::createImageFilter("org.maemo.crop"); QVERIFY(filter); QCOMPARE(filter->name(), QString("com.meego.crop")); QVERIFY(filter->supportsOption(QuillImageFilter::CropRectangle)); // Full image cropped from right into 6x2 QVERIFY(filter->setOption(QuillImageFilter::CropRectangle, QRect(QPoint(2, 0), QPoint(7, 1)))); QCOMPARE(filter->option(QuillImageFilter::CropRectangle), QVariant(QRect(QPoint(2, 0), QPoint(7, 1)))); QImage image = Unittests::generatePaletteImage(); QCOMPARE(image.size(), QSize(8, 2)); QImage filteredImage = filter->apply(image); QCOMPARE(filteredImage, image.copy(2, 0, 6, 2)); delete filter; }
void ut_file::testDifferentPreviewLevels() { QTemporaryFile testFile; testFile.open(); QuillImage image = Unittests::generatePaletteImage(); image.save(testFile.fileName(), "png"); QuillImageFilter *filter = QuillImageFilterFactory::createImageFilter(QuillImageFilter::Name_BrightnessContrast); QVERIFY(filter); filter->setOption(QuillImageFilter::Brightness, QVariant(20)); QuillImage imageAfter = filter->apply(image); Quill::setPreviewSize(0, QSize(4, 1)); QuillFile *file = new QuillFile(testFile.fileName(), Strings::png); QuillFile *file2 = new QuillFile(testFile.fileName(), Strings::png); QSignalSpy spy(file, SIGNAL(imageAvailable(const QuillImageList))); QSignalSpy spy2(file2, SIGNAL(imageAvailable(const QuillImageList))); QVERIFY(file != file2); QVERIFY(file2->setDisplayLevel(1)); QVERIFY(file->setDisplayLevel(0)); file->runFilter(filter); Quill::releaseAndWait(); // load level 0 Quill::releaseAndWait(); // brightness level 0 QCOMPARE(spy.count(), 1); QCOMPARE(spy2.count(), 1); QCOMPARE(file->image().size(), QSize(4, 1)); QCOMPARE(file->image().z(), 0); QCOMPARE(file2->image().size(), QSize(4, 1)); QCOMPARE(file2->image().z(), 0); Quill::releaseAndWait(); // load level 1 Quill::releaseAndWait(); // brightness level 1 QCOMPARE(spy.count(), 1); QCOMPARE(spy2.count(), 2); QCOMPARE(file->image().size(), QSize(4, 1)); QCOMPARE(file->image().z(), 0); QVERIFY(Unittests::compareImage(file2->image(), imageAfter)); QCOMPARE(file2->image().z(), 1); delete file2; // Ensure that the display level is kept even if the other image reference // is removed. QCOMPARE(file->image().size(), QSize(4, 1)); QCOMPARE(file->image().z(), 0); delete file; }
void ut_file::testOriginalAfterSave() { QTemporaryFile testFile; testFile.open(); QuillImage image = Unittests::generatePaletteImage(); image.save(testFile.fileName(), "png"); QuillFile *file = new QuillFile(testFile.fileName(), Strings::png); QuillFile *original = file->original(); // This makes us to setup the original's undo stack QCOMPARE(original->fullImageSize(), image.size()); QuillImageFilter *filter = QuillImageFilterFactory::createImageFilter(QuillImageFilter::Name_BrightnessContrast); QVERIFY(filter); filter->setOption(QuillImageFilter::Brightness, QVariant(20)); QuillImage processedImage = filter->apply(image); file->runFilter(filter); file->save(); Quill::releaseAndWait(); Quill::releaseAndWait(); Quill::releaseAndWait(); original->setDisplayLevel(0); Quill::releaseAndWait(); QVERIFY(Unittests::compareImage(original->image(), image)); delete file; delete original; }
void ut_load::testTransparency() { QTemporaryFile testFile; testFile.open(); QImage image = Unittests::generatePaletteImage(); image = image.convertToFormat(QImage::Format_ARGB32); image.setPixel(QPoint(0, 0), qRgba(255, 0, 0, 0)); image.setPixel(QPoint(0, 1), qRgba(255, 0, 0, 127)); image.save(testFile.fileName(), "png"); QuillImageFilter *filter = QuillImageFilterFactory::createImageFilter("org.maemo.load"); filter->setOption(QuillImageFilter::FileName, testFile.fileName()); filter->setOption(QuillImageFilter::FileFormat, QString("png")); filter->setOption(QuillImageFilter::BackgroundColor, QColor(qRgb(0, 0, 255))); QuillImage imageAfter = filter->apply(image); QCOMPARE(imageAfter.pixel(QPoint(0, 0)), qRgb(0, 0, 255)); QCOMPARE(imageAfter.pixel(QPoint(0, 1)), qRgb(127, 0, 128)); delete filter; }
void ut_load::testFileNotFound() { QFile fooFile("/usr/share/quillimagefilter-tests/images/fooxxx.png"); QVERIFY(!fooFile.exists()); QImage fooImage(fooFile.fileName()); QuillImageFilter *filter = QuillImageFilterFactory::createImageFilter("org.maemo.load"); QVERIFY(filter); QCOMPARE(filter->name(), QString("com.meego.load")); QVERIFY(filter->supportsOption(QuillImageFilter::FileName)); QVERIFY(filter->supportsOption(QuillImageFilter::FileFormat)); QVERIFY(filter->supportsOption(QuillImageFilter::DisableUndo)); QVERIFY(filter->supportsOption(QuillImageFilter::SizeAfter)); filter->setOption(QuillImageFilter::FileName, QVariant(fooFile.fileName())); filter->setOption(QuillImageFilter::MimeType, QVariant("image/png")); filter->apply(fooImage); QCOMPARE(filter->error(),QuillImageFilter::FileNotFoundError); fooFile.close(); delete filter; }
void ut_load::testQImage() { QFile file("/usr/share/quillimagefilter-tests/images/16_color_palette.png"); QuillImageFilter *filter = new QuillImageFilter("com.meego.load"); QVERIFY(filter); QCOMPARE(filter->name(), QString("com.meego.load")); QVERIFY(filter->supportsOption(QuillImageFilter::FileName)); QVERIFY(filter->supportsOption(QuillImageFilter::FileFormat)); QVERIFY(filter->supportsOption(QuillImageFilter::DisableUndo)); QVERIFY(filter->supportsOption(QuillImageFilter::SizeAfter)); filter->setOption(QuillImageFilter::FileName, QVariant(file.fileName())); filter->setOption(QuillImageFilter::MimeType, QVariant("image/png")); QCOMPARE(filter->option(QuillImageFilter::FileName).toString(), file.fileName()); QCOMPARE(filter->option(QuillImageFilter::MimeType).toString(), QString("image/png")); QCOMPARE(filter->option(QuillImageFilter::FileFormat).toString(), QString("png")); QImage image(file.fileName()); QImage loadedImage = filter->apply(image); QVERIFY(Unittests::compareImage(loadedImage, QuillImage(image))); delete filter; }
void ut_scale::testScalePreview() { // No changes must be made to a preview image QuillImageFilter *filter = QuillImageFilterFactory::createImageFilter("org.maemo.scale"); QVERIFY(filter); QVERIFY(filter->setOption(QuillImageFilter::SizeAfter, QSize(4, 1))); QuillImage image = Unittests::generatePaletteImage(); QCOMPARE(image.size(), QSize(8, 2)); image.setFullImageSize(QSize(16, 4)); image.setArea(QRect(0, 0, 16, 4)); QuillImage image2 = filter->apply(image); QCOMPARE(image2.size(), QSize(8, 2)); QCOMPARE(image2.fullImageSize(), QSize(4, 1)); QCOMPARE(image2.area(), QRect(0, 0, 4, 1)); QVERIFY(Unittests::compareImage(image, image2)); delete filter; }
void ut_stack::testDropRedoHistory() { QTemporaryFile testFile; testFile.open(); QuillImage image = Unittests::generatePaletteImage(); image.save(testFile.fileName(), "png"); QuillImageFilter *filter = QuillImageFilterFactory::createImageFilter(QuillImageFilter::Name_BrightnessContrast); QVERIFY(filter); filter->setOption(QuillImageFilter::Brightness, QVariant(20)); QuillImage resultImage = filter->apply(image); QuillImageFilter *filter2 = QuillImageFilterFactory::createImageFilter(QuillImageFilter::Name_BrightnessContrast); QVERIFY(filter); filter2->setOption(QuillImageFilter::Contrast, QVariant(20)); QuillImage resultImage2 = filter2->apply(resultImage); QuillFile *file = new QuillFile(testFile.fileName(), Strings::png); file->runFilter(filter); file->runFilter(filter2); file->undo(); QVERIFY(file->canRedo()); file->dropRedoHistory(); QVERIFY(!file->canRedo()); delete file; }
// Flip + flip + rotate 180 should result in original. void ut_flip::testFlipRotate() { QuillImageFilter *flip = new QuillImageFilter("org.maemo.flip"); QuillImageFilter *flip2 = new QuillImageFilter("org.maemo.flip"); flip2->setOption(QuillImageFilter::Horizontal, QVariant(true)); QuillImageFilter *rotate = new QuillImageFilter("org.maemo.rotate"); rotate->setOption(QuillImageFilter::Angle, QVariant(180)); QuillImage image = Unittests::generatePaletteImage(); QCOMPARE(image, rotate->apply(flip2->apply(flip->apply(image)))); delete flip; delete flip2; delete rotate; }
void ut_crop::testQuillImageFragment() { QuillImage image(Unittests::generatePaletteImage()); image.setFullImageSize(QSize(16, 4)); image.setArea(QRect(4, 1, 8, 2)); QuillImageFilter *filter = QuillImageFilterFactory::createImageFilter("org.maemo.crop"); QVERIFY(filter); // crop 6 px from the left filter->setOption(QuillImageFilter::CropRectangle, QRect(6, 0, 10, 4)); QuillImage image2 = filter->apply(image); QCOMPARE((QImage)image2, image.copy(QRect(2, 0, 6, 2))); QCOMPARE(image2.fullImageSize(), QSize(10, 4)); QCOMPARE(image2.area(), QRect(0, 1, 6, 2)); // crop 6 px from the right filter->setOption(QuillImageFilter::CropRectangle, QRect(0, 0, 4, 4)); QuillImage image3 = filter->apply(image2); QCOMPARE((QImage)image3, image.copy(QRect(2, 0, 4, 2))); QCOMPARE(image3.fullImageSize(), QSize(4, 4)); QCOMPARE(image3.area(), QRect(0, 1, 4, 2)); // crop to bottom half filter->setOption(QuillImageFilter::CropRectangle, QRect(0, 2, 4, 2)); QuillImage image4 = filter->apply(image3); QCOMPARE((QImage)image4, image.copy(QRect(2, 1, 4, 1))); QCOMPARE(image4.fullImageSize(), QSize(4, 2)); QCOMPARE(image4.area(), QRect(0, 0, 4, 1)); delete filter; }
void ut_flip::testFlip() { QuillImageFilter *filter = new QuillImageFilter("org.maemo.flip"); QVERIFY(filter->isValid()); QCOMPARE(filter->name(), QString("com.meego.flip")); QVERIFY(filter->supportsOption(QuillImageFilter::Horizontal)); QVERIFY(filter->setOption(QuillImageFilter::Horizontal, QVariant(true))); QCOMPARE(filter->option(QuillImageFilter::Horizontal).toBool(), true); QImage image = Unittests::generatePaletteImage(); QCOMPARE(image.size(), QSize(8, 2)); QImage filteredImage = filter->apply(image); QCOMPARE(filteredImage.size(), QSize(8, 2)); // Verify against Qt's own flip QCOMPARE(filteredImage, image.transformed(QTransform().scale(-1, 1))); QVERIFY(filter->setOption(QuillImageFilter::Horizontal, QVariant(false))); filteredImage = filter->apply(image); QCOMPARE(filteredImage.size(), QSize(8, 2)); // Verify against Qt's own flip QCOMPARE(filteredImage, image.transformed(QTransform().scale(1, -1))); delete filter; }
void ut_redeyereduction::testReductTwoAreas() { QuillImageFilter *filter = QuillImageFilterFactory::createImageFilter("org.maemo.red-eye-reduction"); QVERIFY(filter); QCOMPARE(filter->name(), QString("com.meego.red-eye-reduction")); QVariantList centerPoints; for (int i = 100; i <= 160; i+=60) centerPoints << QPoint(i, i); QVERIFY(filter->setOption(QuillImageFilter::Center, QVariant(centerPoints))); QVariantList radii; for (int r = 10; r <= 40; r+=30) radii << QVariant(r); QVERIFY(filter->setOption(QuillImageFilter::Radius, QVariant(radii))); QImage image("/usr/share/quillimagefilter-tests/images/redeye.jpg"); QVERIFY(!image.isNull()); QImage image1 = filter->apply(image); bool bIsReduced = false; for(int h=95; h<105; h++) { for(int v =95; v<105; v++) { QRgb color = image.pixel(QPoint(h, v)); int limit = (qGreen(color) + qBlue(color)) * 2 / 3; if (qRed(color) > limit) { QVERIFY(qRed(image.pixel(QPoint(h,v))) > (qRed(image1.pixel(QPoint(h,v))))); bIsReduced = true; } } } QVERIFY(bIsReduced); bIsReduced = false; for(int h=145; h<175; h++) { for(int v =145; v<175; v++) { QRgb color = image.pixel(QPoint(h, v)); int limit = (qGreen(color) + qBlue(color)) * 2 / 3; if (qRed(color) > limit) { QVERIFY(qRed(image.pixel(QPoint(h,v))) > (qRed(image1.pixel(QPoint(h,v))))); bIsReduced = true; } } } QVERIFY(bIsReduced); delete filter; }
void ut_stack::testEditAfterSetImage() { QString fileName = "/tmp/quill/pctest.png"; QFile::remove(fileName); QVERIFY(!QFile::exists(fileName)); QTemporaryFile testFile; testFile.open(); QImage image = Unittests::generatePaletteImage(); QuillImageFilter *filter = QuillImageFilterFactory::createImageFilter(QuillImageFilter::Name_BrightnessContrast); QVERIFY(filter); filter->setOption(QuillImageFilter::Brightness, QVariant(20)); QuillImage resultImage = filter->apply(image); Quill::setEditHistoryPath("/tmp/quill/history"); Quill::setEditHistoryCacheSize(0, 2); QuillFile *file = new QuillFile(fileName, Strings::pngMimeType); file->setDisplayLevel(0); QuillImage quillImage(image); quillImage.setFullImageSize(QSize(8, 2)); file->setImage(0, quillImage); QVERIFY(Unittests::compareImage(file->image(), image)); QCOMPARE(file->fullImageSize(), QSize(8, 2)); file->runFilter(filter); Quill::releaseAndWait(); QVERIFY(Unittests::compareImage(file->image(), resultImage)); image.save(fileName, "png"); file->refresh(); Quill::releaseAndWait(); // edit (recreate) QVERIFY(Unittests::compareImage(file->image(), resultImage)); file->save(); Quill::releaseAndWait(); // load Quill::releaseAndWait(); // edit Quill::releaseAndWait(); // save QVERIFY(Unittests::compareImage(QImage(fileName), resultImage)); delete file; }
void ut_load:: testInvalidData() { QuillImageFilter *filter = QuillImageFilterFactory::createImageFilter("org.maemo.load"); QFile invalidFile("/usr/share/quillimagefilter-tests/images/16_color_palette.xcf"); QImage invalidImage(invalidFile.fileName()); filter->setOption(QuillImageFilter::FileName, QVariant( invalidFile.fileName())); filter->setOption(QuillImageFilter::MimeType, QVariant("image/png")); filter->apply(invalidImage); QCOMPARE(filter->error(),QuillImageFilter::InvalidDataError); invalidFile.close(); delete filter; }
void ut_load::testUnsupportedFormat() { QuillImageFilter *filter = QuillImageFilterFactory::createImageFilter("org.maemo.load"); QFile unsupportedFile("/usr/share/quillimagefilter-tests/images/16_color_palette.xcf"); QImage unsupportedImage(unsupportedFile.fileName()); filter->setOption(QuillImageFilter::FileName, QVariant( unsupportedFile.fileName())); filter->setOption(QuillImageFilter::FileFormat, QVariant("xcf")); filter->apply(unsupportedImage); QCOMPARE(filter->error(),QuillImageFilter::UnsupportedFormatError); unsupportedFile.close(); delete filter; }
void ut_load::testIODevice() { QuillImageFilter *filter = QuillImageFilterFactory::createImageFilter("org.maemo.load"); QFile *fileIO = new QFile("/usr/share/quillimagefilter-tests/images/16_color_palette.png"); QVERIFY(fileIO->open(QIODevice::ReadOnly)); QCOMPARE(fileIO->isOpen(),true); QCOMPARE(fileIO->isReadable(),true); QVERIFY(fileIO); filter->setIODevice(fileIO); QCOMPARE(fileIO, filter->iODevice()); QImage image("/usr/share/quillimagefilter-tests/images/16_color_palette.png"); QImage loadedImage1 = filter->apply(image); QVERIFY(Unittests::compareImage(loadedImage1, image)); delete fileIO; delete filter; }
void ut_file::testMultipleAccess() { QTemporaryFile testFile; testFile.open(); QuillImage image = Unittests::generatePaletteImage(); image.save(testFile.fileName(), "png"); QuillImageFilter *filter = QuillImageFilterFactory::createImageFilter(QuillImageFilter::Name_BrightnessContrast); QVERIFY(filter); filter->setOption(QuillImageFilter::Brightness, QVariant(20)); QuillImage imageAfter = filter->apply(image); QuillFile *file = new QuillFile(testFile.fileName(), Strings::png); QuillFile *file2 = new QuillFile(testFile.fileName(), Strings::png); QVERIFY(file != file2); QVERIFY(file->setDisplayLevel(0)); QVERIFY(file2->setDisplayLevel(0)); file->runFilter(filter); Quill::releaseAndWait(); Quill::releaseAndWait(); QVERIFY(Unittests::compareImage(file->image(), imageAfter)); QVERIFY(Unittests::compareImage(file2->image(), imageAfter)); file2->undo(); Quill::releaseAndWait(); QVERIFY(Unittests::compareImage(file->image(), image)); QVERIFY(Unittests::compareImage(file2->image(), image)); delete file2; file->redo(); Quill::releaseAndWait(); QVERIFY(Unittests::compareImage(file->image(), imageAfter)); delete file; }
void ut_file::testOriginal() { QTemporaryFile testFile; testFile.open(); QuillImage image = Unittests::generatePaletteImage(); image.save(testFile.fileName(), "png"); QuillFile *file = new QuillFile(testFile.fileName(), Strings::png); QuillImageFilter *filter = QuillImageFilterFactory::createImageFilter(QuillImageFilter::Name_BrightnessContrast); QVERIFY(filter); filter->setOption(QuillImageFilter::Brightness, QVariant(20)); QuillImage processedImage = filter->apply(image); file->runFilter(filter); QuillFile *original = file->original(); QCOMPARE(file->fileName(), original->fileName()); QCOMPARE(file->originalFileName(), original->originalFileName()); QVERIFY(file->canUndo()); QVERIFY(!original->canUndo()); file->setDisplayLevel(0); Quill::releaseAndWait(); Quill::releaseAndWait(); original->setDisplayLevel(0); Quill::releaseAndWait(); QCOMPARE(file->image(), processedImage); QCOMPARE(original->image(), image); file->remove(); QVERIFY(!file->exists()); QVERIFY(!original->exists()); delete file; delete original; }
void ut_file::testSaveAfterDelete() { QTemporaryFile testFile; testFile.open(); QuillImage image = Unittests::generatePaletteImage(); image.save(testFile.fileName(), "png"); QuillImageFilter *filter = QuillImageFilterFactory::createImageFilter(QuillImageFilter::Name_BrightnessContrast); QVERIFY(filter); filter->setOption(QuillImageFilter::Brightness, QVariant(20)); QuillImage imageAfter = filter->apply(image); QuillFile *file = new QuillFile(testFile.fileName(), Strings::png); file->runFilter(filter); QVERIFY(!Quill::isSaveInProgress()); QVERIFY(!file->isSaveInProgress()); file->save(); QVERIFY(Quill::isSaveInProgress()); QVERIFY(file->isSaveInProgress()); delete file; QVERIFY(Quill::isSaveInProgress()); Quill::releaseAndWait(); // load QVERIFY(Quill::isSaveInProgress()); Quill::releaseAndWait(); // b/c QVERIFY(Quill::isSaveInProgress()); Quill::releaseAndWait(); // save QVERIFY(!Quill::isSaveInProgress()); Unittests::compareImage(QImage(testFile.fileName()), imageAfter); }
void ut_crop::testPreview() { // full is 8x2, preview is 4x1, apply crop to preview QuillImageFilter *filter = QuillImageFilterFactory::createImageFilter("org.maemo.crop"); QVERIFY(filter->setOption(QuillImageFilter::CropRectangle, QRect(QPoint(2, 0), QPoint(7, 1)))); QuillImage image(Unittests::generatePaletteImage().scaled(QSize(4,1))); image.setFullImageSize(QSize(8, 2)); image.setArea(QRect(0, 0, 8, 2)); QuillImage filteredImage = filter->apply(image); QCOMPARE((QImage)filteredImage, image.copy(1, 0, 3, 1)); delete filter; }
void ut_load::testExifRotation() { QTemporaryFile testFile; testFile.open(); QImage image("/usr/share/quillimagefilter-tests/images/16_color_palette.png"); image.save(testFile.fileName(), "jpeg"); QuillMetadata metadata; metadata.setEntry(QuillMetadata::Tag_Orientation, QVariant(6)); metadata.write(testFile.fileName()); QuillImageFilter *filter = QuillImageFilterFactory::createImageFilter("org.maemo.load"); filter->setOption(QuillImageFilter::FileName, QString(testFile.fileName())); QuillImage resultImage = filter->apply(QuillImage()); QCOMPARE(resultImage.size(), QSize(2, 8)); delete filter; }
void ut_crop::testQuillImagePreview() { QuillImage image(Unittests::generatePaletteImage()); image.setFullImageSize(QSize(16, 4)); image.setArea(QRect(0, 0, 16, 4)); QuillImageFilter *filter = QuillImageFilterFactory::createImageFilter("org.maemo.crop"); QVERIFY(filter); // crop 6/3 px from the left filter->setOption(QuillImageFilter::CropRectangle, QRect(6, 0, 10, 4)); QuillImage image2 = filter->apply(image); QVERIFY(Unittests::compareImage(image2, image.copy(QRect(3, 0, 5, 2)))); QCOMPARE(image2.fullImageSize(), QSize(10, 4)); QCOMPARE(image2.area(), QRect(0, 0, 10, 4)); delete filter; }
void ut_autocontrast::testGenerator() { QImage image = QImage(QSize(3, 1), QImage::Format_RGB32); image.setPixel(QPoint(0, 0), qRgb(64, 64, 64)); image.setPixel(QPoint(1, 0), qRgb(96, 96, 96)); image.setPixel(QPoint(2, 0), qRgb(128, 128, 128)); QuillImageFilter *newFilterGenerator = QuillImageFilterFactory::createImageFilter(filterName); QVERIFY(newFilterGenerator); QCOMPARE(newFilterGenerator->name(), filterName); QuillImageFilterGenerator *filterGenerator = dynamic_cast<QuillImageFilterGenerator*>(newFilterGenerator); QVERIFY(filterGenerator); if(filterGenerator){ filterGenerator->apply(image); QuillImageFilter *filter = filterGenerator->resultingFilter(); QCOMPARE(filter->name(), resultName); // Center: 96 to 127.5 Unittests::compareReal(filter->option(QuillImageFilter::Brightness).toDouble(), 31.5/2.55); // Contrast component: scale 64 to 255 Unittests::compareReal(filter->option(QuillImageFilter::Contrast).toDouble(), (255.0-64.0)/64.0*100.0); image = filter->apply(image); // See that the contrast has really been stretched throughout. QCOMPARE(image.pixel(QPoint(0, 0)), qRgb(0, 0, 0)); QCOMPARE(image.pixel(QPoint(1, 0)), qRgb(128, 128, 128)); QCOMPARE(image.pixel(QPoint(2, 0)), qRgb(255, 255, 255)); delete filter; } else QFAIL("The filterGenerator is null!"); delete newFilterGenerator; }