14 const qsizetype sstride = isstride /
sizeof(T);
15 const qsizetype dstride = idstride /
sizeof(T);
17 const int pack =
sizeof(
quint32) /
sizeof(T);
21 const int restY = (
h - unaligned) %
tileSize;
22 const int unoptimizedY = restY % pack;
23 const int numTilesX =
w /
tileSize + (restX > 0);
24 const int numTilesY = (
h - unaligned) /
tileSize + (restY >= pack);
26 for (
int tx = 0; tx < numTilesX; ++tx) {
31 for (
int x = startx;
x >= stopx; --
x) {
32 T *
d = dest + (
w -
x - 1) * dstride;
33 for (
int y = 0;
y < unaligned; ++
y) {
34 *
d++ =
src[
y * sstride +
x];
39 for (
int ty = 0;
ty < numTilesY; ++
ty) {
43 for (
int x = startx;
x >= stopx; --
x) {
45 for (
int y = starty;
y < stopy;
y += pack) {
47 for (
int i = 1;
i < pack; ++
i) {
48 const int shift = (
sizeof(T) * 8 *
i);
58 const int starty =
h - unoptimizedY;
59 for (
int x = startx;
x >= stopx; --
x) {
60 T *
d = dest + (
w -
x - 1) * dstride + starty;
61 for (
int y = starty;
y <
h; ++
y) {
62 *
d++ =
src[
y * sstride +
x];
77 for (
int tx = 0; tx < numTilesX; ++tx) {
81 for (
int ty = 0;
ty < numTilesY; ++
ty) {
85 for (
int x = startx;
x >= stopx; --
x) {
86 T *
d = (T *)((
char*)dest + (
w -
x - 1) * dstride) + starty;
87 const char *
s = (
const char*)(
src +
x) + starty * sstride;
88 for (
int y = starty;
y < stopy; ++
y) {
89 *
d++ = *(
const T *)(
s);
100 const qsizetype sstride = isstride /
sizeof(T);
101 const qsizetype dstride = idstride /
sizeof(T);
103 const int pack =
sizeof(
quint32) /
sizeof(T);
104 const int unaligned =
107 const int restY = (
h - unaligned) %
tileSize;
108 const int unoptimizedY = restY % pack;
109 const int numTilesX =
w /
tileSize + (restX > 0);
110 const int numTilesY = (
h - unaligned) /
tileSize + (restY >= pack);
112 for (
int tx = 0; tx < numTilesX; ++tx) {
117 for (
int x = startx;
x < stopx; ++
x) {
118 T *
d = dest +
x * dstride;
119 for (
int y =
h - 1;
y >=
h - unaligned; --
y) {
120 *
d++ =
src[
y * sstride +
x];
125 for (
int ty = 0;
ty < numTilesY; ++
ty) {
126 const int starty =
h - 1 - unaligned -
ty *
tileSize;
127 const int stopy =
qMax(starty -
tileSize, unoptimizedY);
129 for (
int x = startx;
x < stopx; ++
x) {
132 for (
int y = starty;
y >= stopy;
y -= pack) {
134 for (
int i = 1;
i < pack; ++
i) {
135 const int shift = (
sizeof(T) * 8 *
i);
144 const int starty = unoptimizedY - 1;
145 for (
int x = startx;
x < stopx; ++
x) {
146 T *
d = dest +
x * dstride +
h - 1 - starty;
147 for (
int y = starty;
y >= 0; --
y) {
148 *
d++ =
src[
y * sstride +
x];
163 for (
int tx = 0; tx < numTilesX; ++tx) {
167 for (
int ty = 0;
ty < numTilesY; ++
ty) {
171 for (
int x = startx;
x < stopx; ++
x) {
172 T *
d = (T*)((
char*)dest +
x * dstride) +
h - 1 - starty;
173 const char *
s = (
const char*)(
src +
x) + starty * sstride;
174 for (
int y = starty;
y >= stopy; --
y) {
187 T *dest,
int dstStride)
189#if Q_BYTE_ORDER == Q_LITTLE_ENDIAN
191 static_assert(
sizeof(
quint32) %
sizeof(T) == 0);
204 const char *
s = (
const char*)(
src) + (
h - 1) * sstride;
205 for (
int dy = 0; dy <
h; ++dy) {
206 T *
d =
reinterpret_cast<T*
>((
char *)(dest) + dy * dstride);
207 src =
reinterpret_cast<const T*
>(
s);
208 for (
int dx = 0; dx <
w; ++dx) {
209 d[dx] =
src[
w - 1 - dx];
218 T *dest,
int dstStride)
220#if Q_BYTE_ORDER == Q_LITTLE_ENDIAN
222 static_assert(
sizeof(
quint32) %
sizeof(T) == 0);
229#define QT_IMPL_MEMROTATE(type) \
230Q_GUI_EXPORT void qt_memrotate90(const type *src, int w, int h, int sstride, \
231 type *dest, int dstride) \
233 qt_memrotate90_template(src, w, h, sstride, dest, dstride); \
235Q_GUI_EXPORT void qt_memrotate180(const type *src, int w, int h, int sstride, \
236 type *dest, int dstride) \
238 qt_memrotate180_template(src, w, h, sstride, dest, dstride); \
240Q_GUI_EXPORT void qt_memrotate270(const type *src, int w, int h, int sstride, \
241 type *dest, int dstride) \
243 qt_memrotate270_template(src, w, h, sstride, dest, dstride); \
246#define QT_IMPL_SIMPLE_MEMROTATE(type) \
247Q_GUI_EXPORT void qt_memrotate90(const type *src, int w, int h, int sstride, \
248 type *dest, int dstride) \
250 qt_memrotate90_tiled_unpacked(src, w, h, sstride, dest, dstride); \
252Q_GUI_EXPORT void qt_memrotate180(const type *src, int w, int h, int sstride, \
253 type *dest, int dstride) \
255 qt_memrotate180_template(src, w, h, sstride, dest, dstride); \
257Q_GUI_EXPORT void qt_memrotate270(const type *src, int w, int h, int sstride, \
258 type *dest, int dstride) \
260 qt_memrotate270_tiled_unpacked(src, w, h, sstride, dest, dstride); \
272 qt_memrotate90(srcPixels,
w,
h, sbpl, destPixels, dbpl);
277 qt_memrotate180(srcPixels,
w,
h, sbpl, destPixels, dbpl);
282 qt_memrotate270(srcPixels,
w,
h, sbpl, destPixels, dbpl);
287 qt_memrotate90((
const ushort *)srcPixels,
w,
h, sbpl, (
ushort *)destPixels, dbpl);
292 qt_memrotate180((
const ushort *)srcPixels,
w,
h, sbpl, (
ushort *)destPixels, dbpl);
297 qt_memrotate270((
const ushort *)srcPixels,
w,
h, sbpl, (
ushort *)destPixels, dbpl);
302 qt_memrotate90((
const quint24 *)srcPixels,
w,
h, sbpl, (
quint24 *)destPixels, dbpl);
307 qt_memrotate180((
const quint24 *)srcPixels,
w,
h, sbpl, (
quint24 *)destPixels, dbpl);
312 qt_memrotate270((
const quint24 *)srcPixels,
w,
h, sbpl, (
quint24 *)destPixels, dbpl);
317 qt_memrotate90((
const uint *)srcPixels,
w,
h, sbpl, (
uint *)destPixels, dbpl);
322 qt_memrotate180((
const uint *)srcPixels,
w,
h, sbpl, (
uint *)destPixels, dbpl);
327 qt_memrotate270((
const uint *)srcPixels,
w,
h, sbpl, (
uint *)destPixels, dbpl);
333 qt_memrotate90((
const quint64 *)srcPixels,
w,
h, sbpl, (
quint64 *)destPixels, dbpl);
338 qt_memrotate180((
const quint64 *)srcPixels,
w,
h, sbpl, (
quint64 *)destPixels, dbpl);
343 qt_memrotate270((
const quint64 *)srcPixels,
w,
h, sbpl, (
quint64 *)destPixels, dbpl);
364 {
nullptr,
nullptr,
nullptr },
365 {
nullptr,
nullptr,
nullptr },
366 {
nullptr,
nullptr,
nullptr },
Combined button and popup list for selecting options.
static QT_WARNING_DISABLE_FLOAT_COMPARE ShiftResult shift(const QBezier *orig, QBezier *shifted, qreal offset, qreal threshold)
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction void DBusFreeFunction return DBusConnection return DBusConnection return const char DBusError return DBusConnection DBusMessage dbus_uint32_t return DBusConnection dbus_bool_t DBusConnection DBusAddWatchFunction DBusRemoveWatchFunction DBusWatchToggledFunction void DBusFreeFunction return DBusConnection DBusDispatchStatusFunction void DBusFreeFunction DBusTimeout return DBusTimeout return DBusWatch return DBusWatch unsigned int return DBusError const DBusError return const DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessageIter int const void return DBusMessageIter DBusMessageIter return DBusMessageIter void DBusMessageIter void int return DBusMessage DBusMessageIter return DBusMessageIter return DBusMessageIter DBusMessageIter const char const char const char const char return DBusMessage return DBusMessage const char return DBusMessage dbus_bool_t return DBusMessage dbus_uint32_t return DBusMessage void
void qt_memrotate90_16(const uchar *srcPixels, int w, int h, int sbpl, uchar *destPixels, int dbpl)
void qt_memrotate90_128(const uchar *srcPixels, int w, int h, int sbpl, uchar *destPixels, int dbpl)
void qt_memrotate270_24(const uchar *srcPixels, int w, int h, int sbpl, uchar *destPixels, int dbpl)
void qt_memrotate270_64(const uchar *srcPixels, int w, int h, int sbpl, uchar *destPixels, int dbpl)
static void qt_memrotate270_template(const T *src, int srcWidth, int srcHeight, int srcStride, T *dest, int dstStride)
void qt_memrotate270_32(const uchar *srcPixels, int w, int h, int sbpl, uchar *destPixels, int dbpl)
static void qt_memrotate270_tiled(const T *src, int w, int h, int isstride, T *dest, int idstride)
void qt_memrotate180_32(const uchar *srcPixels, int w, int h, int sbpl, uchar *destPixels, int dbpl)
void qt_memrotate270_16(const uchar *srcPixels, int w, int h, int sbpl, uchar *destPixels, int dbpl)
#define QT_IMPL_SIMPLE_MEMROTATE(type)
static void qt_memrotate90_template(const T *src, int srcWidth, int srcHeight, int srcStride, T *dest, int dstStride)
void qt_memrotate90_24(const uchar *srcPixels, int w, int h, int sbpl, uchar *destPixels, int dbpl)
void qt_memrotate180_16(const uchar *srcPixels, int w, int h, int sbpl, uchar *destPixels, int dbpl)
void qt_memrotate270_128(const uchar *srcPixels, int w, int h, int sbpl, uchar *destPixels, int dbpl)
void qt_memrotate180_24(const uchar *srcPixels, int w, int h, int sbpl, uchar *destPixels, int dbpl)
void qt_memrotate270_8(const uchar *srcPixels, int w, int h, int sbpl, uchar *destPixels, int dbpl)
void qt_memrotate90_32(const uchar *srcPixels, int w, int h, int sbpl, uchar *destPixels, int dbpl)
static void qt_memrotate270_tiled_unpacked(const T *src, int w, int h, int isstride, T *dest, int idstride)
MemRotateFunc qMemRotateFunctions[QPixelLayout::BPPCount][3]
void qt_memrotate90_8(const uchar *srcPixels, int w, int h, int sbpl, uchar *destPixels, int dbpl)
void qt_memrotate180_8(const uchar *srcPixels, int w, int h, int sbpl, uchar *destPixels, int dbpl)
static void qt_memrotate180_template(const T *src, int w, int h, int isstride, T *dest, int idstride)
void qt_memrotate180_128(const uchar *srcPixels, int w, int h, int sbpl, uchar *destPixels, int dbpl)
void qt_memrotate90_64(const uchar *srcPixels, int w, int h, int sbpl, uchar *destPixels, int dbpl)
static QT_BEGIN_NAMESPACE const int tileSize
static void qt_memrotate90_tiled_unpacked(const T *src, int w, int h, int isstride, T *dest, int idstride)
void qt_memrotate180_64(const uchar *srcPixels, int w, int h, int sbpl, uchar *destPixels, int dbpl)
#define QT_IMPL_MEMROTATE(type)
static void qt_memrotate90_tiled(const T *src, int w, int h, int isstride, T *dest, int idstride)
constexpr const T & qMin(const T &a, const T &b)
constexpr const T & qMax(const T &a, const T &b)
GLenum GLint GLint GLint GLint GLuint GLenum GLint GLint GLint GLint GLsizei GLsizei srcHeight
GLint GLint GLint GLint GLint x
[0]
GLfloat GLfloat GLfloat w
[0]
GLenum GLint GLint GLint GLint GLuint GLenum GLint GLint GLint GLint GLsizei srcWidth
GLfloat GLfloat GLfloat GLfloat h
void(* MemRotateFunc)(const uchar *srcPixels, int w, int h, int sbpl, uchar *destPixels, int dbpl)
unsigned long long quint64