30 #include "dcrawsettingswidget.moc"
46 #include <kapplication.h>
49 #include <kurllabel.h>
50 #include <ktoolinvocation.h>
63 class DcrawSettingsWidget::Private
69 autoBrightnessBox = 0;
71 fourColorCheckBox = 0;
73 brightnessSpinBox = 0;
74 blackPointCheckBox = 0;
75 blackPointSpinBox = 0;
76 whitePointCheckBox = 0;
77 whitePointSpinBox = 0;
78 whiteBalanceComboBox = 0;
79 whiteBalanceLabel = 0;
80 customWhiteBalanceSpinBox = 0;
81 customWhiteBalanceLabel = 0;
82 customWhiteBalanceGreenSpinBox = 0;
83 customWhiteBalanceGreenLabel = 0;
85 dontStretchPixelsCheckBox = 0;
86 RAWQualityComboBox = 0;
88 noiseReductionComboBox = 0;
93 enableCACorrectionBox = 0;
94 autoCACorrectionBox = 0;
96 caBlueMultSpinBox = 0;
99 unclipColorComboBox = 0;
100 reconstructLabel = 0;
101 reconstructSpinBox = 0;
102 outputColorSpaceLabel = 0;
103 outputColorSpaceComboBox = 0;
104 demosaicingSettings = 0;
105 whiteBalanceSettings = 0;
106 correctionsSettings = 0;
107 colormanSettings = 0;
108 medianFilterPassesSpinBox = 0;
109 medianFilterPassesLabel = 0;
112 inputColorSpaceLabel = 0;
113 inputColorSpaceComboBox = 0;
114 fixColorsHighlightsBox = 0;
115 refineInterpolationBox = 0;
116 noiseReductionLabel = 0;
117 expoCorrectionBox = 0;
118 expoCorrectionShiftSpinBox = 0;
119 expoCorrectionHighlightSpinBox = 0;
120 expoCorrectionShiftLabel = 0;
121 expoCorrectionHighlightLabel = 0;
126 double shiftExpoFromEvToLinear(
double ev)
const
130 return (1.55*ev + 3.35);
135 double shiftExpoFromLinearToEv(
double lin)
const
139 return ((lin-3.35) / 1.55);
149 QLabel* whiteBalanceLabel;
150 QLabel* customWhiteBalanceLabel;
151 QLabel* customWhiteBalanceGreenLabel;
160 QLabel* inputColorSpaceLabel;
161 QLabel* outputColorSpaceLabel;
162 QLabel* medianFilterPassesLabel;
163 QLabel* noiseReductionLabel;
164 QLabel* expoCorrectionShiftLabel;
165 QLabel* expoCorrectionHighlightLabel;
179 KUrlRequester* inIccUrlEdit;
180 KUrlRequester* outIccUrlEdit;
182 RComboBox* noiseReductionComboBox;
183 RComboBox* whiteBalanceComboBox;
184 RComboBox* RAWQualityComboBox;
185 RComboBox* unclipColorComboBox;
186 RComboBox* inputColorSpaceComboBox;
187 RComboBox* outputColorSpaceComboBox;
189 RIntNumInput* customWhiteBalanceSpinBox;
190 RIntNumInput* reconstructSpinBox;
191 RIntNumInput* blackPointSpinBox;
192 RIntNumInput* whitePointSpinBox;
193 RIntNumInput* NRSpinBox1;
194 RIntNumInput* NRSpinBox2;
195 RIntNumInput* medianFilterPassesSpinBox;
197 RDoubleNumInput* customWhiteBalanceGreenSpinBox;
198 RDoubleNumInput* caRedMultSpinBox;
199 RDoubleNumInput* caBlueMultSpinBox;
200 RDoubleNumInput* brightnessSpinBox;
201 RDoubleNumInput* expoCorrectionShiftSpinBox;
202 RDoubleNumInput* expoCorrectionHighlightSpinBox;
218 d->demosaicingSettings =
new QWidget(
this);
223 d->sixteenBitsImage =
new QCheckBox(i18nc(
"@option:check",
"16 bits color depth"), d->demosaicingSettings);
224 d->sixteenBitsImage->setWhatsThis(i18nc(
"@info:whatsthis",
"<para>If enabled, all RAW files will "
225 "be decoded in 16-bit color depth using a linear gamma curve. To "
226 "prevent dark picture rendering in the editor, it is recommended to "
227 "use Color Management in this mode.</para>"
228 "<para>If disabled, all RAW files will be decoded in 8-bit color "
229 "depth with a BT.709 gamma curve and a 99th-percentile white point. "
230 "This mode is faster than 16-bit decoding.</para>"));
231 demosaicingLayout->
addWidget(d->sixteenBitsImage, 0, 0, 1, 2);
235 d->sixteenBitsImage->show();
240 d->sixteenBitsImage->hide();
243 d->fourColorCheckBox =
new QCheckBox(i18nc(
"@option:check",
"Interpolate RGB as four colors"), d->demosaicingSettings);
244 d->fourColorCheckBox->setWhatsThis(i18nc(
"@info:whatsthis",
"<title>Interpolate RGB as four "
246 "<para>The default is to assume that all green pixels are the same. "
247 "If even-row green pixels are more sensitive to ultraviolet light "
248 "than odd-row this difference causes a mesh pattern in the output; "
249 "using this option solves this problem with minimal loss of detail.</para>"
250 "<para>To resume, this option blurs the image a little, but it "
251 "eliminates false 2x2 mesh patterns with VNG quality method or "
252 "mazes with AHD quality method.</para>"));
253 demosaicingLayout->
addWidget(d->fourColorCheckBox, line, 0, 1, line == 0 ? 2 : 3);
256 KUrlLabel*
const dcrawVersion =
new KUrlLabel(
"http://www.libraw.org",
QString(
"libraw %1")
258 dcrawVersion->setAlignment(Qt::AlignRight);
259 dcrawVersion->setToolTip(i18nc(
"@info:tooltip",
"Visit LibRaw project website"));
260 demosaicingLayout->
addWidget(dcrawVersion, 0, 2, 1, 1);
262 d->dontStretchPixelsCheckBox =
new QCheckBox(i18nc(
"@option:check",
"Do not stretch or rotate pixels"), d->demosaicingSettings);
263 d->dontStretchPixelsCheckBox->setWhatsThis(i18nc(
"@info:whatsthis",
264 "<title>Do not stretch or rotate pixels</title>"
265 "<para>For Fuji Super CCD cameras, show the image tilted 45 degrees. "
266 "For cameras with non-square pixels, do not stretch the image to "
267 "its correct aspect ratio. In any case, this option guarantees that "
268 "each output pixel corresponds to one RAW pixel.</para>"));
269 demosaicingLayout->
addWidget(d->dontStretchPixelsCheckBox, line, 0, 1, 3);
272 d->RAWQualityLabel =
new QLabel(i18nc(
"@label:listbox",
"Quality:"), d->demosaicingSettings);
273 d->RAWQualityComboBox =
new RComboBox(d->demosaicingSettings);
295 d->RAWQualityComboBox->combo()->setItemData(i,
false, Qt::UserRole-1);
306 d->RAWQualityComboBox->setWhatsThis(i18nc(
"@info:whatsthis",
"<title>Quality (interpolation)</title>"
307 "<para>Select here the demosaicing method to use when decoding RAW "
308 "images. A demosaicing algorithm is a digital image process used to "
309 "interpolate a complete image from the partial raw data received "
310 "from the color-filtered image sensor, internal to many digital "
311 "cameras, in form of a matrix of colored pixels. Also known as CFA "
312 "interpolation or color reconstruction, another common spelling is "
313 "demosaicing. The following methods are available for demosaicing "
318 "<para><list><item><emphasis strong='true'>Bilinear</emphasis>: use "
319 "high-speed but low-quality bilinear interpolation (default - for "
320 "slow computers). In this method, the red value of a non-red pixel "
321 "is computed as the average of the adjacent red pixels, and similarly "
322 "for blue and green.</item>"
324 "<item><emphasis strong='true'>VNG</emphasis>: use Variable Number "
325 "of Gradients interpolation. This method computes gradients near "
326 "the pixel of interest and uses the lower gradients (representing "
327 "smoother and more similar parts of the image) to make an estimate.</item>"
329 "<item><emphasis strong='true'>PPG</emphasis>: use Patterned-Pixel-"
330 "Grouping interpolation. Pixel Grouping uses assumptions about "
331 "natural scenery in making estimates. It has fewer color artifacts "
332 "on natural images than the Variable Number of Gradients method.</item>"
334 "<item><emphasis strong='true'>AHD</emphasis>: use Adaptive "
335 "Homogeneity-Directed interpolation. This method selects the "
336 "direction of interpolation so as to maximize a homogeneity metric, "
337 "thus typically minimizing color artifacts.</item>"
341 "<item><emphasis strong='true'>DCB</emphasis>: DCB interpolation from "
342 "linuxphoto.org project.</item>"
344 "<item><emphasis strong='true'>AHD v2</emphasis>: modified AHD "
345 "interpolation using Variance of Color Differences method.</item>"
347 "<item><emphasis strong='true'>AFD</emphasis>: Adaptive Filtered "
348 "Demosaicing interpolation through 5 pass median filter from PerfectRaw "
351 "<item><emphasis strong='true'>VCD</emphasis>: Variance of Color "
352 "Differences interpolation.</item>"
354 "<item><emphasis strong='true'>VCD & AHD</emphasis>: Mixed demosaicing "
355 "between VCD and AHD.</item>"
357 "<item><emphasis strong='true'>LMMSE</emphasis>: color demosaicing via "
358 "directional linear minimum mean-square error estimation interpolation "
359 "from PerfectRaw.</item>"
361 "<item><emphasis strong='true'>AMaZE</emphasis>: Aliasing Minimization "
362 "interpolation and Zipper Elimination to apply color aberration removal "
363 "from RawTherapee project.</item></list></para>"
365 "<para>Note: some methods can be unavailable if RAW decoder have been built "
366 "without extension packs.</para>"));
368 demosaicingLayout->
addWidget(d->RAWQualityLabel, line, 0, 1, 1);
369 demosaicingLayout->
addWidget(d->RAWQualityComboBox, line, 1, 1, 2);
372 d->medianFilterPassesSpinBox =
new RIntNumInput(d->demosaicingSettings);
373 d->medianFilterPassesSpinBox->setRange(0, 10, 1);
374 d->medianFilterPassesSpinBox->setDefaultValue(0);
375 d->medianFilterPassesSpinBox->setSliderEnabled(
true);
376 d->medianFilterPassesLabel =
new QLabel(i18nc(
"@label:slider",
"Pass:"), d->whiteBalanceSettings);
377 d->medianFilterPassesSpinBox->setWhatsThis( i18nc(
"@info:whatsthis",
"<title>Pass</title>"
378 "<para>Set here the passes used by the median filter applied after "
379 "interpolation to Red-Green and Blue-Green channels.</para>"
380 "<para>This setting is only available for specific Quality options: "
381 "<emphasis strong='true'>Bilinear</emphasis>, <emphasis strong='true'>"
382 "VNG</emphasis>, <emphasis strong='true'>PPG</emphasis>, "
383 "<emphasis strong='true'>AHD</emphasis>, <emphasis strong='true'>"
384 "DCB</emphasis>, and <emphasis strong='true'>VCD & AHD</emphasis>.</para>"));
385 demosaicingLayout->
addWidget(d->medianFilterPassesLabel, line, 0, 1, 1);
386 demosaicingLayout->
addWidget(d->medianFilterPassesSpinBox, line, 1, 1, 2);
389 d->refineInterpolationBox =
new QCheckBox(i18nc(
"@option:check",
"Refine interpolation"), d->demosaicingSettings);
390 d->refineInterpolationBox->setWhatsThis(i18nc(
"@info:whatsthis",
"<title>Refine interpolation</title>"
391 "<para>This setting is available only for few Quality options:</para>"
392 "<para><list><item><emphasis strong='true'>DCB</emphasis>: turn on "
393 "the enhance interpolated colors filter.</item>"
394 "<item><emphasis strong='true'>VCD & AHD</emphasis>: turn on the "
395 "enhanced effective color interpolation (EECI) refine to improve "
396 "sharpness.</item></list></para>"));
397 demosaicingLayout->
addWidget(d->refineInterpolationBox, line, 0, 1, 2);
402 d->medianFilterPassesLabel->setEnabled(
false);
403 d->medianFilterPassesSpinBox->setEnabled(
false);
404 d->refineInterpolationBox->setEnabled(
false);
407 addItem(d->demosaicingSettings, SmallIcon(
"kdcraw"), i18nc(
"@label",
"Demosaicing"),
QString(
"demosaicing"),
true);
412 d->whiteBalanceSettings =
new QWidget(
this);
415 d->whiteBalanceLabel =
new QLabel(i18nc(
"@label:listbox",
"Method:"), d->whiteBalanceSettings);
416 d->whiteBalanceComboBox =
new RComboBox(d->whiteBalanceSettings);
419 d->whiteBalanceComboBox->insertItem(
RawDecodingSettings::AUTO, i18nc(
"@item:inlistbox set while balance automatically",
"Automatic"));
422 d->whiteBalanceComboBox->setWhatsThis(i18nc(
"@info:whatsthis",
"<title>White Balance</title>"
423 "<para>Configure the raw white balance:</para>"
424 "<para><list><item><emphasis strong='true'>Default D65</emphasis>: "
425 "Use a standard daylight D65 white balance.</item>"
426 "<item><emphasis strong='true'>Camera</emphasis>: Use the white "
427 "balance specified by the camera. If not available, reverts to "
428 "default neutral white balance.</item>"
429 "<item><emphasis strong='true'>Automatic</emphasis>: Calculates an "
430 "automatic white balance averaging the entire image.</item>"
431 "<item><emphasis strong='true'>Manual</emphasis>: Set a custom "
432 "temperature and green level values.</item></list></para>"));
434 d->customWhiteBalanceSpinBox =
new RIntNumInput(d->whiteBalanceSettings);
435 d->customWhiteBalanceSpinBox->setRange(2000, 12000, 10);
436 d->customWhiteBalanceSpinBox->setDefaultValue(6500);
437 d->customWhiteBalanceSpinBox->setSliderEnabled(
true);
438 d->customWhiteBalanceLabel =
new QLabel(i18nc(
"@label:slider",
"T(K):"), d->whiteBalanceSettings);
439 d->customWhiteBalanceSpinBox->setWhatsThis( i18nc(
"@info:whatsthis",
"<title>Temperature</title>"
440 "<para>Set here the color temperature in Kelvin.</para>"));
442 d->customWhiteBalanceGreenSpinBox =
new RDoubleNumInput(d->whiteBalanceSettings);
443 d->customWhiteBalanceGreenSpinBox->setDecimals(2);
444 d->customWhiteBalanceGreenSpinBox->setRange(0.2, 2.5, 0.01);
445 d->customWhiteBalanceGreenSpinBox->setDefaultValue(1.0);
446 d->customWhiteBalanceGreenLabel =
new QLabel(i18nc(
"@label:slider Green component",
"Green:"), d->whiteBalanceSettings);
447 d->customWhiteBalanceGreenSpinBox->setWhatsThis(i18nc(
"@info:whatsthis",
"<para>Set here the "
448 "green component to set magenta color cast removal level.</para>"));
450 d->unclipColorLabel =
new QLabel(i18nc(
"@label:listbox",
"Highlights:"), d->whiteBalanceSettings);
451 d->unclipColorComboBox =
new RComboBox(d->whiteBalanceSettings);
452 d->unclipColorComboBox->insertItem(0, i18nc(
"@item:inlistbox",
"Solid white"));
453 d->unclipColorComboBox->insertItem(1, i18nc(
"@item:inlistbox",
"Unclip"));
454 d->unclipColorComboBox->insertItem(2, i18nc(
"@item:inlistbox",
"Blend"));
455 d->unclipColorComboBox->insertItem(3, i18nc(
"@item:inlistbox",
"Rebuild"));
456 d->unclipColorComboBox->setDefaultIndex(0);
457 d->unclipColorComboBox->setWhatsThis(i18nc(
"@info:whatsthis",
"<title>Highlights</title>"
458 "<para>Select here the highlight clipping method:</para>"
459 "<para><list><item><emphasis strong='true'>Solid white</emphasis>: "
460 "clip all highlights to solid white</item>"
461 "<item><emphasis strong='true'>Unclip</emphasis>: leave highlights "
462 "unclipped in various shades of pink</item>"
463 "<item><emphasis strong='true'>Blend</emphasis>:Blend clipped and "
464 "unclipped values together for a gradual fade to white</item>"
465 "<item><emphasis strong='true'>Rebuild</emphasis>: reconstruct "
466 "highlights using a level value</item></list></para>"));
468 d->reconstructLabel =
new QLabel(i18nc(
"@label:slider Highlight reconstruct level",
"Level:"), d->whiteBalanceSettings);
469 d->reconstructSpinBox =
new RIntNumInput(d->whiteBalanceSettings);
470 d->reconstructSpinBox->setRange(0, 6, 1);
471 d->reconstructSpinBox->setDefaultValue(0);
472 d->reconstructSpinBox->setSliderEnabled(
true);
473 d->reconstructSpinBox->setWhatsThis(i18nc(
"@info:whatsthis",
"<title>Level</title>"
474 "<para>Specify the reconstruct highlight level. Low values favor "
475 "whites and high values favor colors.</para>"));
477 d->expoCorrectionBox =
new QCheckBox(i18nc(
"@option:check",
"Exposure Correction (E.V)"), d->whiteBalanceSettings);
478 d->expoCorrectionBox->setWhatsThis(i18nc(
"@info:whatsthis",
"<para>Turn on the exposure "
479 "correction before interpolation.</para>"));
481 d->expoCorrectionShiftLabel =
new QLabel(i18nc(
"@label:slider",
"Linear Shift:"), d->whiteBalanceSettings);
482 d->expoCorrectionShiftSpinBox =
new RDoubleNumInput(d->whiteBalanceSettings);
483 d->expoCorrectionShiftSpinBox->setDecimals(2);
484 d->expoCorrectionShiftSpinBox->setRange(-2.0, 3.0, 0.01);
485 d->expoCorrectionShiftSpinBox->setDefaultValue(0.0);
486 d->expoCorrectionShiftSpinBox->setWhatsThis(i18nc(
"@info:whatsthis",
"<title>Shift</title>"
487 "<para>Linear Shift of exposure correction before interpolation in E.V</para>"));
489 d->expoCorrectionHighlightLabel =
new QLabel(i18nc(
"@label:slider",
"Highlight:"), d->whiteBalanceSettings);
490 d->expoCorrectionHighlightSpinBox =
new RDoubleNumInput(d->whiteBalanceSettings);
491 d->expoCorrectionHighlightSpinBox->setDecimals(2);
492 d->expoCorrectionHighlightSpinBox->setRange(0.0, 1.0, 0.01);
493 d->expoCorrectionHighlightSpinBox->setDefaultValue(0.0);
494 d->expoCorrectionHighlightSpinBox->setWhatsThis(i18nc(
"@info:whatsthis",
"<title>Highlight</title>"
495 "<para>Amount of highlight preservation for exposure correction "
496 "before interpolation in E.V. Only take effect if Shift Correction is > 1.0 E.V</para>"));
498 d->fixColorsHighlightsBox =
new QCheckBox(i18nc(
"@option:check",
"Correct false colors in highlights"), d->whiteBalanceSettings);
499 d->fixColorsHighlightsBox->setWhatsThis(i18nc(
"@info:whatsthis",
"<para>If enabled, images with "
500 "overblown channels are processed much more accurately, without "
501 "'pink clouds' (and blue highlights under tungsten lamps).</para>"));
503 d->autoBrightnessBox =
new QCheckBox(i18nc(
"@option:check",
"Auto Brightness"), d->whiteBalanceSettings);
504 d->autoBrightnessBox->setWhatsThis(i18nc(
"@info:whatsthis",
"<para>If disable, use a fixed white level "
505 "and ignore the image histogram to adjust brightness.</para>"));
507 d->brightnessLabel =
new QLabel(i18nc(
"@label:slider",
"Brightness:"), d->whiteBalanceSettings);
509 d->brightnessSpinBox->setDecimals(2);
510 d->brightnessSpinBox->setRange(0.0, 10.0, 0.01);
511 d->brightnessSpinBox->setDefaultValue(1.0);
512 d->brightnessSpinBox->setWhatsThis(i18nc(
"@info:whatsthis",
"<title>Brightness</title>"
513 "<para>Specify the brightness level of output image. The default "
514 "value is 1.0 (works in 8-bit mode only).</para>"));
518 d->brightnessLabel->hide();
519 d->brightnessSpinBox->hide();
522 d->blackPointCheckBox =
new QCheckBox(i18nc(
"@option:check Black point",
"Black:"), d->whiteBalanceSettings);
523 d->blackPointCheckBox->setWhatsThis(i18nc(
"@info:whatsthis",
"<title>Black point</title>"
524 "<para>Use a specific black point value to decode RAW pictures. If "
525 "you set this option to off, the Black Point value will be "
526 "automatically computed.</para>"));
527 d->blackPointSpinBox =
new RIntNumInput(d->whiteBalanceSettings);
528 d->blackPointSpinBox->setRange(0, 1000, 1);
529 d->blackPointSpinBox->setDefaultValue(0);
530 d->blackPointSpinBox->setSliderEnabled(
true);
531 d->blackPointSpinBox->setWhatsThis(i18nc(
"@info:whatsthis",
"<title>Black point value</title>"
532 "<para>Specify specific black point value of the output image.</para>"));
534 d->whitePointCheckBox =
new QCheckBox(i18nc(
"@option:check White point",
"White:"), d->whiteBalanceSettings);
535 d->whitePointCheckBox->setWhatsThis(i18nc(
"@info:whatsthis",
"<title>White point</title>"
536 "<para>Use a specific white point value to decode RAW pictures. If "
537 "you set this option to off, the White Point value will be "
538 "automatically computed.</para>"));
539 d->whitePointSpinBox =
new RIntNumInput(d->whiteBalanceSettings);
540 d->whitePointSpinBox->setRange(0, 20000, 1);
541 d->whitePointSpinBox->setDefaultValue(0);
542 d->whitePointSpinBox->setSliderEnabled(
true);
543 d->whitePointSpinBox->setWhatsThis(i18nc(
"@info:whatsthis",
"<title>White point value</title>"
544 "<para>Specify specific white point value of the output image.</para>"));
548 d->blackPointCheckBox->hide();
549 d->blackPointSpinBox->hide();
550 d->whitePointCheckBox->hide();
551 d->whitePointSpinBox->hide();
554 whiteBalanceLayout->
addWidget(d->whiteBalanceLabel, 0, 0, 1, 1);
555 whiteBalanceLayout->
addWidget(d->whiteBalanceComboBox, 0, 1, 1, 2);
556 whiteBalanceLayout->
addWidget(d->customWhiteBalanceLabel, 1, 0, 1, 1);
557 whiteBalanceLayout->
addWidget(d->customWhiteBalanceSpinBox, 1, 1, 1, 2);
558 whiteBalanceLayout->
addWidget(d->customWhiteBalanceGreenLabel, 2, 0, 1, 1);
559 whiteBalanceLayout->
addWidget(d->customWhiteBalanceGreenSpinBox, 2, 1, 1, 2);
560 whiteBalanceLayout->
addWidget(d->unclipColorLabel, 3, 0, 1, 1);
561 whiteBalanceLayout->
addWidget(d->unclipColorComboBox, 3, 1, 1, 2);
562 whiteBalanceLayout->
addWidget(d->reconstructLabel, 4, 0, 1, 1);
563 whiteBalanceLayout->
addWidget(d->reconstructSpinBox, 4, 1, 1, 2);
564 whiteBalanceLayout->
addWidget(d->expoCorrectionBox, 5, 0, 1, 2);
565 whiteBalanceLayout->
addWidget(d->expoCorrectionShiftLabel, 6, 0, 1, 1);
566 whiteBalanceLayout->
addWidget(d->expoCorrectionShiftSpinBox, 6, 1, 1, 2);
567 whiteBalanceLayout->
addWidget(d->expoCorrectionHighlightLabel, 7, 0, 1, 1);
568 whiteBalanceLayout->
addWidget(d->expoCorrectionHighlightSpinBox, 7, 1, 1, 2);
569 whiteBalanceLayout->
addWidget(d->fixColorsHighlightsBox, 8, 0, 1, 3);
570 whiteBalanceLayout->
addWidget(d->autoBrightnessBox, 9, 0, 1, 3);
571 whiteBalanceLayout->
addWidget(d->brightnessLabel, 10, 0, 1, 1);
572 whiteBalanceLayout->
addWidget(d->brightnessSpinBox, 10, 1, 1, 2);
573 whiteBalanceLayout->
addWidget(d->blackPointCheckBox, 11, 0, 1, 1);
574 whiteBalanceLayout->
addWidget(d->blackPointSpinBox, 11, 1, 1, 2);
575 whiteBalanceLayout->
addWidget(d->whitePointCheckBox, 12, 0, 1, 1);
576 whiteBalanceLayout->
addWidget(d->whitePointSpinBox, 12, 1, 1, 2);
577 whiteBalanceLayout->
setSpacing(KDialog::spacingHint());
578 whiteBalanceLayout->
setMargin(KDialog::spacingHint());
580 addItem(d->whiteBalanceSettings, SmallIcon(
"kdcraw"), i18nc(
"@label",
"White Balance"),
QString(
"whitebalance"),
true);
585 d->correctionsSettings =
new QWidget(
this);
588 d->noiseReductionLabel =
new QLabel(i18nc(
"@label:listbox",
"Noise reduction:"), d->correctionsSettings);
589 d->noiseReductionComboBox =
new RComboBox(d->colormanSettings);
596 d->noiseReductionComboBox->setWhatsThis(i18nc(
"@info:whatsthis",
"<title>Noise Reduction</title>"
597 "<para>Select here the noise reduction method to apply during RAW "
599 "<para><list><item><emphasis strong='true'>None</emphasis>: no "
600 "noise reduction.</item>"
601 "<item><emphasis strong='true'>Wavelets</emphasis>: wavelets "
602 "correction to erase noise while preserving real detail. It's "
603 "applied after interpolation.</item>"
604 "<item><emphasis strong='true'>FBDD</emphasis>: Fake Before "
605 "Demosaicing Denoising noise reduction. It's applied before "
606 "interpolation.</item>"
607 "<item><emphasis strong='true'>CFA Line Denoise</emphasis>: Banding "
608 "noise suppression. It's applied after interpolation.</item>"
609 "<item><emphasis strong='true'>Impulse Denoise</emphasis>: Impulse "
610 "noise suppression. It's applied after interpolation.</item></list></para>"));
612 d->NRSpinBox1 =
new RIntNumInput(d->correctionsSettings);
613 d->NRSpinBox1->setRange(100, 1000, 1);
614 d->NRSpinBox1->setDefaultValue(100);
615 d->NRSpinBox1->setSliderEnabled(
true);
616 d->NRLabel1 =
new QLabel(d->correctionsSettings);
618 d->NRSpinBox2 =
new RIntNumInput(d->correctionsSettings);
619 d->NRSpinBox2->setRange(100, 1000, 1);
620 d->NRSpinBox2->setDefaultValue(100);
621 d->NRSpinBox2->setSliderEnabled(
true);
622 d->NRLabel2 =
new QLabel(d->correctionsSettings);
624 d->enableCACorrectionBox =
new QCheckBox(i18nc(
"@option:check",
"Enable Chromatic Aberration correction"), d->correctionsSettings);
625 d->enableCACorrectionBox->setWhatsThis(i18nc(
"@info:whatsthis",
"<title>Enable Chromatic "
626 "Aberration correction</title>"
627 "<para>Enlarge the raw red-green and blue-yellow axis by the given "
628 "factors (automatic by default).</para>"));
630 d->autoCACorrectionBox =
new QCheckBox(i18nc(
"@option:check",
"Automatic color axis adjustments"), d->correctionsSettings);
631 d->autoCACorrectionBox->setWhatsThis(i18nc(
"@info:whatsthis",
"<title>Automatic Chromatic "
632 "Aberration correction</title>"
633 "<para>If this option is turned on, it will try to shift image "
634 "channels slightly and evaluate Chromatic Aberration change. Note "
635 "that if you shot blue-red pattern, the method may fail. In this "
636 "case, disable this option and tune manually color factors.</para>"));
638 d->caRedMultLabel =
new QLabel(i18nc(
"@label:slider",
"Red-Green:"), d->correctionsSettings);
640 d->caRedMultSpinBox->setDecimals(1);
641 d->caRedMultSpinBox->setRange(-4.0, 4.0, 0.1);
642 d->caRedMultSpinBox->setDefaultValue(0.0);
643 d->caRedMultSpinBox->setWhatsThis(i18nc(
"@info:whatsthis",
"<title>Red-Green multiplier</title>"
644 "<para>Set here the amount of correction on red-green axis</para>"));
646 d->caBlueMultLabel =
new QLabel(i18nc(
"@label:slider",
"Blue-Yellow:"), d->correctionsSettings);
648 d->caBlueMultSpinBox->setDecimals(1);
649 d->caBlueMultSpinBox->setRange(-4.0, 4.0, 0.1);
650 d->caBlueMultSpinBox->setDefaultValue(0.0);
651 d->caBlueMultSpinBox->setWhatsThis(i18nc(
"@info:whatsthis",
"<title>Blue-Yellow multiplier</title>"
652 "<para>Set here the amount of correction on blue-yellow axis</para>"));
654 correctionsLayout->
addWidget(d->noiseReductionLabel, 0, 0, 1, 1);
655 correctionsLayout->
addWidget(d->noiseReductionComboBox, 0, 1, 1, 2);
656 correctionsLayout->
addWidget(d->NRLabel1, 1, 0, 1, 1);
657 correctionsLayout->
addWidget(d->NRSpinBox1, 1, 1, 1, 2);
658 correctionsLayout->
addWidget(d->NRLabel2, 2, 0, 1, 1);
659 correctionsLayout->
addWidget(d->NRSpinBox2, 2, 1, 1, 2);
660 correctionsLayout->
addWidget(d->enableCACorrectionBox, 3, 0, 1, 3);
661 correctionsLayout->
addWidget(d->autoCACorrectionBox, 4, 0, 1, 3);
662 correctionsLayout->
addWidget(d->caRedMultLabel, 5, 0, 1, 1);
663 correctionsLayout->
addWidget(d->caRedMultSpinBox, 5, 1, 1, 2);
664 correctionsLayout->
addWidget(d->caBlueMultLabel, 6, 0, 1, 1);
665 correctionsLayout->
addWidget(d->caBlueMultSpinBox, 6, 1, 1, 2);
667 correctionsLayout->
setSpacing(KDialog::spacingHint());
668 correctionsLayout->
setMargin(KDialog::spacingHint());
670 addItem(d->correctionsSettings, SmallIcon(
"kdcraw"), i18nc(
"@label",
"Corrections"),
QString(
"corrections"),
false);
675 d->colormanSettings =
new QWidget(
this);
678 d->inputColorSpaceLabel =
new QLabel(i18nc(
"@label:listbox",
"Camera Profile:"), d->colormanSettings);
679 d->inputColorSpaceComboBox =
new RComboBox(d->colormanSettings);
684 d->inputColorSpaceComboBox->setWhatsThis(i18nc(
"@info:whatsthis",
"<title>Camera Profile</title>"
685 "<para>Select here the input color space used to decode RAW data.</para>"
686 "<para><list><item><emphasis strong='true'>None</emphasis>: no "
687 "input color profile is used during RAW decoding.</item>"
688 "<item><emphasis strong='true'>Embedded</emphasis>: use embedded "
689 "color profile from RAW file, if it exists.</item>"
690 "<item><emphasis strong='true'>Custom</emphasis>: use a custom "
691 "input color space profile.</item></list></para>"));
693 d->inIccUrlEdit =
new KUrlRequester(d->colormanSettings);
694 d->inIccUrlEdit->setMode(KFile::LocalOnly | KFile::ExistingOnly | KFile::File);
695 d->inIccUrlEdit->setFilter(
"*.icc *.icm|"+i18n(
"ICC Files (*.icc; *.icm)"));
697 d->outputColorSpaceLabel =
new QLabel(i18nc(
"@label:listbox",
"Workspace:"), d->colormanSettings);
698 d->outputColorSpaceComboBox =
new RComboBox( d->colormanSettings );
706 d->outputColorSpaceComboBox->setWhatsThis(i18nc(
"@info:whatsthis",
"<title>Workspace</title>"
707 "<para>Select here the output color space used to decode RAW data.</para>"
708 "<para><list><item><emphasis strong='true'>Raw (linear)</emphasis>: "
709 "in this mode, no output color space is used during RAW decoding.</item>"
710 "<item><emphasis strong='true'>sRGB</emphasis>: this is an RGB "
711 "color space, created cooperatively by Hewlett-Packard and "
712 "Microsoft. It is the best choice for images destined for the Web "
713 "and portrait photography.</item>"
714 "<item><emphasis strong='true'>Adobe RGB</emphasis>: this color "
715 "space is an extended RGB color space, developed by Adobe. It is "
716 "used for photography applications such as advertising and fine "
718 "<item><emphasis strong='true'>Wide Gamut</emphasis>: this color "
719 "space is an expanded version of the Adobe RGB color space.</item>"
720 "<item><emphasis strong='true'>Pro-Photo</emphasis>: this color "
721 "space is an RGB color space, developed by Kodak, that offers an "
722 "especially large gamut designed for use with photographic outputs "
724 "<item><emphasis strong='true'>Custom</emphasis>: use a custom "
725 "output color space profile.</item></list></para>"));
727 d->outIccUrlEdit =
new KUrlRequester(d->colormanSettings);
728 d->outIccUrlEdit->setMode(KFile::LocalOnly | KFile::File | KFile::ExistingOnly);
729 d->outIccUrlEdit->setFilter(
"*.icc *.icm|"+i18n(
"ICC Files (*.icc; *.icm)"));
731 colormanLayout->
addWidget(d->inputColorSpaceLabel, 0, 0, 1, 1);
732 colormanLayout->
addWidget(d->inputColorSpaceComboBox, 0, 1, 1, 2);
733 colormanLayout->
addWidget(d->inIccUrlEdit, 1, 0, 1, 3);
734 colormanLayout->
addWidget(d->outputColorSpaceLabel, 2, 0, 1, 1);
735 colormanLayout->
addWidget(d->outputColorSpaceComboBox, 2, 1, 1, 2);
736 colormanLayout->
addWidget(d->outIccUrlEdit, 3, 0, 1, 3);
738 colormanLayout->
setSpacing(KDialog::spacingHint());
739 colormanLayout->
setMargin(KDialog::spacingHint());
741 addItem(d->colormanSettings, SmallIcon(
"kdcraw"), i18nc(
"@label",
"Color Management"),
QString(
"colormanagement"),
false);
750 connect(d->unclipColorComboBox, SIGNAL(activated(
int)),
751 this, SLOT(slotUnclipColorActivated(
int)));
753 connect(d->whiteBalanceComboBox, SIGNAL(activated(
int)),
754 this, SLOT(slotWhiteBalanceToggled(
int)));
756 connect(d->noiseReductionComboBox, SIGNAL(activated(
int)),
757 this, SLOT(slotNoiseReductionChanged(
int)));
759 connect(d->enableCACorrectionBox, SIGNAL(toggled(
bool)),
760 this, SLOT(slotCACorrectionToggled(
bool)));
762 connect(d->autoCACorrectionBox, SIGNAL(toggled(
bool)),
763 this, SLOT(slotAutoCAToggled(
bool)));
765 connect(d->blackPointCheckBox, SIGNAL(toggled(
bool)),
766 d->blackPointSpinBox, SLOT(
setEnabled(
bool)));
768 connect(d->whitePointCheckBox, SIGNAL(toggled(
bool)),
769 d->whitePointSpinBox, SLOT(
setEnabled(
bool)));
771 connect(d->sixteenBitsImage, SIGNAL(toggled(
bool)),
772 this, SLOT(slotsixteenBitsImageToggled(
bool)));
775 this, SLOT(processDcrawUrl(
QString)));
777 connect(d->inputColorSpaceComboBox, SIGNAL(activated(
int)),
778 this, SLOT(slotInputColorSpaceChanged(
int)));
780 connect(d->outputColorSpaceComboBox, SIGNAL(activated(
int)),
781 this, SLOT(slotOutputColorSpaceChanged(
int)));
783 connect(d->expoCorrectionBox, SIGNAL(toggled(
bool)),
784 this, SLOT(slotExposureCorrectionToggled(
bool)));
786 connect(d->expoCorrectionShiftSpinBox, SIGNAL(valueChanged(
double)),
787 this, SLOT(slotExpoCorrectionShiftChanged(
double)));
791 connect(d->inIccUrlEdit, SIGNAL(urlSelected(KUrl)),
794 connect(d->outIccUrlEdit, SIGNAL(urlSelected(KUrl)),
797 connect(d->whiteBalanceComboBox, SIGNAL(activated(
int)),
800 connect(d->RAWQualityComboBox, SIGNAL(activated(
int)),
801 this, SLOT(slotRAWQualityChanged(
int)));
803 connect(d->unclipColorComboBox, SIGNAL(activated(
int)),
806 connect(d->inputColorSpaceComboBox, SIGNAL(activated(
int)),
809 connect(d->outputColorSpaceComboBox, SIGNAL(activated(
int)),
812 connect(d->blackPointCheckBox, SIGNAL(toggled(
bool)),
815 connect(d->whitePointCheckBox, SIGNAL(toggled(
bool)),
818 connect(d->sixteenBitsImage, SIGNAL(toggled(
bool)),
821 connect(d->fixColorsHighlightsBox, SIGNAL(toggled(
bool)),
824 connect(d->autoBrightnessBox, SIGNAL(toggled(
bool)),
827 connect(d->fourColorCheckBox, SIGNAL(toggled(
bool)),
830 connect(d->dontStretchPixelsCheckBox, SIGNAL(toggled(
bool)),
833 connect(d->refineInterpolationBox, SIGNAL(toggled(
bool)),
836 connect(d->customWhiteBalanceSpinBox, SIGNAL(valueChanged(
int)),
839 connect(d->reconstructSpinBox, SIGNAL(valueChanged(
int)),
842 connect(d->blackPointSpinBox, SIGNAL(valueChanged(
int)),
845 connect(d->whitePointSpinBox, SIGNAL(valueChanged(
int)),
848 connect(d->NRSpinBox1, SIGNAL(valueChanged(
int)),
851 connect(d->NRSpinBox2, SIGNAL(valueChanged(
int)),
854 connect(d->medianFilterPassesSpinBox, SIGNAL(valueChanged(
int)),
857 connect(d->customWhiteBalanceGreenSpinBox, SIGNAL(valueChanged(
double)),
860 connect(d->caRedMultSpinBox, SIGNAL(valueChanged(
double)),
863 connect(d->caBlueMultSpinBox, SIGNAL(valueChanged(
double)),
866 connect(d->brightnessSpinBox, SIGNAL(valueChanged(
double)),
869 connect(d->expoCorrectionHighlightSpinBox, SIGNAL(valueChanged(
double)),
882 for (
int i = 0; i <
count(); i++)
891 void DcrawSettingsWidget::processDcrawUrl(
const QString& url)
893 KToolInvocation::self()->invokeBrowser(url);
898 return d->inIccUrlEdit;
903 return d->outIccUrlEdit;
911 void DcrawSettingsWidget::slotsixteenBitsImageToggled(
bool b)
917 void DcrawSettingsWidget::slotWhiteBalanceToggled(
int v)
921 d->customWhiteBalanceSpinBox->setEnabled(
true);
922 d->customWhiteBalanceGreenSpinBox->setEnabled(
true);
923 d->customWhiteBalanceLabel->setEnabled(
true);
924 d->customWhiteBalanceGreenLabel->setEnabled(
true);
928 d->customWhiteBalanceSpinBox->setEnabled(
false);
929 d->customWhiteBalanceGreenSpinBox->setEnabled(
false);
930 d->customWhiteBalanceLabel->setEnabled(
false);
931 d->customWhiteBalanceGreenLabel->setEnabled(
false);
935 void DcrawSettingsWidget::slotUnclipColorActivated(
int v)
939 d->reconstructLabel->setEnabled(
true);
940 d->reconstructSpinBox->setEnabled(
true);
944 d->reconstructLabel->setEnabled(
false);
945 d->reconstructSpinBox->setEnabled(
false);
949 void DcrawSettingsWidget::slotNoiseReductionChanged(
int item)
951 d->NRSpinBox1->setEnabled(
true);
952 d->NRLabel1->setEnabled(
true);
953 d->NRSpinBox2->setEnabled(
true);
954 d->NRLabel2->setEnabled(
true);
955 d->NRLabel1->setText(i18nc(
"@label",
"Threshold:"));
956 d->NRSpinBox1->setWhatsThis(i18nc(
"@info:whatsthis",
"<title>Threshold</title>"
957 "<para>Set here the noise reduction threshold value to use.</para>"));
964 d->NRSpinBox2->setVisible(
false);
965 d->NRLabel2->setVisible(
false);
969 d->NRLabel1->setText(i18nc(
"@label",
"Luminance:"));
970 d->NRSpinBox1->setWhatsThis(i18nc(
"@info:whatsthis",
"<title>Luminance</title>"
971 "<para>Amount of Luminance impulse noise reduction.</para>"));
972 d->NRLabel2->setText(i18nc(
"@label",
"Chrominance:"));
973 d->NRSpinBox2->setWhatsThis(i18nc(
"@info:whatsthis",
"<title>Chrominance</title>"
974 "<para>Amount of Chrominance impulse noise reduction.</para>"));
975 d->NRSpinBox2->setVisible(
true);
976 d->NRLabel2->setVisible(
true);
980 d->NRSpinBox1->setEnabled(
false);
981 d->NRLabel1->setEnabled(
false);
982 d->NRSpinBox2->setEnabled(
false);
983 d->NRLabel2->setEnabled(
false);
984 d->NRSpinBox2->setVisible(
false);
985 d->NRLabel2->setVisible(
false);
992 void DcrawSettingsWidget::slotCACorrectionToggled(
bool b)
994 d->autoCACorrectionBox->setEnabled(b);
995 slotAutoCAToggled(d->autoCACorrectionBox->isChecked());
998 void DcrawSettingsWidget::slotAutoCAToggled(
bool b)
1002 d->caRedMultSpinBox->setValue(0.0);
1003 d->caBlueMultSpinBox->setValue(0.0);
1006 bool mult = (!b) && (d->autoCACorrectionBox->isEnabled());
1007 d->caRedMultSpinBox->setEnabled(mult);
1008 d->caBlueMultSpinBox->setEnabled(mult);
1009 d->caRedMultLabel->setEnabled(mult);
1010 d->caBlueMultLabel->setEnabled(mult);
1014 void DcrawSettingsWidget::slotExposureCorrectionToggled(
bool b)
1016 d->expoCorrectionShiftLabel->setEnabled(b);
1017 d->expoCorrectionShiftSpinBox->setEnabled(b);
1018 d->expoCorrectionHighlightLabel->setEnabled(b);
1019 d->expoCorrectionHighlightSpinBox->setEnabled(b);
1021 slotExpoCorrectionShiftChanged(d->expoCorrectionShiftSpinBox->value());
1024 void DcrawSettingsWidget::slotExpoCorrectionShiftChanged(
double ev)
1027 bool b = (ev >= 1.0);
1029 d->expoCorrectionHighlightLabel->setEnabled(b);
1030 d->expoCorrectionHighlightSpinBox->setEnabled(b);
1035 void DcrawSettingsWidget::slotInputColorSpaceChanged(
int item)
1040 void DcrawSettingsWidget::slotOutputColorSpaceChanged(
int item)
1045 void DcrawSettingsWidget::slotRAWQualityChanged(
int quality)
1062 d->medianFilterPassesLabel->setEnabled(
false);
1063 d->medianFilterPassesSpinBox->setEnabled(
false);
1064 d->refineInterpolationBox->setEnabled(
false);
1068 d->medianFilterPassesLabel->setEnabled(
true);
1069 d->medianFilterPassesSpinBox->setEnabled(
true);
1070 d->refineInterpolationBox->setEnabled(
false);
1079 d->brightnessLabel->setEnabled(b);
1080 d->brightnessSpinBox->setEnabled(b);
1085 return d->brightnessSpinBox->isEnabled();
1095 d->whiteBalanceComboBox->setCurrentIndex(1);
1098 d->whiteBalanceComboBox->setCurrentIndex(2);
1101 d->whiteBalanceComboBox->setCurrentIndex(3);
1104 d->whiteBalanceComboBox->setCurrentIndex(0);
1107 slotWhiteBalanceToggled(d->whiteBalanceComboBox->currentIndex());
1118 d->unclipColorComboBox->setCurrentIndex(0);
1121 d->unclipColorComboBox->setCurrentIndex(1);
1124 d->unclipColorComboBox->setCurrentIndex(2);
1127 d->unclipColorComboBox->setCurrentIndex(3);
1128 d->reconstructSpinBox->setValue(settings.
unclipColors-3);
1131 slotUnclipColorActivated(d->unclipColorComboBox->currentIndex());
1134 d->brightnessSpinBox->setValue(settings.
brightness);
1137 d->blackPointSpinBox->setValue(settings.
blackPoint);
1140 d->whitePointSpinBox->setValue(settings.
whitePoint);
1152 kDebug() <<
"Libraw GPL2 pack not avaialble. Raw quality set to Bilinear";
1162 kDebug() <<
"Libraw GPL3 pack not avaialble. Raw quality set to Bilinear";
1165 d->RAWQualityComboBox->setCurrentIndex(q);
1170 d->medianFilterPassesSpinBox->setValue(settings.
dcbIterations);
1171 d->refineInterpolationBox->setChecked(settings.
dcbEnhanceFl);
1174 d->medianFilterPassesSpinBox->setValue(settings.
eeciRefine);
1175 d->refineInterpolationBox->setChecked(settings.
eeciRefine);
1179 d->refineInterpolationBox->setChecked(
false);
1183 slotRAWQualityChanged(q);
1185 d->inputColorSpaceComboBox->setCurrentIndex((
int)settings.
inputColorSpace);
1187 d->outputColorSpaceComboBox->setCurrentIndex((
int)settings.
outputColorSpace);
1190 d->noiseReductionComboBox->setCurrentIndex(settings.
NRType);
1191 slotNoiseReductionChanged(settings.
NRType);
1196 d->caRedMultSpinBox->setValue(settings.
caMultiplier[0]);
1197 d->caBlueMultSpinBox->setValue(settings.
caMultiplier[1]);
1203 d->expoCorrectionShiftSpinBox->setValue(d->shiftExpoFromLinearToEv(settings.
expoCorrectionShift));
1215 switch(d->whiteBalanceComboBox->currentIndex())
1237 switch(d->unclipColorComboBox->currentIndex())
1254 prm.
brightness = d->brightnessSpinBox->value();
1256 prm.
blackPoint = d->blackPointSpinBox->value();
1258 prm.
whitePoint = d->whitePointSpinBox->value();
1265 prm.
dcbEnhanceFl = d->refineInterpolationBox->isChecked();
1268 prm.
esMedPasses = d->medianFilterPassesSpinBox->value();
1269 prm.
eeciRefine = d->refineInterpolationBox->isChecked();
1306 prm.
expoCorrectionShift = d->shiftExpoFromEvToLinear(d->expoCorrectionShiftSpinBox->value());
1311 prm.
inputProfile = d->inIccUrlEdit->url().toLocalFile();
WhiteBalance whiteBalance
White balance type to use.
int unclipColors
Unclip Highlight color level: 0 = Clip all highlights to solid white.
double brightness
Brightness of output image.
static QString librawVersion()
Return LibRaw version string.
int dcbIterations
For DCB interpolation.
bool eeciRefine
For VCD_AHD interpolation.
bool RGBInterpolate4Colors
Turn on RAW file decoding using RGB interpolation as four colors.
void removeItem(int index)
QString inputProfile
Path to custom input ICC profile to define the camera's raw colorspace.
DecodingQuality RAWQuality
RAW quality decoding factor value.
double expoCorrectionHighlight
Amount of highlight preservation for exposure correction before interpolation in E.V.
int esMedPasses
Use edge-sensitive median filtering for artifact supression after VCD demosaicing.
QString outputProfile
Path to custom output ICC profile to define the color workspace.
bool sixteenBitsImage
Turn on RAW file decoding in 16 bits per color per pixel instead 8 bits.
OutputColorSpace outputColorSpace
The output color profile used to decoded RAW data.
void setSpacing(int spacing)
static int librawUseGPL3DemosaicPack()
Return true or false if LibRaw use Demosaic Pack GPL3 or not.
bool dcbEnhanceFl
Turn on the DCB interpolation with enhance interpolated colors.
===========================================================This file is a part of digiKam project htt...
int NRThreshold
Noise reduction threshold value.
InputColorSpace
Input color profile used to decoded image NOINPUTCS: No input color profile.
void writeSettings(KConfigGroup &group)
bool enableCACorrection
Turn on chromatic aberrations correction.
void setRowStretch(int row, int stretch)
DecodingQuality
RAW decoding Interpolation methods.
void setObjectName(const QString &name)
double caMultiplier[2]
Magnification factor for Red and Blue layers.
virtual void writeSettings(KConfigGroup &group)
int whitePoint
White Point value of output image.
int blackPoint
Black Point value of output image.
void addItem(QWidget *const w, const QPixmap &pix, const QString &txt, const QString &objName, bool expandBydefault)
Add RLabelExpander item at end of box layout with these settings : 'w' : the widget hosted by RLabelE...
void setMargin(int margin)
OutputColorSpace
Output RGB color space used to decoded image RAWCOLOR: No output color profile (Linear RAW)...
int customWhiteBalance
The temperature and the green multiplier of the custom white balance.
===========================================================This file is a part of digiKam project htt...
int NRChroThreshold
For IMPULSENR Noise reduction.
bool enableBlackPoint
Turn on the black point setting to decode RAW image.
static int librawUseGPL2DemosaicPack()
Return true or false if LibRaw use Demosaic Pack GPL2 or not.
bool expoCorrection
Turn on the Exposure Correction before interpolation.
void readSettings(KConfigGroup &group)
Methods to read/write settings from/to a config file.
double customWhiteBalanceGreen
InputColorSpace inputColorSpace
The input color profile used to decoded RAW data.
bool connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
NoiseReduction
Noise Reduction method to apply before demosaicing NONR: No noise reduction.
bool enableWhitePoint
Turn on the white point setting to decode RAW image.
virtual void readSettings(KConfigGroup &group)
bool DontStretchPixels
For cameras with non-square pixels, do not stretch the image to its correct aspect ratio...
NoiseReduction NRType
Noise reduction method to apply before demosaicing.
double expoCorrectionShift
Shift of Exposure Correction before interpolation in linear scale.
int medianFilterPasses
After interpolation, clean up color artifacts by repeatedly applying a 3x3 median filter to the R-G a...
bool fixColorsHighlights
If true, images with overblown channels are processed much more accurate, without 'pink clouds' (and ...
bool autoBrightness
If false, use a fixed white level, ignoring the image histogram.
===========================================================This file is a part of digiKam project htt...