1. 21 Nov, 2014 3 commits
  2. 17 Nov, 2014 2 commits
    • Dmitry Kazakov's avatar
      eccddb93
    • Dmitry Kazakov's avatar
      Fixed preview of the transform tool when there are two t-masks · 2c77b6f2
      Dmitry Kazakov authored
      There is still a small bug that prevents *two+* transform masks for
      the same layer update correctly. Codewise there are two problems:
      
      1) We cannot distinguish setDirty() calls from
         KisRecalculateTransformMaskJob and when the other masks change. That
         can be fixed by implementing a filtering callbacks framework in
         KisImage.
      
      2) extent() and exactBounds() calculate changleRect() a bit incorrectly,
         not taking the previous masks into account.
      
      I guess there bugs can be postponed till much later. Right now
      transform masks are quite stable and can be uses quite easily
      unless combined in sets.
      2c77b6f2
  3. 14 Nov, 2014 3 commits
  4. 13 Nov, 2014 3 commits
    • 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
    • Dmitry Kazakov's avatar
      Added fast path to KisPaintDevice::exactBounds() · f52d53be
      Dmitry Kazakov authored
      Don't iterate through KisPaintDevice four times if it is already knows to be empty
      f52d53be
    • Dmitry Kazakov's avatar
      97a78e18
  5. 05 Nov, 2014 1 commit
  6. 04 Nov, 2014 2 commits
  7. 31 Oct, 2014 2 commits
  8. 28 Oct, 2014 2 commits
  9. 27 Oct, 2014 2 commits
    • Dmitry Kazakov's avatar
      First ready-for-testing version of the Transform Mask functionality · 18db77f3
      Dmitry Kazakov authored
      1) Just create a Transform Mask and edit it with usual Transform Tool
      2) All the transformation modes are supported.
      2.1) Affine transforms (Free and Perspective) have dynamic preview. That
           is you can paint on a layer and the mask will be updated dynamically
      2.1) The other types are updated "statically", that is after 3 sec after
           the last change in the original layer.
      
      Question for testers: isn't this 3 sec delay too long? Probably we should
                            make it shorter?
      
      3) The transformation is written into the mask after you click Apply button.
      4) The quality of the affine preview and the final transform (after 3 sec
         delay) differs a bit. That is expected.
      5) You can also apply a transform mask onto a Clone Layer, which will
         allow you painting in 3D-perspective dynamically.
      
      Please test it in krita-chili-kazakov branch :)
      
      CCMAIL:kimageshop@kde.org
      18db77f3
    • Dmitry Kazakov's avatar
      Fix KisFilterWeightsApplicator::unite() · 26db43e9
      Dmitry Kazakov authored
      Empty region should be really empty and not to drag from 0 coordinate.
      26db43e9
  10. 20 Oct, 2014 2 commits
  11. 19 Oct, 2014 1 commit
  12. 18 Oct, 2014 3 commits
  13. 17 Oct, 2014 5 commits
    • Dmitry Kazakov's avatar
      Fix activation of a layer when adding a new layer · f25f603f
      Dmitry Kazakov authored
      We have an extended selection mode now, so we should use
      extended selection manipulation methods for it.
      
      BUG:339599
      f25f603f
    • Dmitry Kazakov's avatar
    • Dmitry Kazakov's avatar
      [FEATURE] Implemented Wash mode for the liquify transform tool · cab95c71
      Dmitry Kazakov authored
      There is a fundamental difference between Wash mode and BuildUp mode of
      the liquify brush. When you paint on the same place with in BuildUp
      (default) mode it adds deformations infinitely, until you hardly see the
      original piece. When you use Wash mode, all deformations are limited
      by the Amount value, that is they will not exceed this level. You can also
      control how fast the deformations will rush to the maximum level by
      adjusting 'Flow' parameter, which is available only in this mode.
      
      CCMAIL:kimageshop@kde.org
      cab95c71
    • Dmitry Kazakov's avatar
      c33c596f
    • Dmitry Kazakov's avatar
      Ported the Transform Tool onto primary/secondary actions framework · 58d33ff7
      Dmitry Kazakov authored
      Transform tool was the last tool not ported and filtering events directly.
      Now it also uses the predefined actions. The resulting architecture doesn't
      seem to be ideal, and looks a bit complicated with lots of methods calling
      each other and forwarding 9 methods for every strategy. Probably, we should
      use some boost::function-based action assignment here. Then we will be able
      to map/remaps actions quite easily.
      
      This patch implements shift-gesture action and ctrl-base inversion for the
      transformation tool. Right not it is almost ready for usage. The only thing
      left is "build-up vs wash mode" switch (if needed) and better UI.
      
      CCMAIL:kimageshop@kde.org
      58d33ff7
  14. 16 Oct, 2014 2 commits
  15. 15 Oct, 2014 7 commits