Skip to content
  • Halla Rempt's avatar
    Port Krita fully to the NG iterators. · acbdf251
    Halla Rempt authored
    This is a squashed commit of the following:
    
    commit fd43060a9999ffbe12f920137bbb90d0e0effb8a
    Merge: d52a1c3 b32e3dd
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Sat May 5 16:27:36 2012 +0200
    
        Merge branch 'master' into iterators
    
    commit d52a1c31d8ce83bdd5ff6ce22905794ba82022cc
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Sat May 5 16:23:24 2012 +0200
    
        Fix transform worker
    
        Transform at 135 degrees works now.
    
        BUG:298901
    
    commit 9b1f33439970b1bb264a523e24d040de85e1a9d4
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Sun Apr 29 11:13:50 2012 +0200
    
        Fix painting on masks
    
        BUG:298988
    
    commit a6bbd6340a0550ee3111735d7738a42b52eced67
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Sat Apr 28 15:40:52 2012 +0200
    
        Remove obsolete files
    
    commit 0b0dbbf31d44d254cbf81edcd65f2285f680cf68
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Sat Apr 28 11:42:19 2012 +0200
    
        Repair the perspective transform worker
    
        BUG:298901
    
    commit e2c25d8bfa53d79d2c83fa1153c73c7f7bbfaba4
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Thu Apr 26 18:12:28 2012 +0200
    
        CLRSPC_UNSPECIFIED is newer than the minimum jp2 lib we use.
    
    commit 056d2f89e839bd72b9ca50ae8cabb8eeec80257d
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Thu Apr 26 12:24:45 2012 +0200
    
        Remove the old iterator and accessor code
    
    commit d41d496d07ab6d30fc65756d8ccff7255476f492
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Thu Apr 26 12:14:45 2012 +0200
    
        Make the selection manager test at least run
    
        The assert if it couldn't find the pattern precluded the entire test
        from running. Of course, parts of the test fail, but it's always been
        that way and probably not an effect of the iterator removal.
    
    commit 53cfb92cea644ab384ac55695bfc64c04908e47f
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Thu Apr 26 11:32:20 2012 +0200
    
        Fix undo on new layers
    
        The const NG iterators don't allow access to the actual current data
        pointer, but in KisPainter we need that. Do an ugly cast in preference
        to adding api to expose the raw data.
    
    commit 305753f6125e5002bb09dbcd34c3d6b2105e68a3
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Thu Apr 26 11:16:47 2012 +0200
    
        fix typo == > =
    
    commit 6d21d71975862873a2b8c9080d667b7557619f53
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Thu Apr 26 10:27:07 2012 +0200
    
        fix kisdoct2test after removing the tutorial image
    
    commit ccb215f3fe49b7422773932f7de4e9d341d7c18c
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Wed Apr 25 14:09:04 2012 +0200
    
        Don't iterate if the rect is empty
    
        Fixes a crash in KisPixelSelection::invert.
    
    commit 3c5acc6686a6abb88448355d88e445370dc894eb
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Wed Apr 25 14:07:21 2012 +0200
    
        Handle the situation where the ng iterators get an empty stretch
    
        Assert in developer mode so we know where to add the check for emptiness
        before creating the iterator; make the iterator check at least a pixel
        in release mode.
    
        We cannot re-instate the old isDone() api because that would impair
        performance too much:
    
        13:26:45 < boud> CyrilleB: do you remember why the NG iterators don't have an isDone() check so the loop always checks at least once? (with do {} while
                         (it-NextPixel())
        13:45:34 < CyrilleB> boud: performance
        13:46:13 < CyrilleB> boud: especially since in 99.99% of the case, one does have something to iterate over
        13:50:34 < boud> aah
        13:50:49 < boud> because it's the reason of the crash in KisSelection::invert
        13:52:29 < boud> maybe if the rect is empty we should make it have a width/height of one so there's always one pixel read in all cases
        13:53:04 < CyrilleB> or rather have an assert if you try to create an iterator with a null width/height
        13:53:20 < CyrilleB> (or both, if you want to ensure good behaviour for users)
                            it goes wrong
        13:53:35 < CyrilleB> s/good behaviour/non crashing behaviour/
    
    commit 2393ed18b108f4e63c3e445e1fd2b8bfd184f384
    Author: José Luis Vergara <pentalis@gmail.com>
    Date:   Tue Apr 24 17:21:06 2012 -0300
    
        Make KisConvolutionWorkerFFT work correctly with the NG iterators
    
        o remove the (  ) added previously to *m_channelPtr[k]++ . With them, the color values are not properly saved and the result is all non-Alpha channels go down to 0.
        o add a comment warning about the dangers of touching that line
        o remove redundant lines of memcpy that are no longer needed (these lines were part of bug workarounds).
    
    commit 525deb3e10c6d5da5a1735b29005ccae9cff3c1c
    Author: Cyrille Berger <cberger@cberger.net>
    Date:   Sat Apr 21 13:49:37 2012 +0200
    
        Fix convolution (at least for radius <= 2)
    
        the repeat iterator were always claiming to not have a next pixel
    
    commit 7f4645730af8043365cbe5b47753ebb4bdbf7956
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Tue Apr 24 15:05:39 2012 +0200
    
        Fix the spatial convolution worker
    
        We need to take the rawData, not the oldRawData and from a non-const
        NG interator.
    
        The spatial convo worker is used if fftw3 isn't present or for small
        kernels.
    
    commit e608dc4f48282d47a48c5f9eb872d255376c743e
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Tue Apr 24 14:25:49 2012 +0200
    
        Make the KisPixelSelectionTest work
    
        I'm not sure why I cannot do
    
            // everything deselected
            selection->clear();
            // completely selected
            selection->invert();
            // deselect a certain area
            selection->clear(QRect(5, 5, 200, 200));
    
        Without getting a crash in invert() now that invert uses the NG iterators.
    
        Dmitry, could you take a look when you've got time?
    
        CCMAIL:dimula73@gmail.com
    
    commit 2b38ec791fbe56c387cbbd9b17c4644636b60fed
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Tue Apr 24 13:13:53 2012 +0200
    
        Fix floodfill benchmark -- not sure how long it had been broken\!
    
    commit a47d05a9dbf04299307e4b0c6f3240e3bcfc9969
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Mon Apr 23 10:58:06 2012 +0200
    
        port kis_painter to ng iterators
    
        Note that this changes the signature of bitBltImpl: we no longer
        use a const srcDev and no longer a const iterator; we need to be
        able to access the rawData as well as the oldRawData, and that
        is no longer possible with the ng iterators.
    
    commit 7bd3626e08461a221cf1295be61824c4dda6ee37
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Mon Apr 23 11:23:51 2012 +0200
    
        remove deprecated exactbounds method
    
    commit 89c06934760b8b66ae420e37a8aa9acd2b8fca25
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Mon Apr 23 11:23:03 2012 +0200
    
        port kispaintdevice to ng iterators
    
    commit 35f17e6ce2d77c2bbd3111fc3542a3fa5c7a4c8a
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Mon Apr 23 10:58:50 2012 +0200
    
        port repeat iterators to use ng iterators internally
    
        and use them in the convolution filters
    
    commit 4266845991aab3d6d7934cb50347177716fe168a
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Mon Apr 23 10:58:29 2012 +0200
    
        remove obsolete iterators test
    
    commit 183dbda0b6cf6e654763a9c64631e736301a4e04
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Mon Apr 23 10:49:18 2012 +0200
    
        port random sub accessor to use ng accessors internally
    
        port perspective transform worked to ng iterators
    
        use ng iteratorss for the wave filter
    
        use ng iterator in duplicate paintop
    
        use ng iterator in deform paintop
    
        use ng iterator in gridbrush paintop
    
        use ng iterators in spray paintop
    
        ..
    
    commit ffbaae242d75f302ef50747d872ec8bc696f66d1
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Mon Apr 23 10:49:47 2012 +0200
    
        warnings--: unused param
    
    commit 9aa9ca06b817216ee187d4a4c33167616a9b55e8
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Mon Apr 23 10:48:14 2012 +0200
    
        port transform worker to ng iterators
    
    commit 8ffb5e2a802d568b0729b6d1f623f0de1939b0db
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Mon Apr 23 10:47:53 2012 +0200
    
        port pixel selection to ng iterators
    
    commit e953aef7dc8a68ad02627f88c565b15008ba0e01
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Mon Apr 23 10:46:06 2012 +0200
    
        warnings--: unused param
    
    commit a0f5226f0a7ab7353103a8cc975534da772b3c7b
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Mon Apr 23 10:45:51 2012 +0200
    
        port math toolbox to ng iterators
    
    commit 1f993f85094a521f6eceb07b6f297b4c75daa432
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Mon Apr 23 10:45:34 2012 +0200
    
        port histogram to ng iterators
    
    commit 76bb0c1bb7248c2f418418ca0353bddf11edb5d0
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Mon Apr 23 10:44:37 2012 +0200
    
        warnings--: unused param
    
    commit d78eaa60e907a4d21c756df20d73fefded318875
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Mon Apr 23 10:44:21 2012 +0200
    
        port selection to use ng iterator for isSelected() function
    
    commit 403851b1024d1a0f0f1b54072bf61ae89e6a67f8
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Mon Apr 23 10:43:47 2012 +0200
    
        port fill painter to use ng iterators
    
    commit 3b239bd1daa57f9b68ffe689ee71ed1a2729ad19
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Mon Apr 23 10:41:43 2012 +0200
    
        export tiles3/hline and vline iterator headers
    
        This is unfortunately necessary to make the repeat iterator templates
        work.
    
    commit fcbe8e575888d76e95fb9f8f7b95445d78344c4c
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Mon Apr 23 10:41:27 2012 +0200
    
        convert tests to use ng iterators
    
    commit 2056f57a510a8e16564318b995261666d69584b7
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Mon Apr 23 10:41:12 2012 +0200
    
        remove obsolete rect benchmarks
    
    commit 38076f8f0b4b6dab1f6fb150b6414d15fff47d12
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Mon Apr 23 10:40:47 2012 +0200
    
        use ng iterators in selection manager to copy a selection
    
    commit f6bd4347743e47a5ba8bc9c0b14c28ea3748576e
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Mon Apr 23 10:40:24 2012 +0200
    
        use ng iterators in mask manager to convert masks to layers
    
    commit 784d2a3db7909478819e8e83943029afd74f43fd
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Mon Apr 23 10:39:10 2012 +0200
    
        use ng iterators in png converter
    
    commit 83ecc1193869bb6234c1bec05ed0bcf774f5dcbc
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Mon Apr 23 10:38:51 2012 +0200
    
        warning--: unused variable
    
    commit 68414f798bc242ed80ca1bfb124b930a6e0ac3ef
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Mon Apr 23 10:38:32 2012 +0200
    
        warnings--: unused param
    
    commit e56930ed7403b2ebccadf1b0d021f9821de94683
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Mon Apr 23 10:38:19 2012 +0200
    
        use ng iterators in pyramid downsampling
    
    commit 3391d83c7ca45692737e84f4d8146ae8dfac12b2
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Mon Apr 23 10:37:58 2012 +0200
    
        use ng iterators in shape selection
    
    commit 209200a42c358a14c015455c6ec49e04df6181f3
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Mon Apr 23 10:37:29 2012 +0200
    
        convert all benchmarks to use ng iterators
    
    commit d0eca3e1aa78d66d1ed662fdcb87e005bf86197a
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Mon Apr 23 10:35:57 2012 +0200
    
        use ng iterators in sdk template
    
    commit 2ec13164adae26ec4fc2697f350a8b59c028aac4
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Mon Apr 23 10:35:29 2012 +0200
    
        use ng iterators in particle paintop
    
    commit 47cb8927f64c83bf0c8a3ecfe61137b48072d3f3
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Mon Apr 23 10:35:20 2012 +0200
    
        use ng iterators in mypaint paintop
    
    commit 6eda45993a9edf15412f204e1473fb6ce114b83a
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Mon Apr 23 10:35:13 2012 +0200
    
        use ng iterators in hatching paintop
    
    commit 6d064a63bab7187081b1c9d31118b8e052defb4e
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Mon Apr 23 10:35:07 2012 +0200
    
        use ng iterators in hairy paintop
    
    commit 2d59c8ad547a3dc42c3e2cad74d717bc8a41d7b1
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Mon Apr 23 10:34:48 2012 +0200
    
        use ng iterator in filter paintop
    
    commit eed4beb9ffc04befe655cce31ce61346f10c3436
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Mon Apr 23 10:34:40 2012 +0200
    
        use ng iterator in experiment paintop
    
    commit dac1550d54b05c478b2c2fb397d52a9145f99ede
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Mon Apr 23 10:34:31 2012 +0200
    
        use ng iterator in dynadraw paintop
    
    commit 55edfad0814d9b3cdc9f98ffb65f7cbd06c72387
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Mon Apr 23 10:34:06 2012 +0200
    
        use ng iterator in curvebrush paintop
    
    commit c435f9d18eca63c853fb9643b0c5e904591040b1
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Mon Apr 23 10:33:52 2012 +0200
    
        use ng iterator in colorsmudge paintop
    
    commit bfe34023ca9e10eefa4d2ac20b04c9df223cf7da
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Mon Apr 23 10:33:44 2012 +0200
    
        use ng iterator in chalk paintop
    
    commit 0b275fe84546492b0a59e9f0a28d27244534e7af
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Mon Apr 23 10:33:27 2012 +0200
    
        use ng iterators in bidi painting option
    
    commit 63b4851a1b7a47a0cee805ed96271002cd66ac09
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Mon Apr 23 10:33:12 2012 +0200
    
        use ng iterators in total random color source
    
    commit ebbc45139fda46dc135fa0d5e6788f88f2b77fba
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Mon Apr 23 10:32:41 2012 +0200
    
        use ng iterator in custom brush widget
    
    commit 42f5eccd338f06895e84c9ce3b0d249e8fe88dac
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Mon Apr 23 10:31:40 2012 +0200
    
        use ng iterator in brush lib
    
        This changes the pointer to old style iterator that was created as
        a copy of a temporary iterator to a shared pointer to an ng iterator.
    
    commit d5e997127c6d162b286f1c7633482b80d54e805a
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Mon Apr 23 10:31:00 2012 +0200
    
        remove unused iterator include
    
    commit 6dd29318ead0f27127fd0b6b57487b95045ca583
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Mon Apr 23 10:30:29 2012 +0200
    
        use ng iterators for separate channels
    
    commit 075a86055168e47ecd2f8cf162a0c3a3263f1435
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Mon Apr 23 10:30:13 2012 +0200
    
        use ng iterators for drop shadow dialog
    
    commit 705012f906ac62b3400dea14caa05cb74f5a8836
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Mon Apr 23 10:29:35 2012 +0200
    
        use ng iterators for the colorrange selection dialog
    
    commit fa6c031b74989663a6d6a44eb4f9f84834d4c947
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Mon Apr 23 10:29:07 2012 +0200
    
        use ng iterators for the selection tools
    
    commit f34164abc5aa176b5793e46a5ee0207a8738a7f9
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Mon Apr 23 10:28:51 2012 +0200
    
        use ng iteratorss for the colorpicker tool
    
    commit 6b6d52d484226fa03df788c2f47f95ff3c4f1db9
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Mon Apr 23 10:28:11 2012 +0200
    
        use ng iteratorss for the randompick filter
    
    commit 98c33b0013b2b9e1621700f72e9c58765f00cafb
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Mon Apr 23 10:27:57 2012 +0200
    
        use ng iteratorss for the oilpaint filter
    
        Note the ng iterators need a non-const iterator in MostFrequentColor.
    
    commit b0f7e6599ec8eac792011e426b26a15f7bd81997
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Mon Apr 23 10:27:48 2012 +0200
    
        use ng iteratorss for the emboss filter
    
    commit ae3a5218e6a320d0cbbe67904105e0152a2460cd
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Mon Apr 23 10:27:22 2012 +0200
    
        use ng iteratorss for the colors filter
    
    commit 32099f6eb02267a328f02f099637bc631189fc79
    Author: Boudewijn Rempt <boud@valdyas.org>
    Date:   Mon Apr 23 10:26:52 2012 +0200
    
        use ng iterators for the file filters
    acbdf251