• 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
    
       3) KRITA_WRITE_UNITTESTS=1 together with KRITA_UNITTESTS_DATA_DIR set
          to a path will write the output of the unittest as a reference to
          an external folder.
    
    6) The testing images are stored in:
    	svn+ssh://svn@svn.kde.org/home/kde/trunk/tests/kritatests
    
    
    CCMAIL:kimageshop@kde.org
    4195c38e
kis_async_merger.cpp 13.4 KB