mirror of
https://invent.kde.org/frameworks/kimageformats.git
synced 2025-06-03 17:08:08 -04:00
Minor code improvements (tested on all my MCYK PSD/PSB files)
This commit is contained in:
parent
c52ffa2227
commit
bf52896347
@ -540,8 +540,8 @@ static QImage::Format imageFormat(const PSDHeader &header)
|
|||||||
else
|
else
|
||||||
format = header.channel_count < 4 ? QImage::Format_RGB888 : QImage::Format_RGBA8888;
|
format = header.channel_count < 4 ? QImage::Format_RGB888 : QImage::Format_RGBA8888;
|
||||||
break;
|
break;
|
||||||
case CM_CMYK:
|
case CM_CMYK: // PSD supports CMYK 8-bits and 16-bits only
|
||||||
if (header.depth == 16 || header.depth == 32)
|
if (header.depth == 16)
|
||||||
format = header.channel_count < 5 ? QImage::Format_RGBX64 : QImage::Format_RGBA64;
|
format = header.channel_count < 5 ? QImage::Format_RGBX64 : QImage::Format_RGBA64;
|
||||||
else if (header.depth == 8)
|
else if (header.depth == 8)
|
||||||
format = header.channel_count < 5 ? QImage::Format_RGB888 : QImage::Format_RGBA8888;
|
format = header.channel_count < 5 ? QImage::Format_RGB888 : QImage::Format_RGBA8888;
|
||||||
@ -814,21 +814,18 @@ static bool LoadPSD(QDataStream &stream, const PSDHeader &header, QImage &img)
|
|||||||
else if (header.depth == 16) {
|
else if (header.depth == 16) {
|
||||||
planarToChunchy<quint16>(scanLine, rawStride.data(), header.width, c, header.channel_count);
|
planarToChunchy<quint16>(scanLine, rawStride.data(), header.width, c, header.channel_count);
|
||||||
}
|
}
|
||||||
else if (header.depth == 32) { // NOT TESTED!
|
else if (header.depth == 32) { // Not currently used
|
||||||
// CMYK float uses values from 0 to 100 (you should think them as %)
|
|
||||||
// LAB float uses LAB real values: L(0 to 100), a/b(-128 to 127)
|
// LAB float uses LAB real values: L(0 to 100), a/b(-128 to 127)
|
||||||
// Spot float channels... I haven't checked it out
|
if (header.color_mode == CM_LABCOLOR && c == 0)
|
||||||
if ((header.color_mode == CM_CMYK && c < 4) ||
|
|
||||||
(header.color_mode == CM_MULTICHANNEL) ||
|
|
||||||
(header.color_mode == CM_LABCOLOR && c == 0))
|
|
||||||
planarToChunchyFloat<quint32, 0, 100>(scanLine, rawStride.data(), header.width, c, header.channel_count);
|
planarToChunchyFloat<quint32, 0, 100>(scanLine, rawStride.data(), header.width, c, header.channel_count);
|
||||||
else if (header.color_mode == CM_LABCOLOR && c < 3)
|
else if (header.color_mode == CM_LABCOLOR && c < 3)
|
||||||
planarToChunchyFloat<qint32, -128, 127>(scanLine, rawStride.data(), header.width, c, header.channel_count);
|
planarToChunchyFloat<qint32, -128, 127>(scanLine, rawStride.data(), header.width, c, header.channel_count);
|
||||||
else // RGB / gray / spots
|
else // RGB, gray, spots, etc...
|
||||||
planarToChunchyFloat<quint32>(scanLine, rawStride.data(), header.width, c, header.channel_count);
|
planarToChunchyFloat<quint32>(scanLine, rawStride.data(), header.width, c, header.channel_count);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Conversion to RGB
|
||||||
if (header.color_mode == CM_CMYK) {
|
if (header.color_mode == CM_CMYK) {
|
||||||
if (header.depth == 8)
|
if (header.depth == 8)
|
||||||
cmykToRgb<quint8>(img.scanLine(y), imgChannels, psdScanline.data(), header.channel_count, header.width);
|
cmykToRgb<quint8>(img.scanLine(y), imgChannels, psdScanline.data(), header.channel_count, header.width);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user