Commit acbdf251 authored by Boudewijn Rempt's avatar Boudewijn Rempt

Port Krita fully to the NG iterators.

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
parent 09ccbca5
...@@ -10,7 +10,6 @@ add_definitions(-DFILES_OUTPUT_DIR="\\"${CMAKE_CURRENT_BINARY_DIR}\\"") ...@@ -10,7 +10,6 @@ add_definitions(-DFILES_OUTPUT_DIR="\\"${CMAKE_CURRENT_BINARY_DIR}\\"")
set(kis_datamanager_benchmark_SRCS kis_datamanager_benchmark.cpp) set(kis_datamanager_benchmark_SRCS kis_datamanager_benchmark.cpp)
set(kis_hiterator_benchmark_SRCS kis_hline_iterator_benchmark.cpp) set(kis_hiterator_benchmark_SRCS kis_hline_iterator_benchmark.cpp)
set(kis_viterator_benchmark_SRCS kis_vline_iterator_benchmark.cpp) set(kis_viterator_benchmark_SRCS kis_vline_iterator_benchmark.cpp)
set(kis_rect_iterator_benchmark_SRCS kis_rect_iterator_benchmark.cpp)
set(kis_random_iterator_benchmark_SRCS kis_random_iterator_benchmark.cpp) set(kis_random_iterator_benchmark_SRCS kis_random_iterator_benchmark.cpp)
set(kis_projection_benchmark_SRCS kis_projection_benchmark.cpp) set(kis_projection_benchmark_SRCS kis_projection_benchmark.cpp)
set(kis_bcontrast_benchmark_SRCS kis_bcontrast_benchmark.cpp) set(kis_bcontrast_benchmark_SRCS kis_bcontrast_benchmark.cpp)
...@@ -25,7 +24,6 @@ set(kis_mask_generator_benchmark_SRCS kis_mask_generator_benchmark.cpp) ...@@ -25,7 +24,6 @@ set(kis_mask_generator_benchmark_SRCS kis_mask_generator_benchmark.cpp)
calligra_add_benchmark(KisDatamanagerBenchmark TESTNAME krita-benchmarks-KisDataManager ${kis_datamanager_benchmark_SRCS}) calligra_add_benchmark(KisDatamanagerBenchmark TESTNAME krita-benchmarks-KisDataManager ${kis_datamanager_benchmark_SRCS})
calligra_add_benchmark(KisHLineIteratorBenchmark TESTNAME krita-benchmarks-KisHLineIterator ${kis_hiterator_benchmark_SRCS}) calligra_add_benchmark(KisHLineIteratorBenchmark TESTNAME krita-benchmarks-KisHLineIterator ${kis_hiterator_benchmark_SRCS})
calligra_add_benchmark(KisVLineIteratorBenchmark TESTNAME krita-benchmarks-KisVLineIterator ${kis_viterator_benchmark_SRCS}) calligra_add_benchmark(KisVLineIteratorBenchmark TESTNAME krita-benchmarks-KisVLineIterator ${kis_viterator_benchmark_SRCS})
calligra_add_benchmark(KisRectIteratorBenchmark TESTNAME krita-benchmarks-KisRectIterator ${kis_rect_iterator_benchmark_SRCS})
calligra_add_benchmark(KisRandomIteratorBenchmark TESTNAME krita-benchmarks-KisRandomIterator ${kis_random_iterator_benchmark_SRCS}) calligra_add_benchmark(KisRandomIteratorBenchmark TESTNAME krita-benchmarks-KisRandomIterator ${kis_random_iterator_benchmark_SRCS})
calligra_add_benchmark(KisProjectionBenchmark TESTNAME krita-benchmarks-KisProjectionBenchmark ${kis_projection_benchmark_SRCS}) calligra_add_benchmark(KisProjectionBenchmark TESTNAME krita-benchmarks-KisProjectionBenchmark ${kis_projection_benchmark_SRCS})
calligra_add_benchmark(KisBContrastBenchmark TESTNAME krita-benchmarks-KisBContrastBenchmark ${kis_bcontrast_benchmark_SRCS}) calligra_add_benchmark(KisBContrastBenchmark TESTNAME krita-benchmarks-KisBContrastBenchmark ${kis_bcontrast_benchmark_SRCS})
...@@ -40,7 +38,6 @@ calligra_add_benchmark(KisMaskGeneratorBenchmark TESTNAME krita-benchmarks-KisMa ...@@ -40,7 +38,6 @@ calligra_add_benchmark(KisMaskGeneratorBenchmark TESTNAME krita-benchmarks-KisMa
target_link_libraries(KisDatamanagerBenchmark ${KDE4_KDEUI_LIBS} kritaimage ${QT_QTTEST_LIBRARY}) target_link_libraries(KisDatamanagerBenchmark ${KDE4_KDEUI_LIBS} kritaimage ${QT_QTTEST_LIBRARY})
target_link_libraries(KisHLineIteratorBenchmark ${KDE4_KDEUI_LIBS} kritaimage ${QT_QTTEST_LIBRARY}) target_link_libraries(KisHLineIteratorBenchmark ${KDE4_KDEUI_LIBS} kritaimage ${QT_QTTEST_LIBRARY})
target_link_libraries(KisVLineIteratorBenchmark ${KDE4_KDEUI_LIBS} kritaimage ${QT_QTTEST_LIBRARY}) target_link_libraries(KisVLineIteratorBenchmark ${KDE4_KDEUI_LIBS} kritaimage ${QT_QTTEST_LIBRARY})
target_link_libraries(KisRectIteratorBenchmark ${KDE4_KDEUI_LIBS} kritaimage ${QT_QTTEST_LIBRARY})
target_link_libraries(KisRandomIteratorBenchmark ${KDE4_KDEUI_LIBS} kritaimage ${QT_QTTEST_LIBRARY}) target_link_libraries(KisRandomIteratorBenchmark ${KDE4_KDEUI_LIBS} kritaimage ${QT_QTTEST_LIBRARY})
target_link_libraries(KisProjectionBenchmark ${KDE4_KDEUI_LIBS} kritaimage kritaui ${QT_QTTEST_LIBRARY}) target_link_libraries(KisProjectionBenchmark ${KDE4_KDEUI_LIBS} kritaimage kritaui ${QT_QTTEST_LIBRARY})
target_link_libraries(KisBContrastBenchmark ${KDE4_KDEUI_LIBS} kritaimage ${QT_QTTEST_LIBRARY}) target_link_libraries(KisBContrastBenchmark ${KDE4_KDEUI_LIBS} kritaimage ${QT_QTTEST_LIBRARY})
......
...@@ -22,7 +22,6 @@ ...@@ -22,7 +22,6 @@
#include "kis_benchmark_values.h" #include "kis_benchmark_values.h"
#include "kis_paint_device.h" #include "kis_paint_device.h"
#include "kis_iterators_pixel.h"
#include <KoColorSpace.h> #include <KoColorSpace.h>
#include <KoColorSpaceRegistry.h> #include <KoColorSpaceRegistry.h>
...@@ -37,7 +36,7 @@ ...@@ -37,7 +36,7 @@
#include "kis_processing_information.h" #include "kis_processing_information.h"
#include "kis_selection.h" #include "kis_selection.h"
#include <kis_iterator_ng.h>
void KisBContrastBenchmark::initTestCase() void KisBContrastBenchmark::initTestCase()
{ {
...@@ -45,21 +44,19 @@ void KisBContrastBenchmark::initTestCase() ...@@ -45,21 +44,19 @@ void KisBContrastBenchmark::initTestCase()
m_device = new KisPaintDevice(m_colorSpace); m_device = new KisPaintDevice(m_colorSpace);
m_color = KoColor(m_colorSpace); m_color = KoColor(m_colorSpace);
QColor qcolor(Qt::red);
srand(31524744); srand(31524744);
int r,g,b; int r,g,b;
KisRectIterator it = m_device->createRectIterator(0,0,GMP_IMAGE_WIDTH, GMP_IMAGE_HEIGHT); KisRectIteratorSP it = m_device->createRectIteratorNG(0, 0, GMP_IMAGE_WIDTH, GMP_IMAGE_HEIGHT);
while (!it.isDone()) { do {
r = rand() % 255; r = rand() % 255;
g = rand() % 255; g = rand() % 255;
b = rand() % 255; b = rand() % 255;
m_color.fromQColor(QColor(r,g,b)); m_color.fromQColor(QColor(r,g,b));
memcpy(it.rawData(), m_color.data(), m_colorSpace->pixelSize()); memcpy(it->rawData(), m_color.data(), m_colorSpace->pixelSize());
++it; } while (it->nextPixel());
}
} }
......
...@@ -22,7 +22,6 @@ ...@@ -22,7 +22,6 @@
#include "kis_benchmark_values.h" #include "kis_benchmark_values.h"
#include "kis_paint_device.h" #include "kis_paint_device.h"
#include "kis_iterators_pixel.h"
#include <KoColorSpace.h> #include <KoColorSpace.h>
#include <KoColorSpaceRegistry.h> #include <KoColorSpaceRegistry.h>
...@@ -37,6 +36,7 @@ ...@@ -37,6 +36,7 @@
#include "kis_processing_information.h" #include "kis_processing_information.h"
#include "kis_selection.h" #include "kis_selection.h"
#include <kis_iterator_ng.h>
void KisBlurBenchmark::initTestCase() void KisBlurBenchmark::initTestCase()
{ {
...@@ -49,16 +49,15 @@ void KisBlurBenchmark::initTestCase() ...@@ -49,16 +49,15 @@ void KisBlurBenchmark::initTestCase()
int r,g,b; int r,g,b;
KisRectIterator it = m_device->createRectIterator(0,0,GMP_IMAGE_WIDTH, GMP_IMAGE_HEIGHT); KisRectIteratorSP it = m_device->createRectIteratorNG(0,0,GMP_IMAGE_WIDTH, GMP_IMAGE_HEIGHT);
while (!it.isDone()) { do {
r = rand() % 255; r = rand() % 255;
g = rand() % 255; g = rand() % 255;
b = rand() % 255; b = rand() % 255;
m_color.fromQColor(QColor(r,g,b)); m_color.fromQColor(QColor(r,g,b));
memcpy(it.rawData(), m_color.data(), m_colorSpace->pixelSize()); memcpy(it->rawData(), m_color.data(), m_colorSpace->pixelSize());
++it; } while (it->nextPixel());
}
} }
void KisBlurBenchmark::cleanupTestCase() void KisBlurBenchmark::cleanupTestCase()
......
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
#include "kis_benchmark_values.h" #include "kis_benchmark_values.h"
#include "kis_paint_device.h" #include "kis_paint_device.h"
#include "kis_random_accessor.h" #include "kis_random_accessor_ng.h"
#include <KoColorSpace.h> #include <KoColorSpace.h>
#include <KoColorSpaceRegistry.h> #include <KoColorSpaceRegistry.h>
...@@ -97,7 +97,7 @@ void KisFloodFillBenchmark::benchmarkFlood() ...@@ -97,7 +97,7 @@ void KisFloodFillBenchmark::benchmarkFlood()
fillPainter.setHeight(GMP_IMAGE_HEIGHT); fillPainter.setHeight(GMP_IMAGE_HEIGHT);
// fill twice // fill twice
fillPainter.fillColor(1, 1, 0); fillPainter.fillColor(1, 1, m_device);
fillPainter.deleteTransaction(); fillPainter.deleteTransaction();
} }
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
#include "kis_benchmark_values.h" #include "kis_benchmark_values.h"
#include "kis_paint_device.h" #include "kis_paint_device.h"
#include "kis_random_accessor.h" #include "kis_random_accessor_ng.h"
#include <KoColorSpace.h> #include <KoColorSpace.h>
#include <KoColorSpaceRegistry.h> #include <KoColorSpaceRegistry.h>
......
...@@ -19,7 +19,6 @@ ...@@ -19,7 +19,6 @@
#include "kis_hline_iterator_benchmark.h" #include "kis_hline_iterator_benchmark.h"
#include "kis_benchmark_values.h" #include "kis_benchmark_values.h"
#include "kis_iterators_pixel.h"
#include "kis_paint_device.h" #include "kis_paint_device.h"
#include <KoColorSpace.h> #include <KoColorSpace.h>
...@@ -50,36 +49,34 @@ void KisHLineIteratorBenchmark::cleanupTestCase() ...@@ -50,36 +49,34 @@ void KisHLineIteratorBenchmark::cleanupTestCase()
void KisHLineIteratorBenchmark::benchmarkCreation() void KisHLineIteratorBenchmark::benchmarkCreation()
{ {
QBENCHMARK{ QBENCHMARK{
KisHLineIteratorPixel it = m_device->createHLineIterator(0, 0, TEST_IMAGE_WIDTH); KisHLineIteratorSP it = m_device->createHLineIteratorNG(0, 0, TEST_IMAGE_WIDTH);
} }
} }
void KisHLineIteratorBenchmark::benchmarkWriteBytes() void KisHLineIteratorBenchmark::benchmarkWriteBytes()
{ {
KisHLineIteratorPixel it = m_device->createHLineIterator(0, 0, TEST_IMAGE_WIDTH); KisHLineIteratorSP it = m_device->createHLineIteratorNG(0, 0, TEST_IMAGE_WIDTH);
QBENCHMARK{ QBENCHMARK{
for (int j = 0; j < TEST_IMAGE_HEIGHT; j++) { for (int j = 0; j < TEST_IMAGE_HEIGHT; j++) {
while (!it.isDone()) { do {
memcpy(it.rawData(), m_color->data(), m_colorSpace->pixelSize()); memcpy(it->rawData(), m_color->data(), m_colorSpace->pixelSize());
++it; } while (it->nextPixel());
} it->nextRow();
it.nextRow();
} }
} }
} }
void KisHLineIteratorBenchmark::benchmarkReadBytes() void KisHLineIteratorBenchmark::benchmarkReadBytes()
{ {
KisHLineIteratorPixel it = m_device->createHLineIterator(0, 0, TEST_IMAGE_WIDTH); KisHLineIteratorSP it = m_device->createHLineIteratorNG(0, 0, TEST_IMAGE_WIDTH);
QBENCHMARK{ QBENCHMARK{
for (int j = 0; j < TEST_IMAGE_HEIGHT; j++) { for (int j = 0; j < TEST_IMAGE_HEIGHT; j++) {
while (!it.isDone()) { do {
memcpy(m_color->data(), it.rawData(), m_colorSpace->pixelSize()); memcpy(m_color->data(), it->rawData(), m_colorSpace->pixelSize());
++it; } while (it->nextPixel());
} it->nextRow();
it.nextRow();
} }
} }
} }
...@@ -87,15 +84,14 @@ void KisHLineIteratorBenchmark::benchmarkReadBytes() ...@@ -87,15 +84,14 @@ void KisHLineIteratorBenchmark::benchmarkReadBytes()
void KisHLineIteratorBenchmark::benchmarkConstReadBytes() void KisHLineIteratorBenchmark::benchmarkConstReadBytes()
{ {
KisHLineConstIteratorPixel cit = m_device->createHLineConstIterator(0, 0, TEST_IMAGE_WIDTH); KisHLineConstIteratorSP cit = m_device->createHLineConstIteratorNG(0, 0, TEST_IMAGE_WIDTH);
QBENCHMARK{ QBENCHMARK{
for (int j = 0; j < TEST_IMAGE_HEIGHT; j++) { for (int j = 0; j < TEST_IMAGE_HEIGHT; j++) {
while (!cit.isDone()) { do {
memcpy(m_color->data(), cit.rawData(), m_colorSpace->pixelSize()); memcpy(m_color->data(), cit->oldRawData(), m_colorSpace->pixelSize());
++cit; } while (cit->nextPixel());
} cit->nextRow();
cit.nextRow();
} }
} }
} }
...@@ -106,18 +102,16 @@ void KisHLineIteratorBenchmark::benchmarkReadWriteBytes(){ ...@@ -106,18 +102,16 @@ void KisHLineIteratorBenchmark::benchmarkReadWriteBytes(){
KisPaintDevice dab(m_colorSpace); KisPaintDevice dab(m_colorSpace);
dab.fill(0,0,TEST_IMAGE_WIDTH,TEST_IMAGE_HEIGHT, c.data()); dab.fill(0,0,TEST_IMAGE_WIDTH,TEST_IMAGE_HEIGHT, c.data());
KisHLineIteratorPixel writeIterator = m_device->createHLineIterator(0, 0, TEST_IMAGE_WIDTH); KisHLineIteratorSP writeIterator = m_device->createHLineIteratorNG(0, 0, TEST_IMAGE_WIDTH);
KisHLineConstIteratorPixel constReadIterator = dab.createHLineConstIterator(0, 0, TEST_IMAGE_WIDTH); KisHLineConstIteratorSP constReadIterator = dab.createHLineConstIteratorNG(0, 0, TEST_IMAGE_WIDTH);
QBENCHMARK{ QBENCHMARK{
for (int j = 0; j < TEST_IMAGE_HEIGHT; j++) { for (int j = 0; j < TEST_IMAGE_HEIGHT; j++) {
while (!constReadIterator.isDone()) { do {
memcpy(writeIterator.rawData(), constReadIterator.rawData(), m_colorSpace->pixelSize()); memcpy(writeIterator->rawData(), constReadIterator->oldRawData(), m_colorSpace->pixelSize());
++constReadIterator; } while (constReadIterator->nextPixel() && writeIterator->nextPixel());
++writeIterator; constReadIterator->nextRow();
} writeIterator->nextRow();
constReadIterator.nextRow();
writeIterator.nextRow();
} }
} }
} }
...@@ -153,14 +147,12 @@ void KisHLineIteratorBenchmark::benchmarkReadWriteBytes2() ...@@ -153,14 +147,12 @@ void KisHLineIteratorBenchmark::benchmarkReadWriteBytes2()
void KisHLineIteratorBenchmark::benchmarkNoMemCpy() void KisHLineIteratorBenchmark::benchmarkNoMemCpy()
{ {
KisHLineIteratorPixel it = m_device->createHLineIterator(0, 0, TEST_IMAGE_WIDTH); KisHLineIteratorSP it = m_device->createHLineIteratorNG(0, 0, TEST_IMAGE_WIDTH);
QBENCHMARK{ QBENCHMARK{
for (int j = 0; j < TEST_IMAGE_HEIGHT; j++) { for (int j = 0; j < TEST_IMAGE_HEIGHT; j++) {
while (!it.isDone()) { do {} while (it->nextPixel());
++it; it->nextRow();
}
it.nextRow();
} }
} }
} }
...@@ -168,14 +160,12 @@ void KisHLineIteratorBenchmark::benchmarkNoMemCpy() ...@@ -168,14 +160,12 @@ void KisHLineIteratorBenchmark::benchmarkNoMemCpy()
void KisHLineIteratorBenchmark::benchmarkConstNoMemCpy() void KisHLineIteratorBenchmark::benchmarkConstNoMemCpy()
{ {
KisHLineConstIteratorPixel cit = m_device->createHLineConstIterator(0, 0, TEST_IMAGE_WIDTH); KisHLineConstIteratorSP cit = m_device->createHLineConstIteratorNG(0, 0, TEST_IMAGE_WIDTH);
QBENCHMARK{ QBENCHMARK{
for (int j = 0; j < TEST_IMAGE_HEIGHT; j++) { for (int j = 0; j < TEST_IMAGE_HEIGHT; j++) {
while (!cit.isDone()) { do {} while (cit->nextPixel());
++cit; cit->nextRow();
}
cit.nextRow();
} }
} }
} }
...@@ -186,17 +176,14 @@ void KisHLineIteratorBenchmark::benchmarkTwoIteratorsNoMemCpy(){ ...@@ -186,17 +176,14 @@ void KisHLineIteratorBenchmark::benchmarkTwoIteratorsNoMemCpy(){
KisPaintDevice dab(m_colorSpace); KisPaintDevice dab(m_colorSpace);
dab.fill(0,0,TEST_IMAGE_WIDTH,TEST_IMAGE_HEIGHT, c.data()); dab.fill(0,0,TEST_IMAGE_WIDTH,TEST_IMAGE_HEIGHT, c.data());
KisHLineIteratorPixel writeIterator = m_device->createHLineIterator(0, 0, TEST_IMAGE_WIDTH); KisHLineIteratorSP writeIterator = m_device->createHLineIteratorNG(0, 0, TEST_IMAGE_WIDTH);
KisHLineConstIteratorPixel constReadIterator = dab.createHLineConstIterator(0, 0, TEST_IMAGE_WIDTH); KisHLineConstIteratorSP constReadIterator = dab.createHLineConstIteratorNG(0, 0, TEST_IMAGE_WIDTH);
QBENCHMARK{ QBENCHMARK{
for (int j = 0; j < TEST_IMAGE_HEIGHT; j++) { for (int j = 0; j < TEST_IMAGE_HEIGHT; j++) {
while (!constReadIterator.isDone()) { do {} while (writeIterator->nextPixel() && constReadIterator->nextPixel());
++constReadIterator; constReadIterator->nextRow();
++writeIterator; writeIterator->nextRow();
}
constReadIterator.nextRow();
writeIterator.nextRow();
} }
} }
......
...@@ -38,7 +38,6 @@ inline double drand48() ...@@ -38,7 +38,6 @@ inline double drand48()
#include "kis_selection.h" #include "kis_selection.h"
#include "kis_pixel_selection.h" #include "kis_pixel_selection.h"
#include "kis_iterators_pixel.h"
#include <KoColorSpace.h> #include <KoColorSpace.h>
#include <KoColorSpaceRegistry.h> #include <KoColorSpaceRegistry.h>
......
...@@ -25,7 +25,6 @@ ...@@ -25,7 +25,6 @@
#include <KoColor.h> #include <KoColor.h>
#include <kis_group_layer.h> #include <kis_group_layer.h>
#include <kis_iterators_pixel.h>
#include <kis_paint_device.h> #include <kis_paint_device.h>
#include <kis_doc2.h> #include <kis_doc2.h>
#include <kis_image.h> #include <kis_image.h>
......
...@@ -19,7 +19,6 @@ ...@@ -19,7 +19,6 @@
#include "kis_random_iterator_benchmark.h" #include "kis_random_iterator_benchmark.h"
#include "kis_benchmark_values.h" #include "kis_benchmark_values.h"
#include "kis_iterators_pixel.h"
#include "kis_paint_device.h" #include "kis_paint_device.h"
#include <KoColorSpace.h> #include <KoColorSpace.h>
...@@ -27,7 +26,7 @@ ...@@ -27,7 +26,7 @@
#include <KoColor.h> #include <KoColor.h>
#include <qtest_kde.h> #include <qtest_kde.h>
#include <kis_random_accessor.h> #include <kis_random_accessor_ng.h>
void KisRandomIteratorBenchmark::initTestCase() void KisRandomIteratorBenchmark::initTestCase()
...@@ -50,19 +49,19 @@ void KisRandomIteratorBenchmark::cleanupTestCase() ...@@ -50,19 +49,19 @@ void KisRandomIteratorBenchmark::cleanupTestCase()
void KisRandomIteratorBenchmark::benchmarkCreation() void KisRandomIteratorBenchmark::benchmarkCreation()
{ {
QBENCHMARK{ QBENCHMARK{
KisRandomAccessor it = m_device->createRandomAccessor(0,0); KisRandomAccessorSP it = m_device->createRandomAccessorNG(0,0);
} }
} }
void KisRandomIteratorBenchmark::benchmarkWriteBytes() void KisRandomIteratorBenchmark::benchmarkWriteBytes()
{ {
KisRandomAccessor it = m_device->createRandomAccessor(0,0); KisRandomAccessorSP it = m_device->createRandomAccessorNG(0,0);
QBENCHMARK{ QBENCHMARK{
for (int i = 0; i < TEST_IMAGE_HEIGHT; i++){ for (int i = 0; i < TEST_IMAGE_HEIGHT; i++){
for (int j = 0; j < TEST_IMAGE_WIDTH; j++) { for (int j = 0; j < TEST_IMAGE_WIDTH; j++) {
it.moveTo(j,i); it->moveTo(j,i);
memcpy(it.rawData(), m_color->data(), m_colorSpace->pixelSize()); memcpy(it->rawData(), m_color->data(), m_colorSpace->pixelSize());
} }
} }
} }
...@@ -71,13 +70,13 @@ void KisRandomIteratorBenchmark::benchmarkWriteBytes() ...@@ -71,13 +70,13 @@ void KisRandomIteratorBenchmark::benchmarkWriteBytes()
void KisRandomIteratorBenchmark::benchmarkReadBytes() void KisRandomIteratorBenchmark::benchmarkReadBytes()
{ {
KisRandomAccessor it = m_device->createRandomAccessor(0,0); KisRandomAccessorSP it = m_device->createRandomAccessorNG(0,0);
QBENCHMARK{ QBENCHMARK{
for (int i = 0; i < TEST_IMAGE_HEIGHT; i++){ for (int i = 0; i < TEST_IMAGE_HEIGHT; i++){
for (int j = 0; j < TEST_IMAGE_WIDTH; j++) { for (int j = 0; j < TEST_IMAGE_WIDTH; j++) {
it.moveTo(j,i); it->moveTo(j,i);
memcpy(it.rawData(), m_color->data(), m_colorSpace->pixelSize()); memcpy(it->rawData(), m_color->data(), m_colorSpace->pixelSize());
} }
} }
} }
...@@ -86,13 +85,13 @@ void KisRandomIteratorBenchmark::benchmarkReadBytes() ...@@ -86,13 +85,13 @@ void KisRandomIteratorBenchmark::benchmarkReadBytes()
void KisRandomIteratorBenchmark::benchmarkConstReadBytes() void KisRandomIteratorBenchmark::benchmarkConstReadBytes()
{ {
KisRandomConstAccessor it = m_device->createRandomConstAccessor(0,0); KisRandomConstAccessorSP it = m_device->createRandomConstAccessorNG(0,0);
QBENCHMARK{ QBENCHMARK{
for (int i = 0; i < TEST_IMAGE_HEIGHT; i++){ for (int i = 0; i < TEST_IMAGE_HEIGHT; i++){
for (int j = 0; j < TEST_IMAGE_WIDTH; j++) { for (int j = 0; j < TEST_IMAGE_WIDTH; j++) {
it.moveTo(j,i); it->moveTo(j,i);
memcpy(m_color->data(),it.rawData(), m_colorSpace->pixelSize()); memcpy(m_color->data(), it->oldRawData(), m_colorSpace->pixelSize());
} }
} }
} }
...@@ -104,15 +103,15 @@ void KisRandomIteratorBenchmark::benchmarkReadWriteBytes(){ ...@@ -104,15 +103,15 @@ void KisRandomIteratorBenchmark::benchmarkReadWriteBytes(){
KisPaintDevice dab(m_colorSpace); KisPaintDevice dab(m_colorSpace);
dab.fill(0,0,TEST_IMAGE_WIDTH,TEST_IMAGE_HEIGHT, c.data()); dab.fill(0,0,TEST_IMAGE_WIDTH,TEST_IMAGE_HEIGHT, c.data());
KisRandomAccessor writeIterator = m_device->createRandomAccessor(0,0); KisRandomAccessorSP writeIterator = m_device->createRandomAccessorNG(0,0);
KisRandomConstAccessor constReadIterator = dab.createRandomConstAccessor(0,0); KisRandomConstAccessorSP constReadIterator = dab.createRandomConstAccessorNG(0,0);
QBENCHMARK{ QBENCHMARK{
for (int i = 0; i < TEST_IMAGE_HEIGHT; i++){ for (int i = 0; i < TEST_IMAGE_HEIGHT; i++){
for (int j = 0; j < TEST_IMAGE_WIDTH; j++) { for (int j = 0; j < TEST_IMAGE_WIDTH; j++) {
writeIterator.moveTo(j,i); writeIterator->moveTo(j,i);
constReadIterator.moveTo(j,i); constReadIterator->moveTo(j,i);
memcpy(writeIterator.rawData(), constReadIterator.rawData(), m_colorSpace->pixelSize()); memcpy(writeIterator->rawData(), constReadIterator->oldRawData(), m_colorSpace->pixelSize());
} }
} }
} }
...@@ -122,16 +121,16 @@ void KisRandomIteratorBenchmark::benchmarkReadWriteBytes(){ ...@@ -122,16 +121,16 @@ void KisRandomIteratorBenchmark::benchmarkReadWriteBytes(){
void KisRandomIteratorBenchmark::benchmarkTotalRandom() void KisRandomIteratorBenchmark::benchmarkTotalRandom()
{ {
KisRandomAccessor it = m_device->createRandomAccessor(0,0); KisRandomAccessorSP it = m_device->createRandomAccessorNG(0,0);
// set the seed so that we always go in the same permutation over the device // set the seed so that we always go in the same permutation over the device
srand(123456); srand(123456);
QBENCHMARK{ QBENCHMARK{
for (int i = 0; i < TEST_IMAGE_HEIGHT; i++){ for (int i = 0; i < TEST_IMAGE_HEIGHT; i++){
for (int j = 0; j < TEST_IMAGE_WIDTH; j++) { for (int j = 0; j < TEST_IMAGE_WIDTH; j++) {
it.moveTo( rand() % TEST_IMAGE_WIDTH, it->moveTo( rand() % TEST_IMAGE_WIDTH,
rand() % TEST_IMAGE_HEIGHT ); rand() % TEST_IMAGE_HEIGHT );
memcpy(it.rawData(), m_color->data(), m_colorSpace->pixelSize()); memcpy(it->rawData(), m_color->data(), m_colorSpace->pixelSize());
} }