Qt 4.8
Classes | Macros | Functions
qpixmapdata_p.h File Reference
#include <QtGui/qpixmap.h>
#include <QtCore/qatomic.h>

Go to the source code of this file.

Classes

class  QPixmapData
 

Macros

#define QT_XFORM_TYPE_LSBFIRST   1
 
#define QT_XFORM_TYPE_MSBFIRST   0
 
#define QT_XFORM_TYPE_WINDOWSPIXMAP   2
 

Functions

bool qt_xForm_helper (const QTransform &, int, int, int, uchar *, int, int, int, const uchar *, int, int, int)
 

Macro Definition Documentation

◆ QT_XFORM_TYPE_LSBFIRST

#define QT_XFORM_TYPE_LSBFIRST   1

◆ QT_XFORM_TYPE_MSBFIRST

#define QT_XFORM_TYPE_MSBFIRST   0

◆ QT_XFORM_TYPE_WINDOWSPIXMAP

#define QT_XFORM_TYPE_WINDOWSPIXMAP   2

Definition at line 179 of file qpixmapdata_p.h.

Referenced by qt_xForm_helper().

Function Documentation

◆ qt_xForm_helper()

bool qt_xForm_helper ( const QTransform ,
int  ,
int  ,
int  ,
uchar ,
int  ,
int  ,
int  ,
const uchar ,
int  ,
int  ,
int   
)

Definition at line 6100 of file qimage.cpp.

Referenced by QMacPixmapData::macCreatePixels(), QX11PixmapData::transformed(), and QImage::transformed().

6103 {
6104  int m11 = int(trueMat.m11()*qreal(4096.0));
6105  int m12 = int(trueMat.m12()*qreal(4096.0));
6106  int m21 = int(trueMat.m21()*qreal(4096.0));
6107  int m22 = int(trueMat.m22()*qreal(4096.0));
6108  int dx = qRound(trueMat.dx()*qreal(4096.0));
6109  int dy = qRound(trueMat.dy()*qreal(4096.0));
6110 
6111  int m21ydx = dx + (xoffset<<16) + (m11 + m21) / 2;
6112  int m22ydy = dy + (m12 + m22) / 2;
6113  uint trigx;
6114  uint trigy;
6115  uint maxws = sWidth<<12;
6116  uint maxhs = sHeight<<12;
6117 
6118  for (int y=0; y<dHeight; y++) { // for each target scanline
6119  trigx = m21ydx;
6120  trigy = m22ydy;
6121  uchar *maxp = dptr + dbpl;
6122  if (depth != 1) {
6123  switch (depth) {
6124  case 8: // 8 bpp transform
6125  while (dptr < maxp) {
6126  if (trigx < maxws && trigy < maxhs)
6127  *dptr = *(sptr+sbpl*(trigy>>12)+(trigx>>12));
6128  trigx += m11;
6129  trigy += m12;
6130  dptr++;
6131  }
6132  break;
6133 
6134  case 16: // 16 bpp transform
6135  while (dptr < maxp) {
6136  if (trigx < maxws && trigy < maxhs)
6137  *((ushort*)dptr) = *((ushort *)(sptr+sbpl*(trigy>>12) +
6138  ((trigx>>12)<<1)));
6139  trigx += m11;
6140  trigy += m12;
6141  dptr++;
6142  dptr++;
6143  }
6144  break;
6145 
6146  case 24: // 24 bpp transform
6147  while (dptr < maxp) {
6148  if (trigx < maxws && trigy < maxhs) {
6149  const uchar *p2 = sptr+sbpl*(trigy>>12) + ((trigx>>12)*3);
6150  dptr[0] = p2[0];
6151  dptr[1] = p2[1];
6152  dptr[2] = p2[2];
6153  }
6154  trigx += m11;
6155  trigy += m12;
6156  dptr += 3;
6157  }
6158  break;
6159 
6160  case 32: // 32 bpp transform
6161  while (dptr < maxp) {
6162  if (trigx < maxws && trigy < maxhs)
6163  *((uint*)dptr) = *((uint *)(sptr+sbpl*(trigy>>12) +
6164  ((trigx>>12)<<2)));
6165  trigx += m11;
6166  trigy += m12;
6167  dptr += 4;
6168  }
6169  break;
6170 
6171  default: {
6172  return false;
6173  }
6174  }
6175  } else {
6176  switch (type) {
6178  while (dptr < maxp) {
6179  IWX_MSB(128);
6180  IWX_MSB(64);
6181  IWX_MSB(32);
6182  IWX_MSB(16);
6183  IWX_MSB(8);
6184  IWX_MSB(4);
6185  IWX_MSB(2);
6186  IWX_MSB(1);
6187  dptr++;
6188  }
6189  break;
6191  while (dptr < maxp) {
6192  IWX_LSB(1);
6193  IWX_LSB(2);
6194  IWX_LSB(4);
6195  IWX_LSB(8);
6196  IWX_LSB(16);
6197  IWX_LSB(32);
6198  IWX_LSB(64);
6199  IWX_LSB(128);
6200  dptr++;
6201  }
6202  break;
6203 # if defined(Q_WS_WIN)
6205  while (dptr < maxp) {
6206  IWX_PIX(128);
6207  IWX_PIX(64);
6208  IWX_PIX(32);
6209  IWX_PIX(16);
6210  IWX_PIX(8);
6211  IWX_PIX(4);
6212  IWX_PIX(2);
6213  IWX_PIX(1);
6214  dptr++;
6215  }
6216  break;
6217 # endif
6218  }
6219  }
6220  m21ydx += m21;
6221  m22ydy += m22;
6222  dptr += p_inc;
6223  }
6224  return true;
6225 }
#define IWX_PIX(b)
Definition: qimage.cpp:6092
int type
Definition: qmetatype.cpp:239
double qreal
Definition: qglobal.h:1193
unsigned char uchar
Definition: qglobal.h:994
unsigned int uint
Definition: qglobal.h:996
#define QT_XFORM_TYPE_MSBFIRST
#define QT_XFORM_TYPE_LSBFIRST
#define IWX_MSB(b)
Definition: qimage.cpp:6074
unsigned short ushort
Definition: qglobal.h:995
#define QT_XFORM_TYPE_WINDOWSPIXMAP
#define IWX_LSB(b)
Definition: qimage.cpp:6083
Q_DECL_CONSTEXPR int qRound(qreal d)
Definition: qglobal.h:1203