mirror of
https://invent.kde.org/frameworks/kimageformats.git
synced 2026-02-18 14:53:00 -05:00
raw: change the use of the quality parameter
- Standardized the quality parameter between 0-100 - The value -1 is the default value of Qt plugins and is managed - Negative values other than -1 are used as flags to activate the custom mode
This commit is contained in:
committed by
Christoph Cullmann
parent
d57ff91f8b
commit
93adb22632
@ -418,7 +418,7 @@ inline void rgbToRgbX(uchar *target, const uchar *source, qint32 targetSize, qin
|
||||
#define C_NR(a) (((a) & 0x3) << 17)
|
||||
#define C_FC(a) (((a) & 0x1) << 19)
|
||||
#define C_SR(a) (((a) & 0x1) << 20)
|
||||
#define C_PRESET(a) ((a) & 0xF)
|
||||
#define C_FLAGS(a) (((a) & 0x1) << 31) // flags mode
|
||||
|
||||
#define T_IQ(a) (((a) >> 4) & 0xF)
|
||||
#define T_OC(a) (((a) >> 8) & 0xF)
|
||||
@ -430,10 +430,10 @@ inline void rgbToRgbX(uchar *target, const uchar *source, qint32 targetSize, qin
|
||||
#define T_NR(a) (((a) >> 17) & 0x3)
|
||||
#define T_FC(a) (((a) >> 19) & 0x1)
|
||||
#define T_SR(a) (((a) >> 20) & 0x1)
|
||||
#define T_PRESET(a) ((a) & 0xF)
|
||||
#define T_FLAGS(a) (((a) >> 31) & 0x1)
|
||||
// clang-format on
|
||||
|
||||
#define DEFAULT_QUALITY (C_IQ(3) | C_OC(1) | C_CW(1) | C_AW(1) | C_BT(1) | C_HS(0))
|
||||
#define DEFAULT_QUALITY (C_IQ(3) | C_OC(1) | C_CW(1) | C_AW(1) | C_BT(1) | C_HS(0) | C_FLAGS(1))
|
||||
|
||||
void setParams(QImageIOHandler *handler, LibRaw *rawProcessor)
|
||||
{
|
||||
@ -459,47 +459,45 @@ void setParams(QImageIOHandler *handler, LibRaw *rawProcessor)
|
||||
if (handler->supportsOption(QImageIOHandler::Quality)) {
|
||||
quality = handler->option(QImageIOHandler::Quality).toInt();
|
||||
}
|
||||
if (quality < 0) {
|
||||
if (quality > -1) {
|
||||
switch (quality / 10) {
|
||||
case 0:
|
||||
quality = C_IQ(0) | C_OC(1) | C_CW(1) | C_AW(1) | C_BT(0) | C_HS(1);
|
||||
break;
|
||||
case 1:
|
||||
quality = C_IQ(0) | C_OC(1) | C_CW(1) | C_AW(1) | C_BT(0) | C_HS(0);
|
||||
break;
|
||||
case 2:
|
||||
quality = C_IQ(3) | C_OC(1) | C_CW(1) | C_AW(1) | C_BT(0) | C_HS(0);
|
||||
break;
|
||||
case 3:
|
||||
quality = C_IQ(3) | C_OC(1) | C_CW(1) | C_AW(1) | C_BT(1) | C_HS(0);
|
||||
break;
|
||||
case 4:
|
||||
quality = C_IQ(3) | C_OC(2) | C_CW(1) | C_AW(1) | C_BT(1) | C_HS(0);
|
||||
break;
|
||||
case 5:
|
||||
quality = C_IQ(3) | C_OC(4) | C_CW(1) | C_AW(1) | C_BT(1) | C_HS(0);
|
||||
break;
|
||||
case 6:
|
||||
quality = C_IQ(11) | C_OC(1) | C_CW(1) | C_AW(1) | C_BT(0) | C_HS(0);
|
||||
break;
|
||||
case 7:
|
||||
quality = C_IQ(11) | C_OC(1) | C_CW(1) | C_AW(1) | C_BT(1) | C_HS(0);
|
||||
break;
|
||||
case 8:
|
||||
quality = C_IQ(11) | C_OC(2) | C_CW(1) | C_AW(1) | C_BT(1) | C_HS(0);
|
||||
break;
|
||||
default:
|
||||
quality = C_IQ(11) | C_OC(4) | C_CW(1) | C_AW(1) | C_BT(1) | C_HS(0);
|
||||
break;
|
||||
}
|
||||
quality |= C_FLAGS(1);
|
||||
}
|
||||
if (quality == -1) {
|
||||
quality = DEFAULT_QUALITY;
|
||||
}
|
||||
|
||||
switch (T_PRESET(quality)) {
|
||||
case 0:
|
||||
break;
|
||||
case 1:
|
||||
quality = C_IQ(0) | C_OC(1) | C_CW(1) | C_AW(1) | C_BT(0) | C_HS(1);
|
||||
break;
|
||||
case 2:
|
||||
quality = C_IQ(0) | C_OC(1) | C_CW(1) | C_AW(1) | C_BT(0) | C_HS(0);
|
||||
break;
|
||||
case 3:
|
||||
quality = C_IQ(3) | C_OC(1) | C_CW(1) | C_AW(1) | C_BT(0) | C_HS(0);
|
||||
break;
|
||||
case 4:
|
||||
quality = C_IQ(3) | C_OC(1) | C_CW(1) | C_AW(1) | C_BT(1) | C_HS(0);
|
||||
break;
|
||||
case 5:
|
||||
quality = C_IQ(3) | C_OC(2) | C_CW(1) | C_AW(1) | C_BT(1) | C_HS(0);
|
||||
break;
|
||||
case 6:
|
||||
quality = C_IQ(3) | C_OC(4) | C_CW(1) | C_AW(1) | C_BT(1) | C_HS(0);
|
||||
break;
|
||||
case 7:
|
||||
quality = C_IQ(11) | C_OC(1) | C_CW(1) | C_AW(1) | C_BT(0) | C_HS(0);
|
||||
break;
|
||||
case 8:
|
||||
quality = C_IQ(11) | C_OC(1) | C_CW(1) | C_AW(1) | C_BT(1) | C_HS(0);
|
||||
break;
|
||||
case 9:
|
||||
quality = C_IQ(11) | C_OC(2) | C_CW(1) | C_AW(1) | C_BT(1) | C_HS(0);
|
||||
break;
|
||||
case 10:
|
||||
quality = C_IQ(11) | C_OC(4) | C_CW(1) | C_AW(1) | C_BT(1) | C_HS(0);
|
||||
break;
|
||||
default:
|
||||
quality = DEFAULT_QUALITY;
|
||||
break;
|
||||
}
|
||||
Q_ASSERT(T_FLAGS(quality));
|
||||
|
||||
auto &¶ms = rawProcessor->imgdata.params;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user