160{
161 d->needUpdatePixmap =
false;
162 d->pixmap = QPixmap(
size() * devicePixelRatioF());
163 d->pixmap.setDevicePixelRatio(devicePixelRatioF());
164 d->curvemap = QPixmap(
size() * devicePixelRatioF());
165 d->curvemap.setDevicePixelRatio(devicePixelRatioF());
166 d->pixmap.fill(Qt::black);
167 d->curvemap.fill(Qt::transparent);
168
169 d->painter.begin(&
d->pixmap);
170
171 int pixcols =
172 static_cast<int>(
d->pixmap.width() /
d->pixmap.devicePixelRatioF());
173 int pixrows =
174 static_cast<int>(
d->pixmap.height() /
d->pixmap.devicePixelRatioF());
175
176 d->gridside = (qMin(pixcols, pixrows)) / 512.0;
179 d->pxcols = pixcols -
d->xBias;
180 d->pxrows = pixrows -
d->yBias;
181
182 d->painter.setBackground(QBrush(qRgb(0, 0, 0)));
183 QPointF start;
185 d->painter.setRenderHint(QPainter::Antialiasing);
186 if (
d->TRCGray &&
d->ToneCurveGray.size()>0){
187 QPainterPath path;
188 start =
d->ToneCurveGray.at(0);
190 path.moveTo(start);
191 foreach (QPointF Point,
d->ToneCurveGray) {
193 path.lineTo(Point);
194 }
195 d->painter.setPen(qRgb(255, 255, 255));
196 d->painter.drawPath(path);
197 }
else if (
d->TRCRGB &&
d->ToneCurveRed.size()>0 &&
d->ToneCurveGreen.size()>0 &&
d->ToneCurveBlue.size()>0){
199 d->painter.setCompositionMode(QPainter::CompositionMode_Screen);
200 QPainterPath path;
201 start =
d->ToneCurveRed.at(0);
203 path.moveTo(start);
204 foreach (QPointF Point,
d->ToneCurveRed) {
206 path.lineTo(Point);
207 }
208 d->painter.setPen(qRgb(255, 0, 0));
209 d->painter.drawPath(path);
210 QPainterPath path2;
211 start =
d->ToneCurveGreen.at(0);
213 path2.moveTo(start);
214 foreach (QPointF Point,
d->ToneCurveGreen) {
216 path2.lineTo(Point);
217 }
218 d->painter.setPen(qRgb(0, 255, 0));
219 d->painter.drawPath(path2);
220 QPainterPath path3;
221 start =
d->ToneCurveBlue.at(0);
223 path3.moveTo(start);
224 foreach (QPointF Point,
d->ToneCurveBlue) {
226 path3.lineTo(Point);
227 }
228 d->painter.setPen(qRgb(0, 0, 255));
229 d->painter.drawPath(path3);
230 d->painter.restore();
231 } else {
232 d->painter2.begin(&
d->curvemap);
233 d->painter2.setRenderHint(QPainter::Antialiasing);
234
235 QPainterPath path;
236 start =
d->ToneCurveRed.at(0);
238 path.moveTo(start);
239 foreach (QPointF Point,
d->ToneCurveRed) {
241 path.lineTo(Point);
242 }
243 d->painter2.setPen(qRgb(0, 255, 255));
244 d->painter2.drawPath(path);
245 QPainterPath path2;
246 start =
d->ToneCurveGreen.at(0);
248 path2.moveTo(start);
249 foreach (QPointF Point,
d->ToneCurveGreen) {
251 path2.lineTo(Point);
252 }
253 d->painter2.setPen(qRgb(255, 0, 255));
254 d->painter2.drawPath(path2);
255 QPainterPath path3;
256 start =
d->ToneCurveBlue.at(0);
258 path3.moveTo(start);
259 foreach (QPointF Point,
d->ToneCurveBlue) {
261 path3.lineTo(Point);
262 }
263 d->painter2.setPen(qRgb(255, 255, 0));
264 d->painter2.drawPath(path3);
265 QPainterPath path4;
266 start =
d->ToneCurveGray.at(0);
268 path4.moveTo(start);
269 foreach (QPointF Point,
d->ToneCurveGray) {
271 path4.lineTo(Point);
272 }
273 d->painter2.setPen(qRgb(80, 80, 80));
274 d->painter2.drawPath(path4);
276 d->painter.drawPixmap(
d->xBias, 0,
d->curvemap);
277 }
279}
int size(const Forest< T > &forest)