• Dmitry Kazakov's avatar
    Fixed dynamical updates of the Transform Mask · 4195c38e
    Dmitry Kazakov authored
    This patch implements numerous fixes and refactoings:
    1) Implemented KisSafeTransform. It works like a usual QTransform but
       it takes maths into account. That is the transform and its reverse
       are *not* defined on the entire R^2 plane. Instead the valid input
       area is limited by the horizon line and nothing can be transformed
       above it. KisSafeTransform takes that into account and clips the
       desired rect/polygon to fit the valid area.
    2) KisTransformMask::need/changeRect now uses safe trasnforms.
    3) KisAsyncMerger recalculates the area of the clone's source to fetch
       correct data. To fix concurrency, this extra area is taken into account
       in KisCloneLayer::accessRect();
    4) Implemented detailed unittests for dynamicat transform masks.
    5) Added ability to store reference images of the unittest in a
       separate folder (outside repository).
       It consists of 3 major parts:
       1) checkQImageExternal() is expected to be used to fetch data from
          external folders only.
       2) KRITA_UNITTESTS_DATA_DIR environment variable is used to search for
          additional data sources
          to a path will write the output of the unittest as a reference to
          an external folder.
    6) The testing images are stored in:
kis_async_merger.cpp 13.4 KB