Qt 4.8
Classes | Public Types | Public Functions | Public Variables | Private Functions | List of all members
QCosmeticStroker Class Reference

#include <qcosmeticstroker_p.h>

Classes

struct  Point
 
struct  PointF
 

Public Types

enum  { NSPANS = 255 }
 
enum  Caps { NoCaps = 0, CapBegin = 0x1, CapEnd = 0x2 }
 
enum  Direction {
  TopToBottom = 0x1, BottomToTop = 0x2, LeftToRight = 0x4, RightToLeft = 0x8,
  VerticalMask = 0x3, HorizontalMask = 0xc
}
 

Public Functions

bool clipLine (qreal &x1, qreal &y1, qreal &x2, qreal &y2)
 
void drawLine (const QPointF &p1, const QPointF &p2)
 
void drawPath (const QVectorPath &path)
 
void drawPoints (const QPoint *points, int num)
 
void drawPoints (const QPointF *points, int num)
 
 QCosmeticStroker (QRasterPaintEngineState *s, const QRect &dr, const QRect &dr_unclipped)
 
 ~QCosmeticStroker ()
 

Public Variables

ProcessSpans blend
 
QRect clip
 
uint color
 
int current_span
 
QRect deviceRect
 
bool drawCaps
 
bool lastAxisAligned
 
Direction lastDir
 
Point lastPixel
 
int opacity
 
int * pattern
 
int patternLength
 
int patternOffset
 
int patternSize
 
uintpixels
 
int ppl
 
int * reversePattern
 
QT_FT_Span spans [NSPANS]
 
QRasterPaintEngineStatestate
 
StrokeLine stroke
 
qreal xmax
 
qreal xmin
 
qreal ymax
 
qreal ymin
 

Private Functions

void calculateLastPoint (qreal rx1, qreal ry1, qreal rx2, qreal ry2)
 
void renderCubic (const QPointF &p1, const QPointF &p2, const QPointF &p3, const QPointF &p4, int caps)
 
void renderCubicSubdivision (PointF *points, int level, int caps)
 
void setup ()
 

Detailed Description

Definition at line 61 of file qcosmeticstroker_p.h.

Enumerations

◆ anonymous enum

anonymous enum
Enumerator
NSPANS 

Definition at line 125 of file qcosmeticstroker_p.h.

◆ Caps

Enumerator
NoCaps 
CapBegin 
CapEnd 

Definition at line 73 of file qcosmeticstroker_p.h.

◆ Direction

Enumerator
TopToBottom 
BottomToTop 
LeftToRight 
RightToLeft 
VerticalMask 
HorizontalMask 

Definition at line 80 of file qcosmeticstroker_p.h.

Constructors and Destructors

◆ QCosmeticStroker()

QCosmeticStroker::QCosmeticStroker ( QRasterPaintEngineState s,
const QRect dr,
const QRect dr_unclipped 
)
inline

◆ ~QCosmeticStroker()

QCosmeticStroker::~QCosmeticStroker ( )
inline

Definition at line 102 of file qcosmeticstroker_p.h.

102 { free(pattern); free(reversePattern); }

Functions

◆ calculateLastPoint()

void QCosmeticStroker::calculateLastPoint ( qreal  rx1,
qreal  ry1,
qreal  rx2,
qreal  ry2 
)
private

Definition at line 411 of file qcosmeticstroker.cpp.

412 {
413  // this is basically the same code as used in the aliased stroke method,
414  // but it only determines the direction and last point of a line
415  //
416  // This is being used to have proper dropout control for closed contours
417  // by calculating the direction and last pixel of the last segment in the contour.
418  // the info is then used to perform dropout control when drawing the first line segment
419  // of the contour
420  lastPixel.x = -1;
421  lastPixel.y = -1;
422 
423  if (clipLine(rx1, ry1, rx2, ry2))
424  return;
425 
426  const int half = 31;
427  int x1 = toF26Dot6(rx1) + half;
428  int y1 = toF26Dot6(ry1) + half;
429  int x2 = toF26Dot6(rx2) + half;
430  int y2 = toF26Dot6(ry2) + half;
431 
432  int dx = qAbs(x2 - x1);
433  int dy = qAbs(y2 - y1);
434 
435  if (dx < dy) {
436  // vertical
437  bool swapped = false;
438  if (y1 > y2) {
439  swapped = true;
440  qSwap(y1, y2);
441  qSwap(x1, x2);
442  }
443  int xinc = F16Dot16FixedDiv(x2 - x1, y2 - y1);
444  int x = x1 << 10;
445 
446  int y = (y1 + 32) >> 6;
447  int ys = (y2 + 32) >> 6;
448 
449  if (y != ys) {
450  x += ( ((((y << 6) + 32 - y1))) * xinc ) >> 6;
451 
452  if (swapped) {
453  lastPixel.x = x >> 16;
454  lastPixel.y = y;
456  } else {
457  lastPixel.x = (x + (ys - y - 1)*xinc) >> 16;
458  lastPixel.y = ys - 1;
460  }
461  lastAxisAligned = qAbs(xinc) < (1 << 14);
462  }
463  } else {
464  // horizontal
465  if (!dx)
466  return;
467 
468  bool swapped = false;
469  if (x1 > x2) {
470  swapped = true;
471  qSwap(x1, x2);
472  qSwap(y1, y2);
473  }
474  int yinc = F16Dot16FixedDiv(y2 - y1, x2 - x1);
475  int y = y1 << 10;
476 
477  int x = (x1 + 32) >> 6;
478  int xs = (x2 + 32) >> 6;
479 
480  if (x != xs) {
481  y += ( ((((x << 6) + 32 - x1))) * yinc ) >> 6;
482 
483  if (swapped) {
484  lastPixel.x = x;
485  lastPixel.y = y >> 16;
487  } else {
488  lastPixel.x = xs - 1;
489  lastPixel.y = (y + (xs - x - 1)*yinc) >> 16;
491  }
492  lastAxisAligned = qAbs(yinc) < (1 << 14);
493  }
494  }
495 // qDebug() << " moveTo: setting last pixel to x/y dir" << lastPixel.x << lastPixel.y << lastDir;
496 }
#define toF26Dot6(x)
Q_DECL_CONSTEXPR T qAbs(const T &t)
Definition: qglobal.h:1201
static int F16Dot16FixedDiv(int x, int y)
void qSwap(T &value1, T &value2)
Definition: qglobal.h:2181
bool clipLine(qreal &x1, qreal &y1, qreal &x2, qreal &y2)

◆ clipLine()

bool QCosmeticStroker::clipLine ( qreal x1,
qreal y1,
qreal x2,
qreal y2 
)

Definition at line 312 of file qcosmeticstroker.cpp.

Referenced by drawLine(), and drawLineAA().

313 {
314  // basic/rough clipping is done in floating point coordinates to avoid
315  // integer overflow problems.
316  if (x1 < xmin) {
317  if (x2 <= xmin)
318  goto clipped;
319  y1 += (y2 - y1)/(x2 - x1) * (xmin - x1);
320  x1 = xmin;
321  } else if (x1 > xmax) {
322  if (x2 >= xmax)
323  goto clipped;
324  y1 += (y2 - y1)/(x2 - x1) * (xmax - x1);
325  x1 = xmax;
326  }
327  if (x2 < xmin) {
328  lastPixel.x = -1;
329  y2 += (y2 - y1)/(x2 - x1) * (xmin - x2);
330  x2 = xmin;
331  } else if (x2 > xmax) {
332  lastPixel.x = -1;
333  y2 += (y2 - y1)/(x2 - x1) * (xmax - x2);
334  x2 = xmax;
335  }
336 
337  if (y1 < ymin) {
338  if (y2 <= ymin)
339  goto clipped;
340  x1 += (x2 - x1)/(y2 - y1) * (ymin - y1);
341  y1 = ymin;
342  } else if (y1 > ymax) {
343  if (y2 >= ymax)
344  goto clipped;
345  x1 += (x2 - x1)/(y2 - y1) * (ymax - y1);
346  y1 = ymax;
347  }
348  if (y2 < ymin) {
349  lastPixel.x = -1;
350  x2 += (x2 - x1)/(y2 - y1) * (ymin - y2);
351  y2 = ymin;
352  } else if (y2 > ymax) {
353  lastPixel.x = -1;
354  x2 += (x2 - x1)/(y2 - y1) * (ymax - y2);
355  y2 = ymax;
356  }
357 
358  return false;
359 
360  clipped:
361  lastPixel.x = -1;
362  return true;
363 }

◆ drawLine()

void QCosmeticStroker::drawLine ( const QPointF p1,
const QPointF p2 
)

Definition at line 366 of file qcosmeticstroker.cpp.

Referenced by QRasterPaintEngine::drawLines(), and ~QCosmeticStroker().

367 {
368  if (p1 == p2) {
369  drawPoints(&p1, 1);
370  return;
371  }
372 
373  QPointF start = p1 * state->matrix;
374  QPointF end = p2 * state->matrix;
375 
377  lastPixel.x = -1;
378 
379  stroke(this, start.x(), start.y(), end.x(), end.y(), drawCaps ? CapBegin|CapEnd : 0);
380 
382  current_span = 0;
383 }
The QPointF class defines a point in the plane using floating point precision.
Definition: qpoint.h:214
QT_FT_Span spans[NSPANS]
QTransform matrix
Definition: qpainter_p.h:161
qreal x() const
Returns the x-coordinate of this point.
Definition: qpoint.h:282
void drawPoints(const QPoint *points, int num)
qreal y() const
Returns the y-coordinate of this point.
Definition: qpoint.h:287
qreal dashOffset() const
Returns the dash offset for the pen.
Definition: qpen.cpp:547
static const KeyPair *const end
QRasterPaintEngineState * state

◆ drawPath()

void QCosmeticStroker::drawPath ( const QVectorPath path)

Definition at line 518 of file qcosmeticstroker.cpp.

Referenced by QRasterPaintEngine::drawPolygon(), QRasterPaintEngine::drawRects(), QRasterPaintEngine::stroke(), and ~QCosmeticStroker().

519 {
520 // qDebug() << ">>>> drawpath" << path.convertToPainterPath()
521 // << "antialiasing:" << (bool)(state->renderHints & QPainter::Antialiasing) << " implicit close:" << path.hasImplicitClose();
522  if (path.isEmpty())
523  return;
524 
525  const qreal *points = path.points();
526  const QPainterPath::ElementType *type = path.elements();
527 
528  if (type) {
529  const QPainterPath::ElementType *end = type + path.elementCount();
530 
531  while (type < end) {
532  Q_ASSERT(type == path.elements() || *type == QPainterPath::MoveToElement);
533 
534  QPointF p = QPointF(points[0], points[1]) * state->matrix;
536  lastPixel.x = -1;
537  lastPixel.y = -1;
538 
539  bool closed;
540  const QPainterPath::ElementType *e = subPath(type, end, points, &closed);
541  if (closed) {
542  const qreal *p = points + 2*(e-type);
543  QPointF p1 = QPointF(p[-4], p[-3]) * state->matrix;
544  QPointF p2 = QPointF(p[-2], p[-1]) * state->matrix;
545  calculateLastPoint(p1.x(), p1.y(), p2.x(), p2.y());
546  }
547  int caps = (!closed & drawCaps) ? CapBegin : NoCaps;
548 // qDebug() << "closed =" << closed << capString(caps);
549 
550  points += 2;
551  ++type;
552 
553  while (type < e) {
554  QPointF p2 = QPointF(points[0], points[1]) * state->matrix;
555  switch (*type) {
557  Q_ASSERT(!"Logic error");
558  break;
559 
561  if (!closed && drawCaps && type == e - 1)
562  caps |= CapEnd;
563  stroke(this, p.x(), p.y(), p2.x(), p2.y(), caps);
564  p = p2;
565  points += 2;
566  ++type;
567  break;
568 
570  if (!closed && drawCaps && type == e - 3)
571  caps |= CapEnd;
572  QPointF p3 = QPointF(points[2], points[3]) * state->matrix;
573  QPointF p4 = QPointF(points[4], points[5]) * state->matrix;
574  renderCubic(p, p2, p3, p4, caps);
575  p = p4;
576  type += 3;
577  points += 6;
578  break;
579  }
581  Q_ASSERT(!"QPainterPath::toSubpathPolygons(), bad element type");
582  break;
583  }
584  caps = NoCaps;
585  }
586  }
587  } else { // !type, simple polygon
588  QPointF p = QPointF(points[0], points[1]) * state->matrix;
589  QPointF movedTo = p;
591  lastPixel.x = -1;
592  lastPixel.y = -1;
593 
594  const qreal *begin = points;
595  const qreal *end = points + 2*path.elementCount();
596  // handle closed path case
597  bool closed = path.hasImplicitClose() || (points[0] == end[-2] && points[1] == end[-1]);
598  int caps = (!closed & drawCaps) ? CapBegin : NoCaps;
599  if (closed) {
600  QPointF p2 = QPointF(end[-2], end[-1]) * state->matrix;
601  calculateLastPoint(p2.x(), p2.y(), p.x(), p.y());
602  }
603 
604  bool fastPenAliased = (state->flags.fast_pen && !state->flags.antialiased);
605  points += 2;
606  while (points < end) {
607  QPointF p2 = QPointF(points[0], points[1]) * state->matrix;
608 
609  if (!closed && drawCaps && points == end - 2)
610  caps |= CapEnd;
611 
612  QCosmeticStroker::Point last = this->lastPixel;
613  bool unclipped = stroke(this, p.x(), p.y(), p2.x(), p2.y(), caps);
614 
615  /* fix for gaps in polylines with fastpen and aliased in a sequence
616  of points with small distances: if current point p2 has been dropped
617  out, keep last non dropped point p.
618 
619  However, if the line was completely outside the devicerect, we
620  still need to update p to avoid drawing the line after this one from
621  a bad starting position.
622  */
623  if (fastPenAliased && unclipped) {
624  if (last.x != lastPixel.x || last.y != lastPixel.y
625  || points == begin + 2 || points == end - 2) {
626  p = p2;
627  }
628  } else {
629  p = p2;
630  }
631  points += 2;
632  caps = NoCaps;
633  }
634  if (path.hasImplicitClose())
635  stroke(this, p.x(), p.y(), movedTo.x(), movedTo.y(), NoCaps);
636  }
637 
638 
640  current_span = 0;
641 }
ElementType
This enum describes the types of elements used to connect vertices in subpaths.
Definition: qpainterpath.h:70
int type
Definition: qmetatype.cpp:239
double qreal
Definition: qglobal.h:1193
int elementCount() const
bool isEmpty() const
The QPointF class defines a point in the plane using floating point precision.
Definition: qpoint.h:214
QT_FT_Span spans[NSPANS]
QTransform matrix
Definition: qpainter_p.h:161
#define Q_ASSERT(cond)
Definition: qglobal.h:1823
const QPainterPath::ElementType * elements() const
qreal x() const
Returns the x-coordinate of this point.
Definition: qpoint.h:282
void renderCubic(const QPointF &p1, const QPointF &p2, const QPointF &p3, const QPointF &p4, int caps)
const qreal * points() const
bool hasImplicitClose() const
qreal y() const
Returns the y-coordinate of this point.
Definition: qpoint.h:287
void calculateLastPoint(qreal rx1, qreal ry1, qreal rx2, qreal ry2)
qreal dashOffset() const
Returns the dash offset for the pen.
Definition: qpen.cpp:547
static const KeyPair *const end
QRasterPaintEngineState * state
static const QPainterPath::ElementType * subPath(const QPainterPath::ElementType *t, const QPainterPath::ElementType *end, const qreal *points, bool *closed)

◆ drawPoints() [1/2]

void QCosmeticStroker::drawPoints ( const QPoint points,
int  num 
)

Definition at line 385 of file qcosmeticstroker.cpp.

Referenced by QRasterPaintEngine::drawPoints(), and ~QCosmeticStroker().

386 {
387  const QPoint *end = points + num;
388  while (points < end) {
389  QPointF p = QPointF(*points) * state->matrix;
390  drawPixel(this, qRound(p.x()), qRound(p.y()), 255);
391  ++points;
392  }
393 
395  current_span = 0;
396 }
The QPointF class defines a point in the plane using floating point precision.
Definition: qpoint.h:214
QT_FT_Span spans[NSPANS]
QTransform matrix
Definition: qpainter_p.h:161
qreal x() const
Returns the x-coordinate of this point.
Definition: qpoint.h:282
The QPoint class defines a point in the plane using integer precision.
Definition: qpoint.h:53
qreal y() const
Returns the y-coordinate of this point.
Definition: qpoint.h:287
void drawPixel(QCosmeticStroker *stroker, int x, int y, int coverage)
static const KeyPair *const end
QRasterPaintEngineState * state
Q_DECL_CONSTEXPR int qRound(qreal d)
Definition: qglobal.h:1203

◆ drawPoints() [2/2]

void QCosmeticStroker::drawPoints ( const QPointF points,
int  num 
)

Definition at line 398 of file qcosmeticstroker.cpp.

399 {
400  const QPointF *end = points + num;
401  while (points < end) {
402  QPointF p = (*points) * state->matrix;
403  drawPixel(this, qRound(p.x()), qRound(p.y()), 255);
404  ++points;
405  }
406 
408  current_span = 0;
409 }
The QPointF class defines a point in the plane using floating point precision.
Definition: qpoint.h:214
QT_FT_Span spans[NSPANS]
QTransform matrix
Definition: qpainter_p.h:161
qreal x() const
Returns the x-coordinate of this point.
Definition: qpoint.h:282
qreal y() const
Returns the y-coordinate of this point.
Definition: qpoint.h:287
void drawPixel(QCosmeticStroker *stroker, int x, int y, int coverage)
static const KeyPair *const end
QRasterPaintEngineState * state
Q_DECL_CONSTEXPR int qRound(qreal d)
Definition: qglobal.h:1203

◆ renderCubic()

void QCosmeticStroker::renderCubic ( const QPointF p1,
const QPointF p2,
const QPointF p3,
const QPointF p4,
int  caps 
)
private

Definition at line 643 of file qcosmeticstroker.cpp.

644 {
645 // qDebug() << ">>>> renderCubic" << p1 << p2 << p3 << p4 << capString(caps);
646  const int maxSubDivisions = 6;
647  PointF points[3*maxSubDivisions + 4];
648 
649  points[3].x = p1.x();
650  points[3].y = p1.y();
651  points[2].x = p2.x();
652  points[2].y = p2.y();
653  points[1].x = p3.x();
654  points[1].y = p3.y();
655  points[0].x = p4.x();
656  points[0].y = p4.y();
657 
658  PointF *p = points;
659  int level = maxSubDivisions;
660 
661  renderCubicSubdivision(p, level, caps);
662 }
qreal x() const
Returns the x-coordinate of this point.
Definition: qpoint.h:282
qreal y() const
Returns the y-coordinate of this point.
Definition: qpoint.h:287
void renderCubicSubdivision(PointF *points, int level, int caps)

◆ renderCubicSubdivision()

void QCosmeticStroker::renderCubicSubdivision ( QCosmeticStroker::PointF points,
int  level,
int  caps 
)
private

Definition at line 690 of file qcosmeticstroker.cpp.

691 {
692  if (level) {
693  qreal dx = points[3].x - points[0].x;
694  qreal dy = points[3].y - points[0].y;
695  qreal len = ((qreal).25) * (qAbs(dx) + qAbs(dy));
696 
697  if (qAbs(dx * (points[0].y - points[2].y) - dy * (points[0].x - points[2].x)) >= len ||
698  qAbs(dx * (points[0].y - points[1].y) - dy * (points[0].x - points[1].x)) >= len) {
699  splitCubic(points);
700 
701  --level;
702  renderCubicSubdivision(points + 3, level, caps & CapBegin);
703  renderCubicSubdivision(points, level, caps & CapEnd);
704  return;
705  }
706  }
707 
708  stroke(this, points[3].x, points[3].y, points[0].x, points[0].y, caps);
709 }
double qreal
Definition: qglobal.h:1193
Q_DECL_CONSTEXPR T qAbs(const T &t)
Definition: qglobal.h:1201
static void splitCubic(QCosmeticStroker::PointF *points)
void renderCubicSubdivision(PointF *points, int level, int caps)

◆ setup()

void QCosmeticStroker::setup ( )
private

Definition at line 233 of file qcosmeticstroker.cpp.

Referenced by QCosmeticStroker().

234 {
237  clip &= state->clip->clipRect;
239  }
240 
241  int strokeSelection = 0;
247  strokeSelection |= FastDraw;
248 
250  strokeSelection |= AntiAliased;
251 
252  const QVector<qreal> &penPattern = state->lastPen.dashPattern();
253  if (penPattern.isEmpty()) {
255  pattern = 0;
256  reversePattern = 0;
257  patternLength = 0;
258  patternSize = 0;
259  } else {
260  pattern = (int *)malloc(penPattern.size()*sizeof(int));
261  reversePattern = (int *)malloc(penPattern.size()*sizeof(int));
262  patternSize = penPattern.size();
263 
264  patternLength = 0;
265  for (int i = 0; i < patternSize; ++i) {
266  patternLength += (int) qMax(1. , penPattern.at(i)*64.);
267  pattern[i] = patternLength;
268  }
269  patternLength = 0;
270  for (int i = 0; i < patternSize; ++i) {
271  patternLength += (int) qMax(1., penPattern.at(patternSize - 1 - i)*64.);
273  }
274  strokeSelection |= Dashed;
275 // qDebug() << "setup: size=" << patternSize << "length=" << patternLength/64.;
276  }
277 
278  stroke = strokeLine(strokeSelection);
279 
280  qreal width = state->lastPen.widthF();
281  if (width == 0)
282  opacity = 256;
283  else if (state->lastPen.isCosmetic())
284  opacity = (int) 256*width;
285  else
286  opacity = (int) 256*width*state->txscale;
287  opacity = qBound(0, opacity, 256);
288 
290 
291  if (strokeSelection & FastDraw) {
294  pixels = (uint *)buffer->buffer();
295  ppl = buffer->bytesPerLine()>>2;
296  }
297 
298  // line drawing produces different results with different clips, so
299  // we need to clip consistently when painting to the same device
300 
301  // setup FP clip bounds
302  xmin = deviceRect.left() - 1;
303  xmax = deviceRect.right() + 2;
304  ymin = deviceRect.top() - 1;
305  ymax = deviceRect.bottom() + 2;
306 
307  lastPixel.x = -1;
308  lastPixel.y = -1;
309 }
QImage::Format format
static StrokeLine strokeLine(int strokeSelection)
double qreal
Definition: qglobal.h:1193
QPainter::RenderHints renderHints
Definition: qpainter_p.h:158
int left() const
Returns the x-coordinate of the rectangle&#39;s left edge.
Definition: qrect.h:240
int bottom() const
Returns the y-coordinate of the rectangle&#39;s bottom edge.
Definition: qrect.h:249
int bytesPerLine() const
#define Q_ASSERT(cond)
Definition: qglobal.h:1823
QSolidData solid
QVector< qreal > dashPattern() const
Returns the dash pattern of this pen.
Definition: qpen.cpp:466
Q_DECL_CONSTEXPR const T & qMax(const T &a, const T &b)
Definition: qglobal.h:1217
ProcessSpans blend
bool isCosmetic() const
Returns true if the pen is cosmetic; otherwise returns false.
Definition: qpen.cpp:840
Q_STATIC_INLINE_FUNCTION uint INTERPOLATE_PIXEL_256(uint x, uint a, uint y, uint b)
QPainter::CompositionMode compositionMode() const
Returns the composition mode in the current paint engine state.
Definition: qpainter.cpp:9503
unsigned int uint
Definition: qglobal.h:996
const T & at(int i) const
Returns the item at index position i in the vector.
Definition: qvector.h:350
bool isEmpty() const
Returns true if the rectangle is empty, otherwise returns false.
Definition: qrect.h:234
int top() const
Returns the y-coordinate of the rectangle&#39;s top edge.
Definition: qrect.h:243
int right() const
Returns the x-coordinate of the rectangle&#39;s right edge.
Definition: qrect.h:246
QRasterBuffer * rasterBuffer
Q_DECL_CONSTEXPR const T & qBound(const T &min, const T &val, const T &max)
Definition: qglobal.h:1219
qreal widthF() const
Returns the pen width with floating point precision.
Definition: qpen.cpp:645
uchar * buffer() const
bool isEmpty() const
Returns true if the vector has size 0; otherwise returns false.
Definition: qvector.h:139
ProcessSpans unclipped_blend
Qt::PenCapStyle capStyle() const
Returns the pen&#39;s cap style.
Definition: qpen.cpp:706
enum QSpanData::Type type
int size() const
Returns the number of items in the vector.
Definition: qvector.h:137
QRasterPaintEngineState * state

Properties

◆ blend

ProcessSpans QCosmeticStroker::blend

Definition at line 128 of file qcosmeticstroker_p.h.

Referenced by drawPixel().

◆ clip

QRect QCosmeticStroker::clip

Definition at line 111 of file qcosmeticstroker_p.h.

Referenced by drawPixel(), drawPixelARGB32(), and drawPixelARGB32Opaque().

◆ color

uint QCosmeticStroker::color

Definition at line 132 of file qcosmeticstroker_p.h.

Referenced by drawPixelARGB32(), and drawPixelARGB32Opaque().

◆ current_span

int QCosmeticStroker::current_span

Definition at line 127 of file qcosmeticstroker_p.h.

Referenced by drawPixel().

◆ deviceRect

QRect QCosmeticStroker::deviceRect

Definition at line 110 of file qcosmeticstroker_p.h.

◆ drawCaps

bool QCosmeticStroker::drawCaps

Definition at line 117 of file qcosmeticstroker_p.h.

◆ lastAxisAligned

bool QCosmeticStroker::lastAxisAligned

Definition at line 138 of file qcosmeticstroker_p.h.

Referenced by drawLine().

◆ lastDir

Direction QCosmeticStroker::lastDir

Definition at line 136 of file qcosmeticstroker_p.h.

Referenced by drawLine().

◆ lastPixel

Point QCosmeticStroker::lastPixel

Definition at line 137 of file qcosmeticstroker_p.h.

Referenced by drawLine().

◆ opacity

int QCosmeticStroker::opacity

Definition at line 130 of file qcosmeticstroker_p.h.

Referenced by drawPixel().

◆ pattern

int* QCosmeticStroker::pattern

Definition at line 119 of file qcosmeticstroker_p.h.

Referenced by ~QCosmeticStroker().

◆ patternLength

int QCosmeticStroker::patternLength

Definition at line 122 of file qcosmeticstroker_p.h.

◆ patternOffset

int QCosmeticStroker::patternOffset

Definition at line 123 of file qcosmeticstroker_p.h.

◆ patternSize

int QCosmeticStroker::patternSize

Definition at line 121 of file qcosmeticstroker_p.h.

◆ pixels

uint* QCosmeticStroker::pixels

Definition at line 133 of file qcosmeticstroker_p.h.

Referenced by drawPixelARGB32(), and drawPixelARGB32Opaque().

◆ ppl

int QCosmeticStroker::ppl

Definition at line 134 of file qcosmeticstroker_p.h.

Referenced by drawPixelARGB32(), and drawPixelARGB32Opaque().

◆ reversePattern

int* QCosmeticStroker::reversePattern

Definition at line 120 of file qcosmeticstroker_p.h.

Referenced by ~QCosmeticStroker().

◆ spans

QT_FT_Span QCosmeticStroker::spans[NSPANS]

Definition at line 126 of file qcosmeticstroker_p.h.

Referenced by drawPixel().

◆ state

QRasterPaintEngineState* QCosmeticStroker::state

Definition at line 109 of file qcosmeticstroker_p.h.

Referenced by drawPixel().

◆ stroke

StrokeLine QCosmeticStroker::stroke

Definition at line 116 of file qcosmeticstroker_p.h.

◆ xmax

qreal QCosmeticStroker::xmax

Definition at line 113 of file qcosmeticstroker_p.h.

◆ xmin

qreal QCosmeticStroker::xmin

Definition at line 113 of file qcosmeticstroker_p.h.

◆ ymax

qreal QCosmeticStroker::ymax

Definition at line 114 of file qcosmeticstroker_p.h.

◆ ymin

qreal QCosmeticStroker::ymin

Definition at line 114 of file qcosmeticstroker_p.h.


The documentation for this class was generated from the following files: