1. 20 Jun, 2016 1 commit
    • Boudewijn Rempt's avatar
      Make all KisSerializeConfiguration objects shared pointers · c1fb1319
      Boudewijn Rempt authored
      This is a huge and dangerous refactoring: I think we will find
      double delete crashes for some time to come, though starting krita,
      painting, filtering and closing work without problems. We were
      leaking these configuration objects all over the place, though, since
      there was no ownership defined.
      c1fb1319
  2. 26 Jan, 2016 1 commit
  3. 04 Mar, 2015 1 commit
  4. 14 Oct, 2012 1 commit
  5. 07 Feb, 2012 1 commit
    • Boudewijn Rempt's avatar
      Change <QtGui/QDialog> style includes to <QDialog> · 02025cd8
      Boudewijn Rempt authored
      This is already a tiny part of preparation for Qt5, where QtGui is split
      into QtGui and QtWidgets. If we use explicit module names in our includes,
      we are liable to churn like this.
      
      Since KDE applications always have all Qt modules in the include path
      anyway, direct includes always work (both in Qt4 and Qt5), and since we
      already used direct includes in thousands of places, this change makes
      our code more consistent, too.
      02025cd8
  6. 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
      maillist:
      
      
      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
      repainted.
      
      OPTIONAL:
      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.
      
      BUGFIX:
      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.
      
      BUGFIX:
      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
          KisLayerBox.
      
      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!
      
      BUGFIXES:
      - 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
      dab.
      
      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)
      
      [REJECTED]
      a),b) => c) There is no(!) way to paint on alpha-channels/masks
      currently. You simply CAN'T change the mask you created.
      [/REJECTED]
      
      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
      KisMaskManager.
      [ALMOST FIXED]
      
      PS:
      btw, a,b,c,d,e,f are good, well-fed release blockers.
      
      
      
      svn path=/trunk/koffice/; revision=1029037
      65a073d0
  7. 27 Aug, 2008 1 commit
  8. 20 Mar, 2008 1 commit
  9. 28 Feb, 2008 2 commits
  10. 14 Dec, 2007 1 commit
  11. 29 Nov, 2007 1 commit
  12. 03 Nov, 2007 1 commit
  13. 30 Oct, 2007 1 commit
  14. 29 Oct, 2007 1 commit
  15. 08 Sep, 2007 1 commit
  16. 14 Jul, 2007 1 commit
  17. 03 Jul, 2007 1 commit
    • Cyrille Berger's avatar
      * category for filters is a KoID · 50dd4573
      Cyrille Berger authored
      * next gen untested and unused KisFilterDialog
      * early starts on the next gen KisFilterManager which only creates the menu hierarchy, so far
      * remove the evil kis_filter.h in kis_painter.h (and a couple of *.h in kis_filter.h)
      * add the sky.rb scripts I used as an example in my presentation
      
      svn path=/trunk/koffice/; revision=682880
      50dd4573
  18. 19 Nov, 2006 1 commit
  19. 06 Nov, 2006 2 commits
  20. 20 Oct, 2006 1 commit
    • Cyrille Berger's avatar
      port all filters to the new signature · 9b3c8e5d
      Cyrille Berger authored
      (filter directory is still disabled thought, as some plugins need change in krita/image that I still need to merge)
      
      svn path=/trunk/koffice/; revision=597549
      9b3c8e5d
  21. 06 Oct, 2006 1 commit
  22. 01 Jul, 2006 1 commit
  23. 04 Jun, 2006 1 commit
  24. 28 Feb, 2006 1 commit
  25. 27 Feb, 2006 1 commit
  26. 01 Feb, 2006 1 commit
    • Boudewijn Rempt's avatar
      * Fix size of statusbar when progressbar is shown · 62c6a590
      Boudewijn Rempt authored
      * Fix version number
      * Implement saving of all filters (except perchannel, still need to to
        do that, but it's a bugger) so adj. layers can be saved & loaded.
      * Implement a separate adj. layer props dialog, but it crashes a bit,
        now and then. 
      
      svn path=/trunk/koffice/; revision=504707
      62c6a590
  27. 27 Jan, 2006 1 commit
  28. 09 Jan, 2006 1 commit
    • Boudewijn Rempt's avatar
      * Implement a dialog to create a new adjustment layer · 9fb29342
      Boudewijn Rempt authored
      * speed up layer change by not notify()ing the whole image whenver
        another layer becomes active
      * move filters preview list to krita/ui
      * remove the universally unused paint device parameter from KisFilter::configuration()
      
      svn path=/trunk/koffice/; revision=496169
      9fb29342
  29. 06 Jan, 2006 1 commit
  30. 28 Oct, 2005 1 commit
  31. 06 Oct, 2005 1 commit
    • Boudewijn Rempt's avatar
      * Clean all #includes in headers · 129d9ef6
      Boudewijn Rempt authored
      * Remove all but two of the subdirs in krita/core in preparation for more
        file shuffling -- I will take Jesper Pedersen's lessons to heart and
        separate interface and implementation for core and plugins
      * Remove all necessity for plugins to include headers from the tiles 
        directory (tested for performance consequences, the current scheme
        is even slightly faster)
      * clean up convolution by removing the old matrix class
      * clean up Makefile.am's by only linking with the necessary libs, not
        always with kofficecore and kopainter.
      
      svn path=/trunk/koffice/; revision=467944
      129d9ef6
  32. 31 Aug, 2005 1 commit
  33. 10 Aug, 2005 1 commit
  34. 26 Jul, 2005 1 commit
    • Boudewijn Rempt's avatar
      * Fix locking of tools when the layer is locked or invisible · 2e20d064
      Boudewijn Rempt authored
      * Remove the wet paintbrush tool; it's sufficient to use the wet paintop
      * The fsf has moved house, or so Thomas tells me. I guess it's a pretty dumb
        idea to have such volatile information in all headers, but there you are.
        We're up-to-date again...
      
      svn path=/trunk/koffice/; revision=438821
      2e20d064
  35. 15 Jul, 2005 1 commit
    • Boudewijn Rempt's avatar
      Refactored the filter plugin infrastructure: · 835e06f6
      Boudewijn Rempt authored
      * Filters are now modulers and loaded once, not again for every view.
      * Filters do not depend on KisView in any way. Let's keep it that way, it
        will make creating a lot of things a lot easier, like a reusable libkrita
        or a scripting system or adjustment layers.
      * Added an apply last filter again feature.
      * Filters don't use kxmlgui anymore to find their place in the menubar.
      
      Note that there are still a few regressions: the convolution filters don't
      show progress like they should (couldn't figure out the signal-slot connections
      for this) and the menu's aren't completely correctly laid out yet.
      
      
      svn path=/trunk/koffice/; revision=434961
      835e06f6
  36. 19 Jun, 2005 1 commit
    • Casper Boemann's avatar
      removed KisFilerConfigurationWidget as it was · 4b813cbb
      Casper Boemann authored
      mostly unused and preveted easy qtdesigner usage
      
      changed layout of the preview widget - not perfect 
      yet
      
      add curve widget to brightness contrast dialog - 
      non working still
      
      
      svn path=/trunk/koffice/; revision=427180
      4b813cbb
  37. 23 May, 2005 1 commit
  38. 24 Mar, 2005 1 commit
    • Boudewijn Rempt's avatar
      * Created KisID; a class used to uniquely and language-independently identify · 2d6015e2
      Boudewijn Rempt authored
      Krita resources such as filters and colour models.
      * Small optimization: if we create a black, transparent image, use the
      default tiles and don't create tiles for the entire image size.
      * Fix in kis_iterator_pixel: advance the selection iterator with just as much
      as the pixel iterator.
      * Added filter test to the performance tests -- these make Krita run out of
      memory, though.
      
      svn path=/trunk/koffice/; revision=400186
      2d6015e2