1. 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
            to a path will write the output of the unittest as a reference to
            an external folder.
      6) The testing images are stored in:
    • 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
    • Dmitry Kazakov's avatar
  2. 05 Nov, 2014 1 commit
  3. 04 Nov, 2014 2 commits
  4. 31 Oct, 2014 2 commits
  5. 28 Oct, 2014 2 commits
  6. 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 :)
    • Dmitry Kazakov's avatar
      Fix KisFilterWeightsApplicator::unite() · 26db43e9
      Dmitry Kazakov authored
      Empty region should be really empty and not to drag from 0 coordinate.
  7. 20 Oct, 2014 2 commits
  8. 19 Oct, 2014 1 commit
  9. 18 Oct, 2014 3 commits
  10. 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.
    • 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.
    • Dmitry Kazakov's avatar
    • 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.
  11. 16 Oct, 2014 2 commits
  12. 15 Oct, 2014 13 commits
  13. 14 Oct, 2014 2 commits