void QBlitterPaintEnginePrivate::updateBrushState(QPainterState *s) { Qt::BrushStyle style = qbrush_style(s->brush); caps.updateState(STATE_BRUSH_PATTERN, style > Qt::SolidPattern); caps.updateState(STATE_BRUSH_ALPHA, qbrush_color(s->brush).alpha() < 255); }
void QBlitterPaintEnginePrivate::updateTransformState(QPainterState *s) { QTransform::TransformationType type = s->matrix.type(); caps.updateState(STATE_XFORM_COMPLEX, type > QTransform::TxScale); caps.updateState(STATE_XFORM_SCALE, type > QTransform::TxTranslate); hasXForm = type >= QTransform::TxTranslate; }
void QBlitterPaintEnginePrivate::updateTransformState(QPainterState *s) { QTransform::TransformationType type = s->matrix.type(); // consider scaling operations with a negative factor as "complex" for now. // as some blitters could handle axisymmetrical operations, we should improve blitter // paint engine to handle them as a capability caps.updateState(STATE_XFORM_COMPLEX, (type > QTransform::TxScale) || ((type == QTransform::TxScale) && ((s->matrix.m11() < 0.0) || (s->matrix.m22() < 0.0)))); caps.updateState(STATE_XFORM_SCALE, type > QTransform::TxTranslate); hasXForm = type >= QTransform::TxTranslate; }
void QBlitterPaintEnginePrivate::updateCompositionModeState(QPainterState *s) { bool nonTrivial = s->composition_mode != QPainter::CompositionMode_SourceOver && s->composition_mode != QPainter::CompositionMode_Source; caps.updateState(STATE_BLENDING_COMPLEX, nonTrivial); }
void QBlitterPaintEnginePrivate::updateClipState(QPainterState *) { const QClipData *clipData = clip(); bool complexClip = clipData && !(clipData->hasRectClip || clipData->hasRegionClip); caps.updateState(STATE_CLIP_COMPLEX, complexClip); }
void QBlitterPaintEnginePrivate::updateRenderHintsState(QPainterState *s) { bool aa = s->renderHints & QPainter::Antialiasing; caps.updateState(STATE_ANTIALIASING, aa); }
void QBlitterPaintEnginePrivate::updateOpacityState(QPainterState *s) { bool translucent = s->opacity < 1; caps.updateState(STATE_ALPHA, translucent); }
void QBlitterPaintEnginePrivate::updatePenState(QPainterState *s) { caps.updateState(STATE_PEN_ENABLED, qpen_style(s->pen) != Qt::NoPen); }