|
https://bugs.kde.org/show_bug.cgi?id=148382
Gilles Caulier <[hidden email]> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |[hidden email] --- Comment #19 from Gilles Caulier <caulier gilles gmail com> 2010-10-15 15:42:24 --- SVN commit 1186207 by cgilles: fix endianess with over/under exposure indicator. set over exposure limit to more than 1% of max histogram segment. set under exposure limit to less than 1% of min histogram segment. BUGS: 253702 M +52 -9 dimg.cpp --- trunk/extragear/graphics/digikam/libs/dimg/dimg.cpp #1186206:1186207 @@ -1559,8 +1559,10 @@ // alpha channel is auto-detected during QImage->QPixmap conversion uchar *bits = img.bits(); + // Using DImgScale before to compute Mask clamp to 65534 | 254. Why ? - int max = sixteenBit() ? 65534 : 254; + int max = sixteenBit() ? 64880 : 252; // max histogram segment -1% + int min = sixteenBit() ? 655 : 3; // min histogram segment +1% // -------------------------------------------------------- @@ -1580,6 +1582,7 @@ uint dim = m_priv->width * m_priv->height; uchar* dptr = bits; + int s_blue, s_green, s_red; if (sixteenBit()) { @@ -1587,26 +1590,46 @@ for (uint i = 0; i < dim; ++i) { - int s_blue = *sptr++; - int s_green = *sptr++; - int s_red = *sptr++; + s_blue = *sptr++; + s_green = *sptr++; + s_red = *sptr++; sptr++; - if ((under) && (s_red == 0) && (s_green == 0) && (s_blue == 0)) + if ((under) && (s_red <= min) && (s_green <= min) && (s_blue <= min)) { + if (QSysInfo::ByteOrder == QSysInfo::BigEndian) + { + dptr[0] = 0xFF; + dptr[1] = u_red; + dptr[2] = u_green; + dptr[3] = u_blue; + } + else + { dptr[0] = u_blue; dptr[1] = u_green; dptr[2] = u_red; dptr[3] = 0xFF; } + } if ((over) && (s_red >= max) && (s_green >= max) && (s_blue >= max)) { + if (QSysInfo::ByteOrder == QSysInfo::BigEndian) + { + dptr[0] = 0xFF; + dptr[1] = o_red; + dptr[2] = o_green; + dptr[3] = o_blue; + } + else + { dptr[0] = o_blue; dptr[1] = o_green; dptr[2] = o_red; dptr[3] = 0xFF; } + } dptr += 4; } @@ -1617,26 +1640,46 @@ for (uint i = 0; i < dim; ++i) { - int s_blue = *sptr++; - int s_green = *sptr++; - int s_red = *sptr++; + s_blue = *sptr++; + s_green = *sptr++; + s_red = *sptr++; sptr++; - if ((under) && (s_red == 0) && (s_green == 0) && (s_blue == 0)) + if ((under) && (s_red <= min) && (s_green <= min) && (s_blue <= min)) { + if (QSysInfo::ByteOrder == QSysInfo::BigEndian) + { + dptr[0] = 0xFF; + dptr[1] = u_red; + dptr[2] = u_green; + dptr[3] = u_blue; + } + else + { dptr[0] = u_blue; dptr[1] = u_green; dptr[2] = u_red; dptr[3] = 0xFF; } + } if ((over) && (s_red >= max) && (s_green >= max) && (s_blue >= max)) { + if (QSysInfo::ByteOrder == QSysInfo::BigEndian) + { + dptr[0] = 0xFF; + dptr[1] = o_red; + dptr[2] = o_green; + dptr[3] = o_blue; + } + else + { dptr[0] = o_blue; dptr[1] = o_green; dptr[2] = o_red; dptr[3] = 0xFF; } + } dptr += 4; } -- Configure bugmail: https://bugs.kde.org/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug. _______________________________________________ Digikam-devel mailing list [hidden email] https://mail.kde.org/mailman/listinfo/digikam-devel |
| Free forum by Nabble | Edit this page |
