9#include <QtCore/private/qsimd_p.h>
52#if Q_BYTE_ORDER == Q_BIG_ENDIAN
91#if Q_BYTE_ORDER == Q_BIG_ENDIAN
130#if Q_BYTE_ORDER == Q_BIG_ENDIAN
169#if Q_BYTE_ORDER == Q_BIG_ENDIAN
197template <QPixelLayout::BPP w
idth>
static
212template <QPixelLayout::BPP bpp>
static
215 Q_UNREACHABLE_RETURN(0);
281template<QImage::Format Format>
284 constexpr uint redMask = ((1 << redWidth<Format>()) - 1);
285 constexpr uint greenMask = ((1 << greenWidth<Format>()) - 1);
286 constexpr uint blueMask = ((1 << blueWidth<Format>()) - 1);
288 constexpr uchar redLeftShift = 8 - redWidth<Format>();
289 constexpr uchar greenLeftShift = 8 - greenWidth<Format>();
290 constexpr uchar blueLeftShift = 8 - blueWidth<Format>();
292 constexpr uchar redRightShift = 2 * redWidth<Format>() - 8;
293 constexpr uchar greenRightShift = 2 * greenWidth<Format>() - 8;
294 constexpr uchar blueRightShift = 2 * blueWidth<Format>() - 8;
296 uint red = (
s >> redShift<Format>()) & redMask;
297 uint green = (
s >> greenShift<Format>()) & greenMask;
298 uint blue = (
s >> blueShift<Format>()) & blueMask;
300 red = ((
red << redLeftShift) | (
red >> redRightShift)) << 16;
302 blue = (
blue << blueLeftShift) | (
blue >> blueRightShift);
306template<QImage::Format Format>
313#if defined(__SSE2__) && !defined(__SSSE3__) && QT_COMPILER_SUPPORTS_SSSE3
317template<QImage::Format Format>
322#if defined(__SSE2__) && !defined(__SSSE3__) && QT_COMPILER_SUPPORTS_SSSE3
336template<QImage::Format Format>
342template<QImage::Format Format>
351template<QImage::Format Format>
360template<QImage::Format Format>
366template<QImage::Format Format>
375template<QImage::Format Format>
378 constexpr uint alphaMask = ((1 << alphaWidth<Format>()) - 1);
379 constexpr uint redMask = ((1 << redWidth<Format>()) - 1);
380 constexpr uint greenMask = ((1 << greenWidth<Format>()) - 1);
381 constexpr uint blueMask = ((1 << blueWidth<Format>()) - 1);
383 constexpr uchar alphaLeftShift = 8 - alphaWidth<Format>();
384 constexpr uchar redLeftShift = 8 - redWidth<Format>();
385 constexpr uchar greenLeftShift = 8 - greenWidth<Format>();
386 constexpr uchar blueLeftShift = 8 - blueWidth<Format>();
388 constexpr uchar alphaRightShift = 2 * alphaWidth<Format>() - 8;
389 constexpr uchar redRightShift = 2 * redWidth<Format>() - 8;
390 constexpr uchar greenRightShift = 2 * greenWidth<Format>() - 8;
391 constexpr uchar blueRightShift = 2 * blueWidth<Format>() - 8;
393 constexpr bool mustMin = (alphaWidth<Format>() != redWidth<Format>()) ||
394 (alphaWidth<Format>() != greenWidth<Format>()) ||
395 (alphaWidth<Format>() != blueWidth<Format>());
397 uint alpha = (
s >> alphaShift<Format>()) & alphaMask;
398 uint red = (
s >> redShift<Format>()) & redMask;
399 uint green = (
s >> greenShift<Format>()) & greenMask;
400 uint blue = (
s >> blueShift<Format>()) & blueMask;
403 red = (
red << redLeftShift) | (
red >> redRightShift);
405 blue = (
blue << blueLeftShift) | (
blue >> blueRightShift);
416template<QImage::Format Format>
423template<QImage::Format Format>
428#if defined(__SSE2__) && !defined(__SSSE3__) && QT_COMPILER_SUPPORTS_SSSE3
433 convertARGBPMToARGB32PM<Format>(
buffer,
count,
nullptr);
438 buffer[
i] = convertPixelToARGB32PM<Format>(fetchPixel<BPP>(
src,
index +
i));
442template<QImage::Format Format>
448template<QImage::Format Format>
457template<QImage::Format Format>
463 buffer[
i] = convertPixelToRGBA64PM<Format>(fetchPixel<bpp>(
src,
index +
i));
467template<QImage::Format Format>
473template<QImage::Format Format>
483template<QImage::Format Format>
489 buffer[
i] = convertPixelToRGBA32F<Format>(fetchPixel<bpp>(
src,
index +
i)).premultiplied();
493template<QImage::Format Format,
bool fromRGB>
497 constexpr uchar rWidth = redWidth<Format>();
498 constexpr uchar gWidth = greenWidth<Format>();
499 constexpr uchar bWidth = blueWidth<Format>();
503 if (!dither || (rWidth == 8 && gWidth == 8 && bWidth == 8)) {
504 constexpr uint rMask = (1 << redWidth<Format>()) - 1;
505 constexpr uint gMask = (1 << greenWidth<Format>()) - 1;
506 constexpr uint bMask = (1 << blueWidth<Format>()) - 1;
507 constexpr uchar rRightShift = 24 - redWidth<Format>();
508 constexpr uchar gRightShift = 16 - greenWidth<Format>();
509 constexpr uchar bRightShift = 8 - blueWidth<Format>();
513 const uint r = ((
c >> rRightShift) & rMask) << redShift<Format>();
514 const uint g = ((
c >> gRightShift) & gMask) << greenShift<Format>();
515 const uint b = ((
c >> bRightShift) & bMask) << blueShift<Format>();
516 storePixel<BPP>(dest,
index +
i,
r |
g |
b);
527 const int d = bayer_line[(dither->
x +
i) & 15];
528 const int dr =
d - ((
d + 1) >> rWidth);
529 const int dg =
d - ((
d + 1) >> gWidth);
530 const int db =
d - ((
d + 1) >> bWidth);
534 r = (
r + ((dr -
r) >> rWidth) + 1) >> (8 - rWidth);
535 g = (
g + ((dg -
g) >> gWidth) + 1) >> (8 - gWidth);
536 b = (
b + ((
db -
b) >> bWidth) + 1) >> (8 - bWidth);
537 const uint s = (r << redShift<Format>())
538 | (
g << greenShift<Format>())
539 | (
b << blueShift<Format>());
540 storePixel<BPP>(dest,
index +
i,
s);
545template<QImage::Format Format,
bool fromRGB>
551 constexpr uint aMask = (1 << alphaWidth<Format>()) - 1;
552 constexpr uint rMask = (1 << redWidth<Format>()) - 1;
553 constexpr uint gMask = (1 << greenWidth<Format>()) - 1;
554 constexpr uint bMask = (1 << blueWidth<Format>()) - 1;
556 constexpr uchar aRightShift = 32 - alphaWidth<Format>();
557 constexpr uchar rRightShift = 24 - redWidth<Format>();
558 constexpr uchar gRightShift = 16 - greenWidth<Format>();
559 constexpr uchar bRightShift = 8 - blueWidth<Format>();
561 constexpr uint aOpaque = aMask << alphaShift<Format>();
564 const uint a = fromRGB ? aOpaque : (((
c >> aRightShift) & aMask) << alphaShift<Format>());
565 const uint r = ((
c >> rRightShift) & rMask) << redShift<Format>();
566 const uint g = ((
c >> gRightShift) & gMask) << greenShift<Format>();
567 const uint b = ((
c >> bRightShift) & bMask) << blueShift<Format>();
568 storePixel<BPP>(dest,
index +
i,
a |
r |
g |
b);
571 constexpr uchar aWidth = alphaWidth<Format>();
572 constexpr uchar rWidth = redWidth<Format>();
573 constexpr uchar gWidth = greenWidth<Format>();
574 constexpr uchar bWidth = blueWidth<Format>();
579 const int d = bayer_line[(dither->
x +
i) & 15];
580 const int da =
d - ((
d + 1) >> aWidth);
581 const int dr =
d - ((
d + 1) >> rWidth);
582 const int dg =
d - ((
d + 1) >> gWidth);
583 const int db =
d - ((
d + 1) >> bWidth);
589 a = (1 << aWidth) - 1;
591 a = (
a + ((da -
a) >> aWidth) + 1) >> (8 - aWidth);
592 r = (
r + ((dr -
r) >> rWidth) + 1) >> (8 - rWidth);
593 g = (
g + ((dg -
g) >> gWidth) + 1) >> (8 - gWidth);
594 b = (
b + ((
db -
b) >> bWidth) + 1) >> (8 - bWidth);
595 uint s = (a << alphaShift<Format>())
596 | (
r << redShift<Format>())
597 | (
g << greenShift<Format>())
598 | (
b << blueShift<Format>());
599 storePixel<BPP>(dest,
index +
i,
s);
604template<QImage::Format Format>
607 constexpr uchar aWidth = alphaWidth<Format>();
608 constexpr uchar aShift = alphaShift<Format>();
609 constexpr uchar rWidth = redWidth<Format>();
610 constexpr uchar rShift = redShift<Format>();
611 constexpr uchar gWidth = greenWidth<Format>();
612 constexpr uchar gShift = greenShift<Format>();
613 constexpr uchar bWidth = blueWidth<Format>();
614 constexpr uchar bShift = blueShift<Format>();
615 static_assert(rWidth == bWidth);
616 constexpr uint redBlueMask = (1 << rWidth) - 1;
617 constexpr uint alphaGreenMask = (((1 << aWidth) - 1) << aShift)
618 | (((1 << gWidth) - 1) << gShift);
623 const uint r = (
c >> rShift) & redBlueMask;
624 const uint b = (
c >> bShift) & redBlueMask;
625 const uint t = (
c & alphaGreenMask)
628 storePixel<bpp>(
dst,
i,
t);
635 uint *dest =
reinterpret_cast<uint *
>(
d);
638 const uint ag =
c & 0xff00ff00;
639 const uint rb =
c & 0x00ff00ff;
640 dest[
i] = ag | (rb << 16) | (rb >> 16);
644#if Q_BYTE_ORDER == Q_LITTLE_ENDIAN
655 uint *dest =
reinterpret_cast<uint *
>(
d);
658 const uint rb =
c & 0xff00ff00;
659 const uint ga =
c & 0x00ff00ff;
660 dest[
i] = ga | (rb << 16) | (rb >> 16);
668 uint *dest =
reinterpret_cast<uint *
>(
d);
678 dest[
i * 4 + 0] =
src[
i * 4 + 2];
679 dest[
i * 4 + 1] =
src[
i * 4 + 1];
680 dest[
i * 4 + 2] =
src[
i * 4 + 0];
681 dest[
i * 4 + 3] =
src[
i * 4 + 3];
696 uint *dest =
reinterpret_cast<uint *
>(
d);
699 dest[
i * 4 + 0] =
src[
i * 4 + 2];
700 dest[
i * 4 + 1] =
src[
i * 4 + 1];
701 dest[
i * 4 + 2] =
src[
i * 4 + 0];
702 dest[
i * 4 + 3] =
src[
i * 4 + 3];
719 bitsPerPixel<Format>(),
721 convertToRGB32<Format>,
722 convertToRGB64<Format>,
723 fetchRGBToRGB32<Format>,
724 fetchRGBToRGB64<Format>,
725 storeRGBFromARGB32PM<Format, false>,
726 storeRGBFromARGB32PM<Format, true>
735 bitsPerPixel<Format>(),
737 convertARGBPMToARGB32PM<Format>,
738 convertARGBPMToRGBA64PM<Format>,
739 fetchARGBPMToARGB32PM<Format>,
740 fetchARGBPMToRGBA64PM<Format>,
741 storeARGBPMFromARGB32PM<Format, false>,
742 storeARGBPMFromARGB32PM<Format, true>
752template<QPixelLayout::BPP BPP>
763template<QPixelLayout::BPP BPP>
774template<QPixelLayout::BPP BPP>
785template<
typename QRgba>
790 buffer[
i] = QRgba::fromArgb32(clut->
at(
src[
i])).premultiplied();
868template<
typename QRgba>
877template<
typename QRgba>
904template<
typename QRgba>
913template<
typename QRgba>
934 const unsigned short *
s =
reinterpret_cast<const unsigned short *
>(
src) +
index;
942template<
typename QRgba>
951template<
typename QRgba>
955 const unsigned short *
s =
reinterpret_cast<const unsigned short *
>(
src) +
index;
977template<
bool RGBA,
bool maskAlpha>
983 const __m128i amask = _mm_set1_epi32(0xff000000);
994 __m128i vs = _mm_loadu_si128((
const __m128i*)
src);
996 vs = _mm_or_si128(vs, amask);
998 __m128i
v1 = _mm_unpacklo_epi8(vs, vs);
999 __m128i
v2 = _mm_unpackhi_epi8(vs, vs);
1001 v1 = _mm_shufflelo_epi16(
v1, _MM_SHUFFLE(3, 0, 1, 2));
1002 v2 = _mm_shufflelo_epi16(
v2, _MM_SHUFFLE(3, 0, 1, 2));
1003 v1 = _mm_shufflehi_epi16(
v1, _MM_SHUFFLE(3, 0, 1, 2));
1004 v2 = _mm_shufflehi_epi16(
v2, _MM_SHUFFLE(3, 0, 1, 2));
1006 _mm_store_si128((__m128i*)(
buffer),
v1);
1008 _mm_store_si128((__m128i*)(
buffer),
v2);
1022template<QtPixelOrder PixelOrder>
1025 const __m128i gmask = _mm_set1_epi32(0x000ffc00);
1026 const __m128i cmask = _mm_set1_epi32(0x000003ff);
1028 __m128i vr, vg, vb, va;
1030 *dest++ = qConvertRgb64ToRgb30<PixelOrder>(*
buffer++);
1033 for (;
i <
count-15;
i += 16) {
1036 __m128i vOr = _mm_set1_epi32(0);
1037 __m128i vAnd = _mm_set1_epi32(0xffffffff);
1038 for (
int j = 0;
j < 16;
j += 2) {
1039 __m128i vs = _mm_load_si128((
const __m128i*)(
buffer +
j));
1040 vOr = _mm_or_si128(vOr, vs);
1041 vAnd = _mm_and_si128(vAnd, vs);
1043 const quint16 orAlpha = ((
uint)_mm_extract_epi16(vOr, 3)) | ((
uint)_mm_extract_epi16(vOr, 7));
1044 const quint16 andAlpha = ((
uint)_mm_extract_epi16(vAnd, 3)) & ((
uint)_mm_extract_epi16(vAnd, 7));
1046 if (andAlpha == 0xffff) {
1047 for (
int j = 0;
j < 16;
j += 2) {
1048 __m128i vs = _mm_load_si128((
const __m128i*)
buffer);
1050 vr = _mm_srli_epi64(vs, 6);
1051 vg = _mm_srli_epi64(vs, 16 + 6 - 10);
1052 vb = _mm_srli_epi64(vs, 32 + 6);
1053 vr = _mm_and_si128(vr, cmask);
1054 vg = _mm_and_si128(vg, gmask);
1055 vb = _mm_and_si128(vb, cmask);
1056 va = _mm_srli_epi64(vs, 48 + 14);
1058 vr = _mm_slli_epi32(vr, 20);
1060 vb = _mm_slli_epi32(vb, 20);
1061 va = _mm_slli_epi32(va, 30);
1062 __m128i vd = _mm_or_si128(_mm_or_si128(vr, vg), _mm_or_si128(vb, va));
1063 vd = _mm_shuffle_epi32(vd, _MM_SHUFFLE(3, 1, 2, 0));
1064 _mm_storel_epi64((__m128i*)dest, vd);
1067 }
else if (orAlpha == 0) {
1068 for (
int j = 0;
j < 16; ++
j) {
1073 for (
int j = 0;
j < 16; ++
j)
1074 *dest++ = qConvertRgb64ToRgb30<PixelOrder>(*
buffer++);
1079 *dest++ = qConvertRgb64ToRgb30<PixelOrder>(*
buffer++);
1081#elif defined(__ARM_NEON__)
1082template<
bool RGBA,
bool maskAlpha>
1088 const uint32x4_t amask = vdupq_n_u32(0xff000000);
1089#if defined(Q_PROCESSOR_ARM_64)
1090 const uint8x16_t rgbaMask = { 2, 1, 0, 3, 6, 5, 4, 7, 10, 9, 8, 11, 14, 13, 12, 15};
1092 const uint8x8_t rgbaMask = { 2, 1, 0, 3, 6, 5, 4, 7 };
1096 uint32x4_t vs32 = vld1q_u32(
src);
1099 vs32 = vorrq_u32(vs32, amask);
1100 uint8x16_t vs8 = vreinterpretq_u8_u32(vs32);
1102#if defined(Q_PROCESSOR_ARM_64)
1103 vs8 = vqtbl1q_u8(vs8, rgbaMask);
1106 const uint8x8_t vlo = vtbl1_u8(vget_low_u8(vs8), rgbaMask);
1107 const uint8x8_t vhi = vtbl1_u8(vget_high_u8(vs8), rgbaMask);
1108 vs8 = vcombine_u8(vlo, vhi);
1111 uint8x16x2_t
v = vzipq_u8(vs8, vs8);
1113 vst1q_u16((uint16_t *)
buffer, vreinterpretq_u16_u8(
v.val[0]));
1115 vst1q_u16((uint16_t *)
buffer, vreinterpretq_u16_u8(
v.val[1]));
1134 qConvertARGB32PMToRGBA64PM_sse2<false, true>(
buffer,
src,
count);
1135#elif defined(__ARM_NEON__)
1136 qConvertARGB32PMToRGBA64PM_neon<false, true>(
buffer,
src,
count);
1168 qConvertARGB32PMToRGBA64PM_sse2<false, false>(
buffer,
src,
count);
1169#elif defined(__ARM_NEON__)
1170 qConvertARGB32PMToRGBA64PM_neon<false, false>(
buffer,
src,
count);
1190 __m128i vs = _mm_loadl_epi64((
const __m128i *)(
s +
i));
1191 __m128i va = _mm_shufflelo_epi16(vs, _MM_SHUFFLE(3, 3, 3, 3));
1193 _mm_storel_epi64((__m128i *)(
buffer +
i), vs);
1220 qConvertARGB32PMToRGBA64PM_sse2<true, false>(
buffer,
src,
count);
1221#elif defined(__ARM_NEON__)
1222 qConvertARGB32PMToRGBA64PM_neon<true, false>(
buffer,
src,
count);
1257template<QtPixelOrder PixelOrder>
1264template<QtPixelOrder PixelOrder>
1275 short a10 = (
c >> 30) * 0x155;
1276 short r10 = ((
c >> 20) & 0x3ff);
1277 short g10 = ((
c >> 10) & 0x3ff);
1278 short b10 = (
c & 0x3ff);
1280 std::swap(r10, b10);
1281 short a8 = (a10 + ((d10 - a10) >> 8)) >> 2;
1282 short r8 = (r10 + ((d10 - r10) >> 8)) >> 2;
1283 short g8 = (g10 + ((d10 - g10) >> 8)) >> 2;
1284 short b8 = (b10 + ((d10 - b10) >> 8)) >> 2;
1292template<QtPixelOrder PixelOrder>
1298 const __m128i rmask = _mm_set1_epi32(0x3ff00000);
1299 const __m128i gmask = _mm_set1_epi32(0x000ffc00);
1300 const __m128i bmask = _mm_set1_epi32(0x000003ff);
1301 const __m128i afactor = _mm_set1_epi16(0x5555);
1305 *
buffer++ = qConvertA2rgb30ToRgb64<PixelOrder>(*
src++);
1308 __m128i vs = _mm_loadu_si128((
const __m128i*)
src);
1310 __m128i va = _mm_srli_epi32(vs, 30);
1311 __m128i vr = _mm_and_si128(vs, rmask);
1312 __m128i vb = _mm_and_si128(vs, bmask);
1313 __m128i vg = _mm_and_si128(vs, gmask);
1314 va = _mm_mullo_epi16(va, afactor);
1315 vr = _mm_or_si128(_mm_srli_epi32(vr, 14), _mm_srli_epi32(vr, 24));
1316 vg = _mm_or_si128(_mm_srli_epi32(vg, 4), _mm_srli_epi32(vg, 14));
1317 vb = _mm_or_si128(_mm_slli_epi32(vb, 6), _mm_srli_epi32(vb, 4));
1320 vrb = _mm_or_si128(vr, _mm_slli_si128(vb, 2));
1322 vrb = _mm_or_si128(vb, _mm_slli_si128(vr, 2));
1323 __m128i vga = _mm_or_si128(vg, _mm_slli_si128(va, 2));
1324 _mm_store_si128((__m128i*)(
buffer), _mm_unpacklo_epi16(vrb, vga));
1326 _mm_store_si128((__m128i*)(
buffer), _mm_unpackhi_epi16(vrb, vga));
1331 *
buffer++ = qConvertA2rgb30ToRgb64<PixelOrder>(*
src++);
1335template<QtPixelOrder PixelOrder>
1340 qConvertA2RGB30PMToRGBA64PM_sse2<PixelOrder>(
buffer,
src,
count);
1343 buffer[
i] = qConvertA2rgb30ToRgb64<PixelOrder>(
src[
i]);
1348template<QtPixelOrder PixelOrder>
1352 return convertA2RGB30PMToRGBA64PM<PixelOrder>(
buffer,
reinterpret_cast<const uint *
>(
src) +
index,
count,
nullptr,
nullptr);
1360 float alpha = (
rgb >> 30) * (1.f/3.f);
1361 float blue = ((
rgb >> 20) & 0x3ff) * (1.f/1023.f);
1362 float green = ((
rgb >> 10) & 0x3ff) * (1.f/1023.f);
1363 float red = (
rgb & 0x3ff) * (1.f/1023.f);
1370 float alpha = (
rgb >> 30) * (1.f/3.f);
1371 float red = ((
rgb >> 20) & 0x3ff) * (1.f/1023.f);
1372 float green = ((
rgb >> 10) & 0x3ff) * (1.f/1023.f);
1373 float blue = (
rgb & 0x3ff) * (1.f/1023.f);
1377template<QtPixelOrder PixelOrder>
1382 buffer[
i] = qConvertA2rgb30ToRgbaFP<PixelOrder>(
src[
i]);
1386template<QtPixelOrder PixelOrder>
1390 return convertA2RGB30PMToRGBA32F<PixelOrder>(
buffer,
reinterpret_cast<const uint *
>(
src) +
index,
count,
nullptr,
nullptr);
1393template<QtPixelOrder PixelOrder>
1401template<QtPixelOrder PixelOrder>
1409template<QtPixelOrder PixelOrder>
1422 if (((uintptr_t)
dst & 0x7) &&
count > 0) {
1429 const __m128i vhalf = _mm_set1_epi32(0x80);
1430 const __m128i vzero = _mm_setzero_si128();
1432 __m128i vs = _mm_loadu_si128((
const __m128i*)
src);
1435 vs = _mm_shufflelo_epi16(vs, _MM_SHUFFLE(3, 0, 1, 2));
1436 vs = _mm_shufflehi_epi16(vs, _MM_SHUFFLE(3, 0, 1, 2));
1438 __m128i
v1 = _mm_unpacklo_epi16(vs, vzero);
1439 __m128i
v2 = _mm_unpackhi_epi16(vs, vzero);
1440 v1 = _mm_add_epi32(
v1, vhalf);
1441 v2 = _mm_add_epi32(
v2, vhalf);
1442 v1 = _mm_sub_epi32(
v1, _mm_srli_epi32(
v1, 8));
1443 v2 = _mm_sub_epi32(
v2, _mm_srli_epi32(
v2, 8));
1444 v1 = _mm_srli_epi32(
v1, 8);
1445 v2 = _mm_srli_epi32(
v2, 8);
1446 v1 = _mm_packs_epi32(
v1,
v2);
1447 v1 = _mm_packus_epi16(
v1, vzero);
1448 _mm_storel_epi64((__m128i*)(
dst),
v1);
1487 unsigned short *
d =
reinterpret_cast<unsigned short *
>(dest) +
index;
1495 unsigned short *
d =
reinterpret_cast<unsigned short *
>(dest) +
index;
1534 d[
i].setAlpha(65535);
1663 {
false,
false,
QPixelLayout::BPPNone,
nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
nullptr },
1666 fetchIndexedToARGB32PM<QPixelLayout::BPP1MSB>, fetchIndexedToRGBA64PM<QPixelLayout::BPP1MSB>,
1670 fetchIndexedToARGB32PM<QPixelLayout::BPP1LSB>, fetchIndexedToRGBA64PM<QPixelLayout::BPP1LSB>,
1674 fetchIndexedToARGB32PM<QPixelLayout::BPP8>, fetchIndexedToRGBA64PM<QPixelLayout::BPP8>,
1684 pixelLayoutRGB<QImage::Format_RGB16>(),
1685 pixelLayoutARGBPM<QImage::Format_ARGB8565_Premultiplied>(),
1686 pixelLayoutRGB<QImage::Format_RGB666>(),
1687 pixelLayoutARGBPM<QImage::Format_ARGB6666_Premultiplied>(),
1688 pixelLayoutRGB<QImage::Format_RGB555>(),
1689 pixelLayoutARGBPM<QImage::Format_ARGB8555_Premultiplied>(),
1690 pixelLayoutRGB<QImage::Format_RGB888>(),
1691 pixelLayoutRGB<QImage::Format_RGB444>(),
1692 pixelLayoutARGBPM<QImage::Format_ARGB4444_Premultiplied>(),
1700 convertA2RGB30PMToARGB32PM<PixelOrderBGR>,
1701 convertA2RGB30PMToRGBA64PM<PixelOrderBGR>,
1702 fetchA2RGB30PMToARGB32PM<PixelOrderBGR>,
1703 fetchA2RGB30PMToRGBA64PM<PixelOrderBGR>,
1704 storeRGB30FromARGB32PM<PixelOrderBGR>,
1705 storeRGB30FromRGB32<PixelOrderBGR>
1708 convertA2RGB30PMToARGB32PM<PixelOrderBGR>,
1709 convertA2RGB30PMToRGBA64PM<PixelOrderBGR>,
1710 fetchA2RGB30PMToARGB32PM<PixelOrderBGR>,
1711 fetchA2RGB30PMToRGBA64PM<PixelOrderBGR>,
1712 storeA2RGB30PMFromARGB32PM<PixelOrderBGR>,
1713 storeRGB30FromRGB32<PixelOrderBGR>
1716 convertA2RGB30PMToARGB32PM<PixelOrderRGB>,
1717 convertA2RGB30PMToRGBA64PM<PixelOrderRGB>,
1718 fetchA2RGB30PMToARGB32PM<PixelOrderRGB>,
1719 fetchA2RGB30PMToRGBA64PM<PixelOrderRGB>,
1720 storeRGB30FromARGB32PM<PixelOrderRGB>,
1721 storeRGB30FromRGB32<PixelOrderRGB>
1724 convertA2RGB30PMToARGB32PM<PixelOrderRGB>,
1725 convertA2RGB30PMToRGBA64PM<PixelOrderRGB>,
1726 fetchA2RGB30PMToARGB32PM<PixelOrderRGB>,
1727 fetchA2RGB30PMToRGBA64PM<PixelOrderRGB>,
1728 storeA2RGB30PMFromARGB32PM<PixelOrderRGB>,
1729 storeRGB30FromRGB32<PixelOrderRGB>
1755 pixelLayoutRGB<QImage::Format_BGR888>(),
1791template<QImage::Format format>
1816template<QtPixelOrder PixelOrder>
1822 qConvertRGBA64PMToA2RGB30PM_sse2<PixelOrder>(
d,
src,
count);
1825 d[
i] = qConvertRgb64ToRgb30<PixelOrder>(
src[
i]);
1834 d[
i] =
src[
i].unpremultiplied();
1835 d[
i].setAlpha(65535);
1844 d[
i] =
src[
i].unpremultiplied();
1922 storeGenericFromRGBA64PM<QImage::Format_RGB32>,
1924 storeGenericFromRGBA64PM<QImage::Format_ARGB32_Premultiplied>,
1925 storeGenericFromRGBA64PM<QImage::Format_RGB16>,
1926 storeGenericFromRGBA64PM<QImage::Format_ARGB8565_Premultiplied>,
1927 storeGenericFromRGBA64PM<QImage::Format_RGB666>,
1928 storeGenericFromRGBA64PM<QImage::Format_ARGB6666_Premultiplied>,
1929 storeGenericFromRGBA64PM<QImage::Format_RGB555>,
1930 storeGenericFromRGBA64PM<QImage::Format_ARGB8555_Premultiplied>,
1931 storeGenericFromRGBA64PM<QImage::Format_RGB888>,
1932 storeGenericFromRGBA64PM<QImage::Format_RGB444>,
1933 storeGenericFromRGBA64PM<QImage::Format_ARGB4444_Premultiplied>,
1934 storeGenericFromRGBA64PM<QImage::Format_RGBX8888>,
1936 storeGenericFromRGBA64PM<QImage::Format_RGBA8888_Premultiplied>,
1937 storeRGB30FromRGBA64PM<PixelOrderBGR>,
1938 storeRGB30FromRGBA64PM<PixelOrderBGR>,
1939 storeRGB30FromRGBA64PM<PixelOrderRGB>,
1940 storeRGB30FromRGBA64PM<PixelOrderRGB>,
1941 storeGenericFromRGBA64PM<QImage::Format_Alpha8>,
1942 storeGenericFromRGBA64PM<QImage::Format_Grayscale8>,
1947 storeGenericFromRGBA64PM<QImage::Format_BGR888>,
1956#if QT_CONFIG(raster_fp)
1963template<QImage::Format format>
1990template<QtPixelOrder PixelOrder>
1995 QRgba64 s = qConvertA2rgb30ToRgb64<PixelOrder>(
src[
i]);
2003 convertIndexedTo<QRgbaFloat32>,
2004 convertIndexedTo<QRgbaFloat32>,
2005 convertIndexedTo<QRgbaFloat32>,
2006 convertGenericToRGBA32F<QImage::Format_RGB32>,
2007 convertARGB32ToRGBA32F,
2008 convertGenericToRGBA32F<QImage::Format_ARGB32_Premultiplied>,
2009 convertGenericToRGBA32F<QImage::Format_RGB16>,
2010 convertGenericToRGBA32F<QImage::Format_ARGB8565_Premultiplied>,
2011 convertGenericToRGBA32F<QImage::Format_RGB666>,
2012 convertGenericToRGBA32F<QImage::Format_ARGB6666_Premultiplied>,
2013 convertGenericToRGBA32F<QImage::Format_RGB555>,
2014 convertGenericToRGBA32F<QImage::Format_ARGB8555_Premultiplied>,
2015 convertGenericToRGBA32F<QImage::Format_RGB888>,
2016 convertGenericToRGBA32F<QImage::Format_RGB444>,
2017 convertGenericToRGBA32F<QImage::Format_ARGB4444_Premultiplied>,
2018 convertGenericToRGBA32F<QImage::Format_RGBX8888>,
2019 convertRGBA8888ToRGBA32F,
2020 convertGenericToRGBA32F<QImage::Format_RGBA8888_Premultiplied>,
2021 convertRGB30ToRGBA32F<PixelOrderBGR>,
2022 convertRGB30ToRGBA32F<PixelOrderBGR>,
2023 convertRGB30ToRGBA32F<PixelOrderRGB>,
2024 convertRGB30ToRGBA32F<PixelOrderRGB>,
2025 convertAlpha8To<QRgbaFloat32>,
2026 convertGrayscale8To<QRgbaFloat32>,
2030 convertGrayscale16To<QRgbaFloat32>,
2031 convertGenericToRGBA32F<QImage::Format_BGR888>,
2106 fetchIndexedToRGBA32F<QPixelLayout::BPP1MSB>,
2107 fetchIndexedToRGBA32F<QPixelLayout::BPP1LSB>,
2108 fetchIndexedToRGBA32F<QPixelLayout::BPP8>,
2109 fetchRGBToRGB32F<QImage::Format_RGB32>,
2110 fetchARGBToRGBA32F<QImage::Format_ARGB32>,
2111 fetchARGBPMToRGBA32F<QImage::Format_ARGB32_Premultiplied>,
2112 fetchRGBToRGB32F<QImage::Format_RGB16>,
2113 fetchARGBToRGBA32F<QImage::Format_ARGB8565_Premultiplied>,
2114 fetchRGBToRGB32F<QImage::Format_RGB666>,
2115 fetchARGBToRGBA32F<QImage::Format_ARGB6666_Premultiplied>,
2116 fetchRGBToRGB32F<QImage::Format_RGB555>,
2117 fetchARGBToRGBA32F<QImage::Format_ARGB8555_Premultiplied>,
2118 fetchRGBToRGB32F<QImage::Format_RGB888>,
2119 fetchRGBToRGB32F<QImage::Format_RGB444>,
2120 fetchARGBToRGBA32F<QImage::Format_ARGB4444_Premultiplied>,
2121 fetchRGBToRGB32F<QImage::Format_RGBX8888>,
2122 fetchARGBToRGBA32F<QImage::Format_RGBA8888>,
2123 fetchARGBPMToRGBA32F<QImage::Format_RGBA8888_Premultiplied>,
2124 fetchRGB30ToRGBA32F<PixelOrderBGR>,
2125 fetchRGB30ToRGBA32F<PixelOrderBGR>,
2126 fetchRGB30ToRGBA32F<PixelOrderRGB>,
2127 fetchRGB30ToRGBA32F<PixelOrderRGB>,
2128 fetchAlpha8To<QRgbaFloat32>,
2129 fetchGrayscale8To<QRgbaFloat32>,
2130 fetchRGBX64ToRGBA32F,
2131 fetchRGBA64ToRGBA32F,
2132 fetchRGBA64PMToRGBA32F,
2133 fetchGrayscale16To<QRgbaFloat32>,
2134 fetchRGBToRGB32F<QImage::Format_BGR888>,
2136 fetchRGBA16FToRGBA32F,
2139 fetchRGBA32FToRGBA32F,
2149template<QImage::Format format>
2163 d[
i] =
src[
i].unpremultiplied().toArgb32();
2174template<QtPixelOrder PixelOrder>
2180 const auto s =
src[
i];
2218 auto s =
src[
i].unpremultiplied();
2219 d[
i] =
qGray(
s.red16(),
s.green16(),
s.blue16());
2266 d[
i] =
src[
i].unpremultiplied();
2284 storeGenericFromRGBA32F<QImage::Format_RGB32>,
2285 storeARGB32FromRGBA32F,
2286 storeGenericFromRGBA32F<QImage::Format_ARGB32_Premultiplied>,
2287 storeGenericFromRGBA32F<QImage::Format_RGB16>,
2288 storeGenericFromRGBA32F<QImage::Format_ARGB8565_Premultiplied>,
2289 storeGenericFromRGBA32F<QImage::Format_RGB666>,
2290 storeGenericFromRGBA32F<QImage::Format_ARGB6666_Premultiplied>,
2291 storeGenericFromRGBA32F<QImage::Format_RGB555>,
2292 storeGenericFromRGBA32F<QImage::Format_ARGB8555_Premultiplied>,
2293 storeGenericFromRGBA32F<QImage::Format_RGB888>,
2294 storeGenericFromRGBA32F<QImage::Format_RGB444>,
2295 storeGenericFromRGBA32F<QImage::Format_ARGB4444_Premultiplied>,
2296 storeGenericFromRGBA32F<QImage::Format_RGBX8888>,
2297 storeRGBA8888FromRGBA32F,
2298 storeGenericFromRGBA32F<QImage::Format_RGBA8888_Premultiplied>,
2299 storeRGB30FromRGBA32F<PixelOrderBGR>,
2300 storeRGB30FromRGBA32F<PixelOrderBGR>,
2301 storeRGB30FromRGBA32F<PixelOrderRGB>,
2302 storeRGB30FromRGBA32F<PixelOrderRGB>,
2303 storeGenericFromRGBA32F<QImage::Format_Alpha8>,
2304 storeGenericFromRGBA32F<QImage::Format_Grayscale8>,
2305 storeRGBX64FromRGBA32F,
2306 storeRGBA64FromRGBA32F,
2307 storeRGBA64PMFromRGBA32F,
2308 storeGray16FromRGBA32F,
2309 storeGenericFromRGBA32F<QImage::Format_BGR888>,
2310 storeRGBX16FFromRGBA32F,
2311 storeRGBA16FFromRGBA32F,
2312 storeRGBA16FPMFromRGBA32F,
2313 storeRGBX32FFromRGBA32F,
2314 storeRGBA32FFromRGBA32F,
2315 storeRGBA32FPMFromRGBA32F,
const_reference at(qsizetype i) const noexcept
constexpr QRgba64 unpremultiplied() const
static constexpr QRgba64 fromRgba64(quint64 c)
constexpr uint toArgb32() const
static constexpr QRgba64 fromArgb32(uint rgb)
constexpr QRgba64 premultiplied() const
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
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 >()
ConvertAndStorePixelsFunc64 qStoreFromRGBA64PM[QImage::NImageFormats]
constexpr uint greenWidth< QImage::Format_ARGB32_Premultiplied >()
constexpr uint blueWidth< QImage::Format_BGR888 >()
QPixelLayout qPixelLayouts[QImage::NImageFormats]
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 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 > *)
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()
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)
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 >()
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 *)
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)
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 >()
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 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