1. 31 Oct, 2014 1 commit
  2. 28 Oct, 2014 2 commits
  3. 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.
  4. 20 Oct, 2014 1 commit
  5. 19 Oct, 2014 1 commit
  6. 18 Oct, 2014 1 commit
  7. 17 Oct, 2014 2 commits
    • 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
      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.
  8. 14 Oct, 2014 1 commit
  9. 13 Oct, 2014 1 commit
  10. 11 Oct, 2014 1 commit
  11. 10 Oct, 2014 1 commit
  12. 07 Oct, 2014 2 commits
  13. 04 Oct, 2014 3 commits
  14. 03 Oct, 2014 5 commits
  15. 02 Oct, 2014 1 commit
  16. 01 Oct, 2014 1 commit
  17. 30 Sep, 2014 2 commits
  18. 28 Sep, 2014 1 commit
  19. 27 Sep, 2014 7 commits
  20. 26 Sep, 2014 2 commits
  21. 25 Sep, 2014 2 commits
    • Dmitry Kazakov's avatar
    • Dmitry Kazakov's avatar
      Cage Transform is ready for testing (implemented the last bit: extrapolation) · e4db0858
      Dmitry Kazakov authored
      That was a tough task. The points outside of the outline of the cage
      are not defined in green coordinates, so we would either need to:
      - chop the grid into smaller chunks near the outline, which would make
        the grid non-uniform with lots of inherited complications
      - extrapolate the points near the outline of the cage based on the
        internal points which lay inside the cage polygon.
      I chose the latter approach. It is much easier to implement, but has one
      small drawback. Sometimes, if your cage is too narrow (e.g. 8-16px wide),
      the interpolator may not find the points suitable for a base. In such a case
      the corresponding cell of the grind will be dropped from the processing
      and you may see an empty cell.
      The cell sizes:
      1) Preview: 16 px
      2) Real transform: 8 px
      So when creating the cage, just ensure you are not creating the cage
      polygons more narrow than 8 px. This limitation applies only to the
      non-deformed grid. The deformed one can have arbitrary configuration.