1. 26 Mar, 2019 1 commit
    • Agata Cacko's avatar
      Fix Sequential Iterator assert on invalid rectangles · d7542a79
      Agata Cacko authored
      Before Quick Brush engine (roundmarker) was crashing
      because Sequential Iterator throwed out asserts
      when the rectangle was not "empty" according to Qt
      but  still not valid (for example has intmin value on
      width or height). This commit fixes that behaviour by
      providing additional checks.
      Commit includes also benchmarks for roundmarker.
      Test Plan:
      - benchmarks included in the commit
      - painting with Quick Brush (i.e. b) Basic-1)
      with size <1 px
      Reviewers: dkazakov, #krita
      Reviewed By: dkazakov, #krita
      Subscribers: rempt
      Tags: #krita
      Differential Revision: https://phabricator.kde.org/D19881
  2. 10 Jul, 2018 1 commit
  3. 04 May, 2018 1 commit
    • Dmitry Kazakov's avatar
      Fix a safe assert in RoundMarker brush · 40d8fa30
      Dmitry Kazakov authored
      We shouldn't test for zeroness using qFuzzyCompare, instead we should
      use some predefined epsilon value. This ensures we never try to divide
      by an extremely small value, not representable by double precision
  4. 26 Apr, 2018 1 commit
  5. 16 Jun, 2017 1 commit
    • Dmitry Kazakov's avatar
      Fix two transform unittests · 6c17ac7b
      Dmitry Kazakov authored
      They were broken because the points were compared without any tolerance,
      but round-tripping via XML cause a bit of rounding.
  6. 04 Jun, 2017 1 commit
  7. 15 Feb, 2017 1 commit
    • Dmitry Kazakov's avatar
      Implement auto-fill function for Krita markers · d2266b46
      Dmitry Kazakov authored
      Now we define a custom SVG attribute "krita:marker-fill-method=auto",
      which means that all the markers should have the same fill (including
      gradient and patterns) as the shape's stroke.
      Ideally we should make a GUI switch, so the user would be able to choose
      whether he wants to auto-fill the markers or not. But that can wait till
  8. 15 Dec, 2016 1 commit
    • Dmitry Kazakov's avatar
      Fix ugly rendering of shape handles and bounding boxes · a9fa438b
      Dmitry Kazakov authored
      Finally! :)
      Now there is a special class for rendering handles in native
      display coordinates, instead of the transformed one. Its name is
      KisHandlePainterHelper. It uses KisAlgebra2D::DecomposedMatix
      angorithm, which decomposes an arbitrary matrix into a set of
      primitive transformations. Then we use shear and rotate parts of it
      to transform the handles and drop the rest :)
  9. 14 Nov, 2016 2 commits
  10. 12 Aug, 2016 1 commit
    • Dmitry Kazakov's avatar
      Connected marker brush algorithm to the brush itself · db412e6a
      Dmitry Kazakov authored
      Now you can test it! Just take into account:
      1) It cannot vary its opacity during the stroke
      2) It has no fading (like usual marker)
      3) Brush Tip dialog is a *stub*. The marker uses only the Width and
         Spacing parameter of the brush :) So don't try to play with it :)
  11. 11 Aug, 2016 1 commit
  12. 02 Mar, 2016 1 commit
  13. 25 Jan, 2016 1 commit
    • Boudewijn Rempt's avatar
      Move kritaimage to libs · b46898a0
      Boudewijn Rempt authored
      This shows up a bunch of other problems with alien includes. Some
      tests have been disabled (marked "kisdoc") because they needed
  14. 04 Sep, 2015 1 commit
    • Boudewijn Rempt's avatar
      Port away from kdebug to qcdebug · 4fa86a75
      Boudewijn Rempt authored
      The approach taken is a bit different from what's in the porting
      scripts or in pigment: I've moved kis_debug to libglobal and adapted
      the dbgKrita etc. defines to use qcDebug etc. I've kept the old
      category numbers for now. I've also ported all places where we
      used kDebug() etc. directly, and not a few places where qDebug() etc
      were used directly.
  15. 06 Mar, 2015 1 commit
  16. 11 Dec, 2014 1 commit
    • Jouni Pentikäinen's avatar
      Make mirror axis decoration follow canvas rotation · adc5baac
      Jouni Pentikäinen authored
      Functionality is generalized from the previously assumed special case
      of non-rotated canvas.
      For simplicity of implementation, KisMirrorAxis::Private::axisPosition is
      now in image coordinate space rather than widget coordinate space.
      BUG: 336475
  17. 24 Nov, 2014 1 commit
  18. 13 Nov, 2014 1 commit
    • 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:
  19. 19 Oct, 2014 1 commit
  20. 14 Oct, 2014 1 commit
  21. 27 Sep, 2014 1 commit
  22. 26 Sep, 2014 1 commit
  23. 25 Sep, 2014 1 commit
  24. 19 Sep, 2014 2 commits
    • Dmitry Kazakov's avatar
      Fix an assert in adjustIfOnPolygonBoundary() · 41b631e5
      Dmitry Kazakov authored
      This (I hope) fixes an assert in the adjustment of the point
      when it lays on the border of the cage. Looks like QPolygonF
      has quite vast tolerance for containsPoint() so it gives false
    • Dmitry Kazakov's avatar
      Implemented preview of the Cage Transform · 65b309d7
      Dmitry Kazakov authored
      Still in TODO list:
      1) Fix resetting edit points mode when switching between warp and cage
      2) Add extrapolation at the borders of the cage
      3) Fix a random assert in the cage adjusting algorithm
  25. 18 Sep, 2014 1 commit
    • Dmitry Kazakov's avatar
      Implemented Cage Transform Worker · 58d783e0
      Dmitry Kazakov authored
      The worker now can transform a paint device according to the defined
      cage. Now we just need to connect it to the Transform Tool and the
      implement preview generation.