9#include <QtCore/private/qsimd_p.h>
10#include <QtGui/private/qcmyk_p.h>
53#if Q_BYTE_ORDER == Q_BIG_ENDIAN
92#if Q_BYTE_ORDER == Q_BIG_ENDIAN
131#if Q_BYTE_ORDER == Q_BIG_ENDIAN
170#if Q_BYTE_ORDER == Q_BIG_ENDIAN
198template <QPixelLayout::BPP w
idth>
static
213template <QPixelLayout::BPP bpp>
static
216 Q_UNREACHABLE_RETURN(0);
282template<QImage::Format Format>
285 constexpr uint redMask = ((1 << redWidth<Format>()) - 1);
286 constexpr uint greenMask = ((1 << greenWidth<Format>()) - 1);
287 constexpr uint blueMask = ((1 << blueWidth<Format>()) - 1);
289 constexpr uchar redLeftShift = 8 - redWidth<Format>();
290 constexpr uchar greenLeftShift = 8 - greenWidth<Format>();
291 constexpr uchar blueLeftShift = 8 - blueWidth<Format>();
293 constexpr uchar redRightShift = 2 * redWidth<Format>() - 8;
294 constexpr uchar greenRightShift = 2 * greenWidth<Format>() - 8;
295 constexpr uchar blueRightShift = 2 * blueWidth<Format>() - 8;
297 uint red = (
s >> redShift<Format>()) & redMask;
298 uint green = (
s >> greenShift<Format>()) & greenMask;
299 uint blue = (
s >> blueShift<Format>()) & blueMask;
301 red = ((
red << redLeftShift) | (
red >> redRightShift)) << 16;
303 blue = (
blue << blueLeftShift) | (
blue >> blueRightShift);
307template<QImage::Format Format>
314#if defined(__SSE2__) && !defined(__SSSE3__) && QT_COMPILER_SUPPORTS_SSSE3
318template<QImage::Format Format>
323#if defined(__SSE2__) && !defined(__SSSE3__) && QT_COMPILER_SUPPORTS_SSSE3
337template<QImage::Format Format>
343template<QImage::Format Format>
352template<QImage::Format Format>
361template<QImage::Format Format>
367template<QImage::Format Format>
376template<QImage::Format Format>
379 constexpr uint alphaMask = ((1 << alphaWidth<Format>()) - 1);
380 constexpr uint redMask = ((1 << redWidth<Format>()) - 1);
381 constexpr uint greenMask = ((1 << greenWidth<Format>()) - 1);
382 constexpr uint blueMask = ((1 << blueWidth<Format>()) - 1);
384 constexpr uchar alphaLeftShift = 8 - alphaWidth<Format>();
385 constexpr uchar redLeftShift = 8 - redWidth<Format>();
386 constexpr uchar greenLeftShift = 8 - greenWidth<Format>();
387 constexpr uchar blueLeftShift = 8 - blueWidth<Format>();
389 constexpr uchar alphaRightShift = 2 * alphaWidth<Format>() - 8;
390 constexpr uchar redRightShift = 2 * redWidth<Format>() - 8;
391 constexpr uchar greenRightShift = 2 * greenWidth<Format>() - 8;
392 constexpr uchar blueRightShift = 2 * blueWidth<Format>() - 8;
394 constexpr bool mustMin = (alphaWidth<Format>() != redWidth<Format>()) ||
395 (alphaWidth<Format>() != greenWidth<Format>()) ||
396 (alphaWidth<Format>() != blueWidth<Format>());
398 uint alpha = (
s >> alphaShift<Format>()) & alphaMask;
399 uint red = (
s >> redShift<Format>()) & redMask;
400 uint green = (
s >> greenShift<Format>()) & greenMask;
401 uint blue = (
s >> blueShift<Format>()) & blueMask;
404 red = (
red << redLeftShift) | (
red >> redRightShift);
406 blue = (
blue << blueLeftShift) | (
blue >> blueRightShift);
417template<QImage::Format Format>
424template<QImage::Format Format>
429#if defined(__SSE2__) && !defined(__SSSE3__) && QT_COMPILER_SUPPORTS_SSSE3
434 convertARGBPMToARGB32PM<Format>(
buffer,
count,
nullptr);
439 buffer[
i] = convertPixelToARGB32PM<Format>(fetchPixel<BPP>(
src,
index +
i));
443template<QImage::Format Format>
449template<QImage::Format Format>
458template<QImage::Format Format>
464 buffer[
i] = convertPixelToRGBA64PM<Format>(fetchPixel<bpp>(
src,
index +
i));
468template<QImage::Format Format>
474template<QImage::Format Format>
484template<QImage::Format Format>
490 buffer[
i] = convertPixelToRGBA32F<Format>(fetchPixel<bpp>(
src,
index +
i)).premultiplied();
494template<QImage::Format Format,
bool fromRGB>
498 constexpr uchar rWidth = redWidth<Format>();
499 constexpr uchar gWidth = greenWidth<Format>();
500 constexpr uchar bWidth = blueWidth<Format>();
504 if (!dither || (rWidth == 8 && gWidth == 8 && bWidth == 8)) {
505 constexpr uint rMask = (1 << redWidth<Format>()) - 1;
506 constexpr uint gMask = (1 << greenWidth<Format>()) - 1;
507 constexpr uint bMask = (1 << blueWidth<Format>()) - 1;
508 constexpr uchar rRightShift = 24 - redWidth<Format>();
509 constexpr uchar gRightShift = 16 - greenWidth<Format>();
510 constexpr uchar bRightShift = 8 - blueWidth<Format>();
514 const uint r = ((
c >> rRightShift) & rMask) << redShift<Format>();
515 const uint g = ((
c >> gRightShift) & gMask) << greenShift<Format>();
516 const uint b = ((
c >> bRightShift) & bMask) << blueShift<Format>();
517 storePixel<BPP>(dest,
index +
i,
r |
g |
b);
528 const int d = bayer_line[(dither->x +
i) & 15];
529 const int dr =
d - ((
d + 1) >> rWidth);
530 const int dg =
d - ((
d + 1) >> gWidth);
531 const int db =
d - ((
d + 1) >> bWidth);
535 r = (
r + ((dr -
r) >> rWidth) + 1) >> (8 - rWidth);
536 g = (
g + ((dg -
g) >> gWidth) + 1) >> (8 - gWidth);
537 b = (
b + ((
db -
b) >> bWidth) + 1) >> (8 - bWidth);
538 const uint s = (r << redShift<Format>())
539 | (
g << greenShift<Format>())
540 | (
b << blueShift<Format>());
541 storePixel<BPP>(dest,
index +
i,
s);
546template<QImage::Format Format,
bool fromRGB>
552 constexpr uint aMask = (1 << alphaWidth<Format>()) - 1;
553 constexpr uint rMask = (1 << redWidth<Format>()) - 1;
554 constexpr uint gMask = (1 << greenWidth<Format>()) - 1;
555 constexpr uint bMask = (1 << blueWidth<Format>()) - 1;
557 constexpr uchar aRightShift = 32 - alphaWidth<Format>();
558 constexpr uchar rRightShift = 24 - redWidth<Format>();
559 constexpr uchar gRightShift = 16 - greenWidth<Format>();
560 constexpr uchar bRightShift = 8 - blueWidth<Format>();
562 constexpr uint aOpaque = aMask << alphaShift<Format>();
565 const uint a = fromRGB ? aOpaque : (((
c >> aRightShift) & aMask) << alphaShift<Format>());
566 const uint r = ((
c >> rRightShift) & rMask) << redShift<Format>();
567 const uint g = ((
c >> gRightShift) & gMask) << greenShift<Format>();
568 const uint b = ((
c >> bRightShift) & bMask) << blueShift<Format>();
569 storePixel<BPP>(dest,
index +
i,
a |
r |
g |
b);
572 constexpr uchar aWidth = alphaWidth<Format>();
573 constexpr uchar rWidth = redWidth<Format>();
574 constexpr uchar gWidth = greenWidth<Format>();
575 constexpr uchar bWidth = blueWidth<Format>();
580 const int d = bayer_line[(dither->x +
i) & 15];
581 const int da =
d - ((
d + 1) >> aWidth);
582 const int dr =
d - ((
d + 1) >> rWidth);
583 const int dg =
d - ((
d + 1) >> gWidth);
584 const int db =
d - ((
d + 1) >> bWidth);
590 a = (1 << aWidth) - 1;
592 a = (
a + ((da -
a) >> aWidth) + 1) >> (8 - aWidth);
593 r = (
r + ((dr -
r) >> rWidth) + 1) >> (8 - rWidth);
594 g = (
g + ((dg -
g) >> gWidth) + 1) >> (8 - gWidth);
595 b = (
b + ((
db -
b) >> bWidth) + 1) >> (8 - bWidth);
596 uint s = (a << alphaShift<Format>())
597 | (
r << redShift<Format>())
598 | (
g << greenShift<Format>())
599 | (
b << blueShift<Format>());
600 storePixel<BPP>(dest,
index +
i,
s);
605template<QImage::Format Format>
608 constexpr uchar aWidth = alphaWidth<Format>();
609 constexpr uchar aShift = alphaShift<Format>();
610 constexpr uchar rWidth = redWidth<Format>();
611 constexpr uchar rShift = redShift<Format>();
612 constexpr uchar gWidth = greenWidth<Format>();
613 constexpr uchar gShift = greenShift<Format>();
614 constexpr uchar bWidth = blueWidth<Format>();
615 constexpr uchar bShift = blueShift<Format>();
616 static_assert(rWidth == bWidth);
617 constexpr uint redBlueMask = (1 << rWidth) - 1;
618 constexpr uint alphaGreenMask = (((1 << aWidth) - 1) << aShift)
619 | (((1 << gWidth) - 1) << gShift);
624 const uint r = (
c >> rShift) & redBlueMask;
625 const uint b = (
c >> bShift) & redBlueMask;
626 const uint t = (
c & alphaGreenMask)
629 storePixel<bpp>(
dst,
i,
t);
636 uint *dest =
reinterpret_cast<uint *
>(
d);
639 const uint ag =
c & 0xff00ff00;
640 const uint rb =
c & 0x00ff00ff;
641 dest[
i] = ag | (rb << 16) | (rb >> 16);
645#if Q_BYTE_ORDER == Q_LITTLE_ENDIAN
656 uint *dest =
reinterpret_cast<uint *
>(
d);
659 const uint rb =
c & 0xff00ff00;
660 const uint ga =
c & 0x00ff00ff;
661 dest[
i] = ga | (rb << 16) | (rb >> 16);
669 uint *dest =
reinterpret_cast<uint *
>(
d);
679 dest[
i * 4 + 0] =
src[
i * 4 + 2];
680 dest[
i * 4 + 1] =
src[
i * 4 + 1];
681 dest[
i * 4 + 2] =
src[
i * 4 + 0];
682 dest[
i * 4 + 3] =
src[
i * 4 + 3];
697 uint *dest =
reinterpret_cast<uint *
>(
d);
700 dest[
i * 4 + 0] =
src[
i * 4 + 2];
701 dest[
i * 4 + 1] =
src[
i * 4 + 1];
702 dest[
i * 4 + 2] =
src[
i * 4 + 0];
703 dest[
i * 4 + 3] =
src[
i * 4 + 3];
720 bitsPerPixel<Format>(),
722 convertToRGB32<Format>,
723 convertToRGB64<Format>,
724 fetchRGBToRGB32<Format>,
725 fetchRGBToRGB64<Format>,
726 storeRGBFromARGB32PM<Format, false>,
727 storeRGBFromARGB32PM<Format, true>
736 bitsPerPixel<Format>(),
738 convertARGBPMToARGB32PM<Format>,
739 convertARGBPMToRGBA64PM<Format>,
740 fetchARGBPMToARGB32PM<Format>,
741 fetchARGBPMToRGBA64PM<Format>,
742 storeARGBPMFromARGB32PM<Format, false>,
743 storeARGBPMFromARGB32PM<Format, true>
753template<QPixelLayout::BPP BPP>
764template<QPixelLayout::BPP BPP>
775template<QPixelLayout::BPP BPP>
786template<
typename QRgba>
791 buffer[
i] = QRgba::fromArgb32(clut->at(
src[
i])).premultiplied();
869template<
typename QRgba>
878template<
typename QRgba>
905template<
typename QRgba>
914template<
typename QRgba>
935 const unsigned short *
s =
reinterpret_cast<const unsigned short *
>(
src) +
index;
943template<
typename QRgba>
952template<
typename QRgba>
956 const unsigned short *
s =
reinterpret_cast<const unsigned short *
>(
src) +
index;
978template<
bool RGBA,
bool maskAlpha>
984 const __m128i amask = _mm_set1_epi32(0xff000000);
995 __m128i vs = _mm_loadu_si128((
const __m128i*)
src);
997 vs = _mm_or_si128(vs, amask);
999 __m128i
v1 = _mm_unpacklo_epi8(vs, vs);
1000 __m128i
v2 = _mm_unpackhi_epi8(vs, vs);
1002 v1 = _mm_shufflelo_epi16(
v1, _MM_SHUFFLE(3, 0, 1, 2));
1003 v2 = _mm_shufflelo_epi16(
v2, _MM_SHUFFLE(3, 0, 1, 2));
1004 v1 = _mm_shufflehi_epi16(
v1, _MM_SHUFFLE(3, 0, 1, 2));
1005 v2 = _mm_shufflehi_epi16(
v2, _MM_SHUFFLE(3, 0, 1, 2));
1007 _mm_store_si128((__m128i*)(
buffer),
v1);
1009 _mm_store_si128((__m128i*)(
buffer),
v2);
1023template<QtPixelOrder PixelOrder>
1026 const __m128i gmask = _mm_set1_epi32(0x000ffc00);
1027 const __m128i cmask = _mm_set1_epi32(0x000003ff);
1029 __m128i vr, vg, vb, va;
1031 *dest++ = qConvertRgb64ToRgb30<PixelOrder>(*
buffer++);
1034 for (;
i <
count-15;
i += 16) {
1037 __m128i vOr = _mm_set1_epi32(0);
1038 __m128i vAnd = _mm_set1_epi32(0xffffffff);
1039 for (
int j = 0;
j < 16;
j += 2) {
1040 __m128i vs = _mm_load_si128((
const __m128i*)(
buffer +
j));
1041 vOr = _mm_or_si128(vOr, vs);
1042 vAnd = _mm_and_si128(vAnd, vs);
1044 const quint16 orAlpha = ((
uint)_mm_extract_epi16(vOr, 3)) | ((
uint)_mm_extract_epi16(vOr, 7));
1045 const quint16 andAlpha = ((
uint)_mm_extract_epi16(vAnd, 3)) & ((
uint)_mm_extract_epi16(vAnd, 7));
1047 if (andAlpha == 0xffff) {
1048 for (
int j = 0;
j < 16;
j += 2) {
1049 __m128i vs = _mm_load_si128((
const __m128i*)
buffer);
1051 vr = _mm_srli_epi64(vs, 6);
1052 vg = _mm_srli_epi64(vs, 16 + 6 - 10);
1053 vb = _mm_srli_epi64(vs, 32 + 6);
1054 vr = _mm_and_si128(vr, cmask);
1055 vg = _mm_and_si128(vg, gmask);
1056 vb = _mm_and_si128(vb, cmask);
1057 va = _mm_srli_epi64(vs, 48 + 14);
1059 vr = _mm_slli_epi32(vr, 20);
1061 vb = _mm_slli_epi32(vb, 20);
1062 va = _mm_slli_epi32(va, 30);
1063 __m128i vd = _mm_or_si128(_mm_or_si128(vr, vg), _mm_or_si128(vb, va));
1064 vd = _mm_shuffle_epi32(vd, _MM_SHUFFLE(3, 1, 2, 0));
1065 _mm_storel_epi64((__m128i*)dest, vd);
1068 }
else if (orAlpha == 0) {
1069 for (
int j = 0;
j < 16; ++
j) {
1074 for (
int j = 0;
j < 16; ++
j)
1075 *dest++ = qConvertRgb64ToRgb30<PixelOrder>(*
buffer++);
1080 *dest++ = qConvertRgb64ToRgb30<PixelOrder>(*
buffer++);
1082#elif defined(__ARM_NEON__)
1083template<
bool RGBA,
bool maskAlpha>
1089 const uint32x4_t amask = vdupq_n_u32(0xff000000);
1090#if defined(Q_PROCESSOR_ARM_64)
1091 const uint8x16_t rgbaMask = { 2, 1, 0, 3, 6, 5, 4, 7, 10, 9, 8, 11, 14, 13, 12, 15};
1093 const uint8x8_t rgbaMask = { 2, 1, 0, 3, 6, 5, 4, 7 };
1097 uint32x4_t vs32 = vld1q_u32(
src);
1100 vs32 = vorrq_u32(vs32, amask);
1101 uint8x16_t vs8 = vreinterpretq_u8_u32(vs32);
1103#if defined(Q_PROCESSOR_ARM_64)
1104 vs8 = vqtbl1q_u8(vs8, rgbaMask);
1107 const uint8x8_t vlo = vtbl1_u8(vget_low_u8(vs8), rgbaMask);
1108 const uint8x8_t vhi = vtbl1_u8(vget_high_u8(vs8), rgbaMask);
1109 vs8 = vcombine_u8(vlo, vhi);
1112 uint8x16x2_t
v = vzipq_u8(vs8, vs8);
1114 vst1q_u16((uint16_t *)
buffer, vreinterpretq_u16_u8(
v.val[0]));
1116 vst1q_u16((uint16_t *)
buffer, vreinterpretq_u16_u8(
v.val[1]));
1135 qConvertARGB32PMToRGBA64PM_sse2<false, true>(
buffer,
src,
count);
1136#elif defined(__ARM_NEON__)
1137 qConvertARGB32PMToRGBA64PM_neon<false, true>(
buffer,
src,
count);
1169 qConvertARGB32PMToRGBA64PM_sse2<false, false>(
buffer,
src,
count);
1170#elif defined(__ARM_NEON__)
1171 qConvertARGB32PMToRGBA64PM_neon<false, false>(
buffer,
src,
count);
1192 __m128i vs = _mm_loadl_epi64((
const __m128i *)(
s +
i));
1193 __m128i va = _mm_shufflelo_epi16(vs, _MM_SHUFFLE(3, 3, 3, 3));
1195 _mm_storel_epi64((__m128i *)(
buffer +
i), vs);
1223 qConvertARGB32PMToRGBA64PM_sse2<true, false>(
buffer,
src,
count);
1224#elif defined(__ARM_NEON__)
1225 qConvertARGB32PMToRGBA64PM_neon<true, false>(
buffer,
src,
count);
1260template<QtPixelOrder PixelOrder>
1267template<QtPixelOrder PixelOrder>
1278 short a10 = (
c >> 30) * 0x155;
1279 short r10 = ((
c >> 20) & 0x3ff);
1280 short g10 = ((
c >> 10) & 0x3ff);
1281 short b10 = (
c & 0x3ff);
1283 std::swap(r10, b10);
1284 short a8 = (a10 + ((d10 - a10) >> 8)) >> 2;
1285 short r8 = (r10 + ((d10 - r10) >> 8)) >> 2;
1286 short g8 = (g10 + ((d10 - g10) >> 8)) >> 2;
1287 short b8 = (b10 + ((d10 - b10) >> 8)) >> 2;
1295template<QtPixelOrder PixelOrder>
1301 const __m128i rmask = _mm_set1_epi32(0x3ff00000);
1302 const __m128i gmask = _mm_set1_epi32(0x000ffc00);
1303 const __m128i bmask = _mm_set1_epi32(0x000003ff);
1304 const __m128i afactor = _mm_set1_epi16(0x5555);
1308 *
buffer++ = qConvertA2rgb30ToRgb64<PixelOrder>(*
src++);
1311 __m128i vs = _mm_loadu_si128((
const __m128i*)
src);
1313 __m128i va = _mm_srli_epi32(vs, 30);
1314 __m128i vr = _mm_and_si128(vs, rmask);
1315 __m128i vb = _mm_and_si128(vs, bmask);
1316 __m128i vg = _mm_and_si128(vs, gmask);
1317 va = _mm_mullo_epi16(va, afactor);
1318 vr = _mm_or_si128(_mm_srli_epi32(vr, 14), _mm_srli_epi32(vr, 24));
1319 vg = _mm_or_si128(_mm_srli_epi32(vg, 4), _mm_srli_epi32(vg, 14));
1320 vb = _mm_or_si128(_mm_slli_epi32(vb, 6), _mm_srli_epi32(vb, 4));
1323 vrb = _mm_or_si128(vr, _mm_slli_si128(vb, 2));
1325 vrb = _mm_or_si128(vb, _mm_slli_si128(vr, 2));
1326 __m128i vga = _mm_or_si128(vg, _mm_slli_si128(va, 2));
1327 _mm_store_si128((__m128i*)(
buffer), _mm_unpacklo_epi16(vrb, vga));
1329 _mm_store_si128((__m128i*)(
buffer), _mm_unpackhi_epi16(vrb, vga));
1334 *
buffer++ = qConvertA2rgb30ToRgb64<PixelOrder>(*
src++);
1338template<QtPixelOrder PixelOrder>
1343 qConvertA2RGB30PMToRGBA64PM_sse2<PixelOrder>(
buffer,
src,
count);
1346 buffer[
i] = qConvertA2rgb30ToRgb64<PixelOrder>(
src[
i]);
1351template<QtPixelOrder PixelOrder>
1355 return convertA2RGB30PMToRGBA64PM<PixelOrder>(
buffer,
reinterpret_cast<const uint *
>(
src) +
index,
count,
nullptr,
nullptr);
1363 float alpha = (
rgb >> 30) * (1.f/3.f);
1364 float blue = ((
rgb >> 20) & 0x3ff) * (1.f/1023.f);
1365 float green = ((
rgb >> 10) & 0x3ff) * (1.f/1023.f);
1366 float red = (
rgb & 0x3ff) * (1.f/1023.f);
1373 float alpha = (
rgb >> 30) * (1.f/3.f);
1374 float red = ((
rgb >> 20) & 0x3ff) * (1.f/1023.f);
1375 float green = ((
rgb >> 10) & 0x3ff) * (1.f/1023.f);
1376 float blue = (
rgb & 0x3ff) * (1.f/1023.f);
1380template<QtPixelOrder PixelOrder>
1385 buffer[
i] = qConvertA2rgb30ToRgbaFP<PixelOrder>(
src[
i]);
1389template<QtPixelOrder PixelOrder>
1393 return convertA2RGB30PMToRGBA32F<PixelOrder>(
buffer,
reinterpret_cast<const uint *
>(
src) +
index,
count,
nullptr,
nullptr);
1396template<QtPixelOrder PixelOrder>
1404template<QtPixelOrder PixelOrder>
1412template<QtPixelOrder PixelOrder>
1425 if (((uintptr_t)
dst & 0x7) &&
count > 0) {
1432 const __m128i vhalf = _mm_set1_epi32(0x80);
1433 const __m128i vzero = _mm_setzero_si128();
1435 __m128i vs = _mm_loadu_si128((
const __m128i*)
src);
1438 vs = _mm_shufflelo_epi16(vs, _MM_SHUFFLE(3, 0, 1, 2));
1439 vs = _mm_shufflehi_epi16(vs, _MM_SHUFFLE(3, 0, 1, 2));
1441 __m128i
v1 = _mm_unpacklo_epi16(vs, vzero);
1442 __m128i
v2 = _mm_unpackhi_epi16(vs, vzero);
1443 v1 = _mm_add_epi32(
v1, vhalf);
1444 v2 = _mm_add_epi32(
v2, vhalf);
1445 v1 = _mm_sub_epi32(
v1, _mm_srli_epi32(
v1, 8));
1446 v2 = _mm_sub_epi32(
v2, _mm_srli_epi32(
v2, 8));
1447 v1 = _mm_srli_epi32(
v1, 8);
1448 v2 = _mm_srli_epi32(
v2, 8);
1449 v1 = _mm_packs_epi32(
v1,
v2);
1450 v1 = _mm_packus_epi16(
v1, vzero);
1451 _mm_storel_epi64((__m128i*)(
dst),
v1);
1490 unsigned short *
d =
reinterpret_cast<unsigned short *
>(dest) +
index;
1498 unsigned short *
d =
reinterpret_cast<unsigned short *
>(dest) +
index;
1537 d[
i].setAlpha(65535);
1665 return color.rgba();
1726 {
false,
false,
QPixelLayout::BPPNone,
nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
nullptr },
1729 fetchIndexedToARGB32PM<QPixelLayout::BPP1MSB>, fetchIndexedToRGBA64PM<QPixelLayout::BPP1MSB>,
1733 fetchIndexedToARGB32PM<QPixelLayout::BPP1LSB>, fetchIndexedToRGBA64PM<QPixelLayout::BPP1LSB>,
1737 fetchIndexedToARGB32PM<QPixelLayout::BPP8>, fetchIndexedToRGBA64PM<QPixelLayout::BPP8>,
1747 pixelLayoutRGB<QImage::Format_RGB16>(),
1748 pixelLayoutARGBPM<QImage::Format_ARGB8565_Premultiplied>(),
1749 pixelLayoutRGB<QImage::Format_RGB666>(),
1750 pixelLayoutARGBPM<QImage::Format_ARGB6666_Premultiplied>(),
1751 pixelLayoutRGB<QImage::Format_RGB555>(),
1752 pixelLayoutARGBPM<QImage::Format_ARGB8555_Premultiplied>(),
1753 pixelLayoutRGB<QImage::Format_RGB888>(),
1754 pixelLayoutRGB<QImage::Format_RGB444>(),
1755 pixelLayoutARGBPM<QImage::Format_ARGB4444_Premultiplied>(),
1763 convertA2RGB30PMToARGB32PM<PixelOrderBGR>,
1764 convertA2RGB30PMToRGBA64PM<PixelOrderBGR>,
1765 fetchA2RGB30PMToARGB32PM<PixelOrderBGR>,
1766 fetchA2RGB30PMToRGBA64PM<PixelOrderBGR>,
1767 storeRGB30FromARGB32PM<PixelOrderBGR>,
1768 storeRGB30FromRGB32<PixelOrderBGR>
1771 convertA2RGB30PMToARGB32PM<PixelOrderBGR>,
1772 convertA2RGB30PMToRGBA64PM<PixelOrderBGR>,
1773 fetchA2RGB30PMToARGB32PM<PixelOrderBGR>,
1774 fetchA2RGB30PMToRGBA64PM<PixelOrderBGR>,
1775 storeA2RGB30PMFromARGB32PM<PixelOrderBGR>,
1776 storeRGB30FromRGB32<PixelOrderBGR>
1779 convertA2RGB30PMToARGB32PM<PixelOrderRGB>,
1780 convertA2RGB30PMToRGBA64PM<PixelOrderRGB>,
1781 fetchA2RGB30PMToARGB32PM<PixelOrderRGB>,
1782 fetchA2RGB30PMToRGBA64PM<PixelOrderRGB>,
1783 storeRGB30FromARGB32PM<PixelOrderRGB>,
1784 storeRGB30FromRGB32<PixelOrderRGB>
1787 convertA2RGB30PMToARGB32PM<PixelOrderRGB>,
1788 convertA2RGB30PMToRGBA64PM<PixelOrderRGB>,
1789 fetchA2RGB30PMToARGB32PM<PixelOrderRGB>,
1790 fetchA2RGB30PMToRGBA64PM<PixelOrderRGB>,
1791 storeA2RGB30PMFromARGB32PM<PixelOrderRGB>,
1792 storeRGB30FromRGB32<PixelOrderRGB>
1818 pixelLayoutRGB<QImage::Format_BGR888>(),
1858template<QImage::Format format>
1883template<QtPixelOrder PixelOrder>
1889 qConvertRGBA64PMToA2RGB30PM_sse2<PixelOrder>(
d,
src,
count);
1892 d[
i] = qConvertRgb64ToRgb30<PixelOrder>(
src[
i]);
1902 d[
i].setAlpha(65535);
1911 d[
i] =
src[
i].unpremultiplied();
1997 storeGenericFromRGBA64PM<QImage::Format_RGB32>,
1999 storeGenericFromRGBA64PM<QImage::Format_ARGB32_Premultiplied>,
2000 storeGenericFromRGBA64PM<QImage::Format_RGB16>,
2001 storeGenericFromRGBA64PM<QImage::Format_ARGB8565_Premultiplied>,
2002 storeGenericFromRGBA64PM<QImage::Format_RGB666>,
2003 storeGenericFromRGBA64PM<QImage::Format_ARGB6666_Premultiplied>,
2004 storeGenericFromRGBA64PM<QImage::Format_RGB555>,
2005 storeGenericFromRGBA64PM<QImage::Format_ARGB8555_Premultiplied>,
2006 storeGenericFromRGBA64PM<QImage::Format_RGB888>,
2007 storeGenericFromRGBA64PM<QImage::Format_RGB444>,
2008 storeGenericFromRGBA64PM<QImage::Format_ARGB4444_Premultiplied>,
2009 storeGenericFromRGBA64PM<QImage::Format_RGBX8888>,
2011 storeGenericFromRGBA64PM<QImage::Format_RGBA8888_Premultiplied>,
2012 storeRGB30FromRGBA64PM<PixelOrderBGR>,
2013 storeRGB30FromRGBA64PM<PixelOrderBGR>,
2014 storeRGB30FromRGBA64PM<PixelOrderRGB>,
2015 storeRGB30FromRGBA64PM<PixelOrderRGB>,
2016 storeGenericFromRGBA64PM<QImage::Format_Alpha8>,
2017 storeGenericFromRGBA64PM<QImage::Format_Grayscale8>,
2022 storeGenericFromRGBA64PM<QImage::Format_BGR888>,
2034#if QT_CONFIG(raster_fp)
2041template<QImage::Format format>
2068template<QtPixelOrder PixelOrder>
2073 QRgba64 s = qConvertA2rgb30ToRgb64<PixelOrder>(
src[
i]);
2090 convertIndexedTo<QRgbaFloat32>,
2091 convertIndexedTo<QRgbaFloat32>,
2092 convertIndexedTo<QRgbaFloat32>,
2093 convertGenericToRGBA32F<QImage::Format_RGB32>,
2094 convertARGB32ToRGBA32F,
2095 convertGenericToRGBA32F<QImage::Format_ARGB32_Premultiplied>,
2096 convertGenericToRGBA32F<QImage::Format_RGB16>,
2097 convertGenericToRGBA32F<QImage::Format_ARGB8565_Premultiplied>,
2098 convertGenericToRGBA32F<QImage::Format_RGB666>,
2099 convertGenericToRGBA32F<QImage::Format_ARGB6666_Premultiplied>,
2100 convertGenericToRGBA32F<QImage::Format_RGB555>,
2101 convertGenericToRGBA32F<QImage::Format_ARGB8555_Premultiplied>,
2102 convertGenericToRGBA32F<QImage::Format_RGB888>,
2103 convertGenericToRGBA32F<QImage::Format_RGB444>,
2104 convertGenericToRGBA32F<QImage::Format_ARGB4444_Premultiplied>,
2105 convertGenericToRGBA32F<QImage::Format_RGBX8888>,
2106 convertRGBA8888ToRGBA32F,
2107 convertGenericToRGBA32F<QImage::Format_RGBA8888_Premultiplied>,
2108 convertRGB30ToRGBA32F<PixelOrderBGR>,
2109 convertRGB30ToRGBA32F<PixelOrderBGR>,
2110 convertRGB30ToRGBA32F<PixelOrderRGB>,
2111 convertRGB30ToRGBA32F<PixelOrderRGB>,
2112 convertAlpha8To<QRgbaFloat32>,
2113 convertGrayscale8To<QRgbaFloat32>,
2117 convertGrayscale16To<QRgbaFloat32>,
2118 convertGenericToRGBA32F<QImage::Format_BGR888>,
2125 convertCMYKToRGBA32F,
2206 fetchIndexedToRGBA32F<QPixelLayout::BPP1MSB>,
2207 fetchIndexedToRGBA32F<QPixelLayout::BPP1LSB>,
2208 fetchIndexedToRGBA32F<QPixelLayout::BPP8>,
2209 fetchRGBToRGB32F<QImage::Format_RGB32>,
2210 fetchARGBToRGBA32F<QImage::Format_ARGB32>,
2211 fetchARGBPMToRGBA32F<QImage::Format_ARGB32_Premultiplied>,
2212 fetchRGBToRGB32F<QImage::Format_RGB16>,
2213 fetchARGBToRGBA32F<QImage::Format_ARGB8565_Premultiplied>,
2214 fetchRGBToRGB32F<QImage::Format_RGB666>,
2215 fetchARGBToRGBA32F<QImage::Format_ARGB6666_Premultiplied>,
2216 fetchRGBToRGB32F<QImage::Format_RGB555>,
2217 fetchARGBToRGBA32F<QImage::Format_ARGB8555_Premultiplied>,
2218 fetchRGBToRGB32F<QImage::Format_RGB888>,
2219 fetchRGBToRGB32F<QImage::Format_RGB444>,
2220 fetchARGBToRGBA32F<QImage::Format_ARGB4444_Premultiplied>,
2221 fetchRGBToRGB32F<QImage::Format_RGBX8888>,
2222 fetchARGBToRGBA32F<QImage::Format_RGBA8888>,
2223 fetchARGBPMToRGBA32F<QImage::Format_RGBA8888_Premultiplied>,
2224 fetchRGB30ToRGBA32F<PixelOrderBGR>,
2225 fetchRGB30ToRGBA32F<PixelOrderBGR>,
2226 fetchRGB30ToRGBA32F<PixelOrderRGB>,
2227 fetchRGB30ToRGBA32F<PixelOrderRGB>,
2228 fetchAlpha8To<QRgbaFloat32>,
2229 fetchGrayscale8To<QRgbaFloat32>,
2230 fetchRGBX64ToRGBA32F,
2231 fetchRGBA64ToRGBA32F,
2232 fetchRGBA64PMToRGBA32F,
2233 fetchGrayscale16To<QRgbaFloat32>,
2234 fetchRGBToRGB32F<QImage::Format_BGR888>,
2236 fetchRGBA16FToRGBA32F,
2239 fetchRGBA32FToRGBA32F,
2252template<QImage::Format format>
2266 d[
i] =
src[
i].unpremultiplied().toArgb32();
2277template<QtPixelOrder PixelOrder>
2283 const auto s =
src[
i];
2321 auto s =
src[
i].unpremultiplied();
2322 d[
i] =
qGray(
s.red16(),
s.green16(),
s.blue16());
2369 d[
i] =
src[
i].unpremultiplied();
2397 storeGenericFromRGBA32F<QImage::Format_RGB32>,
2398 storeARGB32FromRGBA32F,
2399 storeGenericFromRGBA32F<QImage::Format_ARGB32_Premultiplied>,
2400 storeGenericFromRGBA32F<QImage::Format_RGB16>,
2401 storeGenericFromRGBA32F<QImage::Format_ARGB8565_Premultiplied>,
2402 storeGenericFromRGBA32F<QImage::Format_RGB666>,
2403 storeGenericFromRGBA32F<QImage::Format_ARGB6666_Premultiplied>,
2404 storeGenericFromRGBA32F<QImage::Format_RGB555>,
2405 storeGenericFromRGBA32F<QImage::Format_ARGB8555_Premultiplied>,
2406 storeGenericFromRGBA32F<QImage::Format_RGB888>,
2407 storeGenericFromRGBA32F<QImage::Format_RGB444>,
2408 storeGenericFromRGBA32F<QImage::Format_ARGB4444_Premultiplied>,
2409 storeGenericFromRGBA32F<QImage::Format_RGBX8888>,
2410 storeRGBA8888FromRGBA32F,
2411 storeGenericFromRGBA32F<QImage::Format_RGBA8888_Premultiplied>,
2412 storeRGB30FromRGBA32F<PixelOrderBGR>,
2413 storeRGB30FromRGBA32F<PixelOrderBGR>,
2414 storeRGB30FromRGBA32F<PixelOrderRGB>,
2415 storeRGB30FromRGBA32F<PixelOrderRGB>,
2416 storeGenericFromRGBA32F<QImage::Format_Alpha8>,
2417 storeGenericFromRGBA32F<QImage::Format_Grayscale8>,
2418 storeRGBX64FromRGBA32F,
2419 storeRGBA64FromRGBA32F,
2420 storeRGBA64PMFromRGBA32F,
2421 storeGray16FromRGBA32F,
2422 storeGenericFromRGBA32F<QImage::Format_BGR888>,
2423 storeRGBX16FFromRGBA32F,
2424 storeRGBA16FFromRGBA32F,
2425 storeRGBA16FPMFromRGBA32F,
2426 storeRGBX32FFromRGBA32F,
2427 storeRGBA32FFromRGBA32F,
2428 storeRGBA32FPMFromRGBA32F,
2429 storeCMYKFromRGBA32F,
static constexpr QCmyk32 fromCmyk32(uint cmyk) noexcept
static QCmyk32 fromColor(const QColor &color) noexcept
The QColor class provides colors based on RGB, HSV or CMYK values.
constexpr quint16 alpha() const
constexpr QRgba64 unpremultiplied() const
static constexpr QRgba64 fromRgba64(quint64 c)
constexpr uint toArgb32() const
static constexpr QRgba64 fromArgb32(uint rgb)
static constexpr QRgbaFloat fromArgb32(uint rgb)
constexpr Q_ALWAYS_INLINE QRgbaFloat premultiplied() const
static constexpr QRgbaFloat fromRgba64(quint16 red, quint16 green, quint16 blue, quint16 alpha)
constexpr uint toArgb32() const
constexpr Q_ALWAYS_INLINE QRgbaFloat unpremultiplied() const
\keyword 16-bit Floating Point Support\inmodule QtCore \inheaderfile QFloat16
Combined button and popup list for selecting options.
static constexpr int BufferSize
static constexpr uint qt_div_257(uint x)
const uint qt_bayer_matrix[16][16]
Q_CORE_EXPORT void qFloatFromFloat16(float *, const qfloat16 *, qsizetype length) noexcept
Q_CORE_EXPORT void qFloatToFloat16(qfloat16 *, const float *, qsizetype length) noexcept
QColor toColor(const QStringView &color)
constexpr const T & qMin(const T &a, const T &b)
GLint GLfloat GLfloat GLfloat v2
GLboolean GLboolean GLboolean b
GLsizei const GLfloat * v
[13]
GLint GLint GLint GLint GLint x
[0]
GLboolean GLboolean GLboolean GLboolean a
[7]
GLenum GLuint GLenum GLsizei length
GLenum GLenum GLsizei count
GLint GLsizei GLsizei GLenum format
GLfloat GLfloat GLfloat alpha
static void QT_FASTCALL rbSwap_4x32(uchar *d, const uchar *s, int count)
static const uint *QT_FASTCALL fetchRGB64ToRGB32(uint *buffer, const uchar *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
static void QT_FASTCALL storeGrayscale16FromRGB32(uchar *dest, const uint *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
constexpr uint greenShift< QImage::Format_BGR888 >()
constexpr QPixelLayout::BPP bitsPerPixel< QImage::Format_ARGB8555_Premultiplied >()
constexpr uint redShift< QImage::Format_ARGB32_Premultiplied >()
constexpr uint alphaWidth()
constexpr uint alphaShift< QImage::Format_ARGB6666_Premultiplied >()
constexpr uint alphaWidth< QImage::Format_RGB888 >()
constexpr uint greenWidth< QImage::Format_ARGB8565_Premultiplied >()
constexpr uint redShift< QImage::Format_ARGB32 >()
constexpr uint greenWidth< QImage::Format_RGBX8888 >()
constexpr uint greenWidth< QImage::Format_RGB888 >()
constexpr QPixelLayout::BPP bitsPerPixel< QImage::Format_BGR888 >()
static const QRgba *QT_FASTCALL convertGrayscale16To(QRgba *buffer, const uint *src, int count, const QList< QRgb > *, QDitherInfo *)
constexpr uint redWidth< QImage::Format_ARGB8565_Premultiplied >()
constexpr uint redShift< QImage::Format_RGBA8888_Premultiplied >()
constexpr uint blueWidth< QImage::Format_RGB444 >()
constexpr uint blueWidth< QImage::Format_RGB666 >()
static void QT_FASTCALL storeRGBA32FPMFromRGBA64PM(uchar *dest, const QRgba64 *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
constexpr uint alphaShift< QImage::Format_RGBA8888 >()
static constexpr QPixelLayout pixelLayoutRGB()
constexpr uint greenShift()
static void QT_FASTCALL convertGrayscale16ToRGB32(uint *buffer, int count, const QList< QRgb > *)
constexpr uint blueWidth< QImage::Format_ARGB32_Premultiplied >()
static void QT_FASTCALL convertARGBPMToARGB32PM(uint *buffer, int count, const QList< QRgb > *)
static void QT_FASTCALL convertGrayscale8ToRGB32(uint *buffer, int count, const QList< QRgb > *)
static const QRgba *QT_FASTCALL fetchGrayscale16To(QRgba *buffer, const uchar *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
constexpr uint alphaWidth< QImage::Format_RGB16 >()
constexpr uint redWidth< QImage::Format_ARGB8555_Premultiplied >()
constexpr uint alphaShift< QImage::Format_RGB32 >()
static const QRgbaFloat32 *QT_FASTCALL convertA2RGB30PMToRGBA32F(QRgbaFloat32 *buffer, const uint *src, int count, const QList< QRgb > *, QDitherInfo *)
constexpr uint alphaShift< QImage::Format_RGB888 >()
constexpr uint blueShift< QImage::Format_RGB16 >()
constexpr uint blueShift< QImage::Format_RGBX8888 >()
constexpr uint blueShift< QImage::Format_RGB555 >()
constexpr uint blueShift< QImage::Format_RGB888 >()
QRgbaFloat32 qConvertA2rgb30ToRgbaFP< PixelOrderRGB >(uint rgb)
QRgbaFloat32 qConvertA2rgb30ToRgbaFP< PixelOrderBGR >(uint rgb)
static const uint *QT_FASTCALL fetchA2RGB30PMToARGB32PM(uint *buffer, const uchar *s, int index, int count, const QList< QRgb > *, QDitherInfo *dither)
constexpr uint redShift< QImage::Format_ARGB8555_Premultiplied >()
constexpr uint greenShift< QImage::Format_RGBX8888 >()
constexpr uint greenShift< QImage::Format_ARGB8555_Premultiplied >()
static const uint *QT_FASTCALL fetchARGB32ToARGB32PM(uint *buffer, const uchar *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
constexpr uint greenWidth()
constexpr uint redShift< QImage::Format_ARGB4444_Premultiplied >()
constexpr uint redShift< QImage::Format_RGB16 >()
constexpr uint greenShift< QImage::Format_RGB666 >()
static void QT_FASTCALL storeRGBA8888PMFromARGB32PM(uchar *dest, const uint *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
static void QT_FASTCALL storeGrayscale8FromARGB32PM(uchar *dest, const uint *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
static void QT_FASTCALL storeRGBXFromARGB32PM(uchar *dest, const uint *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
constexpr uint alphaShift< QImage::Format_RGB555 >()
static const QRgba64 *QT_FASTCALL fetchARGBPMToRGBA64PM(QRgba64 *buffer, const uchar *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
constexpr uint redShift< QImage::Format_BGR888 >()
static const QRgbaFloat32 *QT_FASTCALL fetchARGBPMToRGBA32F(QRgbaFloat32 *buffer, const uchar *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
static void QT_FASTCALL rbSwap_4x16(uchar *d, const uchar *s, int count)
constexpr uint blueShift< QImage::Format_RGBA8888 >()
uint QT_FASTCALL fetchPixel< QPixelLayout::BPP16 >(const uchar *src, int index)
static const uint *QT_FASTCALL fetchRGB16FToRGB32(uint *buffer, const uchar *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
constexpr uint redWidth< QImage::Format_ARGB32 >()
constexpr uint greenShift< QImage::Format_ARGB8565_Premultiplied >()
static const QRgba64 *QT_FASTCALL convertRGB32ToRGB64(QRgba64 *buffer, const uint *src, int count, const QList< QRgb > *, QDitherInfo *)
static const uint *QT_FASTCALL fetchPassThrough(uint *, const uchar *src, int index, int, const QList< QRgb > *, QDitherInfo *)
static const QRgbaFloat32 *QT_FASTCALL fetchARGBToRGBA32F(QRgbaFloat32 *buffer, const uchar *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
static void QT_FASTCALL storeGray16FromRGBA64PM(uchar *dest, const QRgba64 *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
static const uint *QT_FASTCALL fetchIndexedToARGB32PM(uint *buffer, const uchar *src, int index, int count, const QList< QRgb > *clut, QDitherInfo *)
QT_BEGIN_NAMESPACE constexpr uint redWidth()
static const QRgba64 *QT_FASTCALL convertARGBPMToRGBA64PM(QRgba64 *buffer, const uint *src, int count, const QList< QRgb > *, QDitherInfo *)
constexpr uint blueWidth< QImage::Format_RGBA8888_Premultiplied >()
constexpr uint alphaWidth< QImage::Format_ARGB6666_Premultiplied >()
static const QRgbaFloat32 *QT_FASTCALL fetchIndexedToRGBA32F(QRgbaFloat32 *buffer, const uchar *src, int index, int count, const QList< QRgb > *clut, QDitherInfo *)
constexpr uint redShift< QImage::Format_RGB666 >()
static void QT_FASTCALL storeGrayscale16FromARGB32PM(uchar *dest, const uint *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
static const uint *QT_FASTCALL fetchRGBA8888PMToARGB32PM(uint *buffer, const uchar *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
constexpr uint blueWidth< QImage::Format_ARGB6666_Premultiplied >()
constexpr uint alphaShift< QImage::Format_RGB666 >()
static const uint *QT_FASTCALL fetchRGBA8888ToARGB32PM(uint *buffer, const uchar *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
static void QT_FASTCALL storeRGB16FFromRGB32(uchar *dest, const uint *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
constexpr uint greenWidth< QImage::Format_RGB555 >()
constexpr uint greenWidth< QImage::Format_ARGB32_Premultiplied >()
constexpr uint blueWidth< QImage::Format_BGR888 >()
uint QT_FASTCALL fetchPixel< QPixelLayout::BPP16FPx4 >(const uchar *src, int index)
constexpr QPixelLayout::BPP bitsPerPixel< QImage::Format_ARGB8565_Premultiplied >()
constexpr uint redWidth< QImage::Format_RGBA8888_Premultiplied >()
static const uint *QT_FASTCALL fetchRGB32FToRGB32(uint *buffer, const uchar *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
static const QRgba *QT_FASTCALL convertAlpha8To(QRgba *buffer, const uint *src, int count, const QList< QRgb > *, QDitherInfo *)
static void QT_FASTCALL storePassThrough(uchar *dest, const uint *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
constexpr uint alphaShift< QImage::Format_ARGB32_Premultiplied >()
static const QRgba64 *QT_FASTCALL convertARGB32ToRGBA64PM(QRgba64 *buffer, const uint *src, int count, const QList< QRgb > *, QDitherInfo *)
constexpr QPixelLayout::BPP bitsPerPixel< QImage::Format_RGB444 >()
static void QT_FASTCALL storeRGBA64PMFromRGBA64PM(uchar *dest, const QRgba64 *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
static void QT_FASTCALL storeCMYK8888FromRGB32(uchar *dest, const uint *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
static const uint *QT_FASTCALL fetchCMYK8888ToARGB32PM(uint *buffer, const uchar *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
static void QT_FASTCALL storeAlpha8FromARGB32PM(uchar *dest, const uint *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
constexpr uint greenShift< QImage::Format_ARGB4444_Premultiplied >()
constexpr uint greenWidth< QImage::Format_BGR888 >()
constexpr uint redWidth< QImage::Format_RGB888 >()
constexpr uint alphaWidth< QImage::Format_RGBA8888_Premultiplied >()
static void QT_FASTCALL storeRGBA64FromRGBA64PM(uchar *dest, const QRgba64 *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
constexpr QPixelLayout::BPP bitsPerPixel< QImage::Format_RGB555 >()
constexpr uint alphaWidth< QImage::Format_RGBX8888 >()
static const QRgbaFloat32 *QT_FASTCALL fetchRGB30ToRGBA32F(QRgbaFloat32 *buffer, const uchar *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
static void QT_FASTCALL storeGrayscale8FromRGB32(uchar *dest, const uint *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
constexpr uint blueWidth< QImage::Format_ARGB8565_Premultiplied >()
constexpr uint redWidth< QImage::Format_ARGB32_Premultiplied >()
static const QRgba64 *QT_FASTCALL fetchARGB32ToRGBA64PM(QRgba64 *buffer, const uchar *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
constexpr uint alphaWidth< QImage::Format_RGBA8888 >()
uint QT_FASTCALL fetchPixel< QPixelLayout::BPP64 >(const uchar *src, int index)
static const QRgba64 *QT_FASTCALL fetchRGBA32FToRGBA64PM(QRgba64 *buffer, const uchar *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
constexpr QPixelLayout::BPP bitsPerPixel< QImage::Format_RGBA8888_Premultiplied >()
static void QT_FASTCALL storeRGBA16FPMFromRGBA64PM(uchar *dest, const QRgba64 *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
static void QT_FASTCALL storeRGB30FromRGBA64PM(uchar *dest, const QRgba64 *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
static const QRgba64 *QT_FASTCALL fetchARGB32PMToRGBA64PM(QRgba64 *buffer, const uchar *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
static const uint *QT_FASTCALL fetchGrayscale8ToRGB32(uint *buffer, const uchar *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
uint QT_FASTCALL fetchPixel< QPixelLayout::BPP1LSB >(const uchar *src, int index)
constexpr QPixelLayout::BPP bitsPerPixel< QImage::Format_ARGB32_Premultiplied >()
constexpr uint redWidth< QImage::Format_RGBX8888 >()
static void QT_FASTCALL convertA2RGB30PMToARGB32PM(uint *buffer, int count, const QList< QRgb > *)
constexpr uint greenShift< QImage::Format_RGBA8888 >()
static uint convertPixelToRGB32(uint s)
static const uint *QT_FASTCALL fetchGrayscale16ToRGB32(uint *buffer, const uchar *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
constexpr uint alphaShift< QImage::Format_ARGB32 >()
constexpr uint blueShift< QImage::Format_RGB666 >()
static const QRgba64 *QT_FASTCALL convertA2RGB30PMToRGBA64PM(QRgba64 *buffer, const uint *src, int count, const QList< QRgb > *, QDitherInfo *)
static void QT_FASTCALL storePixel(uchar *dest, int index, uint pixel)
static const uint *QT_FASTCALL fetchRGBA32FToARGB32PM(uint *buffer, const uchar *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
static void QT_FASTCALL storeRGBA16FFromRGBA64PM(uchar *dest, const QRgba64 *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
constexpr uint alphaWidth< QImage::Format_ARGB8565_Premultiplied >()
constexpr uint blueShift< QImage::Format_RGBA8888_Premultiplied >()
static const uint *QT_FASTCALL fetchARGBPMToARGB32PM(uint *buffer, const uchar *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
static QRgba64 convertPixelToRGBA64PM(uint s)
constexpr uint redWidth< QImage::Format_RGBA8888 >()
constexpr uint alphaWidth< QImage::Format_BGR888 >()
static void QT_FASTCALL rbSwap(uchar *dst, const uchar *src, int count)
constexpr uint blueShift()
static void QT_FASTCALL convertRGBA8888ToARGB32PM(uint *buffer, int count, const QList< QRgb > *)
static void QT_FASTCALL storeRGBA8888FromARGB32PM(uchar *dest, const uint *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
constexpr uint alphaShift()
constexpr uint redShift< QImage::Format_RGB444 >()
constexpr uint redWidth< QImage::Format_RGB444 >()
static void QT_FASTCALL storeGenericFromRGBA64PM(uchar *dest, const QRgba64 *src, int index, int count, const QList< QRgb > *clut, QDitherInfo *dither)
constexpr uint redWidth< QImage::Format_BGR888 >()
constexpr uint greenWidth< QImage::Format_RGBA8888_Premultiplied >()
static void QT_FASTCALL storeARGB32FromARGB32PM(uchar *dest, const uint *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
static void QT_FASTCALL storeA2RGB30PMFromARGB32PM(uchar *dest, const uint *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
static void QT_FASTCALL convertToRGB32(uint *buffer, int count, const QList< QRgb > *)
static void QT_FASTCALL convertPassThrough(uint *, int, const QList< QRgb > *)
static const QRgba64 *QT_FASTCALL convertCMYK8888ToToRGBA64PM(QRgba64 *buffer, const uint *src, int count, const QList< QRgb > *, QDitherInfo *)
constexpr uint greenWidth< QImage::Format_ARGB6666_Premultiplied >()
constexpr uint greenShift< QImage::Format_ARGB32_Premultiplied >()
constexpr QPixelLayout::BPP bitsPerPixel()
constexpr uint greenWidth< QImage::Format_RGB16 >()
static void QT_FASTCALL storeRGB64FromRGB32(uchar *dest, const uint *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
constexpr uint greenShift< QImage::Format_ARGB32 >()
static const QRgba64 *QT_FASTCALL fetchRGBA16FPMToRGBA64PM(QRgba64 *buffer, const uchar *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
void QT_FASTCALL rbSwap< QImage::Format_RGBA8888 >(uchar *d, const uchar *s, int count)
static const QRgbaFloat32 *QT_FASTCALL fetchRGBToRGB32F(QRgbaFloat32 *buffer, const uchar *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
constexpr uint blueWidth< QImage::Format_RGBA8888 >()
static Q_ALWAYS_INLINE QRgbaFloat32 convertPixelToRGBA32F(uint s)
constexpr uint redWidth< QImage::Format_ARGB6666_Premultiplied >()
constexpr QPixelLayout::BPP bitsPerPixel< QImage::Format_RGBA8888 >()
constexpr uint alphaWidth< QImage::Format_ARGB4444_Premultiplied >()
constexpr uint greenWidth< QImage::Format_RGB666 >()
static void QT_FASTCALL storeRGBA16FFromARGB32PM(uchar *dest, const uint *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
constexpr uint blueShift< QImage::Format_ARGB8555_Premultiplied >()
constexpr QPixelLayout::BPP bitsPerPixel< QImage::Format_RGB666 >()
static const uint *QT_FASTCALL fetchRGBA16FToARGB32PM(uint *buffer, const uchar *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
static const uint *QT_FASTCALL fetchRGBA64ToARGB32PM(uint *buffer, const uchar *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
static void QT_FASTCALL rbSwap_rgb30(uchar *d, const uchar *s, int count)
uint QT_FASTCALL fetchPixel< QPixelLayout::BPP32FPx4 >(const uchar *src, int index)
static const QRgba *QT_FASTCALL convertIndexedTo(QRgba *buffer, const uint *src, int count, const QList< QRgb > *clut, QDitherInfo *)
constexpr uint blueWidth< QImage::Format_ARGB32 >()
static void QT_FASTCALL convertFromRgb64(uint *dest, const QRgba64 *src, int length)
static Q_ALWAYS_INLINE QRgbaFloat32 convertPixelToRGB32F(uint s)
constexpr QPixelLayout::BPP bitsPerPixel< QImage::Format_RGB32 >()
static const QRgba64 *QT_FASTCALL fetchRGBA8888ToRGBA64PM(QRgba64 *buffer, const uchar *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
constexpr uint alphaShift< QImage::Format_ARGB4444_Premultiplied >()
constexpr uint redShift()
static const QRgba64 *QT_FASTCALL fetchCMYK8888ToRGBA64PM(QRgba64 *buffer, const uchar *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
constexpr uint blueWidth< QImage::Format_RGB555 >()
void qt_convertRGBA64ToARGB32(uint *dst, const QRgba64 *src, int count)
constexpr uint blueWidth< QImage::Format_RGB16 >()
constexpr uint greenShift< QImage::Format_RGB888 >()
static uint QT_FASTCALL fetchPixel(const uchar *, int)
constexpr uint greenWidth< QImage::Format_RGB32 >()
constexpr uint redWidth< QImage::Format_RGB16 >()
constexpr uint blueShift< QImage::Format_ARGB4444_Premultiplied >()
constexpr uint blueShift< QImage::Format_RGB444 >()
constexpr uint greenWidth< QImage::Format_ARGB4444_Premultiplied >()
static const QRgba64 *QT_FASTCALL fetchRGBA32FPMToRGBA64PM(QRgba64 *buffer, const uchar *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
static const QRgba64 *QT_FASTCALL fetchPassThrough64(QRgba64 *, const uchar *src, int index, int, const QList< QRgb > *, QDitherInfo *)
static void QT_FASTCALL storeRGBFromARGB32PM(uchar *dest, const uint *src, int index, int count, const QList< QRgb > *, QDitherInfo *dither)
constexpr uint blueWidth< QImage::Format_RGB888 >()
constexpr uint alphaShift< QImage::Format_ARGB8555_Premultiplied >()
constexpr uint alphaShift< QImage::Format_RGBA8888_Premultiplied >()
static const QRgba64 *QT_FASTCALL convertToRGB64(QRgba64 *buffer, const uint *src, int count, const QList< QRgb > *, QDitherInfo *)
void QT_FASTCALL storePixel< QPixelLayout::BPP24 >(uchar *dest, int index, uint pixel)
static void QT_FASTCALL convertCMYK8888ToARGB32PM(uint *buffer, int count, const QList< QRgb > *)
constexpr uint alphaShift< QImage::Format_BGR888 >()
static void QT_FASTCALL convertRGBA8888PMToARGB32PM(uint *buffer, int count, const QList< QRgb > *)
constexpr uint blueWidth()
static const QRgba64 *QT_FASTCALL fetchA2RGB30PMToRGBA64PM(QRgba64 *buffer, const uchar *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
static const QRgba64 *QT_FASTCALL fetchRGBA8888PMToRGBA64PM(QRgba64 *buffer, const uchar *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
static void QT_FASTCALL storeRGBA64FromARGB32PM(uchar *dest, const uint *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
constexpr uint greenWidth< QImage::Format_RGBA8888 >()
constexpr uint redShift< QImage::Format_ARGB8565_Premultiplied >()
constexpr uint redWidth< QImage::Format_RGB555 >()
constexpr uint blueShift< QImage::Format_ARGB32 >()
static void QT_FASTCALL storeRGB30FromARGB32PM(uchar *dest, const uint *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
constexpr uint alphaWidth< QImage::Format_ARGB8555_Premultiplied >()
constexpr uint alphaShift< QImage::Format_RGB16 >()
static void QT_FASTCALL storeRGBX64FromRGBA64PM(uchar *dest, const QRgba64 *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
static const QRgba64 *QT_FASTCALL convertARGB32PMToRGBA64PM(QRgba64 *buffer, const uint *src, int count, const QList< QRgb > *, QDitherInfo *)
static QRgba64 convertPixelToRGB64(uint s)
constexpr uint blueShift< QImage::Format_ARGB8565_Premultiplied >()
constexpr uint alphaWidth< QImage::Format_RGB444 >()
static const QRgba *QT_FASTCALL fetchGrayscale8To(QRgba *buffer, const uchar *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
constexpr uint redShift< QImage::Format_RGBX8888 >()
constexpr uint alphaShift< QImage::Format_RGB444 >()
constexpr uint greenWidth< QImage::Format_ARGB8555_Premultiplied >()
constexpr uint blueWidth< QImage::Format_RGBX8888 >()
void QT_FASTCALL storePixel< QPixelLayout::BPP16 >(uchar *dest, int index, uint pixel)
static void QT_FASTCALL storeRGBA64FromARGB32(uchar *dest, const uint *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
constexpr uint greenShift< QImage::Format_RGBA8888_Premultiplied >()
constexpr uint redWidth< QImage::Format_RGB666 >()
static void QT_FASTCALL convertAlpha8ToRGB32(uint *buffer, int count, const QList< QRgb > *)
constexpr uint blueWidth< QImage::Format_ARGB8555_Premultiplied >()
static void QT_FASTCALL storeARGB32FromRGBA64PM(uchar *dest, const QRgba64 *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
uint QT_FASTCALL fetchPixel< QPixelLayout::BPP24 >(const uchar *src, int index)
constexpr QPixelLayout::BPP bitsPerPixel< QImage::Format_RGBX8888 >()
static const QRgba64 *QT_FASTCALL convertRGBA8888PMToRGBA64PM(QRgba64 *buffer, const uint *src, int count, const QList< QRgb > *, QDitherInfo *)
constexpr uint greenWidth< QImage::Format_ARGB32 >()
constexpr uint blueWidth< QImage::Format_RGB32 >()
QRgbaFloat32 qConvertA2rgb30ToRgbaFP(uint rgb)
static void QT_FASTCALL storeRGBX16FFromRGBA64PM(uchar *dest, const QRgba64 *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
static void QT_FASTCALL storeARGBPMFromARGB32PM(uchar *dest, const uint *src, int index, int count, const QList< QRgb > *, QDitherInfo *dither)
constexpr uint blueShift< QImage::Format_BGR888 >()
static const QRgba64 *QT_FASTCALL fetchRGBToRGB64(QRgba64 *buffer, const uchar *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
static void QT_FASTCALL rbSwap_rgb32(uchar *d, const uchar *s, int count)
constexpr uint greenWidth< QImage::Format_RGB444 >()
static uint convertPixelToARGB32PM(uint s)
template void qt_convertRGBA64ToARGB32< false >(uint *dst, const QRgba64 *src, int count)
static const uint *QT_FASTCALL fetchAlpha8ToRGB32(uint *buffer, const uchar *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
constexpr uint greenShift< QImage::Format_RGB555 >()
constexpr QPixelLayout::BPP bitsPerPixel< QImage::Format_RGB888 >()
constexpr uint greenShift< QImage::Format_RGB16 >()
QPixelLayout qPixelLayouts[]
constexpr uint redShift< QImage::Format_RGB888 >()
static const QRgba *QT_FASTCALL fetchAlpha8To(QRgba *buffer, const uchar *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
static void QT_FASTCALL storeCMYKFromRGBA64PM(uchar *dest, const QRgba64 *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
constexpr uint blueShift< QImage::Format_ARGB32_Premultiplied >()
static const QRgba64 *QT_FASTCALL fetchIndexedToRGBA64PM(QRgba64 *buffer, const uchar *src, int index, int count, const QList< QRgb > *clut, QDitherInfo *)
constexpr uint blueWidth< QImage::Format_ARGB4444_Premultiplied >()
constexpr uint greenShift< QImage::Format_ARGB6666_Premultiplied >()
static void QT_FASTCALL storeRGBA32FFromRGBA64PM(uchar *dest, const QRgba64 *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
static const QRgba *QT_FASTCALL convertGrayscale8To(QRgba *buffer, const uint *src, int count, const QList< QRgb > *, QDitherInfo *)
static const QRgba64 *QT_FASTCALL fetchRGBA16FToRGBA64PM(QRgba64 *buffer, const uchar *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
constexpr QPixelLayout::BPP bitsPerPixel< QImage::Format_ARGB4444_Premultiplied >()
static void QT_FASTCALL storeRGBX32FFromRGBA64PM(uchar *dest, const QRgba64 *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
static constexpr QPixelLayout pixelLayoutARGBPM()
constexpr uint alphaWidth< QImage::Format_RGB555 >()
static void QT_FASTCALL storeRGB32FFromRGB32(uchar *dest, const uint *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
uint QT_FASTCALL fetchPixel< QPixelLayout::BPP1MSB >(const uchar *src, int index)
ConvertAndStorePixelsFunc64 qStoreFromRGBA64PM[]
static const QRgba64 *QT_FASTCALL convertRGBA8888ToRGBA64PM(QRgba64 *buffer, const uint *src, int count, const QList< QRgb > *, QDitherInfo *)
constexpr uint alphaShift< QImage::Format_ARGB8565_Premultiplied >()
constexpr QPixelLayout::BPP bitsPerPixel< QImage::Format_ARGB6666_Premultiplied >()
constexpr uint blueShift< QImage::Format_RGB32 >()
uint QT_FASTCALL fetchPixel< QPixelLayout::BPP8 >(const uchar *src, int index)
constexpr uint redShift< QImage::Format_RGB555 >()
constexpr QPixelLayout::BPP bitsPerPixel< QImage::Format_ARGB32 >()
constexpr uint alphaWidth< QImage::Format_RGB666 >()
constexpr uint alphaWidth< QImage::Format_ARGB32 >()
template void qt_convertRGBA64ToARGB32< true >(uint *dst, const QRgba64 *src, int count)
constexpr uint alphaShift< QImage::Format_RGBX8888 >()
static void QT_FASTCALL storeRGBA8888FromRGBA64PM(uchar *dest, const QRgba64 *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
constexpr uint redWidth< QImage::Format_RGB32 >()
constexpr QPixelLayout::BPP bitsPerPixel< QImage::Format_RGB16 >()
constexpr uint greenShift< QImage::Format_RGB32 >()
static void QT_FASTCALL convertARGB32ToARGB32PM(uint *buffer, int count, const QList< QRgb > *)
static const QRgba64 *QT_FASTCALL fetchRGBA64ToRGBA64PM(QRgba64 *buffer, const uchar *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
constexpr uint alphaWidth< QImage::Format_RGB32 >()
const uint * qt_convertCMYK8888ToARGB32PM(uint *buffer, const uint *src, int count)
constexpr uint redWidth< QImage::Format_ARGB4444_Premultiplied >()
static void QT_FASTCALL storeRGBXFromRGB32(uchar *dest, const uint *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
static void QT_FASTCALL storeCMYK8888FromARGB32PM(uchar *dest, const uint *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
static void QT_FASTCALL storeRGB30FromRGB32(uchar *dest, const uint *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
constexpr uint blueShift< QImage::Format_ARGB6666_Premultiplied >()
static const QRgba64 *QT_FASTCALL fetchRGB32ToRGB64(QRgba64 *buffer, const uchar *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
constexpr uint alphaWidth< QImage::Format_ARGB32_Premultiplied >()
uint QT_FASTCALL fetchPixel< QPixelLayout::BPP32 >(const uchar *src, int index)
constexpr uint greenShift< QImage::Format_RGB444 >()
constexpr uint redShift< QImage::Format_RGB32 >()
static const uint *QT_FASTCALL fetchRGBToRGB32(uint *buffer, const uchar *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
constexpr uint redShift< QImage::Format_RGBA8888 >()
constexpr uint redShift< QImage::Format_ARGB6666_Premultiplied >()
static void QT_FASTCALL convertIndexedToARGB32PM(uint *buffer, int count, const QList< QRgb > *clut)
static void QT_FASTCALL storeRGBA32FFromARGB32PM(uchar *dest, const uint *src, int index, int count, const QList< QRgb > *, QDitherInfo *)
constexpr QRgbaFloat32 qConvertRgb64ToRgbaF32(QRgba64 c)
const uint * qt_convertRGBA8888ToARGB32PM(uint *buffer, const uint *src, int count)
const QRgbaFloat32 *(QT_FASTCALL * ConvertToFPFunc)(QRgbaFloat32 *buffer, const uint *src, int count, const QList< QRgb > *clut, QDitherInfo *dither)
static quint32 RGBA2ARGB(quint32 x)
#define UNALIASED_CONVERSION_LOOP(buffer, src, count, conversion)
constexpr QRgbaFloat16 qConvertRgb64ToRgbaF16(QRgba64 c)
static quint32 ARGB2RGBA(quint32 x)
void(QT_FASTCALL * ConvertAndStorePixelsFuncFP)(uchar *dest, const QRgbaFloat32 *src, int index, int count, const QList< QRgb > *clut, QDitherInfo *dither)
const QRgbaFloat32 *(QT_FASTCALL * FetchAndConvertPixelsFuncFP)(QRgbaFloat32 *buffer, const uchar *src, int index, int count, const QList< QRgb > *clut, QDitherInfo *dither)
const uint * qt_convertARGB32ToARGB32PM(uint *buffer, const uint *src, int count)
void(QT_FASTCALL * ConvertAndStorePixelsFunc64)(uchar *dest, const QRgba64 *src, int index, int count, const QList< QRgb > *clut, QDitherInfo *dither)
uint qRgbSwapRgb30(uint c)
constexpr QRgb qRgb(int r, int g, int b)
constexpr int qRed(QRgb rgb)
constexpr int qGreen(QRgb rgb)
constexpr int qGray(int r, int g, int b)
QRgb qUnpremultiply(QRgb p)
constexpr QRgb qRgba(int r, int g, int b, int a)
constexpr int qBlue(QRgb rgb)
constexpr QRgb qPremultiply(QRgb x)
constexpr int qAlpha(QRgb rgb)
static QRgba64 multiplyAlpha65535(QRgba64 rgba64, uint alpha65535)
static uint toArgb32(QRgba64 rgba64)
static uint toRgba8888(QRgba64 rgba64)
static const struct ImageFormatTab r8[]
#define qCpuHasFeature(feature)
#define SIMD_EPILOGUE(i, length, max)
ConvertFunc convertToARGB32PM
ConvertAndStorePixelsFunc storeFromARGB32PM