42 #ifndef QDRAWHELPER_P_H 43 #define QDRAWHELPER_P_H 56 #include "QtCore/qglobal.h" 57 #include "QtGui/qcolor.h" 58 #include "QtGui/qpainter.h" 59 #include "QtGui/qimage.h" 60 #ifndef QT_FT_BEGIN_HEADER 61 #define QT_FT_BEGIN_HEADER 62 #define QT_FT_END_HEADER 64 #include "private/qrasterdefs_p.h" 65 #include <private/qsimd_p.h> 66 #include <private/qmath_p.h> 69 #include "QtGui/qscreen_qws.h" 74 #if defined(Q_CC_MSVC) && _MSCVER <= 1300 && !defined(Q_CC_INTEL) 75 #define Q_STATIC_TEMPLATE_SPECIALIZATION static 77 #define Q_STATIC_TEMPLATE_SPECIALIZATION 80 #if defined(Q_CC_RVCT) 82 # define Q_STATIC_TEMPLATE_FUNCTION 83 # define Q_STATIC_INLINE_FUNCTION static __forceinline 85 # define Q_STATIC_TEMPLATE_FUNCTION static 86 # define Q_STATIC_INLINE_FUNCTION static inline 117 int mapWidth,
int mapHeight,
int mapStride);
122 int mapWidth,
int mapHeight,
int mapStride,
128 int mapWidth,
int mapHeight,
int mapStride,
132 int x,
int y,
int width,
int height,
136 const uchar *src,
int spbl,
141 const uchar *src,
int spbl,
int srch,
144 const QRect &clipRect,
148 const uchar *src,
int spbl,
151 const QRect &clipRect,
174 #if defined(Q_WS_QWS) && !defined(QT_NO_RASTERCALLBACKS) 275 #define GRADIENT_STOPTABLE_SIZE 256 276 #define GRADIENT_STOPTABLE_SIZE_SHIFT 8 278 #define GRADIENT_STOPTABLE_SIZE 1024 279 #define GRADIENT_STOPTABLE_SIZE_SHIFT 10 348 void setupMatrix(
const QTransform &matrix,
int bilinear);
350 void adjustSpanMethods();
362 ipos = ipos < 0 ? limit + ipos : ipos;
386 return (b * b) - (4 * a *
c);
389 template <
class RadialFetchFunc>
391 int y,
int x,
int length)
400 const uint *b = buffer;
405 bool affine = !data->
m13 && !data->
m23;
419 const qreal b_delta_b = 2 * b * delta_b;
420 const qreal delta_b_delta_b = 2 * delta_b * delta_b;
422 const qreal bb = b * b;
423 const qreal delta_bb = delta_b * delta_b;
428 const qreal rxrxryry = rx * rx + ry * ry;
429 const qreal delta_rxrxryry = delta_rx * delta_rx + delta_ry * delta_ry;
430 const qreal rx_plus_ry = 2*(rx * delta_rx + ry * delta_ry);
431 const qreal delta_rx_plus_ry = 2 * delta_rxrxryry;
436 qreal delta_det = (b_delta_b + delta_bb + 4 * op->
radial.
a * (rx_plus_ry + delta_rxrxryry)) * inv_a;
437 const qreal delta_delta_det = (delta_b_delta_b + 4 * op->
radial.
a * delta_rx_plus_ry) * inv_a;
439 RadialFetchFunc::fetch(buffer, end, op, data, det, delta_det, delta_delta_det, b, delta_b);
444 while (buffer < end) {
448 qreal invRw = 1 / rw;
481 template <
class Simd>
488 typename Simd::Vect_buffer_f det_vec;
489 typename Simd::Vect_buffer_f delta_det4_vec;
490 typename Simd::Vect_buffer_f b_vec;
492 for (
int i = 0; i < 4; ++i) {
494 delta_det4_vec.f[i] = 4 * delta_det;
498 delta_det += delta_delta_det;
502 const typename Simd::Float32x4 v_delta_delta_det16 = Simd::v_dup(16 * delta_delta_det);
503 const typename Simd::Float32x4 v_delta_delta_det6 = Simd::v_dup(6 * delta_delta_det);
504 const typename Simd::Float32x4 v_delta_b4 = Simd::v_dup(4 * delta_b);
507 const typename Simd::Float32x4 v_dr = Simd::v_dup(op->
radial.
dr);
509 const typename Simd::Float32x4 v_min = Simd::v_dup(0.0f);
511 const typename Simd::Float32x4 v_half = Simd::v_dup(0.5f);
520 #define FETCH_RADIAL_LOOP_PROLOGUE \ 521 while (buffer < end) { \ 522 typename Simd::Vect_buffer_i v_buffer_mask; \ 523 v_buffer_mask.v = Simd::v_greaterOrEqual(det_vec.v, v_min); \ 524 const typename Simd::Float32x4 v_index_local = Simd::v_sub(Simd::v_sqrt(Simd::v_max(v_min, det_vec.v)), b_vec.v); \ 525 const typename Simd::Float32x4 v_index = Simd::v_add(Simd::v_mul(v_index_local, v_max), v_half); \ 526 v_buffer_mask.v = Simd::v_and(v_buffer_mask.v, Simd::v_greaterOrEqual(Simd::v_add(v_r0, Simd::v_mul(v_dr, v_index_local)), v_min)); \ 527 typename Simd::Vect_buffer_i index_vec; 528 #define FETCH_RADIAL_LOOP_CLAMP_REPEAT \ 529 index_vec.v = Simd::v_and(v_repeat_mask, Simd::v_toInt(v_index)); 530 #define FETCH_RADIAL_LOOP_CLAMP_REFLECT \ 531 const typename Simd::Int32x4 v_index_i = Simd::v_and(v_reflect_mask, Simd::v_toInt(v_index)); \ 532 const typename Simd::Int32x4 v_index_i_inv = Simd::v_sub(v_reflect_limit, v_index_i); \ 533 index_vec.v = Simd::v_min_16(v_index_i, v_index_i_inv); 534 #define FETCH_RADIAL_LOOP_CLAMP_PAD \ 535 index_vec.v = Simd::v_toInt(Simd::v_min(v_max, Simd::v_max(v_min, v_index))); 536 #define FETCH_RADIAL_LOOP_EPILOGUE \ 537 det_vec.v = Simd::v_add(Simd::v_add(det_vec.v, delta_det4_vec.v), v_delta_delta_det6); \ 538 delta_det4_vec.v = Simd::v_add(delta_det4_vec.v, v_delta_delta_det16); \ 539 b_vec.v = Simd::v_add(b_vec.v, v_delta_b4); \ 540 for (int i = 0; i < 4; ++i) \ 541 *buffer++ = (extended_mask | v_buffer_mask.i[i]) & data->gradient.colorTable[index_vec.i[i]]; \ 544 #define FETCH_RADIAL_LOOP(FETCH_RADIAL_LOOP_CLAMP) \ 545 FETCH_RADIAL_LOOP_PROLOGUE \ 546 FETCH_RADIAL_LOOP_CLAMP \ 547 FETCH_RADIAL_LOOP_EPILOGUE 565 #if defined(Q_CC_RVCT) 570 uint t = (x & 0xff00ff) * a + (y & 0xff00ff) * b;
571 t = (t + ((t >> 8) & 0xff00ff) + 0x800080) >> 8;
574 x = ((x >> 8) & 0xff00ff) * a + ((y >> 8) & 0xff00ff) * b;
575 x = (x + ((x >> 8) & 0xff00ff) + 0x800080);
580 #if defined(Q_CC_RVCT) 584 #if QT_POINTER_SIZE == 8 // 64-bit versions 588 t += (((
quint64(y)) | ((
quint64(y)) << 24)) & 0x00ff00ff00ff00ff) * b;
590 t &= 0x00ff00ff00ff00ff;
596 t = (t + ((t >> 8) & 0xff00ff00ff00ff) + 0x80008000800080) >> 8;
597 t &= 0x00ff00ff00ff00ff;
604 t = (t + ((t >> 8) & 0xff00ff00ff00ff) + 0x80008000800080) >> 8;
605 t &= 0x000000ff00ff00ff;
606 return (
uint(t)) | (
uint(t >> 24)) | (a << 24);
609 #else // 32-bit versions 612 uint t = (x & 0xff00ff) * a + (y & 0xff00ff) * b;
616 x = ((x >> 8) & 0xff00ff) * a + ((y >> 8) & 0xff00ff) * b;
622 #if defined(Q_CC_RVCT) 627 uint t = (x & 0xff00ff) * a;
628 t = (t + ((t >> 8) & 0xff00ff) + 0x800080) >> 8;
631 x = ((x >> 8) & 0xff00ff) *
a;
632 x = (x + ((x >> 8) & 0xff00ff) + 0x800080);
637 #if defined(Q_CC_RVCT) 643 uint t = (x & 0xff00ff) * a;
644 t = (t + ((t >> 8) & 0xff00ff) + 0x800080) >> 8;
647 x = ((x >> 8) & 0xff) *
a;
648 x = (x + ((x >> 8) & 0xff) + 0x80);
658 uint t = (((x & 0x07e0)*a) >> 8) & 0x07e0;
659 t |= (((x & 0xf81f)*(a>>2)) >> 6) & 0xf81f;
664 uint t = (((x & 0xf81f07e0) >> 5)*
a) & 0xf81f07e0;
665 t |= (((x & 0x07e0f81f)*a) >> 5) & 0x07e0f81f;
669 #define INV_PREMUL(p) \ 670 (qAlpha(p) == 0 ? 0 : \ 672 | (((255*qRed(p))/ qAlpha(p)) << 16) \ 673 | (((255*qGreen(p)) / qAlpha(p)) << 8) \ 674 | ((255*qBlue(p)) / qAlpha(p)))) 676 template <
class DST,
class SRC>
688 const int r = (color & 0xf800);
689 const int g = (color & 0x07e0);
690 const int b = (color & 0x001f);
691 const int tr = (r >> 8) | (r >> 13);
692 const int tg = (g >> 3) | (g >> 9);
693 const int tb = (b << 3) | (b >> 2);
695 return qRgb(tr, tg, tb);
702 const int r =
qRed(color) << 8;
703 const int g =
qGreen(color) << 3;
704 const int b =
qBlue(color) >> 3;
706 return (r & 0xf800) | (g & 0x07e0)| (b & 0x001f);
718 return qt_colorConvert<quint16, quint32>(
data, 0);
760 inline operator quint32()
const;
761 inline operator quint16()
const;
776 inline quint32 rawValue()
const;
777 inline quint16 rawValue16()
const;
796 inline operator quint32()
const;
797 inline operator quint16()
const;
825 const int r =
qRed(v);
827 const int b =
qBlue(v);
828 data[1] = ((g << 3) & 0xe0) | (b >> 3);
829 data[2] = (r & 0xf8) | (g >> 5);
849 const int a =
data[0];
850 const int r = (rgb & 0xf800);
851 const int g = (rgb & 0x07e0);
852 const int b = (rgb & 0x001f);
853 const int tr =
qMin(a, (r >> 8) | (r >> 13));
854 const int tg =
qMin(a, (g >> 3) | (g >> 9));
855 const int tb =
qMin(a, (b << 3) | (b >> 2));
870 t.
data[1] = rgb & 0xff;
871 t.
data[2] = rgb >> 8;
881 const quint16 t = ((((x & 0x07e0) >> 5) *
a) & 0x07e0) |
882 ((((x & 0xf81f) * a) >> 5) & 0xf81f);
883 result.
data[1] = t & 0xff;
884 result.
data[2] = t >> 8;
912 const int r =
qRed(v) << 8;
913 const int g =
qGreen(v) << 3;
914 const int b =
qBlue(v) >> 3;
916 data = (r & 0xf800) | (g & 0x07e0)| (b & 0x001f);
926 const int r = (
data & 0xf800);
927 const int g = (
data & 0x07e0);
928 const int b = (
data & 0x001f);
929 const int tr = (r >> 8) | (r >> 13);
930 const int tg = (g >> 3) | (g >> 9);
931 const int tb = (b << 3) | (b >> 2);
932 return qRgb(tr, tg, tb);
950 result.
data = ((((
data & 0x07e0) >> 5) *
a) & 0x07e0) |
951 ((((
data & 0xf81f) * a) >> 5) & 0xf81f);
965 data = ((v & 0x001f) << 11) |
967 ((v & 0xf800) >> 11);
992 inline operator quint32()
const;
1004 inline quint32 rawValue()
const;
1022 const int r =
qRed(v) << 7;
1023 const int g =
qGreen(v) << 2;
1024 const int b =
qBlue(v) >> 3;
1026 data = (r & 0x7c00) | (g & 0x03e0) | (b & 0x001f);
1031 data = ((v >> 1) & (0x7c00 | 0x03e0)) |
1039 const int r = (
data & 0x7c00);
1040 const int g = (
data & 0x03e0);
1041 const int b = (
data & 0x001f);
1042 const int tr = (r >> 7) | (r >> 12);
1043 const int tg = (g >> 2) | (g >> 7);
1044 const int tb = (b << 3) | (b >> 2);
1046 return qRgb(tr, tg, tb);
1051 const int r = ((
data & 0x7c00) << 1) & 0xf800;
1052 const int g = (((
data & 0x03e0) << 1) | ((
data >> 4) & 0x0020)) & 0x07e0;
1053 const int b = (
data & 0x001f);
1093 t |= (((
data & 0x7c1f) * a) >> 5) & 0x7c1f;
1109 ((v.
data & 0x7c00) >> 10);
1125 const int r =
qRed(v);
1127 const int b =
qBlue(v);
1128 data[1] = ((g << 2) & 0xe0) | (b >> 3);
1129 data[2] = ((r >> 1) & 0x7c) | (g >> 6);
1136 const int r =
qRed(v);
1138 const int b =
qBlue(v);
1139 data[1] = ((g << 2) & 0xe0) | (b >> 3);
1140 data[2] = ((r >> 1) & 0x7c) | (g >> 6);
1160 const int r = (rgb & 0x7c00);
1161 const int g = (rgb & 0x03e0);
1162 const int b = (rgb & 0x001f);
1163 const int tr = (r >> 7) | (r >> 12);
1164 const int tg = (g >> 2) | (g >> 7);
1165 const int tb = (b << 3) | (b >> 2);
1188 t.
data[1] = rgb & 0xff;
1189 t.
data[2] = rgb >> 8;
1199 quint16 t = (((x & 0x3e0) * a) >> 5) & 0x03e0;
1200 t |= (((x & 0x7c1f) * a) >> 5) & 0x7c1f;
1201 result.
data[1] = t & 0xff;
1202 result.
data[2] = t >> 8;
1220 inline operator quint32 ()
const;
1222 inline quint8 alpha()
const;
1231 inline quint32 rawValue()
const;
1248 inline operator quint32 ()
const;
1277 const uint p = (b >> 2) | ((g >> 2) << 6) | ((r >> 2) << 12);
1293 const uchar g = (
data[1] << 4) | ((
data[0] & 0xc0) >> 4) | ((
data[1] & 0x0f) >> 2);
1295 return qRgb(r, g, b);
1304 r.
data[0] = t & 0xff;
1305 r.
data[1] = (t >> 8) & 0xff;
1306 r.
data[2] = (t >> 16) & 0xff;
1313 const quint32 t = ((((x & 0x03f03f) * a) >> 6) & 0x03f03f) |
1314 ((((x & 0x000fc0) * a) >> 6) & 0x000fc0);
1317 r.
data[0] = t & 0xff;
1318 r.
data[1] = (t >> 8) & 0xff;
1319 r.
data[2] = (t >> 16) & 0xff;
1336 const uint p = (a << 18) | (r << 12) | (g << 6) | b;
1362 return qRgba(r, g, b, a);
1371 r.
data[0] = t & 0xff;
1372 r.
data[1] = (t >> 8) & 0xff;
1373 r.
data[2] = (t >> 16) & 0xff;
1379 return (
data[2] & 0xfc) | (
data[2] >> 6);
1385 const quint32 t = ((((x & 0x03f03f) * a) >> 6) & 0x03f03f) |
1386 ((((x & 0xfc0fc0) * a) >> 6) & 0xfc0fc0);
1389 r.
data[0] = t & 0xff;
1390 r.
data[1] = (t >> 8) & 0xff;
1391 r.
data[2] = (t >> 16) & 0xff;
1415 inline operator quint32()
const;
1426 inline quint32 rawValue()
const;
1458 quint32 t = (x & 0xff00ff) * a;
1459 t = (t + ((t >> 8) & 0xff00ff) + 0x800080) >> 8;
1462 x = ((x >> 8) & 0xff00ff) *
a;
1463 x = (x + ((x >> 8) & 0xff00ff) + 0x800080);
1495 #ifdef QT_QWS_DEPTH_8 1501 uchar r = ((
qRed(color) & 0xf8) + 0x19) / 0x33;
1503 uchar b = ((
qBlue(color) &0xf8) + 0x19) / 0x33;
1505 return r*6*6 + g*6 + b;
1513 uchar r = (color & 0xf800) >> (11-3);
1514 uchar g = (color & 0x07c0) >> (6-3);
1515 uchar b = (color & 0x001f) << 3;
1517 uchar tr = (r + 0x19) / 0x33;
1518 uchar tg = (g + 0x19) / 0x33;
1519 uchar tb = (b + 0x19) / 0x33;
1521 return tr*6*6 + tg*6 + tb;
1524 #endif // QT_QWS_DEPTH_8 1569 uint p = (b >> 2) | ((g >> 2) << 6) | ((r >> 2) << 12);
1578 const uchar g = (
data[1] << 4) | ((
data[0] & 0xc0) >> 4) | ((
data[1] & 0x0f) >> 2);
1580 return qRgb(r, g, b);
1606 inline operator quint32()
const;
1607 inline operator quint8()
const;
1636 inline operator quint32()
const;
1637 inline operator quint8()
const;
1662 const int a =
qAlpha(v) << 8;
1663 const int r =
qRed(v) << 4;
1665 const int b =
qBlue(v) >> 4;
1667 data = a | r | g | b;
1677 const int a = (
data & 0xf000);
1678 const int r = (
data & 0x0f00);
1679 const int g = (
data & 0x00f0);
1680 const int b = (
data & 0x000f);
1681 const int ta = (a >> 8) | (a >> 12);
1682 const int tr = (r >> 4) | (r >> 8);
1683 const int tg = g | (g >> 4);
1684 const int tb = (b << 4) | b;
1686 return qRgba(tr, tg, tb, ta);
1692 return qt_colorConvert<quint8, quint32>(
operator quint32(), 0);
1704 quint16 t = (((
data & 0xf0f0) * a) >> 4) & 0xf0f0;
1705 t |= (((
data & 0x0f0f) * a) >> 4) & 0x0f0f;
1715 const int r =
qRed(v) << 4;
1717 const int b =
qBlue(v) >> 4;
1729 const int r = (
data & 0x0f00);
1730 const int g = (
data & 0x00f0);
1731 const int b = (
data & 0x000f);
1732 const int tr = (r >> 4) | (r >> 8);
1733 const int tg = g | (g >> 4);
1734 const int tb = (b << 4) | b;
1736 return qRgb(tr, tg, tb);
1742 return qt_colorConvert<quint8, quint32>(
operator quint32(), 0);
1754 quint16 t = (((
data & 0xf0f0) * a) >> 4) & 0xf0f0;
1755 t |= (((
data & 0x0f0f) * a) >> 4) & 0x0f0f;
1762 #ifdef QT_QWS_DEPTH_GENERIC 1769 static int len_green;
1770 static int len_blue;
1771 static int len_alpha;
1773 static int off_green;
1774 static int off_blue;
1775 static int off_alpha;
1778 template <
typename SRC>
1784 const int r =
qRed(color) >> (8 - qrgb::len_red);
1785 const int g =
qGreen(color) >> (8 - qrgb::len_green);
1786 const int b =
qBlue(color) >> (8 - qrgb::len_blue);
1787 const int a =
qAlpha(color) >> (8 - qrgb::len_alpha);
1788 const quint32 v = (r << qrgb::off_red)
1789 | (g << qrgb::off_green)
1790 | (b << qrgb::off_blue)
1791 | (a << qrgb::off_alpha);
1799 return qt_convertToRgb(qt_colorConvert<quint32, quint16>(color, 0));
1802 class qrgb_generic16
1805 inline qrgb_generic16(
quint32 color)
1807 const int r =
qRed(color) >> (8 - qrgb::len_red);
1808 const int g =
qGreen(color) >> (8 - qrgb::len_green);
1809 const int b =
qBlue(color) >> (8 - qrgb::len_blue);
1810 const int a =
qAlpha(color) >> (8 - qrgb::len_alpha);
1811 data = (r << qrgb::off_red)
1812 | (g << qrgb::off_green)
1813 | (b << qrgb::off_blue)
1814 | (a << qrgb::off_alpha);
1828 return qrgb_generic16(color);
1835 return qrgb_generic16(qt_colorConvert<quint32, quint16>(color, 0));
1838 #endif // QT_QWS_DEPTH_GENERIC 1841 void qt_memfill(T *dest, T value,
int count);
1857 memset(dest, color, count);
1866 int n = (count + 7) / 8;
1867 switch (count & 0x07)
1869 case 0:
do { *dest++ = value;
1870 case 7: *dest++ = value;
1871 case 6: *dest++ = value;
1872 case 5: *dest++ = value;
1873 case 4: *dest++ = value;
1874 case 3: *dest++ = value;
1875 case 2: *dest++ = value;
1876 case 1: *dest++ = value;
1883 int x,
int y,
int width,
int height,
int stride)
1885 char *
d =
reinterpret_cast<char*
>(dest + x) + y * stride;
1886 if (
uint(stride) == (width *
sizeof(T))) {
1887 qt_memfill(reinterpret_cast<T*>(d), value, width * height);
1889 for (
int j = 0; j < height; ++j) {
1890 dest =
reinterpret_cast<T*
>(
d);
1897 template <
class DST,
class SRC>
1900 if (
sizeof(DST) == 1) {
1903 const SRC color = *src++;
1904 const DST dstColor = qt_colorConvert<DST, SRC>(color, 0);
1905 while (--count && (*src == color || dstColor == qt_colorConvert<DST, SRC>(*src, 0))) {
1914 int n = (count + 7) / 8;
1915 switch (count & 0x07)
1917 case 0:
do { *dest++ = qt_colorConvert<DST, SRC>(*src++, 0);
1918 case 7: *dest++ = qt_colorConvert<DST, SRC>(*src++, 0);
1919 case 6: *dest++ = qt_colorConvert<DST, SRC>(*src++, 0);
1920 case 5: *dest++ = qt_colorConvert<DST, SRC>(*src++, 0);
1921 case 4: *dest++ = qt_colorConvert<DST, SRC>(*src++, 0);
1922 case 3: *dest++ = qt_colorConvert<DST, SRC>(*src++, 0);
1923 case 2: *dest++ = qt_colorConvert<DST, SRC>(*src++, 0);
1924 case 1: *dest++ = qt_colorConvert<DST, SRC>(*src++, 0);
1930 #define QT_TRIVIAL_MEMCONVERT_IMPL(T) \ 1932 inline void qt_memconvert(T *dest, const T *src, int count) \ 1934 memcpy(dest, src, count * sizeof(T)); \ 1947 #undef QT_TRIVIAL_MEMCONVERT_IMPL 1949 #if Q_BYTE_ORDER == Q_LITTLE_ENDIAN 1955 case 2: *dest++ =
qrgb666(*src++);
1956 case 1: *dest =
qrgb666(*src);
1961 const int align = (
quintptr(dest) & 3);
1963 case 1: *dest++ =
qrgb666(*src++); --count;
1964 case 2: *dest++ =
qrgb666(*src++); --count;
1965 case 3: *dest++ =
qrgb666(*src++); --count;
1969 int sourceCount = count >> 2;
1970 while (sourceCount--) {
1971 dest32[0] = ((src[1] & 0x00000c00) << 20)
1972 | ((src[1] & 0x000000fc) << 22)
1973 | ((src[0] & 0x00fc0000) >> 6)
1974 | ((src[0] & 0x0000fc00) >> 4)
1975 | ((src[0] & 0x000000fc) >> 2);
1976 dest32[1] = ((src[2] & 0x003c0000) << 10)
1977 | ((src[2] & 0x0000fc00) << 12)
1978 | ((src[2] & 0x000000fc) << 14)
1979 | ((src[1] & 0x00fc0000) >> 14)
1980 | ((src[1] & 0x0000f000) >> 12);
1981 dest32[2] = ((src[3] & 0x00fc0000) << 2)
1982 | ((src[3] & 0x0000fc00) << 4)
1983 | ((src[3] & 0x000000fc) << 6)
1984 | ((src[2] & 0x00c00000) >> 22);
1989 dest =
reinterpret_cast<qrgb666*
>(dest32);
1990 switch (count & 3) {
1991 case 3: *dest++ =
qrgb666(*src++);
1992 case 2: *dest++ =
qrgb666(*src++);
1993 case 1: *dest =
qrgb666(*src);
1996 #endif // Q_BYTE_ORDER 2000 int x,
int y,
int width,
int height,
2001 int dstStride,
int srcStride)
2003 char *
d = (
char*)(dest + x) + y * dstStride;
2004 const char *s = (
char*)(src);
2005 for (
int i = 0; i < height; ++i) {
2006 ::memcpy(d, s, width *
sizeof(T));
2012 template <
class DST,
class SRC>
2014 int x,
int y,
int width,
int height,
2015 int dstStride,
int srcStride)
2017 char *
d = (
char*)(dest + x) + y * dstStride;
2018 const char *s = (
char*)(src);
2019 for (
int i = 0; i < height; ++i) {
2020 qt_memconvert<DST,SRC>((DST*)d, (
const SRC*)s, width);
2026 #define QT_RECTCONVERT_TRIVIAL_IMPL(T) \ 2028 inline void qt_rectconvert(T *dest, const T *src, \ 2029 int x, int y, int width, int height, \ 2030 int dstStride, int srcStride) \ 2032 qt_rectcopy(dest, src, x, y, width, height, dstStride, srcStride); \ 2045 #undef QT_RECTCONVERT_TRIVIAL_IMPL 2047 #ifdef QT_QWS_DEPTH_GENERIC 2049 int x,
int y,
int width,
int height,
2050 int dstStride,
int srcStride);
2053 int x,
int y,
int width,
int height,
2054 int dstStride,
int srcStride);
2055 #endif // QT_QWS_DEPTH_GENERIC 2057 #define QT_MEMFILL_UINT(dest, length, color) \ 2058 qt_memfill<quint32>(dest, color, length); 2060 #define QT_MEMFILL_USHORT(dest, length, color) \ 2061 qt_memfill<quint16>(dest, color, length); 2063 #define QT_MEMCPY_REV_UINT(dest, src, length) \ 2066 uint *_d = (uint*)(dest) + length; \ 2067 const uint *_s = (uint*)(src) + length; \ 2068 register int n = ((length) + 7) / 8; \ 2069 switch ((length) & 0x07) \ 2071 case 0: do { *--_d = *--_s; \ 2072 case 7: *--_d = *--_s; \ 2073 case 6: *--_d = *--_s; \ 2074 case 5: *--_d = *--_s; \ 2075 case 4: *--_d = *--_s; \ 2076 case 3: *--_d = *--_s; \ 2077 case 2: *--_d = *--_s; \ 2078 case 1: *--_d = *--_s; \ 2079 } while (--n > 0); \ 2083 #define QT_MEMCPY_USHORT(dest, src, length) \ 2086 ushort *_d = (ushort*)(dest); \ 2087 const ushort *_s = (ushort*)(src); \ 2088 register int n = ((length) + 7) / 8; \ 2089 switch ((length) & 0x07) \ 2091 case 0: do { *_d++ = *_s++; \ 2092 case 7: *_d++ = *_s++; \ 2093 case 6: *_d++ = *_s++; \ 2094 case 5: *_d++ = *_s++; \ 2095 case 4: *_d++ = *_s++; \ 2096 case 3: *_d++ = *_s++; \ 2097 case 2: *_d++ = *_s++; \ 2098 case 1: *_d++ = *_s++; \ 2099 } while (--n > 0); \ 2103 #if defined(Q_CC_RVCT) 2108 #if defined(Q_CC_RVCT) 2114 return (((c) >> 3) & 0x001f)
2115 | (((
c) >> 5) & 0x07e0)
2116 | (((c) >> 8) & 0xf800);
2119 #if defined(Q_WS_QWS) || (QT_VERSION >= 0x040400) 2125 return c | (c >> 16);
2132 | ((((
c) << 3) & 0xf8) | (((c) >> 2) & 0x7))
2133 | ((((c) << 5) & 0xfc00) | (((
c) >> 1) & 0x300))
2134 | ((((
c) << 8) & 0xf80000) | (((c) << 3) & 0x70000));
2138 const int r = (rgb & 0xf800);
2139 return (r >> 8) | (r >> 13);
2143 const int g = (rgb & 0x07e0);
2144 return (g >> 3) | (g >> 9);
2148 const int b = (rgb & 0x001f);
2149 return (b << 3) | (b >> 2);
2153 { 0x1, 0xc0, 0x30, 0xf0, 0xc, 0xcc, 0x3c, 0xfc,
2154 0x3, 0xc3, 0x33, 0xf3, 0xf, 0xcf, 0x3f, 0xff},
2155 { 0x80, 0x40, 0xb0, 0x70, 0x8c, 0x4c, 0xbc, 0x7c,
2156 0x83, 0x43, 0xb3, 0x73, 0x8f, 0x4f, 0xbf, 0x7f},
2157 { 0x20, 0xe0, 0x10, 0xd0, 0x2c, 0xec, 0x1c, 0xdc,
2158 0x23, 0xe3, 0x13, 0xd3, 0x2f, 0xef, 0x1f, 0xdf},
2159 { 0xa0, 0x60, 0x90, 0x50, 0xac, 0x6c, 0x9c, 0x5c,
2160 0xa3, 0x63, 0x93, 0x53, 0xaf, 0x6f, 0x9f, 0x5f},
2161 { 0x8, 0xc8, 0x38, 0xf8, 0x4, 0xc4, 0x34, 0xf4,
2162 0xb, 0xcb, 0x3b, 0xfb, 0x7, 0xc7, 0x37, 0xf7},
2163 { 0x88, 0x48, 0xb8, 0x78, 0x84, 0x44, 0xb4, 0x74,
2164 0x8b, 0x4b, 0xbb, 0x7b, 0x87, 0x47, 0xb7, 0x77},
2165 { 0x28, 0xe8, 0x18, 0xd8, 0x24, 0xe4, 0x14, 0xd4,
2166 0x2b, 0xeb, 0x1b, 0xdb, 0x27, 0xe7, 0x17, 0xd7},
2167 { 0xa8, 0x68, 0x98, 0x58, 0xa4, 0x64, 0x94, 0x54,
2168 0xab, 0x6b, 0x9b, 0x5b, 0xa7, 0x67, 0x97, 0x57},
2169 { 0x2, 0xc2, 0x32, 0xf2, 0xe, 0xce, 0x3e, 0xfe,
2170 0x1, 0xc1, 0x31, 0xf1, 0xd, 0xcd, 0x3d, 0xfd},
2171 { 0x82, 0x42, 0xb2, 0x72, 0x8e, 0x4e, 0xbe, 0x7e,
2172 0x81, 0x41, 0xb1, 0x71, 0x8d, 0x4d, 0xbd, 0x7d},
2173 { 0x22, 0xe2, 0x12, 0xd2, 0x2e, 0xee, 0x1e, 0xde,
2174 0x21, 0xe1, 0x11, 0xd1, 0x2d, 0xed, 0x1d, 0xdd},
2175 { 0xa2, 0x62, 0x92, 0x52, 0xae, 0x6e, 0x9e, 0x5e,
2176 0xa1, 0x61, 0x91, 0x51, 0xad, 0x6d, 0x9d, 0x5d},
2177 { 0xa, 0xca, 0x3a, 0xfa, 0x6, 0xc6, 0x36, 0xf6,
2178 0x9, 0xc9, 0x39, 0xf9, 0x5, 0xc5, 0x35, 0xf5},
2179 { 0x8a, 0x4a, 0xba, 0x7a, 0x86, 0x46, 0xb6, 0x76,
2180 0x89, 0x49, 0xb9, 0x79, 0x85, 0x45, 0xb5, 0x75},
2181 { 0x2a, 0xea, 0x1a, 0xda, 0x26, 0xe6, 0x16, 0xd6,
2182 0x29, 0xe9, 0x19, 0xd9, 0x25, 0xe5, 0x15, 0xd5},
2183 { 0xaa, 0x6a, 0x9a, 0x5a, 0xa6, 0x66, 0x96, 0x56,
2184 0xa9, 0x69, 0x99, 0x59, 0xa5, 0x65, 0x95, 0x55}
2187 #define ARGB_COMBINE_ALPHA(argb, alpha) \ 2188 ((((argb >> 24) * alpha) >> 8) << 24) | (argb & 0x00ffffff) 2191 #if QT_POINTER_SIZE == 8 // 64-bit versions 2192 #define AMIX(mask) (qMin(((qint64(s)&mask) + (qint64(d)&mask)), qint64(mask))) 2193 #define MIX(mask) (qMin(((qint64(s)&mask) + (qint64(d)&mask)), qint64(mask))) 2196 #define AMIX(mask) quint32(qMin(((qint64(s)&mask) + (qint64(d)&mask)), qint64(mask))) 2197 #define MIX(mask) (qMin(((quint32(s)&mask) + (quint32(d)&mask)), quint32(mask))) 2287 #endif // QDRAWHELPER_P_H
qt_memfill16_func qt_memfill16
bool operator==(const qargb8555 &v) const
void QT_FASTCALL comp_func_solid_Lighten(uint *dest, int length, uint color, uint const_alpha)
#define QT_TRIVIAL_MEMCONVERT_IMPL(T)
const uint *(QT_FASTCALL * SourceFetchProc)(uint *buffer, const Operator *o, const QSpanData *data, int y, int x, int length)
void QT_FASTCALL rasterop_solid_SourceXorDestination(uint *dest, int length, uint color, uint const_alpha)
Q_STATIC_INLINE_FUNCTION quint8 ialpha(quint8 a)
Q_STATIC_INLINE_FUNCTION uint BYTE_MUL_RGB16(uint x, uint a)
quint32 qConvertRgb32To16x2(quint64 c)
Format
The following image formats are available in Qt.
bool operator==(const qrgb666 &v) const
static ShiftResult shift(const QBezier *orig, QBezier *shifted, qreal offset, qreal threshold)
void QT_FASTCALL comp_func_solid_Destination(uint *dest, int length, uint color, uint const_alpha)
void QT_FASTCALL comp_func_Source(uint *dest, const uint *src, int length, uint const_alpha)
void QT_FASTCALL comp_func_solid_DestinationOver(uint *dest, int length, uint color, uint const_alpha)
void(* SrcOverScaleFunc)(uchar *destPixels, int dbpl, const uchar *src, int spbl, int srch, const QRectF &targetRect, const QRectF &sourceRect, const QRect &clipRect, int const_alpha)
qrgb555 byte_mul(quint8 a) const
Q_STATIC_INLINE_FUNCTION bool hasAlpha()
qt_memfill32_func qt_memfill32
QIntegerForSizeof< void * >::Unsigned quintptr
AlphamapBlitFunc alphamapBlit
qargb4444 byte_mul(quint8 a) const
void QT_FASTCALL comp_func_solid_XOR(uint *dest, int length, uint color, uint const_alpha)
void qt_rectconvert(DST *dest, const SRC *src, int x, int y, int width, int height, int dstStride, int srcStride)
Q_STATIC_INLINE_FUNCTION quint8 ialpha(quint8 a)
Q_DECL_CONSTEXPR const T & qMin(const T &a, const T &b)
Q_STATIC_INLINE_FUNCTION quint8 alpha(quint8 a)
#define QT_END_NAMESPACE
This macro expands to.
void(* AlphaRGBBlitFunc)(QRasterBuffer *rasterBuffer, int x, int y, quint32 color, const uint *rgbmask, int mapWidth, int mapHeight, int mapStride, const QClipData *clip)
bool operator==(const qargb6666 &v) const
#define GRADIENT_STOPTABLE_SIZE
void QT_FASTCALL rasterop_SourceOrDestination(uint *dest, const uint *src, int length, uint const_alpha)
void QT_FASTCALL comp_func_Difference(uint *dest, const uint *src, int length, uint const_alpha)
static qreal qRadialDeterminant(qreal a, qreal b, qreal c)
bool operator!=(const qrgb555 &v) const
void QT_FASTCALL comp_func_HardLight(uint *dest, const uint *src, int length, uint const_alpha)
CompositionMode
Defines the modes supported for digital image compositing.
void QT_FASTCALL comp_func_Destination(uint *, const uint *, int, uint)
static void fetch(uint *buffer, uint *end, const Operator *op, const QSpanData *data, qreal det, qreal delta_det, qreal delta_delta_det, qreal b, qreal delta_b)
Q_STATIC_INLINE_FUNCTION quint8 alpha(quint8 a)
Q_GUI_EXPORT_INLINE int qAlpha(QRgb rgb)
BitmapBlitFunc bitmapBlit
SrcOverScaleFunc qScaleFunctions[QImage::NImageFormats][QImage::NImageFormats]
QSpan
A struct equivalent to QT_FT_Span, containing a position (x, y), the span's length in pixels and its ...
qrgb444 operator+(qrgb444 v) const
int comp_func_Plus_one_pixel_const_alpha(uint d, const uint s, const uint const_alpha, const uint one_minus_const_alpha)
void(QT_FASTCALL * DestStoreProc)(QRasterBuffer *rasterBuffer, int x, int y, const uint *buffer, int length)
Q_STATIC_INLINE_FUNCTION quint8 ialpha(quint8 a)
void qt_rectfill(T *dest, T value, int x, int y, int width, int height, int stride)
AlphaRGBBlitFunc alphaRGBBlit
void QT_FASTCALL comp_func_solid_SourceOver(uint *dest, int length, uint color, uint const_alpha)
Q_STATIC_INLINE_FUNCTION bool hasAlpha()
Q_STATIC_INLINE_FUNCTION bool hasAlpha()
QT_FT_SpanFunc ProcessSpans
#define FETCH_RADIAL_LOOP(FETCH_RADIAL_LOOP_CLAMP)
Q_STATIC_INLINE_FUNCTION bool hasAlpha()
void QT_FASTCALL rasterop_solid_NotSourceXorDestination(uint *dest, int length, uint color, uint const_alpha)
void QT_FASTCALL rasterop_solid_NotSource(uint *dest, int length, uint color, uint const_alpha)
void QT_FASTCALL comp_func_solid_Multiply(uint *dest, int length, uint color, uint const_alpha)
void QT_FASTCALL comp_func_SourceAtop(uint *dest, const uint *src, int length, uint const_alpha)
int qBlue565(quint16 rgb)
long ASN1_INTEGER_get ASN1_INTEGER * a
void QT_FASTCALL rasterop_SourceAndDestination(uint *dest, const uint *src, int length, uint const_alpha)
void QT_FASTCALL comp_func_DestinationOver(uint *dest, const uint *src, int length, uint const_alpha)
bool operator==(const qargb4444 &v) const
Q_STATIC_INLINE_FUNCTION quint8 ialpha(quint8 a)
SrcOverTransformFunc qTransformFunctions[QImage::NImageFormats][QImage::NImageFormats]
MemRotateFunc qMemRotateFunctions[QImage::NImageFormats][3]
#define Q_STATIC_TEMPLATE_FUNCTION
void QT_FASTCALL comp_func_solid_DestinationOut(uint *dest, int length, uint color, uint const_alpha)
void QT_FASTCALL comp_func_solid_SourceAtop(uint *dest, int length, uint color, uint const_alpha)
Q_STATIC_INLINE_FUNCTION quint8 alpha(quint8 a)
void QT_FASTCALL comp_func_Darken(uint *dest, const uint *src, int length, uint const_alpha)
void qBlendTextureCallback(int count, const QSpan *spans, void *userData)
bool operator==(const qbgr555 &v) const
void QT_FASTCALL comp_func_Exclusion(uint *dest, const uint *src, int length, uint const_alpha)
static uint qt_gradient_pixel(const QGradientData *data, qreal pos)
void QT_FASTCALL comp_func_solid_Darken(uint *dest, int length, uint color, uint const_alpha)
static uint qt_gradient_clamp(const QGradientData *data, int ipos)
qargb4444 operator+(qargb4444 v) const
qrgb555 operator+(qrgb555 v) const
Q_STATIC_INLINE_FUNCTION bool hasAlpha()
void QT_FASTCALL comp_func_solid_SourceIn(uint *dest, int length, uint color, uint const_alpha)
Q_DECL_CONSTEXPR const T & qMax(const T &a, const T &b)
qrgb666 byte_mul(quint8 a) const
bool operator==(const qrgb565 &v) const
Q_GUI_EXPORT_INLINE int qRed(QRgb rgb)
BitmapBlitFunc bitmapBlit
AlphaRGBBlitFunc alphaRGBBlit
void QT_FASTCALL comp_func_solid_Exclusion(uint *dest, int length, uint color, uint const_alpha)
void(* BitmapBlitFunc)(QRasterBuffer *rasterBuffer, int x, int y, quint32 color, const uchar *bitmap, int mapWidth, int mapHeight, int mapStride)
bool operator==(const qrgb444 &v) const
void QT_FASTCALL comp_func_solid_SoftLight(uint *dest, int length, uint color, uint const_alpha)
void QT_FASTCALL comp_func_Plus(uint *dest, const uint *src, int length, uint const_alpha)
void QT_FASTCALL comp_func_solid_DestinationIn(uint *dest, int length, uint color, uint const_alpha)
Q_STATIC_INLINE_FUNCTION uint INTERPOLATE_PIXEL_255(uint x, uint a, uint y, uint b)
Q_STATIC_INLINE_FUNCTION uint BYTE_MUL(uint x, uint a)
#define QT_BEGIN_NAMESPACE
This macro expands to.
DrawHelper qDrawHelperCallback[QImage::NImageFormats]
Q_GUI_EXPORT_INLINE QRgb qRgba(int r, int g, int b, int a)
The QRectF class defines a rectangle in the plane using floating point precision. ...
void(* AlphamapBlitFunc)(QRasterBuffer *rasterBuffer, int x, int y, quint32 color, const uchar *bitmap, int mapWidth, int mapHeight, int mapStride, const QClipData *clip)
bool operator!=(const qrgb444 &v) const
Q_STATIC_INLINE_FUNCTION quint8 ialpha(quint8 a)
void QT_FASTCALL rasterop_NotSourceXorDestination(uint *dest, const uint *src, int length, uint const_alpha)
qargb6666 byte_mul(quint8 a) const
Q_STATIC_INLINE_FUNCTION bool hasAlpha()
#define Q_STATIC_INLINE_FUNCTION
void QT_FASTCALL comp_func_solid_Plus(uint *dest, int length, uint color, uint const_alpha)
Q_STATIC_INLINE_FUNCTION quint8 ialpha(quint8 a)
bool operator==(const qbgr565 &v) const
#define FETCH_RADIAL_LOOP_CLAMP_PAD
Q_STATIC_INLINE_FUNCTION uint PREMUL(uint x)
void QT_FASTCALL rasterop_NotSourceOrNotDestination(uint *dest, const uint *src, int length, uint const_alpha)
void QT_FASTCALL rasterop_solid_SourceAndNotDestination(uint *dest, int length, uint color, uint const_alpha)
void QT_FASTCALL comp_func_solid_Screen(uint *dest, int length, uint color, uint const_alpha)
Q_STATIC_INLINE_FUNCTION uint INTERPOLATE_PIXEL_256(uint x, uint a, uint y, uint b)
bool operator==(const quint24 &v) const
RadialGradientValues radial
void QT_FASTCALL comp_func_solid_ColorBurn(uint *dest, int length, uint color, uint const_alpha)
void qInitDrawhelperAsm()
Q_STATIC_INLINE_FUNCTION bool hasAlpha()
ProcessSpans blendGradient
qargb8565 operator+(qargb8565 v) const
#define QT_RECTCONVERT_TRIVIAL_IMPL(T)
The QImage class provides a hardware-independent image representation that allows direct access to th...
void QT_FASTCALL comp_func_DestinationOut(uint *dest, const uint *src, int length, uint const_alpha)
void QT_FASTCALL rasterop_solid_SourceAndDestination(uint *dest, int length, uint color, uint const_alpha)
static const char * data(const QByteArray &arr)
void QT_FASTCALL rasterop_NotSourceAndDestination(uint *dest, const uint *src, int length, uint const_alpha)
void QT_FASTCALL comp_func_ColorBurn(uint *dest, const uint *src, int length, uint const_alpha)
void QT_FASTCALL comp_func_SourceOut(uint *dest, const uint *src, int length, uint const_alpha)
void QT_FASTCALL comp_func_DestinationAtop(uint *dest, const uint *src, int length, uint const_alpha)
Q_STATIC_INLINE_FUNCTION quint8 ialpha(quint8 a)
qrgb888 operator+(qrgb888 v) const
Q_STATIC_INLINE_FUNCTION quint8 ialpha(quint8 a)
void(* SrcOverBlendFunc)(uchar *destPixels, int dbpl, const uchar *src, int spbl, int w, int h, int const_alpha)
qrgb666 operator+(qrgb666 v) const
Q_GUI_EXPORT_INLINE int qBlue(QRgb rgb)
void(* QT_FT_SpanFunc)(int count, const QT_FT_Span *spans, void *worker)
QConicalGradientData conical
SrcOverBlendFunc qBlendFunctions[QImage::NImageFormats][QImage::NImageFormats]
Q_STATIC_INLINE_FUNCTION quint8 alpha(quint8 a)
Q_STATIC_INLINE_FUNCTION quint8 alpha(quint8 a)
void QT_FASTCALL rasterop_SourceXorDestination(uint *dest, const uint *src, int length, uint const_alpha)
Spread
Specifies how the area outside the gradient area should be filled.
void QT_FASTCALL rasterop_SourceAndNotDestination(uint *dest, const uint *src, int length, uint const_alpha)
Q_CORE_EXPORT QTextStream & center(QTextStream &s)
void QT_FASTCALL comp_func_solid_Source(uint *dest, int length, uint color, uint const_alpha)
void QT_FASTCALL comp_func_Lighten(uint *dest, const uint *src, int length, uint const_alpha)
QRgb qConvertRgb16To32(uint c)
The QBrush class defines the fill pattern of shapes drawn by QPainter.
const uint qt_bayer_matrix[16][16]
void QT_FASTCALL comp_func_SoftLight(uint *dest, const uint *src, int length, uint const_alpha)
Q_STATIC_INLINE_FUNCTION bool hasAlpha()
void QT_FASTCALL rasterop_solid_SourceOrDestination(uint *dest, int length, uint color, uint const_alpha)
void QT_FASTCALL comp_func_Screen(uint *dest, const uint *src, int length, uint const_alpha)
const uchar * scanLine(int y) const
void QT_FASTCALL comp_func_solid_Difference(uint *dest, int length, uint color, uint const_alpha)
Q_STATIC_INLINE_FUNCTION quint8 alpha(quint8 a)
qargb8555 operator+(qargb8555 v) const
void QT_FASTCALL comp_func_ColorDodge(uint *dest, const uint *src, int length, uint const_alpha)
void QT_FASTCALL comp_func_Clear(uint *dest, const uint *, int length, uint const_alpha)
QRasterPaintEngine * rasterEngine
Q_STATIC_INLINE_FUNCTION quint32p fromRawData(quint32 v)
Q_STATIC_INLINE_FUNCTION quint8 ialpha(quint8 a)
QRasterBuffer * rasterBuffer
The QGradient class is used in combination with QBrush to specify gradient fills. ...
void qt_memconvert(DST *dest, const SRC *src, int count)
qrgb888 byte_mul(quint8 a) const
void(QT_FASTCALL * CompositionFunction)(uint *dest, const uint *src, int length, uint const_alpha)
#define FETCH_RADIAL_LOOP_CLAMP_REPEAT
bool operator!=(const qrgb666 &v) const
void qt_rectcopy(T *dest, const T *src, int x, int y, int width, int height, int dstStride, int srcStride)
#define GRADIENT_STOPTABLE_SIZE_SHIFT
Q_GUI_EXPORT_INLINE QRgb qRgb(int r, int g, int b)
qrgb565 operator+(qrgb565 v) const
struct QRadialGradientData::@232 focal
void QT_FASTCALL comp_func_solid_ColorDodge(uint *dest, int length, uint color, uint const_alpha)
void QT_FASTCALL comp_func_solid_Overlay(uint *dest, int length, uint color, uint const_alpha)
void QT_FASTCALL comp_func_DestinationIn(uint *dest, const uint *src, int length, uint const_alpha)
The QRect class defines a rectangle in the plane using integer precision.
void QT_FASTCALL comp_func_SourceIn(uint *dest, const uint *src, int length, uint const_alpha)
void QT_FASTCALL comp_func_solid_DestinationAtop(uint *dest, int length, uint color, uint const_alpha)
ushort qConvertRgb32To16(uint c)
void(QT_FASTCALL * CompositionFunctionSolid)(uint *dest, int length, uint color, uint const_alpha)
Q_STATIC_INLINE_FUNCTION quint8 alpha(quint8 a)
int comp_func_Plus_one_pixel(uint d, const uint s)
void QT_FASTCALL comp_func_solid_SourceOut(uint *dest, int length, uint color, uint const_alpha)
Q_GUI_EXPORT_INLINE int qGreen(QRgb rgb)
LinearGradientValues linear
bool operator==(const qargb8565 &v) const
QDataStream & operator<<(QDataStream &s, const QAxBase &c)
Q_STATIC_INLINE_FUNCTION int qt_div_255(int x)
SourceFetchProc src_fetch
const QVector< QRgb > * colorTable
void QT_FASTCALL comp_func_solid_HardLight(uint *dest, int length, uint color, uint const_alpha)
QRadialGradientData radial
static Q_DECL_CONSTEXPR bool qFuzzyIsNull(double d)
CompositionFunctionSolid funcSolid
void QT_FASTCALL comp_func_Overlay(uint *dest, const uint *src, int length, uint const_alpha)
void QT_FASTCALL rasterop_NotSourceAndNotDestination(uint *dest, const uint *src, int length, uint const_alpha)
void qBlendTexture(int count, const QSpan *spans, void *userData)
void(* RectFillFunc)(QRasterBuffer *rasterBuffer, int x, int y, int width, int height, quint32 color)
void QT_FASTCALL comp_func_XOR(uint *dest, const uint *src, int length, uint const_alpha)
DrawHelper qDrawHelper[QImage::NImageFormats]
#define FETCH_RADIAL_LOOP_CLAMP_REFLECT
void(* SrcOverTransformFunc)(uchar *destPixels, int dbpl, const uchar *src, int spbl, const QRectF &targetRect, const QRectF &sourceRect, const QRect &clipRect, const QTransform &targetRectTransform, int const_alpha)
qargb8565 byte_mul(quint8 a) const
The QRasterPaintEngine class enables hardware acceleration of painting operations in Qt for Embedded ...
ProcessSpans unclipped_blend
Q_STATIC_INLINE_FUNCTION quint8 alpha(quint8 a)
bool operator==(const qabgr8888 &v) const
qrgb444 byte_mul(quint8 a) const
void QT_FASTCALL rasterop_solid_NotSourceAndDestination(uint *dest, int length, uint color, uint const_alpha)
QLinearGradientData linear
static const KeyPair *const end
Q_STATIC_INLINE_FUNCTION bool hasAlpha()
bool operator==(const qrgb555 &v) const
bool operator==(qrgb888 v) const
#define Q_UNUSED(x)
Indicates to the compiler that the parameter with the specified name is not used in the body of a fun...
quint16 rawValue16() const
bool operator==(QBool b1, bool b2)
const uint *QT_FASTCALL qt_fetch_radial_gradient_template(uint *buffer, const Operator *op, const QSpanData *data, int y, int x, int length)
void QT_FASTCALL comp_func_Multiply(uint *dest, const uint *src, int length, uint const_alpha)
Q_STATIC_INLINE_FUNCTION uint BYTE_MUL_RGB16_32(uint x, uint a)
qargb6666 operator+(qargb6666 v) const
void QT_FASTCALL rasterop_solid_NotSourceAndNotDestination(uint *dest, int length, uint color, uint const_alpha)
void(* MemRotateFunc)(const uchar *srcPixels, int w, int h, int sbpl, uchar *destPixels, int dbpl)
void QT_FASTCALL comp_func_SourceOver(uint *dest, const uint *src, int length, uint const_alpha)
QPainter::CompositionMode mode
void QT_FASTCALL rasterop_NotSource(uint *dest, const uint *src, int length, uint const_alpha)
qargb8555 byte_mul(quint8 a) const
AlphamapBlitFunc alphamapBlit
void qt_memfill(T *dest, T value, int count)
Q_STATIC_INLINE_FUNCTION quint8 alpha(quint8 a)
qrgb565 byte_mul(quint8 a) const
uint *QT_FASTCALL * DestFetchProc(uint *buffer, QRasterBuffer *rasterBuffer, int x, int y, int length)
int qGreen565(quint16 rgb)
void QT_FASTCALL comp_func_solid_Clear(uint *dest, int length, uint color, uint const_alpha)
DST qt_colorConvert(SRC color, DST dummy)
void QT_FASTCALL rasterop_solid_NotSourceOrNotDestination(uint *dest, int length, uint color, uint const_alpha)
timeval operator+(const timeval &t1, const timeval &t2)