1. 14 Jan, 2017 1 commit
  2. 26 Jan, 2016 1 commit
  3. 24 Sep, 2015 1 commit
  4. 16 Sep, 2015 1 commit
  5. 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.
  6. 29 Mar, 2015 1 commit
  7. 21 Oct, 2014 1 commit
  8. 30 May, 2014 1 commit
    • Dmitry Kazakov's avatar
      Implemented type-safe translations for undo actions · 9e143a4e
      Dmitry Kazakov authored
      See documentation to a KUndo2MagicString class.
      Now KUndo2Command cannot accept a usual string as the operation text().
      The supplied text must pass through the kundo2_i18n() function, which
      tells the developer to use (qtundo-format) which is mandatory for all the
      undo-related strings (because in some languages they should be shown in
      different cases in undo/redo action and in undo history, and the
      translators should use Magic Split for them).
  9. 10 Nov, 2013 1 commit
  10. 04 Jun, 2013 1 commit
  11. 14 Oct, 2012 1 commit
  12. 31 Oct, 2011 1 commit
    • Boudewijn Rempt's avatar
      Fix color management of the display · a8c01ff9
      Boudewijn Rempt authored
      We took the display profile from the kritarc config file, which when it's
      set by colord or anything else wrong. So make sure that it's easy to get
      the correct colorprofile and use that everywhere.
  13. 21 Jun, 2011 1 commit
  14. 15 May, 2011 1 commit
    • Dmitry Kazakov's avatar
      Fixed more unittests · 90e6efa8
      Dmitry Kazakov authored
      KisMask::apply() should consider mask's extent() instead of
      selection's rect, because transparency mask has a special extent
      calculation method.
  15. 07 May, 2011 1 commit
    • Dmitry Kazakov's avatar
      Refactoring for KisSelection and KisSelectionManager · 0489764d
      Dmitry Kazakov authored
      This commit does two things:
      1) It changes the interface of KisSelection. Now KisSelection does not
         inherit KisPaintDevice. But it contains three components:
         pixelSelection(), shapeSelection() and projection(). This removes
         all the hacks with datamanager sharing. So now, if you want to
         access the pixels of the selection, you need to read them from the
         projection() paint device.
      2) Clean-ups and refactoring for KisSelectionManager. Now there are no
         outdated code-duplications in every selection filter. Many bugs are
         gone, all the processing areas now coincide. Now we do not process
         the entire image area when a small piece of selection need to be
         filtered. Locking of the image's projection is added when needed as
      Still not done:
      KisClipboard has a bug. It's setClip() works wrong with shifted
      paint devices. Not fixed because of the opposition from Boud.
  16. 19 Dec, 2010 1 commit
  17. 13 Jun, 2010 1 commit
    • Dmitry Kazakov's avatar
      KisTransaction refactoring. · 91c942eb
      Dmitry Kazakov authored
      I'll write more thoroughtly on wiki later.
      Just a short summary:
        - KisTransaction no longer inherits QUndoCommand;
          it encapsulates all the operations with KisTransactionData,
          that is actual QUndoCommand
        - There are two types of versioning now:
            a) Commands - they are based on QUndoCommand - the work is done
               in redo() method. Just as Qt describes
            b) Transactions - they are different - they are created before
               direct accessing the device and finished after the work is
               done. Their first redo() does nothing() (to support adding to
               QUndoStack). They just watch from the side and record your
        - Made a decision to detete KisUndoAdapter::undo()/setUndo()
          mechanism. This is a global variable, that is weird. More than
          that, it gives us nothing now. So the removal is started, though
          not finished.
      svn path=/trunk/koffice/; revision=1137488
  18. 09 Apr, 2010 2 commits
    • Boudewijn Rempt's avatar
      Merged revisions 1112670,1112721,1112762,1112769-1112770 via svnmerge from · c2fd83e0
      Boudewijn Rempt authored
        r1112670 | adamc | 2010-04-08 20:53:45 +0200 (Thu, 08 Apr 2010) | 4 lines
        2 bugs fixed:
        o crash, if deleting all text in textbrush
        o default spacing was not used, while drawing
        r1112721 | sebsauer | 2010-04-09 00:58:18 +0200 (Fri, 09 Apr 2010) | 2 lines
        followup of r1109709; copyrights++
        r1112762 | clicea | 2010-04-09 06:48:34 +0200 (Fri, 09 Apr 2010) | 4 lines
        Fix the displayed units.
        I wonder how was that not noticed before.
        r1112769 | berger | 2010-04-09 08:32:54 +0200 (Fri, 09 Apr 2010) | 2 lines
        mypaint brush is unreleased too, disable its test
        r1112770 | berger | 2010-04-09 08:41:07 +0200 (Fri, 09 Apr 2010) | 2 lines
        delete the transaction at end
      svn path=/branches/work/koffice-ko/; revision=1112771
    • Cyrille Berger's avatar
      delete the transaction at end · a5a8a021
      Cyrille Berger authored
      svn path=/trunk/koffice/; revision=1112770
  19. 29 Mar, 2010 3 commits
    • Boudewijn Rempt's avatar
      Merged revisions 1108766,1108770,1108773 via svnmerge from · 68d59d5b
      Boudewijn Rempt authored
        r1108766 | rempt | 2010-03-29 20:49:13 +0200 (Mon, 29 Mar 2010) | 1 line
        call endTransaction when beginTransaction is called
        r1108770 | berger | 2010-03-29 20:55:57 +0200 (Mon, 29 Mar 2010) | 7 lines
        Certainly not return rgb8, returning 0 act as a error code, returning
        an other color space would make a nightmare to debug, since the caller
        won't have the color space he wanted, keep going, and fails later at a
        place where it will not be suspected that the wrong color space is used
        CCMAIL: Boudewijn Rempt <boud@valdyas.org>
        r1108773 | rempt | 2010-03-29 21:04:20 +0200 (Mon, 29 Mar 2010) | 1 line
        Also delete the transactions
      svn path=/branches/work/koffice-ko/; revision=1108775
    • Boudewijn Rempt's avatar
      Also delete the transactions · 11bcf479
      Boudewijn Rempt authored
      svn path=/trunk/koffice/; revision=1108773
    • Boudewijn Rempt's avatar
      call endTransaction when beginTransaction is called · abfa61a8
      Boudewijn Rempt authored
      svn path=/trunk/koffice/; revision=1108766
  20. 21 Oct, 2009 1 commit
    • Boudewijn Rempt's avatar
      autumn cleaning · 15cf5d66
      Boudewijn Rempt authored
      Apply kdelibs' astyle to all of krita. We've got enough variation
      in spaces around * and & anyway.
      svn path=/trunk/koffice/; revision=1038712
  21. 28 Sep, 2009 1 commit
    • Dmitry Kazakov's avatar
      Ok, it is the patch we were discussing in a ml recently. · 65a073d0
      Dmitry Kazakov authored
      Here is almost exact extraction of the announce published in a
      What is done in the patch.
      1) Now all the layers apply their own masks in a uniform way.
      How it was before:
      Every type of layer (paint, adjustment,etc) had it's own
      updateProjection() function. And EVERY layer implemented it's own
      cycle of applying masks. No need to say that they all differed. And
      most of them was broken, because they didn't take into account
      need/change rects of filters inside masks (at best).
      How it is now:
      updateProjection() and ALL the stuff about masks AND projections is
      moved to KisLayer. Specialized layer can operate with only a few
      functions those are not connected with a projection much. Every child
      can overload these functions:
      original() - returns a paint device where the layer stores it's
      image. NOTE: This is not the same with projection() as the latter one
      includes original() with all the masks applied.
      repaintOriginal() - called by updateProjection when original should be
      A layer CAN (not should) overload:
      needProjection() - if a layer needs an always-in-memory projection
      (e.g. KisPaintLayer needs one for indirect painting)
      copyOriginalToProjection() - used in couple with the previous one. A
      layer can enhance original during painting on a projection
      (e.g. indirect painting, see KisPaintDevice's method)
      This all means that a KisLayer's child shouldn't do any work to create
      a projection. It's created by KisLayer in a deferred way (when masks
      are present)
      Masks application strategy changed too (and quite much).
      Now changeRect()/needRect() functions are part of KisNode. And before
      application of a mask-stack we first get to know what need rect we
      want to copy from original() device.
      Rect calculating algorithm is quite overwhelming. It's implemented in
      two functions: masksChangeRect and masksNeedRect.
      First we get a change rect of a DESTINATION PROJECTION with a first
      function in a bottom-up(!) way. Then we calculate needRects for all
      the masks in a top-down(!) way with a second function, and by the end
      of this process we get a rect that we should copy from original()
      device to a temporary device for applying filters.
      This part of a patch fixes a bug with a blur-filter-mask. In current
      version  you simply you get a slack if you paint on a layer with
      blur-mask present (i'm not sure you can check it up now, because
      blur-filter has an internal bug - it writes the result to the source
      instead of destination).
      2) The second task for this patch was to unify adjustment and
      generator layers. The point is, they both use selections, that means
      they both should work in the same way.
      How it was before:
      KisAdjustmentLayer and KisGeneratorLayer had code duplications for
      selections stuff.
      How it is now:
      All the selection-related stuff is moved to a separate class -
      KisSelectionBasedLayer. Both problematic classes are derived from this
      base class. Speaking truly, KisAdjustmentLayer class has very few code
      inside now.
      Selections on selection based layers was not working at all
      before. Now the the code applies selections (if you manage to
      create one ;) (see * for more)) to the layers well.
      3) The third task was to clean masks classes. We had much code
      duplication there too. Most duplications and misuses was connected to
      selections (again).
      How it was before:
      KisFilterMaks, KisGeneratorMask, KisTransparencyMask - they all had
      their own implementation
      How it is now:
      All the selection-related stuff is moved to KisMask class. Here is an
      extract form a commit message:
          Refactoring for masks
          Now masks utilize selections in a uniform way. KisMask is the only
          place that knows anything about mask's selection[0]. It's descendant's do
          very simple task, they just decorate the rect with the desired
          effect[1]. The task made by KisTransparencyMask fell back to even more
          trivial routine - it just needs to copy source image to destination,
          without any modifications[2].
          Another significant change accumulated by this commit is a small
          cleanup of KisMaskManager. There are still many FIXME's for it. The
          most annoying is code duplication [3] of KActions for masks.
          [0] - KisMask::apply()
          [1] - virtual KisMask::decorateRect()
          [2] - KisTransparencyMask::decorateRect()
          [3] - KisMaskManager's actions for mask functions are duplicated in
      As you can see, this commit accumulates some cleanups for
      KisMaskManager too. Most of them remove code duplications and uniform
      the code. More than that [and this is the only place where i worry
      about the patch] this fix adds a new method(!) to KoDocument. It's
      called undoLastCommand() - that is an equivalent to a user-undo
      command. It is added to be able to cancel creation of an filter mask
      in case a user presses 'Cancel' button in a creation dialog. Please
      review this change!
      - cancelling creation of the filter mask now do not break undo stack
      - selections (see *) on filter masks work well now
      4) Cleaning selections infrastructure, made me create a benchmark for
      different selection application algorithms. This benchmark is placed
      in ./image/tests/kis_filter_selections_benchmark.cpp. I wrote about it
      already here.
      *) Still present bugs:
      a) [the worst one] Painting on any alpha mask do not work because of
      alpha() colorspace issue i was described before in this maillist. You
      can paint if your mask is transparent, but the brush isn't. This is
      not an issue of an algorithm. This is an issue of the alpha()
      colorspace and the fact that we use brush's alpha channel for painting
      alpha image-channel (tha latter assumption is completely wrong(!)).
      Solution: Brush's dab should use grayscale colorspace during painting
      on alpha-mask/selection. KisSelection should use grayscale, or a
      special alpha_special() colorspace to work with grayscale channel of a
      b) Vector selection tools DO NOT work on masks (And i'm not sure they
      work on adjustment layers). The reason of the first fact (i think) is
      that KisSelectionToolHelper class uses KisLayerSP type for internal
      storage of a paint device. It should be changed to KisNodeSP to fix
      that (of course alongside some other changes in logics of this class)
      a),b) => c) There is no(!) way to paint on alpha-channels/masks
      currently. You simply CAN'T change the mask you created.
      The only way to create a mask now is the following:
          i) make a vector selection first
          ii) create a  mask - it'll derive this selection for it's own
      [some minor bugs not dependent on the patch]
      d) Blur filter works wrong. It writes filtered image to the source
      device instead of the destination one
      e) Drag&Drop is broken in KisLayerBox. Just try to change an order of
      masks with a mouse - you can easily lift it up above the root
      layer. Of course,  your next action will cause krita to crash.
      f) Curves filter DO NOT(!) work. I guess, there is some bug in
      KoColorTransformation as every curve works as a brightness/contrast
      curve instead of a channel curve. Just try it out!
      [some design bugs]
      g) KisNodeManager::allowAsChild uses some silly string comparison
      algorithm. Why?! Every node has a specially designed method for this!
      [ALMOST FIXED BY SVEN (KisLayerManager has the same problem)]
      h) KActions for mask-manipulation functions are duplicated in
      KisMaskManager and in KisLayerBox. They must be moved to
      btw, a,b,c,d,e,f are good, well-fed release blockers.
      svn path=/trunk/koffice/; revision=1029037