[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: koffice/krita/plugins/filters/colorsfilters
From: Bart Coppens <kde () bartcoppens ! be>
Date: 2006-10-06 13:16:18
Message-ID: 1160140578.683377.4324.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 592997 by coppens:
Forward port r556206 (very small speedup)
M +22 -3 kis_perchannel_filter.cc
M +4 -0 kis_perchannel_filter.h
--- trunk/koffice/krita/plugins/filters/colorsfilters/kis_perchannel_filter.cc \
#592996:592997 @@ -51,12 +51,16 @@
}
}
nTransfers = n;
+ dirty = true;
+ oldCs = 0;
+ adjustment = 0;
}
KisPerChannelFilterConfiguration::~KisPerChannelFilterConfiguration()
{
for(int i=0;i<nTransfers;i++)
delete [] transfers[i];
+ delete adjustment;
}
void KisPerChannelFilterConfiguration::fromXML( const QString& s )
@@ -124,6 +128,7 @@
transfers[ch][i] = val;
}
}
+ dirty = true;
}
QString KisPerChannelFilterConfiguration::toString()
@@ -188,14 +193,25 @@
return;
}
- KisPerChannelFilterConfiguration* configBC = (KisPerChannelFilterConfiguration*) \
config; + KisPerChannelFilterConfiguration* configBC =
+ dynamic_cast<KisPerChannelFilterConfiguration*>(config);
if (configBC->nTransfers != src->colorSpace()->nColorChannels()) {
// We got an illegal number of colorchannels.KisFilter
return;
}
- KoColorAdjustment *adj = \
src->colorSpace()->createPerChannelAdjustment(configBC->transfers);
+ if (configBC->dirty || (src->colorSpace() != configBC->oldCs)) {
+ delete configBC->adjustment;
+ configBC->adjustment =
+ src->colorSpace()->createPerChannelAdjustment(configBC->transfers);
+ kDebug() << configBC->adjustment << endl;
+ configBC->oldCs = src->colorSpace();
+ configBC->dirty = false;
+ }
+ KoColorAdjustment *adj = configBC->adjustment;
+
+
if (src!=dst) {
KisPainter gc(dst);
gc.bitBlt(rect.x(), rect.y(), COMPOSITE_COPY, src, rect.x(), rect.y(), \
rect.width(), rect.height()); @@ -255,7 +271,7 @@
}
setProgress(pixelsProcessed);
}
- delete adj;
+
setProgressDone();
}
@@ -375,6 +391,9 @@
cfg->transfers[ch][i] = val;
}
}
+
+ cfg->dirty = true;
+
return cfg;
}
--- trunk/koffice/krita/plugins/filters/colorsfilters/kis_perchannel_filter.h \
#592996:592997 @@ -54,6 +54,10 @@
QList<KisCurve> curves;
quint16 *transfers[256];
quint16 nTransfers;
+ // Caching of adjustment
+ bool dirty;
+ KoColorSpace* oldCs;
+ KoColorAdjustment* adjustment;
};
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic