QSpanData Struct Reference

#include <qdrawhelper_p.h>

Collaboration diagram for QSpanData:

Collaboration graph
[legend]
List of all members.

Detailed Description

Definition at line 169 of file qdrawhelper_p.h.

Public Types

enum  Type

Public Member Functions

void init (QRasterBuffer *rb, QRasterPaintEngine *pe=0)
void setup (const QBrush &brush, int alpha)
void setupMatrix (const QMatrix &matrix, int txop, int bilinear)
void initTexture (const QImage *image, int alpha, TextureData::Type=TextureData::Plain)
void adjustSpanMethods ()

Public Attributes

QRasterBufferrasterBuffer
ProcessSpans blend
ProcessSpans unclipped_blend
qreal m11
qreal m12
qreal m21
qreal m22
qreal dx
qreal dy
enum QSpanData::Type type
int txop: 8
bool bilinear
QImage tempImage
union {
   SolidData   solid
   GradientData   gradient
   TextureData   texture
}; 


Member Enumeration Documentation

enum QSpanData::Type

Definition at line 178 of file qdrawhelper_p.h.

00178               {
00179         None,
00180         Solid,
00181         LinearGradient,
00182         RadialGradient,
00183         ConicalGradient,
00184         Texture
00185     } type : 8;


Member Function Documentation

void QSpanData::init ( QRasterBuffer rb,
QRasterPaintEngine pe = 0 
)

Definition at line 3723 of file qpaintengine_raster.cpp.

References None, and type.

Referenced by QRasterPaintEngine::drawImage(), and QRasterPaintEngine::drawTiledPixmap().

03724 {
03725     rasterBuffer = rb;
03726 #ifdef Q_WS_QWS
03727     rasterEngine = pe;
03728 #else
03729     Q_UNUSED(pe);
03730 #endif
03731     type = None;
03732     txop = 0;
03733     bilinear = false;
03734     m11 = m22 = 1.;
03735     m12 = m21 = dx = dy = 0.;
03736 }

void QSpanData::setup ( const QBrush brush,
int  alpha 
)

Definition at line 3738 of file qpaintengine_raster.cpp.

References adjustSpanMethods(), GradientData::alphaColor, ConicalGradientData::angle, ARGB_COMBINE_ALPHA, Qt::BDiagPattern, RadialGradientData::center, ConicalGradientData::center, center(), QBrush::color(), SolidData::color, QRasterBuffer::colorizeBitmap(), GradientData::colorTable, GradientData::conical, ConicalGradient, Qt::ConicalGradientPattern, Qt::CrossPattern, Qt::Dense1Pattern, Qt::Dense2Pattern, Qt::Dense3Pattern, Qt::Dense4Pattern, Qt::Dense5Pattern, Qt::Dense6Pattern, Qt::Dense7Pattern, Qt::DiagCrossPattern, LinearGradientData::end, Qt::FDiagPattern, RadialGradientData::focal, g, QBrush::gradient(), gradient, Qt::HorPattern, initTexture(), QBrush::isOpaque(), GradientData::linear, LinearGradient, Qt::LinearGradientPattern, Qt::NoBrush, None, LinearGradientData::origin, PREMUL(), Q_PI, qt_imageForBrush(), GradientData::radial, RadialGradient, Qt::RadialGradientPattern, RadialGradientData::radius, rasterBuffer, QGradient::RepeatSpread, QColor::rgba(), Solid, solid, Qt::SolidPattern, GradientData::spread, QBrush::style(), tempImage, QBrush::texture(), texture, Texture, Qt::TexturePattern, TextureData::Tiled, QPixmap::toImage(), type, Qt::VerPattern, RadialGradientData::x, LinearGradientData::x, ConicalGradientData::x, QPointF::x(), RadialGradientData::y, LinearGradientData::y, ConicalGradientData::y, and QPointF::y().

03739 {
03740     Qt::BrushStyle brushStyle = brush.style();
03741     switch (brushStyle) {
03742     case Qt::SolidPattern:
03743         type = Solid;
03744         solid.color = PREMUL(ARGB_COMBINE_ALPHA(brush.color().rgba(), alpha));
03745         break;
03746 
03747     case Qt::LinearGradientPattern:
03748         {
03749             type = LinearGradient;
03750             const QLinearGradient *g = static_cast<const QLinearGradient *>(brush.gradient());
03751             gradient.alphaColor = !brush.isOpaque() || alpha != 256;
03752             gradient.colorTable = const_cast<uint*>(qt_gradient_cache()->getBuffer(g->stops(), alpha));
03753             gradient.spread = g->spread();
03754 
03755             gradient.linear.origin.x = g->start().x();
03756             gradient.linear.origin.y = g->start().y();
03757             gradient.linear.end.x = g->finalStop().x();
03758             gradient.linear.end.y = g->finalStop().y();
03759             break;
03760         }
03761 
03762     case Qt::RadialGradientPattern:
03763         {
03764             type = RadialGradient;
03765             const QRadialGradient *g = static_cast<const QRadialGradient *>(brush.gradient());
03766             gradient.alphaColor = !brush.isOpaque() || alpha != 256;
03767             gradient.colorTable = const_cast<uint*>(qt_gradient_cache()->getBuffer(g->stops(), alpha));
03768             gradient.spread = g->spread();
03769 
03770             QPointF center = g->center();
03771             gradient.radial.center.x = center.x();
03772             gradient.radial.center.y = center.y();
03773             QPointF focal = g->focalPoint();
03774             gradient.radial.focal.x = focal.x();
03775             gradient.radial.focal.y = focal.y();
03776             gradient.radial.radius = g->radius();
03777         }
03778         break;
03779 
03780     case Qt::ConicalGradientPattern:
03781         {
03782             type = ConicalGradient;
03783             const QConicalGradient *g = static_cast<const QConicalGradient *>(brush.gradient());
03784             gradient.alphaColor = !brush.isOpaque() || alpha != 256;
03785             gradient.colorTable = const_cast<uint*>(qt_gradient_cache()->getBuffer(g->stops(), alpha));
03786             gradient.spread = QGradient::RepeatSpread;
03787 
03788             QPointF center = g->center();
03789             gradient.conical.center.x = center.x();
03790             gradient.conical.center.y = center.y();
03791             gradient.conical.angle = g->angle() * 2 * Q_PI / 360.0;
03792         }
03793         break;
03794 
03795     case Qt::Dense1Pattern:
03796     case Qt::Dense2Pattern:
03797     case Qt::Dense3Pattern:
03798     case Qt::Dense4Pattern:
03799     case Qt::Dense5Pattern:
03800     case Qt::Dense6Pattern:
03801     case Qt::Dense7Pattern:
03802     case Qt::HorPattern:
03803     case Qt::VerPattern:
03804     case Qt::CrossPattern:
03805     case Qt::BDiagPattern:
03806     case Qt::FDiagPattern:
03807     case Qt::DiagCrossPattern:
03808     case Qt::TexturePattern:
03809         {
03810 
03811             type = Texture;
03812             extern QImage qt_imageForBrush(int brushStyle, bool invert);
03813             QImage texture = (brushStyle == Qt::TexturePattern)
03814                              ? brush.texture().toImage()
03815                              : qt_imageForBrush(brushStyle, true);
03816 
03817             tempImage = (texture.depth() == 1)
03818                         ? rasterBuffer->colorizeBitmap(texture, brush.color())
03819                         : texture;
03820 
03821             initTexture(&tempImage, alpha, TextureData::Tiled);
03822         }
03823         break;
03824 
03825     case Qt::NoBrush:
03826     default:
03827         type = None;
03828         break;
03829     }
03830     adjustSpanMethods();
03831 }

Here is the call graph for this function:

void QSpanData::setupMatrix ( const QMatrix matrix,
int  txop,
int  bilinear 
)

Definition at line 3861 of file qpaintengine_raster.cpp.

References adjustSpanMethods(), bilinear, dx, QMatrix::dx(), QMatrix::dy(), dy, QMatrix::inverted(), QMatrix::m11(), m11, QMatrix::m12(), m12, QMatrix::m21(), m21, QMatrix::m22(), m22, and txop.

Referenced by QRasterPaintEngine::drawImage(), and QRasterPaintEngine::drawTiledPixmap().

03862 {
03863     QMatrix inv = matrix.inverted();
03864     m11 = inv.m11();
03865     m12 = inv.m12();
03866     m21 = inv.m21();
03867     m22 = inv.m22();
03868     dx = inv.dx();
03869     dy = inv.dy();
03870     txop = tx;
03871     bilinear = bilin;
03872     adjustSpanMethods();
03873 }

Here is the call graph for this function:

void QSpanData::initTexture ( const QImage image,
int  alpha,
TextureData::Type  = TextureData::Plain 
)

Definition at line 3877 of file qpaintengine_raster.cpp.

References adjustSpanMethods(), TextureData::bytesPerLine, TextureData::colorTable, TextureData::const_alpha, TextureData::format, QImage::Format_RGB32, TextureData::hasAlpha, TextureData::height, image, TextureData::imageData, qt_image_colortable(), texture, TextureData::type, and TextureData::width.

Referenced by QRasterPaintEngine::drawImage(), QRasterPaintEngine::drawTiledPixmap(), and setup().

03878 {
03879     texture.imageData = image->bits();
03880     texture.width = image->width();
03881     texture.height = image->height();
03882     texture.bytesPerLine = image->bytesPerLine();
03883     texture.format = image->format();
03884     texture.colorTable = qt_image_colortable(*image);
03885     texture.hasAlpha = image->format() != QImage::Format_RGB32 || alpha != 256;
03886     texture.const_alpha = alpha;
03887     texture.type = _type;
03888 
03889     adjustSpanMethods();
03890 }

Here is the call graph for this function:

void QSpanData::adjustSpanMethods (  ) 

Definition at line 3833 of file qpaintengine_raster.cpp.

References DrawHelper::blendColor, DrawHelper::blendGradient, QRasterBuffer::clip, QRasterBuffer::clipEnabled, ConicalGradient, QRasterBuffer::drawHelper, LinearGradient, None, qBlendTexture(), qt_span_fill_clipped(), RadialGradient, rasterBuffer, Solid, Texture, type, and unclipped_blend.

Referenced by QRasterPaintEngine::drawImage(), initTexture(), setup(), setupMatrix(), and QRasterPaintEnginePrivate::updateClip_helper().

03834 {
03835     switch(type) {
03836     case None:
03837         unclipped_blend = 0;
03838         break;
03839     case Solid:
03840         unclipped_blend = rasterBuffer->drawHelper->blendColor;
03841         break;
03842     case LinearGradient:
03843     case RadialGradient:
03844     case ConicalGradient:
03845         unclipped_blend = rasterBuffer->drawHelper->blendGradient;
03846         break;
03847     case Texture:
03848         unclipped_blend = qBlendTexture;
03849         break;
03850     }
03851     // setup clipping
03852     if (!unclipped_blend) {
03853         blend = 0;
03854     } else if (rasterBuffer->clipEnabled) {
03855         blend = rasterBuffer->clip ? qt_span_fill_clipped : unclipped_blend;
03856     } else {
03857         blend = unclipped_blend;
03858     }
03859 }

Here is the call graph for this function:


Member Data Documentation

QRasterBuffer* QSpanData::rasterBuffer

Definition at line 171 of file qdrawhelper_p.h.

Referenced by adjustSpanMethods(), qt_span_fill_clipped(), and setup().

ProcessSpans QSpanData::blend

Definition at line 175 of file qdrawhelper_p.h.

Referenced by QRasterPaintEnginePrivate::drawBitmap(), QRasterPaintEngine::fillPath(), and qt_span_fill_clipped().

ProcessSpans QSpanData::unclipped_blend

Definition at line 176 of file qdrawhelper_p.h.

Referenced by adjustSpanMethods(), and qt_span_fill_clipped().

qreal QSpanData::m11

Definition at line 177 of file qdrawhelper_p.h.

Referenced by setupMatrix().

qreal QSpanData::m12

Definition at line 177 of file qdrawhelper_p.h.

Referenced by setupMatrix().

qreal QSpanData::m21

Definition at line 177 of file qdrawhelper_p.h.

Referenced by setupMatrix().

qreal QSpanData::m22

Definition at line 177 of file qdrawhelper_p.h.

Referenced by setupMatrix().

qreal QSpanData::dx

Definition at line 177 of file qdrawhelper_p.h.

Referenced by QRasterPaintEngine::drawImage(), QRasterPaintEngine::drawTiledPixmap(), and setupMatrix().

qreal QSpanData::dy

Definition at line 177 of file qdrawhelper_p.h.

Referenced by QRasterPaintEngine::drawImage(), QRasterPaintEngine::drawTiledPixmap(), and setupMatrix().

enum QSpanData::Type QSpanData::type

Referenced by adjustSpanMethods(), QRasterPaintEngine::drawImage(), QRasterPaintEngine::drawTiledPixmap(), and setup().

int QSpanData::txop

Definition at line 186 of file qdrawhelper_p.h.

Referenced by setupMatrix().

bool QSpanData::bilinear

Definition at line 187 of file qdrawhelper_p.h.

Referenced by setupMatrix().

QImage QSpanData::tempImage

Definition at line 188 of file qdrawhelper_p.h.

Referenced by setup().

SolidData QSpanData::solid

Definition at line 190 of file qdrawhelper_p.h.

Referenced by setup().

GradientData QSpanData::gradient

Definition at line 191 of file qdrawhelper_p.h.

Referenced by setup().

TextureData QSpanData::texture

Definition at line 192 of file qdrawhelper_p.h.

Referenced by initTexture(), and setup().

union { ... }


The documentation for this struct was generated from the following files:
Generated on Thu Mar 15 18:57:56 2007 for Qt 4.2 User's Guide by  doxygen 1.5.1