#include <qdrawhelper_p.h>
Collaboration diagram for QSpanData:
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 | |
QRasterBuffer * | rasterBuffer |
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 | |
}; |
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;
void QSpanData::init | ( | QRasterBuffer * | rb, | |
QRasterPaintEngine * | pe = 0 | |||
) |
Definition at line 3723 of file qpaintengine_raster.cpp.
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:
Definition at line 171 of file qdrawhelper_p.h.
Referenced by adjustSpanMethods(), qt_span_fill_clipped(), and setup().
Definition at line 175 of file qdrawhelper_p.h.
Referenced by QRasterPaintEnginePrivate::drawBitmap(), QRasterPaintEngine::fillPath(), and qt_span_fill_clipped().
Definition at line 176 of file qdrawhelper_p.h.
Referenced by adjustSpanMethods(), and qt_span_fill_clipped().
qreal QSpanData::m11 |
qreal QSpanData::m12 |
qreal QSpanData::m21 |
qreal QSpanData::m22 |
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().
Referenced by adjustSpanMethods(), QRasterPaintEngine::drawImage(), QRasterPaintEngine::drawTiledPixmap(), and setup().
int QSpanData::txop |
bool QSpanData::bilinear |
union { ... } |