61
61
CBFilter::CBFilter(DImg* orgImage, QObject* parent, const CBContainer& settings)
62
: DImgThreadedFilter(orgImage, parent, "CBFilter"),
62
: DImgThreadedFilter(orgImage, parent, "CBFilter"),
65
65
d->settings = settings;
108
108
for (int i = 0; i < 256; ++i)
111
112
d->redMap[i] = redMap[i];
113
117
d->greenMap[i] = greenMap[i];
115
122
d->blueMap[i] = blueMap[i];
117
127
d->alphaMap[i] = alphaMap[i];
122
133
for (int i = 0; i < 65536; ++i)
125
137
d->redMap16[i] = redMap[i];
127
142
d->greenMap16[i] = greenMap[i];
129
147
d->blueMap16[i] = blueMap[i];
131
152
d->alphaMap16[i] = alphaMap[i];
141
164
memcpy(redMap, d->redMap, (256 * sizeof(int)));
143
169
memcpy(greenMap, d->greenMap, (256 * sizeof(int)));
145
174
memcpy(blueMap, d->blueMap, (256 * sizeof(int)));
147
179
memcpy(alphaMap, d->alphaMap, (256 * sizeof(int)));
152
186
memcpy(redMap, d->redMap16, (65536 * sizeof(int)));
154
191
memcpy(greenMap, d->greenMap16, (65536 * sizeof(int)));
156
196
memcpy(blueMap, d->blueMap16, (65536 * sizeof(int)));
158
201
memcpy(alphaMap, d->alphaMap16, (65536 * sizeof(int)));
162
206
void CBFilter::applyCBFilter(DImg& image, double r, double g, double b, double a)
164
208
if (image.isNull())
167
213
uint size = image.width()*image.height();
252
304
int dummy_table[65536];
254
306
if (r == 1.0 && g == 1.0 && b == 1.0 && a == 1.0)
257
311
if (r == g && r == b && r == a)
263
getTables(r_table, g_table, b_table, a_table, sixteenBit);
268
getTables(r_table, dummy_table, dummy_table, dummy_table, sixteenBit);
275
getTables(dummy_table, g_table, dummy_table, dummy_table, sixteenBit);
282
getTables(dummy_table, dummy_table, b_table, dummy_table, sixteenBit);
289
getTables(dummy_table, dummy_table, dummy_table, a_table, sixteenBit);
293
setTables(r_table, g_table, b_table, a_table, sixteenBit);
317
getTables(r_table, g_table, b_table, a_table, sixteenBit);
322
getTables(r_table, dummy_table, dummy_table, dummy_table, sixteenBit);
329
getTables(dummy_table, g_table, dummy_table, dummy_table, sixteenBit);
336
getTables(dummy_table, dummy_table, b_table, dummy_table, sixteenBit);
343
getTables(dummy_table, dummy_table, dummy_table, a_table, sixteenBit);
347
setTables(r_table, g_table, b_table, a_table, sixteenBit);