1. 27 Dec, 2021 1 commit
  2. 15 Nov, 2021 1 commit
  3. 15 Jul, 2021 1 commit
  4. 14 Jun, 2021 1 commit
  5. 10 Jun, 2021 1 commit
  6. 04 May, 2021 1 commit
  7. 31 Mar, 2021 1 commit
    • Dmitry Kazakov's avatar
      Fix loading of embedded ASL patterns and gradients to the resource server · 2d426ac0
      Dmitry Kazakov authored
      The ASL layer styles should not store the resources inside themselves.
      Instead, they should upload the resources into the global resource server
      and fetch them from there when needed. It fixes GUI elements to know
      what resource is active in the layer, which actually has a cloned
      layer style.
      
      The patch introduces a special helper class KisLinkedResourceWrapper,
      which remembers md5 and filename of the resource and then can be used
      to fetch the resource from the server using this info.
      2d426ac0
  8. 15 Dec, 2020 1 commit
  9. 27 Nov, 2020 1 commit
  10. 01 Sep, 2020 3 commits
  11. 02 Jun, 2020 1 commit
  12. 12 May, 2020 1 commit
  13. 19 Nov, 2019 1 commit
    • Dmitry Kazakov's avatar
      Fix outline in Move Tool, when a layer has a Transform Mask · e37f64c4
      Dmitry Kazakov authored
      We need to take layer's masks' change rect into account. We cannot
      use normal changeRect() call, because it never shrinks the update rect
      and adds projection device bounds (obviously, because it is supposed
      to render stuff and not just shwo a decoration).
      
      That is why the patch introduces KisLayer::tightUserVisibleBounds(), which
      calculates tight bounding rect of the layer, taking all the masks into
      account.
      
      BUG:410163
      e37f64c4
  14. 15 Nov, 2019 1 commit
    • Agata Cacko's avatar
      Implement KisAslStorage and its tests · 0b2495b2
      Agata Cacko authored
      Before this commit, KisAslStorage would always be empty.
      This commit adds support for reading from asl files
      and extracting both patterns and layer styles.
      0b2495b2
  15. 02 Oct, 2019 1 commit
    • Dmitry Kazakov's avatar
      Fix blending of layer styles with transparent pixels · 227bd473
      Dmitry Kazakov authored
      Overlay-like layer styles (overlay, inner shadow, inner glow and satin)
      seem to be applied in a complicated way:
      
      1) Firstly the copy of the layer-stack projection is created
      2) Then a copy of original layer alpha channel is extracted into a
         selection
      3) Alpha channel of the layer itself is maxed-out to 1.0
      4) The layer and all the layer overlay-like styles are merged into
         the projection
      5) The the copy of the original projection from step 1) is
         copied onto the projection again using selection from step 2).
      
      This weird technique is used to ensure that color mixing happens
      exactly in full opacity, as if the colors would have no alpha-channel.
      
      BUG:412283
      227bd473
  16. 13 Jun, 2019 1 commit
  17. 03 Jun, 2019 1 commit
    • Dmitry Kazakov's avatar
      Make KisSafeNodeProjectionStore actually reuse the projection · 69f91f70
      Dmitry Kazakov authored
      Without any image present, the store will just drop the
      projection without any reusing. It may cause small slowdowns
      in the beginning of the stroke and (theoretically) memory
      fragmentation on Windows.
      
      I'm not sure if it actually the reason of the 408133, so we
      need a confirmation from the reporter first.
      
      CCBUG:408133
      69f91f70
  18. 09 May, 2019 1 commit
    • Dmitry Kazakov's avatar
      Fix rendering of masks and layer styles on dependent nodes · 9d2920f8
      Dmitry Kazakov authored
      In Krita we have two [0] types of "dependent" nodes, that is,
      whose contents depends on the result of a merge of other layers.
      
      KisAdjustmentLayer depends on the result of composing all the
      layer below it. KisGroupLayer depends on the result of composing
      its children.
      
      All these layers can have filter masks and/or layer styles. To
      handle them, the patch introduces a term needRectForOriginal().
      needRectForOriginal(rect) means "what area of layer's original
      device should be prepared to correct result in 'rect' of the
      'final device'". Under 'final device' it may be considered
      projection for a layer or a final composed planes for a
      projection plane.
      
      What is the difference between needRectForOriginal() and needRect?
      
      needRect() defines "what area of layers below should be prepared
      to get correctly merged image". Obviously, group layer doesn't
      depend on layers below (it depends on its children) and adjustment
      layer's needRect also includes filter's needRect, which is not the
      case for needRectForOriginal().
      
      [1] --- actually, we have three. KisCloneLayer is also "dependent",
              but it is not covered by this patch.
      
      BUG:366419
      CCBUG:390299
      9d2920f8
  19. 04 May, 2019 1 commit
  20. 17 Mar, 2019 1 commit
    • Dmitry Kazakov's avatar
      Fix race condition in projection cache in KisLayer · da26d46c
      Dmitry Kazakov authored
      When indirect painting is disabled (or a mask is removed) the layer
      becomes projection-free, that is, projection device should be recycled.
      The problem is that the projection may still be accessed by worker
      threads, therefore the actual cleaning of the devices should happen in
      an exclusive context.
      
      The patch adds a special exclusive spontaneous job, that does all the
      cleaning when all workers are guaranteed to be idle/paused.
      da26d46c
  21. 06 Oct, 2018 1 commit
  22. 18 Sep, 2018 1 commit
  23. 23 Jul, 2018 2 commits
    • Dmitry Kazakov's avatar
      Fix saving layers with layer styles · 5e81de71
      Dmitry Kazakov authored
      We should deep copy the layer style projections
      when cloning the image. Otherwise shape layers and
      other delayed update nodes might cause rerender of
      the layers stack and lacking layers styles will become
      visible in the saved image.
      
      BUG:396224
      5e81de71
    • Dmitry Kazakov's avatar
      Fix saving layers with layer styles · 5b02447d
      Dmitry Kazakov authored
      We should deep copy the layer style projections
      when cloning the image. Otherwise shape layers and
      other delayed update nodes might cause rerender of
      the layers stack and lacking layers styles will become
      visible in the saved image.
      
      BUG:396224
      5b02447d
  24. 13 Jul, 2018 1 commit
  25. 12 Jul, 2018 1 commit
    • Dmitry Kazakov's avatar
      Implement selection mask overlay · 385c4c7b
      Dmitry Kazakov authored
      
      1) Selection masks now use KisProjectionLeaf hierarchy
         to embed themselves onto the top of the layers stack.
         That sounds a bit weird, but, yes, now the two
         hierarchies differ quite significantly.
      
      2) KisImage::setOverlaySelectionMask() is used to mask one
         of the masks as an overlay.
      
      3) KisNodeManager puts the mask into the overlay of the image
         as soon as the mask gets selected as a current layer.
      
      4) KisProjectionLeaf now accesses the image using
         KisNodeGraphListener::graphOverlayNode(). That is not
         too nice, because it breaks the listener pattern, but
         that is the safest way to access the image from the
         internal nodes. We might want just rename this class :)
      385c4c7b
  26. 26 Jun, 2018 1 commit
  27. 20 Jun, 2018 1 commit
  28. 22 May, 2018 1 commit
  29. 04 May, 2018 1 commit
  30. 28 Feb, 2018 1 commit
  31. 19 Dec, 2017 1 commit
  32. 12 Oct, 2017 1 commit
  33. 04 Apr, 2017 1 commit
  34. 14 Mar, 2017 1 commit
    • Thorsten Zachmann's avatar
      Add Layer thumbnail on the timeline on hover · 0c3efa57
      Thorsten Zachmann authored
      It also fixes the tooltip used for e.g. the brush to show the brush in
      the tooltip.
      Additionally it is possible to show the tooltip by pressing the middle
      button.
      
      Closes T3499 Layer thumbnail on the timeline on hover
      0c3efa57
  35. 25 Jan, 2017 1 commit
  36. 07 Dec, 2016 1 commit
    • Dmitry Kazakov's avatar
      Implement a feedback for barrier blocking when doing some actions · a49ec4b0
      Dmitry Kazakov authored
      Summary:
      Some actions should not be started before all the previous actions
      are finished. That is especially true for the actions that work
      with layers stack, like "Merge Down" and "Flatten".
      
      Now KisDelayedSaveDialog is used not only for saving, but also for
      waiting before doing usual actions. It also has a busy-loop timeout of
      1 second before showing up, for not distracting painters from their
      workflow when the action is postponed only a little bit.
      
      BUG:372724
      Fixes T4593
      
      Test Plan:
      Basically, the steps like in bug 372724.
      
      1) Select multiple layers
      2) Start a long stroke (1000px colorsmudge brush is a good example)
      3) Press Ctrl+E ***multiple*** times quickly
      4) After all the background work is finished, press Ctrl+Z
      
      There should be no crash, and the result should be somewhat expected.
      
      Repeat the same for:
      1) Merge down
      2) Flatten Image
      3) Flatten Layer
      4) Transform a layer using "Layers" menu(?)
      
      Reviewers: #krita, timotheegiet, scottpetrovic
      
      Maniphest Tasks: T4593
      
      Differential Revision: https://phabricator.kde.org/D3449
      a49ec4b0
  37. 19 Nov, 2016 1 commit