Commit 7c627a73 authored by Halla Rempt's avatar Halla Rempt

Merge branch 'master' into kazakov/preset-chooser-fixes

parents cfe6db39 4e33762d
......@@ -48,6 +48,8 @@ if (MSVC)
)
endif()
elseif(MINGW)
string(REGEX REPLACE "([0-9])\\.([0-9])(\\.[0-9])?" "\\1\\2"
KRITA_boost_COMPILER_VERSION ${CMAKE_CXX_COMPILER_VERSION})
ExternalProject_Add(
ext_boost
......@@ -67,7 +69,7 @@ elseif(MINGW)
ExternalProject_Add_Step(
ext_boost
post_install
COMMAND ${CMAKE_COMMAND} -E copy ${PREFIX_ext_boost}/lib/libboost_system-mgw51-mt-1_61.dll ${PREFIX_ext_boost}/bin/
COMMAND ${CMAKE_COMMAND} -E copy ${PREFIX_ext_boost}/lib/libboost_system-mgw${KRITA_boost_COMPILER_VERSION}-mt-1_61.dll ${PREFIX_ext_boost}/bin/
DEPENDEES install
)
else()
......
......@@ -34,6 +34,7 @@ if (MSVC)
)
endif()
elseif (MINGW)
if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8")
ExternalProject_Add( ext_fftw3
DOWNLOAD_DIR ${EXTERNALS_DOWNLOAD_DIR}
URL http://files.kde.org/krita/build/dependencies/fftw-3.3.4-dll64.zip
......@@ -41,7 +42,23 @@ elseif (MINGW)
INSTALL_DIR ${PREFIX_ext_fftw3}
CONFIGURE_COMMAND ""
BUILD_COMMAND ${CMAKE_COMMAND} -E echo deploying fftw3 64 binary
BUILD_COMMAND ${CMAKE_COMMAND} -E echo deploying fftw3 64-bit binary
INSTALL_COMMAND ${CMAKE_COMMAND} -E copy_directory <SOURCE_DIR>/bin ${PREFIX_ext_fftw3}/bin
COMMAND ${CMAKE_COMMAND} -E copy_directory <SOURCE_DIR>/lib ${PREFIX_ext_fftw3}/lib
COMMAND ${CMAKE_COMMAND} -E copy_directory <SOURCE_DIR>/include ${PREFIX_ext_fftw3}/include
UPDATE_COMMAND ""
ALWAYS 0
)
else("${CMAKE_SIZEOF_VOID_P}" EQUAL "8")
ExternalProject_Add( ext_fftw3
DOWNLOAD_DIR ${EXTERNALS_DOWNLOAD_DIR}
URL http://files.kde.org/krita/build/dependencies/fftw-3.3.4-dll32.zip
URL_MD5 03754fe2a7fbaf983b0cc9a728e0a5b3
INSTALL_DIR ${PREFIX_ext_fftw3}
CONFIGURE_COMMAND ""
BUILD_COMMAND ${CMAKE_COMMAND} -E echo deploying fftw3 32-bit binary
INSTALL_COMMAND ${CMAKE_COMMAND} -E copy_directory <SOURCE_DIR>/bin ${PREFIX_ext_fftw3}/bin
COMMAND ${CMAKE_COMMAND} -E copy_directory <SOURCE_DIR>/lib ${PREFIX_ext_fftw3}/lib
COMMAND ${CMAKE_COMMAND} -E copy_directory <SOURCE_DIR>/include ${PREFIX_ext_fftw3}/include
......@@ -49,6 +66,7 @@ elseif (MINGW)
UPDATE_COMMAND ""
ALWAYS 0
)
endif("${CMAKE_SIZEOF_VOID_P}" EQUAL "8")
else ()
ExternalProject_Add( ext_fftw3
DOWNLOAD_DIR ${EXTERNALS_DOWNLOAD_DIR}
......
......@@ -5,6 +5,7 @@ ExternalProject_Add( ext_poppler
URL_MD5 02a81a20e24849feb1a2af4db1aca865
INSTALL_DIR ${PREFIX_ext_poppler}
PATCH_COMMAND ${PATCH_COMMAND} -p1 -i ${CMAKE_CURRENT_SOURCE_DIR}/poppler_mingw.patch
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${PREFIX_ext_poppler} -DCMAKE_BUILD_TYPE=${GLOBAL_BUILD_TYPE} ${GLOBAL_PROFILE} -DBUILD_GTK_TESTS=OFF -DBUILD_QT5_TESTS=FALSE -BUILD_CPP_TESTS=FALSE -DENABLE_UTILS=FALSE -DENABLE_GLIB=FALSE -DENABLE_LIBOPENJPEG=FALSE
UPDATE_COMMAND ""
......
--- a/config.h.cmake
+++ b/config.h.cmake
@@ -115,6 +115,12 @@
/* Define to 1 if you have the <stdlib.h> header file. */
#cmakedefine HAVE_STDLIB_H 1
+/* Define to 1 if you have the `strcat_s' function. */
+#cmakedefine HAVE_STRCAT_S
+
+/* Define to 1 if you have the `strcpy_s' function. */
+#cmakedefine HAVE_STRCPY_S
+
/* Define to 1 if you have the <strings.h> header file. */
#cmakedefine HAVE_STRINGS_H 1
......@@ -83,12 +83,12 @@ endif()
# define common versions of Krita applications, used to generate kritaversion.h
# update these version for every release:
set(KRITA_VERSION_STRING "3.0.2 Alpha")
set(KRITA_VERSION_STRING "3.0.1.90")
set(KRITA_STABLE_VERSION_MAJOR 3) # 3 for 3.x, 4 for 4.x, etc.
set(KRITA_STABLE_VERSION_MINOR 0) # 0 for 3.0, 1 for 3.1, etc.
set(KRITA_VERSION_RELEASE 2) # 89 for Alpha, increase for next test releases, set 0 for first Stable, etc.
set(KRITA_ALPHA 1) # uncomment only for Alpha
#set(KRITA_BETA 1) # uncomment only for Beta
set(KRITA_VERSION_RELEASE 1.89) # 89 for Alpha, increase for next test releases, set 0 for first Stable, etc.
#set(KRITA_ALPHA 1) # uncomment only for Alpha
set(KRITA_BETA 1) # uncomment only for Beta
#set(KRITA_RC 1) # uncomment only for RC
set(KRITA_YEAR 2016) # update every year
......
......@@ -69,7 +69,7 @@ private Q_SLOTS:
void init();
// Autobrush
// AutoBrush
void pixelbrush300px();
void pixelbrush300pxRL();
......
<Workspace name="Animation" version="1">
<state><![CDATA[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AP////8AAAE5AP////sAAAAcAE8AdgBlAHIAdgBpAGUAdwBEAG8AYwBrAGUAcgAAAAAA/////wAAAEgA////+wAAABoAUABhAGwAZQB0AHQAZQBEAG8AYwBrAGUAcgAAAAAA/////wAAAD8A////+wAAABoAUAByAGUAcwBlAHQASABpAHMAdABvAHIAeQAAAAAA/////wAAAFoA////+wAAABQARwByAGkAZABEAG8AYwBrAGUAcgAAAAAA/////wAAAS4A////+wAAAB4ASABpAHMAdABvAGcAcgBhAG0ARABvAGMAawBlAHIAAAAAAP////8AAABIAP///wAAAAIAAAeAAAAAvPwBAAAAAfsAAAAaAFQAbwBvAGwAQgBhAHIARABvAGMAawBlAHIAAAAAAP////8AAAAAAAAAAAAAAAMAAAdaAAAAWvwBAAAAAvsAAAAcAEYAbABpAHAAYgBvAG8AawBEAG8AYwBrAGUAcgAAAAAA/////wAAAAAAAAAA+wAAABwAVABpAG0AZQBsAGkAbgBlAEQAbwBjAGsAZQByAQAAAAAAAAdaAAAAhgD///8AAAYUAAADYQAAAAQAAAAEAAAACAAAAAj8AAAAAQAAAAIAAAACAAAAFgBtAGEAaQBuAFQAbwBvAGwAQgBhAHIAAAAAAP////8AAAAAAAAAAAAAAB4AQgByAHUAcwBoAGUAcwBBAG4AZABTAHQAdQBmAGYBAAAAAP////8AAAAAAAAAAA==]]></state>
<settings/>
<Workspace version="1" name="Animation">
<state><![CDATA[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dgBpAGUAdwBEAG8AYwBrAGUAcgAAAAAA/////wAAAEgA////+wAAABoAUABhAGwAZQB0AHQAZQBEAG8AYwBrAGUAcgAAAAAA/////wAAAD8A////+wAAABoAUAByAGUAcwBlAHQASABpAHMAdABvAHIAeQAAAAAA/////wAAAFoA////+wAAABQARwByAGkAZABEAG8AYwBrAGUAcgAAAAAA/////wAAAS4A////+wAAAB4ASABpAHMAdABvAGcAcgBhAG0ARABvAGMAawBlAHIAAAAAAP////8AAABIAP///wAAAAIAAAeAAAAAvPwBAAAAAfsAAAAaAFQAbwBvAGwAQgBhAHIARABvAGMAawBlAHIAAAAAAP////8AAAAAAAAAAAAAAAMAAAdcAAAAWvwBAAAAAvsAAAAcAEYAbABpAHAAYgBvAG8AawBEAG8AYwBrAGUAcgAAAAAA/////wAAAAAAAAAA/AAAAAAAAAdcAAAAfQD////6AAAAAAIAAAAC+wAAABwAVABpAG0AZQBsAGkAbgBlAEQAbwBjAGsAZQByAQAAA0oAAABaAAAAWgD////7AAAAKgBBAG4AaQBtAGEAdABpAG8AbgBDAHUAcgB2AGUAcwBEAG8AYwBrAGUAcgAAAAAA/////wAAAHkA////AAAGSwAAA2EAAAAEAAAABAAAAAgAAAAI/AAAAAEAAAACAAAAAgAAABYAbQBhAGkAbgBUAG8AbwBsAEIAYQByAAAAAAD/////AAAAAAAAAAAAAAAeAEIAcgB1AHMAaABlAHMAQQBuAGQAUwB0AHUAZgBmAQAAAAD/////AAAAAAAAAAA=]]></state>
<settings>
<param type="string" name="palette"><![CDATA[Concept-cookie]]></param>
</settings>
</Workspace>
......@@ -2,7 +2,7 @@
<kpartgui xmlns="http://www.kde.org/standards/kxmlgui/1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
name="Krita"
version="95"
version="96"
xsi:schemaLocation="http://www.kde.org/standards/kxmlgui/1.0 http://www.kde.org/standards/kxmlgui/1.0/kxmlgui.xsd">
<MenuBar>
<Menu name="file">
......
......@@ -83,7 +83,7 @@
<p xml:lang="ca">El Krita és una gran elecció per crear art conceptual, còmics, textures per renderitzar i pintures «matte». El Krita permet molts espais de color com el RGB i el CMYK a 8 i 16 bits de canals sencers, així com 16 i 32 bits de canals de coma flotant.</p>
<p xml:lang="ca-valencia">El Krita és una gran elecció per crear art conceptual, còmics, textures per renderitzar i pintures «matte». El Krita permet molts espais de color com el RGB i el CMYK a 8 i 16 bits de canals sencers, així com 16 i 32 bits de canals de coma flotant.</p>
<p xml:lang="en-GB">Krita is a great choice for creating concept art, comics, textures for rendering and matte paintings. Krita supports many colourspaces like RGB and CMYK at 8 and 16 bits integer channels, as well as 16 and 32 bits floating point channels.</p>
<p xml:lang="es">Krita es una gran elección para crear arte conceptual, cómics, texturas para renderizar y pinturas mate. Krita soporta muchos espacios de colores como por ejemplo RGB y CMYK tanto en canales de enteros de 8 y 16 bits así como en canales de coma flotante de 16 y 32 bits.</p>
<p xml:lang="es">Krita es una gran elección para crear arte conceptual, cómics, texturas para renderizar y «matte paintings». Krita permite el uso de muchos espacios de color, como, por ejemplo, RGB y CMYK, tanto en canales de enteros de 8 y 16 bits, así como en canales de coma flotante de 16 y 32 bits.</p>
<p xml:lang="et">Krita on üks paremaid valikuid kontseptuaalkunsti, koomiksite, tekstuuride ja digitaalmaalide loomiseks. Krita toetab paljusid värviruume, näiteks RGB ja CMYK 8 ja 16 täisarvulise bitiga kanali kohta, samuti 16 ja 32 ujukomabitiga kanali kohta.</p>
<p xml:lang="fi">Krita on hyvä valinta konseptikuvituksen, sarjakuvien, pintakuvioiden ja maalausten luomiseen. Krita tukee useita väriavaruuksia kuten RGB:tä ja CMYK:ta 8 ja 16 bitin kokonaisluku- samoin kuin 16 ja 32 bitin liukulukukanavin.</p>
<p xml:lang="fr">Krita est un très bon choix pour créer des concepts arts, des bandes-dessinées, des textures de rendu et des peintures. Krita prend en charge plusieurs espaces de couleurs comme RVB et CMJN avec les canaux de 8 et 16 bits entiers ainsi que les canaux de 16 et 32 bits flottants.</p>
......
......@@ -46,15 +46,15 @@ public:
void setUserEffectiveSize(qreal value);
qint32 maskWidth(KisDabShape const& shape, qreal subPixelX, qreal subPixelY,
const KisPaintInformation& info) const Q_DECL_OVERRIDE;
const KisPaintInformation& info) const override;
qint32 maskHeight(KisDabShape const& shape, qreal subPixelX, qreal subPixelY,
const KisPaintInformation& info) const Q_DECL_OVERRIDE;
const KisPaintInformation& info) const override;
QSizeF characteristicSize(KisDabShape const&) const override;
virtual KisFixedPaintDeviceSP paintDevice(const KoColorSpace*,
KisDabShape const&,
const KisPaintInformation&,
double = 0, double = 0) const Q_DECL_OVERRIDE {
double = 0, double = 0) const override {
return 0; // The autobrush does NOT support images!
}
......@@ -63,7 +63,7 @@ public:
KisDabShape const&,
const KisPaintInformation& info,
double subPixelX = 0, double subPixelY = 0,
qreal softnessFactor = DEFAULT_SOFTNESS_FACTOR) const Q_DECL_OVERRIDE;
qreal softnessFactor = DEFAULT_SOFTNESS_FACTOR) const override;
virtual QPainterPath outline() const;
......
......@@ -357,8 +357,8 @@ KisBrushSP KisBrush::fromXML(const QDomElement& element, bool forceCopy)
QSizeF KisBrush::characteristicSize(KisDabShape const& shape) const
{
KisDabShape normalizedShape(
shape.scaleX() * d->scale,
shape.scaleY(),
shape.scale() * d->scale,
shape.ratio(),
normalizeAngle(shape.rotation() + d->angle));
return KisQImagePyramid::characteristicSize(
QSize(width(), height()), normalizedShape);
......
......@@ -346,8 +346,6 @@ public:
*/
virtual void setBrushType(enumBrushType type);
friend class KisBrushTest;
virtual void setHasColor(bool hasColor);
/**
......@@ -367,7 +365,6 @@ protected:
void predefinedBrushToXML(const QString &type, QDomElement& e) const;
private:
friend class KisImagePipeBrushTest;
// Initialize our boundary
void generateBoundary() const;
......
......@@ -426,20 +426,6 @@ void KisGbrBrush::setBrushTipImage(const QImage& image)
setValid(true);
}
/*QImage KisGbrBrush::outline(double pressure) {
KisLayerSP layer = image(KoColorSpaceRegistry::instance()->colorSpace("RGBA",0),
KisPaintInformation(pressure));
KisBoundary bounds(layer.data());
int w = maskWidth(pressure);
int h = maskHeight(pressure);
bounds.generateBoundary(w, h);
QPixmap pix(bounds.pixmap(w, h));
QImage result;
result = pix;
return result;
}*/
void KisGbrBrush::makeMaskImage()
{
if (!hasColor()) {
......
......@@ -73,7 +73,7 @@ public:
virtual KisFixedPaintDeviceSP paintDevice(const KoColorSpace * colorSpace,
KisDabShape const&,
const KisPaintInformation& info,
double subPixelX = 0, double subPixelY = 0) const Q_DECL_OVERRIDE;
double subPixelX = 0, double subPixelY = 0) const override;
virtual void setUseColorAsMask(bool useColorAsMask);
virtual bool hasColor() const;
......@@ -93,9 +93,9 @@ public:
void setScale(qreal _scale);
void setSpacing(double _spacing);
quint32 brushIndex(const KisPaintInformation& info) const Q_DECL_OVERRIDE;
qint32 maskWidth(KisDabShape const&, double subPixelX, double subPixelY, const KisPaintInformation& info) const Q_DECL_OVERRIDE;
qint32 maskHeight(KisDabShape const&, double subPixelX, double subPixelY, const KisPaintInformation& info) const Q_DECL_OVERRIDE;
quint32 brushIndex(const KisPaintInformation& info) const override;
qint32 maskWidth(KisDabShape const&, double subPixelX, double subPixelY, const KisPaintInformation& info) const override;
qint32 maskHeight(KisDabShape const&, double subPixelX, double subPixelY, const KisPaintInformation& info) const override;
void notifyStrokeStarted();
void notifyCachedDabPainted(const KisPaintInformation& info);
......@@ -103,7 +103,7 @@ public:
void generateMaskAndApplyMaskOrCreateDab(KisFixedPaintDeviceSP dst, KisBrush::ColoringInformation* coloringInformation,
KisDabShape const&,
const KisPaintInformation& info,
double subPixelX = 0, double subPixelY = 0, qreal softnessFactor = DEFAULT_SOFTNESS_FACTOR) const Q_DECL_OVERRIDE;
double subPixelX = 0, double subPixelY = 0, qreal softnessFactor = DEFAULT_SOFTNESS_FACTOR) const override;
QVector<KisGbrBrush*> brushes() const;
......
......@@ -236,7 +236,7 @@ void KisQImagePyramid::appendPyramidLevel(const QImage &image)
* it is rotated. To workaround this bug we need to add one pixel
* wide border to the image, so that it transforms smoothly.
*
* See a unittest in: KisBrushTest::testQPainterTransformationBorder
* See a unittest in: KisGbrBrushTest::testQPainterTransformationBorder
*/
QSize levelSize = image.size();
QImage tmp = image.convertToFormat(QImage::Format_ARGB32);
......
......@@ -41,7 +41,7 @@ public:
qreal subPixelX, qreal subPixelY) const;
private:
friend class KisBrushTest;
friend class KisGbrBrushTest;
int findNearestLevel(qreal scale, qreal *baseScale) const;
void appendPyramidLevel(const QImage &image);
......
......@@ -42,10 +42,10 @@ public:
void generateMaskAndApplyMaskOrCreateDab(KisFixedPaintDeviceSP dst, KisBrush::ColoringInformation* coloringInformation,
KisDabShape const&,
const KisPaintInformation& info,
double subPixelX = 0, double subPixelY = 0, qreal softnessFactor = DEFAULT_SOFTNESS_FACTOR) const Q_DECL_OVERRIDE;
double subPixelX = 0, double subPixelY = 0, qreal softnessFactor = DEFAULT_SOFTNESS_FACTOR) const override;
KisFixedPaintDeviceSP paintDevice(const KoColorSpace * colorSpace,
KisDabShape const&, const KisPaintInformation& info, double subPixelX, double subPixelY) const Q_DECL_OVERRIDE;
KisDabShape const&, const KisPaintInformation& info, double subPixelX, double subPixelY) const override;
bool load() {
return false;
......@@ -76,8 +76,8 @@ public:
void toXML(QDomDocument& , QDomElement&) const;
quint32 brushIndex(const KisPaintInformation& info) const;
qint32 maskWidth(KisDabShape const&, double subPixelX, double subPixelY, const KisPaintInformation& info) const Q_DECL_OVERRIDE;
qint32 maskHeight(KisDabShape const&, double subPixelX, double subPixelY, const KisPaintInformation& info) const Q_DECL_OVERRIDE;
qint32 maskWidth(KisDabShape const&, double subPixelX, double subPixelY, const KisPaintInformation& info) const override;
qint32 maskHeight(KisDabShape const&, double subPixelX, double subPixelY, const KisPaintInformation& info) const override;
void setAngle(qreal _angle);
void setScale(qreal _scale);
void setSpacing(double _spacing);
......
......@@ -22,14 +22,14 @@ macro_add_unittest_definitions()
########### next target ###############
set(kis_auto_brush_test_SRCS kis_auto_brush_test.cpp )
kde4_add_unit_test(KisAutobrushTest TESTNAME krita-libbrush-KisAutobrushTest ${kis_auto_brush_test_SRCS})
target_link_libraries(KisAutobrushTest kritaimage kritalibbrush Qt5::Test)
kde4_add_unit_test(KisAutoBrushTest TESTNAME krita-libbrush-KisAutoBrushTest ${kis_auto_brush_test_SRCS})
target_link_libraries(KisAutoBrushTest kritaimage kritalibbrush Qt5::Test)
########### next target ###############
set(kis_brush_test_SRCS kis_brush_test.cpp )
kde4_add_unit_test(KisBrushTest TESTNAME krita-libbrush-KisBrushTest ${kis_brush_test_SRCS})
target_link_libraries(KisBrushTest kritaimage kritalibbrush Qt5::Test)
set(kis_gbr_brush_test_SRCS kis_gbr_brush_test.cpp )
kde4_add_unit_test(KisGbrBrushTest TESTNAME krita-libbrush-KisGbrBrushTest ${kis_gbr_brush_test_SRCS})
target_link_libraries(KisGbrBrushTest kritaimage kritalibbrush Qt5::Test)
########### next target ###############
......
......@@ -16,7 +16,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#include "kis_brush_test.h"
#include "kis_gbr_brush_test.h"
#include <QTest>
#include <QString>
......@@ -32,7 +32,7 @@
#include <kis_fixed_paint_device.h>
#include "kis_qimage_pyramid.h"
void KisBrushTest::testMaskGenerationNoColor()
void KisGbrBrushTest::testMaskGenerationNoColor()
{
KisGbrBrush* brush = new KisGbrBrush(QString(FILES_DATA_DIR) + QDir::separator() + "brush.gbr");
brush->load();
......@@ -52,7 +52,7 @@ void KisBrushTest::testMaskGenerationNoColor()
QImage image = fdev->convertToQImage(0);
if (!TestUtil::compareQImages(errpoint, image, result)) {
image.save("kis_brush_test_1.png");
image.save("kis_gbr_brush_test_1.png");
QFAIL(QString("Failed to create identical image, first different pixel: %1,%2 \n").arg(errpoint.x()).arg(errpoint.y()).toLatin1());
}
......@@ -61,12 +61,12 @@ void KisBrushTest::testMaskGenerationNoColor()
result = QImage(QString(FILES_DATA_DIR) + QDir::separator() + "result_brush_2.png");
image = fdev->convertToQImage(0);
if (!TestUtil::compareQImages(errpoint, image, result)) {
image.save("kis_brush_test_2.png");
image.save("kis_gbr_brush_test_2.png");
QFAIL(QString("Failed to create identical image, first different pixel: %1,%2 \n").arg(errpoint.x()).arg(errpoint.y()).toLatin1());
}
}
void KisBrushTest::testMaskGenerationSingleColor()
void KisGbrBrushTest::testMaskGenerationSingleColor()
{
KisGbrBrush* brush = new KisGbrBrush(QString(FILES_DATA_DIR) + QDir::separator() + "brush.gbr");
brush->load();
......@@ -89,12 +89,12 @@ void KisBrushTest::testMaskGenerationSingleColor()
QImage result = QImage(QString(FILES_DATA_DIR) + QDir::separator() + "result_brush_3.png");
QImage image = fdev->convertToQImage(0);
if (!TestUtil::compareQImages(errpoint, image, result)) {
image.save("kis_brush_test_3.png");
image.save("kis_gbr_brush_test_3.png");
QFAIL(QString("Failed to create identical image, first different pixel: %1,%2 \n").arg(errpoint.x()).arg(errpoint.y()).toLatin1());
}
}
void KisBrushTest::testMaskGenerationDevColor()
void KisGbrBrushTest::testMaskGenerationDevColor()
{
KisGbrBrush* brush = new KisGbrBrush(QString(FILES_DATA_DIR) + QDir::separator() + "brush.gbr");
brush->load();
......@@ -122,12 +122,12 @@ void KisBrushTest::testMaskGenerationDevColor()
QImage result = QImage(QString(FILES_DATA_DIR) + QDir::separator() + "result_brush_4.png");
QImage image = fdev->convertToQImage(0);
if (!TestUtil::compareQImages(errpoint, image, result)) {
image.save("kis_brush_test_4.png");
image.save("kis_gbr_brush_test_4.png");
QFAIL(QString("Failed to create identical image, first different pixel: %1,%2 \n").arg(errpoint.x()).arg(errpoint.y()).toLatin1());
}
}
void KisBrushTest::testMaskGenerationDefaultColor()
void KisGbrBrushTest::testMaskGenerationDefaultColor()
{
KisGbrBrush* brush = new KisGbrBrush(QString(FILES_DATA_DIR) + QDir::separator() + "brush.gbr");
brush->load();
......@@ -150,7 +150,7 @@ void KisBrushTest::testMaskGenerationDefaultColor()
QImage result = QImage(QString(FILES_DATA_DIR) + QDir::separator() + "result_brush_3.png");
QImage image = fdev->convertToQImage(0);
if (!TestUtil::compareQImages(errpoint, image, result)) {
image.save("kis_brush_test_5.png");
image.save("kis_gbr_brush_test_5.png");
QFAIL(QString("Failed to create identical image, first different pixel: %1,%2 \n").arg(errpoint.x()).arg(errpoint.y()).toLatin1());
}
......@@ -158,7 +158,7 @@ void KisBrushTest::testMaskGenerationDefaultColor()
}
void KisBrushTest::testImageGeneration()
void KisGbrBrushTest::testImageGeneration()
{
KisGbrBrush* brush = new KisGbrBrush(QString(FILES_DATA_DIR) + QDir::separator() + "testing_brush_512_bars.gbr");
bool res = brush->load();
......@@ -192,7 +192,7 @@ void KisBrushTest::testImageGeneration()
}
}
void KisBrushTest::benchmarkPyramidCreation()
void KisGbrBrushTest::benchmarkPyramidCreation()
{
KisGbrBrush* brush = new KisGbrBrush(QString(FILES_DATA_DIR) + QDir::separator() + "testing_brush_512_bars.gbr");
brush->load();
......@@ -204,7 +204,7 @@ void KisBrushTest::benchmarkPyramidCreation()
}
}
void KisBrushTest::benchmarkScaling()
void KisGbrBrushTest::benchmarkScaling()
{
KisGbrBrush* brush = new KisGbrBrush(QString(FILES_DATA_DIR) + QDir::separator() + "testing_brush_512_bars.gbr");
brush->load();
......@@ -222,7 +222,7 @@ void KisBrushTest::benchmarkScaling()
}
}
void KisBrushTest::benchmarkRotation()
void KisGbrBrushTest::benchmarkRotation()
{
KisGbrBrush* brush = new KisGbrBrush(QString(FILES_DATA_DIR) + QDir::separator() + "testing_brush_512_bars.gbr");
brush->load();
......@@ -239,7 +239,7 @@ void KisBrushTest::benchmarkRotation()
}
}
void KisBrushTest::benchmarkMaskScaling()
void KisGbrBrushTest::benchmarkMaskScaling()
{
KisGbrBrush* brush = new KisGbrBrush(QString(FILES_DATA_DIR) + QDir::separator() + "testing_brush_512_bars.gbr");
brush->load();
......@@ -258,7 +258,7 @@ void KisBrushTest::benchmarkMaskScaling()
}
}
void KisBrushTest::testPyramidLevelRounding()
void KisGbrBrushTest::testPyramidLevelRounding()
{
QSize imageSize(41, 41);
QImage image(imageSize, QImage::Format_ARGB32);
......@@ -302,7 +302,7 @@ static QSize dabTransformHelper(KisDabShape const& shape)
return KisQImagePyramid::imageSize(testSize, shape, subPixelX, subPixelY);
}
void KisBrushTest::testPyramidDabTransform()
void KisGbrBrushTest::testPyramidDabTransform()
{
QCOMPARE(dabTransformHelper(KisDabShape(1.0, 1.0, 0.0)), QSize(150, 150));
QCOMPARE(dabTransformHelper(KisDabShape(1.0, 0.5, 0.0)), QSize(150, 75));
......@@ -311,7 +311,7 @@ void KisBrushTest::testPyramidDabTransform()
}
// see comment in KisQImagePyramid::appendPyramidLevel
void KisBrushTest::testQPainterTransformationBorder()
void KisGbrBrushTest::testQPainterTransformationBorder()
{
QImage image1(10, 10, QImage::Format_ARGB32);
QImage image2(12, 12, QImage::Format_ARGB32);
......@@ -358,4 +358,4 @@ void KisBrushTest::testQPainterTransformationBorder()
}
}
QTEST_MAIN(KisBrushTest)
QTEST_MAIN(KisGbrBrushTest)
......@@ -21,7 +21,7 @@
#include <QtTest>
class KisBrushTest : public QObject
class KisGbrBrushTest : public QObject
{
Q_OBJECT
......
......@@ -28,8 +28,8 @@ class KRITAIMAGE_EXPORT KisNoSizePaintOpSettings : public KisPaintOpSettings
public:
KisNoSizePaintOpSettings();
void setPaintOpSize(qreal value) Q_DECL_OVERRIDE;
qreal paintOpSize() const Q_DECL_OVERRIDE;
void setPaintOpSize(qreal value) override;
qreal paintOpSize() const override;
};
#endif // KISNOSIZEPAINTOPSETTINGS_H
......@@ -50,7 +50,7 @@ public:
KisBaseNode::PropertyList sectionModelProperties() const;
void setSectionModelProperties(const KisBaseNode::PropertyList &properties);
void setImage(KisImageWSP image) Q_DECL_OVERRIDE;
void setImage(KisImageWSP image) override;
virtual KisLayerSP createMergedLayerTemplate(KisLayerSP prevLayer);
virtual void fillMergedLayerTemplate(KisLayerSP dstLayer, KisLayerSP prevLayer);
......
......@@ -175,7 +175,7 @@ public:
/**
* Set the image this layer belongs to.
*/
void setImage(KisImageWSP image) Q_DECL_OVERRIDE;
void setImage(KisImageWSP image) override;
/**
* Create and return a layer that is the result of merging
......
......@@ -83,7 +83,7 @@ public:
virtual ~KisMask();
void setImage(KisImageWSP image) Q_DECL_OVERRIDE;
void setImage(KisImageWSP image) override;
bool allowAsChild(KisNodeSP node) const;
......
......@@ -87,7 +87,7 @@ public:
void setDirty(const QRect & rect);
QIcon icon() const;
void setImage(KisImageWSP image) Q_DECL_OVERRIDE;
void setImage(KisImageWSP image) override;
KisBaseNode::PropertyList sectionModelProperties() const;
void setSectionModelProperties(const KisBaseNode::PropertyList &properties);
......
......@@ -62,7 +62,7 @@ public:
*/
bool allowAsChild(KisNodeSP node) const;
void setImage(KisImageWSP image) Q_DECL_OVERRIDE;
void setImage(KisImageWSP image) override;
KisPaintDeviceSP original() const;
KisPaintDeviceSP paintDevice() const;
......
......@@ -68,7 +68,7 @@ public:
QIcon icon() const;
void setImage(KisImageWSP image) Q_DECL_OVERRIDE;
void setImage(KisImageWSP image) override;
bool accept(KisNodeVisitor &v);
void accept(KisProcessingVisitor &visitor, KisUndoAdapter *undoAdapter);
......
......@@ -120,6 +120,10 @@ void KisMultiwayCut::run()
while (m_d->keyStrokes.size() > 1) {
KeyStroke current = m_d->keyStrokes.takeFirst();
// if current scribble is empty, it just has no effect
if (current.dev->exactBounds().isEmpty()) continue;
KisPainter gc(other);
Q_FOREACH (const KeyStroke &s, m_d->keyStrokes) {
......@@ -127,6 +131,14 @@ void KisMultiwayCut::run()
gc.bitBlt(rc.topLeft(), s.dev, rc);
}
// if other is empty, it means that *all* other strokes are
// empty, so there is no reason to continue the process
if (other->exactBounds().isEmpty()) {
m_d->keyStrokes.clear();
m_d->keyStrokes << current;
break;
}