1. 01 May, 2020 8 commits
    • Mathias Wein's avatar
      Substitute Rec. 2100 PQ profile with linear Rec. 2020 profile · 1e87724b
      Mathias Wein authored
      Perceptual quantization (PQ) is just not useful for a
      color selector.
    • Mathias Wein's avatar
      Adjust the popup palette selector on display renderer changes · 7c897c28
      Mathias Wein authored
      When the color space of a document or current layer changes,
      the color selector did not react to this.
      After a lot of brain racking I came to the conclusion that the
      most sane solution is to make color space changes explicit
      for KisVisualColorSelector, and pass it the original
      foreground color again.
      Changing color space was added to KisColorSelectorInterface too.
      More implicit behavior and assumptions about expected outcome
      seem counterproductive at this point.
    • Mathias Wein's avatar
      Fix tone reproduction curve estimation · fe47c061
      Mathias Wein authored
      The ITUR_2100_PQ_FULL.ICC has no colorants and revealed the bugs.
      Iteration order was inverted so normalization didn't work.
      Also only the first colorant was ever written, and
      consequently the luma coefficients were also incomplete.
      Additionally, RGB vs. BGR channel ordering was not respected,
      and the sum of luma coefficients needs to be 1.0 for HSY
      color space calculations.
      And while at it, calculate a few more points so the graph in
      the color space browser looks at least somewhat like a curve.
    • Mathias Wein's avatar
      Limit cursor drag in mirror mode elliptic selector shape · 418ebf10
      Mathias Wein authored
      Without any kind of barrier between left and right half,
      it was not really possible to select the min or max value
      as you could in a bar control.
      With this change, the cursor coordinate will be limited
      to the side where mouse dragging started.
    • Mathias Wein's avatar
      Avoid QVector<T> in fast color (De-)Linearization · f83ba656
      Mathias Wein authored
      Constructing a QVector is expensive, so expensive that it was
      actually slower than the non-fast versions.
      It ranked pretty high in perf and removing it improved HSY'->RGB
      conversion times quite a bit.
    • Mathias Wein's avatar
      Fix HSY selector modes · 6a660c25
      Mathias Wein authored
      The RGB<=>HSY conversion really only works properly in linear RGB.
      Gamma needs to be applied to Y', and is now taken from Advanced Color Selector
      Luma coefficients are now fetched on reconfiguration instead of every single
      color conversion.
      Caveat: Some color profiles like "ITUR_2100_PQ_FULL.ICC" define no colorants
      and hence they cannot be linearized with the current implementation.
      A substitution of color spaces like the Small Color Selector does seems
      unavoidable in the long run...
    • Dmitry Kazakov's avatar
      Fix double-mirrored dabs when painting with precision < 5 · 6b49984f
      Dmitry Kazakov authored
      Even though KisDabRenderingQueue returns mutable dabs, it doesn't
      guarantee that they will be unique in the returned list. We should
      be very careful with them and ensure that we don't mirror the same
      paint device twice.
    • Dmitry Kazakov's avatar
      Fix KisScanlineFill not to tounch point (0,0) on every fill · 75430a75
      Dmitry Kazakov authored
      This patch fixes wery slow application of Magic Wand tool on big images.
      The slowdown happened because KisScanlineFill write-accessed every dst
      device at position (0,0), when initialized random accessors. It resulted
      in dst device extent growing too much, therefore a lot of empty pixels
      had to be porcessed at the later stages of contiguous selection.
  2. 30 Apr, 2020 4 commits
  3. 29 Apr, 2020 3 commits
  4. 27 Apr, 2020 2 commits
  5. 26 Apr, 2020 1 commit
  6. 23 Apr, 2020 7 commits
  7. 22 Apr, 2020 1 commit
  8. 21 Apr, 2020 3 commits
  9. 20 Apr, 2020 1 commit
    • Agata Cacko's avatar
      Fix assert on Node::parentNode() for root · 2a391d81
      Agata Cacko authored
      Before this commit, because of both parentNode() not checking
      for parent() existing and createNode() not checking for the node
      existing (which in this case was originalNode->parent()),
      trying to access parentNode() of root node would result in an assert
      or crash.
      This commit fixes that behaviour in both places.
  10. 18 Apr, 2020 1 commit
  11. 17 Apr, 2020 6 commits
  12. 16 Apr, 2020 3 commits