[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-kimageshop
Subject: Re: slight speedup patch [1/2]
From: Thomas Zander <zander () kde ! org>
Date: 2009-12-31 15:20:11
Message-ID: 200912311620.11659.zander () kde ! org
[Download RAW message or body]
On Thursday 31. December 2009 15.41.28 Thomas Zander wrote:
> for proof reading; a patch that avoids the usage of KoID if the 'name' part
> of the id is ignored anyway.
> This should prove to be a small but useful speedup as we avoid a lot of
> copying of QString objects around.
> It also feels a bit cleaner ;)
Hmm, made a mistake on rebasing; the previous patch doesn't compile; here is a
new one.
This change doesn't affect the other patch I sent.
--
Thomas Zander
["0001-Speedup-get-only-the-info-we-need-in-cases-where-we-.patch" (text/x-patch)]
From 511ad51d29a0e8b8a713b4f09de2011d76b5c2d6 Mon Sep 17 00:00:00 2001
From: Thomas Zander <zander@kde.org>
Date: Thu, 31 Dec 2009 12:06:04 +0100
Subject: [PATCH 1/3] Speedup; get only the info we need in cases where we don't use \
the name
---
krita/image/tests/kis_histogram_test.cpp | 6 +++---
.../dockers/defaultdockers/histogramdock.cpp | 12 +++++-------
.../colorsfilters/kis_perchannel_filter.cpp | 6 +++---
.../paintops/libpaintop/kis_filter_option.cpp | 8 ++++----
krita/ui/kis_histogram_view.cc | 13 ++++++-------
krita/ui/kis_histogram_view.h | 2 +-
libs/pigment/KoHistogramProducer.cpp | 10 +++++-----
libs/pigment/KoHistogramProducer.h | 2 +-
8 files changed, 28 insertions(+), 31 deletions(-)
diff --git a/krita/image/tests/kis_histogram_test.cpp \
b/krita/image/tests/kis_histogram_test.cpp index 22c87c6..0cbb058 100644
--- a/krita/image/tests/kis_histogram_test.cpp
+++ b/krita/image/tests/kis_histogram_test.cpp
@@ -29,9 +29,9 @@ void KisHistogramTest::testCreation()
{
const KoColorSpace * cs = KoColorSpaceRegistry::instance()->rgb8();
KisPaintDeviceSP dev = new KisPaintDevice(cs);
- QList<KoID> producers = \
KoHistogramProducerFactoryRegistry::instance()->listKeysCompatibleWith(cs);
- foreach(KoID id, producers) {
- KoHistogramProducerSP producer = \
KoHistogramProducerFactoryRegistry::instance()->get(id.id())->generate(); + \
QList<QString> producers = \
KoHistogramProducerFactoryRegistry::instance()->keysCompatibleWith(cs); + foreach \
(const QString &id, producers) { + KoHistogramProducerSP producer = \
KoHistogramProducerFactoryRegistry::instance()->get(id)->generate(); KisHistogram \
test(dev, producer, LINEAR); }
}
diff --git a/krita/plugins/extensions/dockers/defaultdockers/histogramdock.cpp \
b/krita/plugins/extensions/dockers/defaultdockers/histogramdock.cpp index \
65dddf1..12cb947 100644
--- a/krita/plugins/extensions/dockers/defaultdockers/histogramdock.cpp
+++ b/krita/plugins/extensions/dockers/defaultdockers/histogramdock.cpp
@@ -159,10 +159,9 @@ void KisHistogramDocker::producerChanged(QAction *action)
}
m_producers.clear();
- QList<KoID> keys = KoHistogramProducerFactoryRegistry::instance() ->
- listKeysCompatibleWith(m_cs);
+ QList<QString> keys = \
KoHistogramProducerFactoryRegistry::instance()->keysCompatibleWith(m_cs);
- m_factory = KoHistogramProducerFactoryRegistry::instance()->get(keys.at(pos).id());
+ m_factory = KoHistogramProducerFactoryRegistry::instance()->get(keys.at(pos));
KisCachedHistogramObserver observer(&m_producers, m_factory, 0, 0, 0, 0, false);
@@ -195,14 +194,13 @@ void KisHistogramDocker::colorSpaceChanged(const KoColorSpace* \
cs) kDebug() << cs;
m_cs = cs;
- QList<KoID> keys = \
KoHistogramProducerFactoryRegistry::instance()->listKeysCompatibleWith(m_cs); + \
QList<QString> keys = \
KoHistogramProducerFactoryRegistry::instance()->keysCompatibleWith(m_cs);
m_popup.clear();
m_currentProducerPos = 0;
- for (int i = 0; i < keys.count(); i++) {
- KoID id(keys.at(i));
- m_popup.addAction(id.name());
+ foreach (const QString &key, keys) {
+ m_popup.addAction(KoHistogramProducerFactoryRegistry::instance()->get(key)->name());
}
if (m_popup.actions().size() > 0) {
diff --git a/krita/plugins/filters/colorsfilters/kis_perchannel_filter.cpp \
b/krita/plugins/filters/colorsfilters/kis_perchannel_filter.cpp index \
e493056..e990ad0 100644
--- a/krita/plugins/filters/colorsfilters/kis_perchannel_filter.cpp
+++ b/krita/plugins/filters/colorsfilters/kis_perchannel_filter.cpp
@@ -80,10 +80,10 @@ KisPerChannelConfigWidget::KisPerChannelConfigWidget(QWidget * \
parent, KisPaintD m_page->vgradient->setPixmap(createGradient(Qt::Vertical));
// init histogram calculator
- QList<KoID> keys =
- KoHistogramProducerFactoryRegistry::instance()->listKeysCompatibleWith(m_dev->colorSpace());
+ QList<QString> keys =
+ KoHistogramProducerFactoryRegistry::instance()->keysCompatibleWith(m_dev->colorSpace());
KoHistogramProducerFactory *hpf;
- hpf = KoHistogramProducerFactoryRegistry::instance()->get(keys.at(0).id());
+ hpf = KoHistogramProducerFactoryRegistry::instance()->get(keys.at(0));
m_histogram = new KisHistogram(m_dev, hpf->generate(), LINEAR);
connect(m_page->curveWidget, SIGNAL(modified()), this, \
SIGNAL(sigConfigurationItemChanged()));
diff --git a/krita/plugins/paintops/libpaintop/kis_filter_option.cpp \
b/krita/plugins/paintops/libpaintop/kis_filter_option.cpp index b20b0cb..a107cde \
100644
--- a/krita/plugins/paintops/libpaintop/kis_filter_option.cpp
+++ b/krita/plugins/paintops/libpaintop/kis_filter_option.cpp
@@ -61,13 +61,13 @@ KisFilterOption::KisFilterOption()
m_layout = new QGridLayout(m_options->grpFilterOptions);
// Check which filters support painting
- QList<KoID> l = KisFilterRegistry::instance()->listKeys();
+ QList<QString> l = KisFilterRegistry::instance()->keys();
QList<KoID> l2;
- QList<KoID>::iterator it;
+ QList<QString>::iterator it;
for (it = l.begin(); it != l.end(); ++it) {
- KisFilterSP f = KisFilterRegistry::instance()->value((*it).id());
+ KisFilterSP f = KisFilterRegistry::instance()->value((*it));
if (f->supportsPainting()) {
- l2.push_back(*it);
+ l2.push_back(KoID(*it, f->name()));
}
}
m_options->filtersList->setIDList(l2);
diff --git a/krita/ui/kis_histogram_view.cc b/krita/ui/kis_histogram_view.cc
index cb1a5ac..dbb4bca 100644
--- a/krita/ui/kis_histogram_view.cc
+++ b/krita/ui/kis_histogram_view.cc
@@ -124,11 +124,11 @@ QStringList KisHistogramView::channelStrings()
return m_channelStrings;
}
-QList<KoID> KisHistogramView::listProducers()
+QList<QString> KisHistogramView::producers()
{
if (m_cs)
- return KoHistogramProducerFactoryRegistry::instance()->listKeysCompatibleWith(m_cs);
- return QList<KoID>();
+ return KoHistogramProducerFactoryRegistry::instance()->keysCompatibleWith(m_cs);
+ return QList<QString>();
}
void KisHistogramView::setCurrentChannels(const KoID& producerID, \
QList<KoChannelInfo *> channels) @@ -235,16 +235,15 @@ void \
KisHistogramView::setChannels() m_channels.clear();
m_channelToOffset.clear();
- QList<KoID> list = \
KoHistogramProducerFactoryRegistry::instance()->listKeysCompatibleWith(m_cs); + \
QList<QString> list = \
KoHistogramProducerFactoryRegistry::instance()->keysCompatibleWith(m_cs);
if (list.count() == 0) {
// XXX: No native histogram for this colorspace. Using converted RGB. We \
should have a warning KoGenericRGBHistogramProducerFactory f;
addProducerChannels(f.generate());
} else {
- for (int i = 0; i < list.count(); i++) {
- KoID id(list.at(i));
- addProducerChannels(KoHistogramProducerFactoryRegistry::instance()->value(id.id())->generate());
+ foreach (const QString &id, list) {
+ addProducerChannels(KoHistogramProducerFactoryRegistry::instance()->value(id)->generate());
}
}
diff --git a/krita/ui/kis_histogram_view.h b/krita/ui/kis_histogram_view.h
index 86ae878..d9c8a18 100644
--- a/krita/ui/kis_histogram_view.h
+++ b/krita/ui/kis_histogram_view.h
@@ -74,7 +74,7 @@ public:
QStringList channelStrings();
/** Lists all producers currently available */
- QList<KoID> listProducers();
+ QList<QString> producers();
/** Sets the currently displayed channels to channels of the producer with \
producerID as ID*/
void setCurrentChannels(const KoID& producerID, QList<KoChannelInfo *> \
channels);
diff --git a/libs/pigment/KoHistogramProducer.cpp \
b/libs/pigment/KoHistogramProducer.cpp index b8a35a8..bc4f42f 100644
--- a/libs/pigment/KoHistogramProducer.cpp
+++ b/libs/pigment/KoHistogramProducer.cpp
@@ -39,18 +39,18 @@ KoHistogramProducerFactoryRegistry* \
KoHistogramProducerFactoryRegistry::instance
}
-QList<KoID> KoHistogramProducerFactoryRegistry::listKeysCompatibleWith(
+QList<QString> KoHistogramProducerFactoryRegistry::keysCompatibleWith(
const KoColorSpace* colorSpace) const
{
- QList<KoID> list;
+ QList<QString> list;
QList<float> preferredList;
- foreach(const KoID & id, listKeys()) {
- KoHistogramProducerFactory *f = value(id.id());
+ foreach(const QString &id, keys()) {
+ KoHistogramProducerFactory *f = value(id);
if (f->isCompatibleWith(colorSpace)) {
float preferred = f->preferrednessLevelWith(colorSpace);
QList<float>::iterator pit = preferredList.begin();
QList<float>::iterator pend = preferredList.end();
- QList<KoID>::iterator lit = list.begin();
+ QList<QString>::iterator lit = list.begin();
while (pit != pend && preferred <= *pit) {
++pit;
diff --git a/libs/pigment/KoHistogramProducer.h b/libs/pigment/KoHistogramProducer.h
index 89ca2a1..041c07e 100644
--- a/libs/pigment/KoHistogramProducer.h
+++ b/libs/pigment/KoHistogramProducer.h
@@ -117,7 +117,7 @@ public:
virtual ~KoHistogramProducerFactoryRegistry();
static KoHistogramProducerFactoryRegistry* instance();
/// returns a list, sorted by preferrence: higher preferance comes first
- QList<KoID> listKeysCompatibleWith(const KoColorSpace* colorSpace) const;
+ QList<QString> keysCompatibleWith(const KoColorSpace* colorSpace) const;
private:
KoHistogramProducerFactoryRegistry();
--
1.6.3.3
_______________________________________________
kimageshop mailing list
kimageshop@kde.org
https://mail.kde.org/mailman/listinfo/kimageshop
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic