1. 14 Jan, 2021 1 commit
  2. 15 Dec, 2020 1 commit
  3. 27 Nov, 2020 1 commit
  4. 03 Aug, 2020 1 commit
    • Dmitry Kazakov's avatar
      Fix crash when moving a Transform Mask with the Move Tool · 26c61baa
      Dmitry Kazakov authored
      The patch does two things:
      1) MoveStrokeStrategy should not try to request node->projection()
         unconditionally, because transform masks don't have them. Instead,
         the strategy should request current level of detail directly from
         the image.
      2) The patch also fixes image() pointer in the masks. The pointer
         should be passed directly in the mask's constructor.
  5. 15 Apr, 2020 1 commit
  6. 05 Nov, 2019 1 commit
  7. 20 Aug, 2018 1 commit
    • Halla Rempt's avatar
      Fix warning · 721cadbd
      Halla Rempt authored
      /home/boud/dev/krita/libs/image/lazybrush/kis_colorize_mask.cpp:207:1: warning: 'SetKeyStrokesColorSpaceCommand'
            defined as a struct here but previously declared as a class [-Wmismatched-tags]
      struct SetKeyStrokesColorSpaceCommand : public KUndo2Command {
      /home/boud/dev/krita/libs/image/lazybrush/kis_colorize_mask.h:170:12: note: did you mean struct here?
          friend class SetKeyStrokesColorSpaceCommand;
      /home/boud/dev/krita/libs/image/lazybrush/kis_colorize_mask.cpp:711:1: warning: 'KeyStrokeAddRemoveCommand'
            defined as a struct here but previously declared as a class [-Wmismatched-tags]
      struct KeyStrokeAddRemoveCommand : public KisCommandUtils::FlipFlopCommand {
      /home/boud/dev/krita/libs/image/lazybrush/kis_colorize_mask.h:171:12: note: did you mean struct here?
          friend class KeyStrokeAddRemoveCommand;
      /home/boud/dev/krita/libs/image/lazybrush/kis_colorize_mask.cpp:892:1: warning: 'SetKeyStrokeColorsCommand'
            defined as a struct here but previously declared as a class [-Wmismatched-tags]
      struct SetKeyStrokeColorsCommand : public KUndo2Command {
      /home/boud/dev/krita/libs/image/lazybrush/kis_colorize_mask.h:172:12: note: did you mean struct here?
          friend class SetKeyStrokeColorsCommand;
      3 warnings generated
  8. 05 Apr, 2018 1 commit
  9. 12 Dec, 2017 1 commit
  10. 11 Dec, 2017 1 commit
    • Dmitry Kazakov's avatar
      Implement "Limit to layer bounds" feature of the Colorize Mask · dfae2014
      Dmitry Kazakov authored
      If the outer color of the mask is transparent (e.g. when coloring
      a character), the user might select "Limit to layer bounds" option,
      which will limit the coloring area by the non-zero area of the parent
      layer. It might speedup the coloring significantly.
  11. 08 Dec, 2017 3 commits
  12. 07 Dec, 2017 3 commits
  13. 06 Dec, 2017 1 commit
  14. 17 Nov, 2017 1 commit
    • Dmitry Kazakov's avatar
      Implement prefiltering algorithms for Lazy Fill Tool · 42a63fff
      Dmitry Kazakov authored
      Now colorize mask has several options:
      * "Edge detection (px)" --- if activated, the mask tries to find edges of
        the filled areas in the source image. This option should be activated
        **only** if the source image has vast areas filled with (almost) solid
        Important: in case you image is a mixture of lines and solid blobs, make
                   sure that the "size" of edge detection filter is set to the
                   size of the lines in your image. That will give you the best
      * "Gap close hint (px)" is the size of the gaps the filter will try to
        "close" before running the flood filling. This value should be about
        the size of the maximum unclosed gap in your image.
      * "Clean up (%)" is a special mode of the mask, when it tries to remove
        some of your key strokes if they go beyond the "closed" areas. When 0%,
        clean up phase is skipped, when 100% it tries to remove as much
        "uncertain" details as possible.
  15. 25 May, 2017 1 commit
  16. 08 May, 2017 1 commit
  17. 18 Oct, 2016 1 commit
    • Frederik Gladhorn's avatar
      Be more consistent in usage of override keyword · b92e5f9c
      Frederik Gladhorn authored
      When a member function in a class uses override, all other functions
      that override virtuals should follow. This makes refactoring easier
      (renaming the base class function for example will result in an error in
      the derrived class).
      Most compilers have a warning for the use of override in only some
      functions. In order to reduce compiler warnings, add missing overrides.
      The warnings look like:
      warning: 'icon' overrides a member function but is not marked 'override'
      This patch does not touch KisLayer::original() since that is actually
      in KisBaseNode original is a virtual function (not pure) while in the
      derrived class it's declared as pure.
  18. 25 Sep, 2016 1 commit
  19. 22 Sep, 2016 1 commit
    • Dmitry Kazakov's avatar
      Fixed an update glitch in the Colorize Mask · ad689f11
      Dmitry Kazakov authored
      Now I had to introduce a special property for the masks, which
      reports the additional area where the masks draws. This area
      cannot be computed by mean of change/needRect functionality
      since it doesn't depend on the dirty rect of the layer.
      Fixes T3812
  20. 16 Sep, 2016 2 commits
  21. 08 Sep, 2016 1 commit
  22. 07 Sep, 2016 1 commit
  23. 06 Sep, 2016 1 commit
    • Dmitry Kazakov's avatar
      Implement Convert->to Paint Layer for Colorize Mask · 5312e008
      Dmitry Kazakov authored
      Now you can just convert the mask into a layer using standard Krita
      conversion methods. Just do:
      1) Right-click
      2) "Convert"->"to Paint Layer"
      and the colorize mask will be split into a separate layer automagically!
      Ref T372
  24. 05 Sep, 2016 1 commit
    • Dmitry Kazakov's avatar
      Sequence numbers for paint devices and cache filtered source in Colorize Mask · cac26598
      Dmitry Kazakov authored
      1) Implement KisPaintDevice::sequenceNumber() which basically lets
         us know when the device has changed
      2) Implement caching of the filtered paint device in KisColorizeMask.
         Now we can check for the sequence number and reuse the cache in
         case it didn't change.
      3) Implement automatic selection of the mask composite op depending on
         the number of transparent pixels in the parent layer.
      Ref T372
  25. 19 Aug, 2016 1 commit
  26. 17 Aug, 2016 1 commit
  27. 11 Aug, 2016 1 commit
    • Dmitry Kazakov's avatar
      The initial implementation of the Colorize Mask functionality · b9fe09b2
      Dmitry Kazakov authored
      At the moment you can paint on it with a usual brush, then click
      on the "Update" property and see the filling result. A lot of things are
      still to be done:
      1) There should be a switch between "b/w mode" and "alpha mode"
      2) The eraser button doesn't work when the mask is active (though
         you can paint with the Erase composite op and remove the keystrokes
         this way)
      3) The user should be able to activate/configure prefiltering of the image
      4) The filtered image should be cached using some solution with timestamps
      5) There should be automatic mode: the mask updates automatically every time
         you change the original layer (the same timestamps)
      6) New icons needed:
          - Update (needs rename?)
          - Show Coloring
          - Show Key Strokes
          - Icon for the mask itself (and its action)
      7) The filling is extremely slow. Right now the multicut algorithm doesn't
         have the fast paths for recognizing disjoint areas without doing min-cut.
      8) At the moment you cannot color-pick from the mask. To implement that
         you should write the merged keystrokes projection into fakePaintDevice.
         (btw, it will simplify decorateRect() significantly!)
      Ref T372
  28. 21 Jun, 2016 1 commit
  29. 25 Jan, 2016 1 commit
    • Halla Rempt's avatar
      Move kritaimage to libs · b46898a0
      Halla Rempt authored
      This shows up a bunch of other problems with alien includes. Some
      tests have been disabled (marked "kisdoc") because they needed
  30. 04 Mar, 2015 1 commit
  31. 16 Feb, 2015 1 commit
  32. 12 Feb, 2015 1 commit
    • Dmitry Kazakov's avatar
      Fixed multiple transform masks problems · 191011d3
      Dmitry Kazakov authored
      This patch implements:
      1) KisImage::requestProjectionUpdateNoFilthy() the same as layer->setDirty(),
         but skips regeneration of layer's projection.
      2) KisLayer::updateProjection() now accepts not layer's position, but
         a pointer to the filthy node.
      3) KisEffectMask::decorateRect() now accepts a position relative to the
         filthy mask/layer calculated inside the layer itself. *Not* the one used
         by KisAsyncMerger.
      Known bugs: tested only with affine transformations, that is Free and
                  4-point perspective
  33. 17 Nov, 2014 1 commit
    • 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
      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.
  34. 04 Nov, 2014 1 commit
  35. 28 Oct, 2014 1 commit