Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Public Member Functions | List of all members
SafeRLEAdditiveBlitter Class Reference
Inheritance diagram for SafeRLEAdditiveBlitter:
RunBasedAdditiveBlitter AdditiveBlitter SkBlitter

Public Member Functions

 SafeRLEAdditiveBlitter (SkBlitter *realBlitter, const SkIRect &ir, const SkIRect &clipBounds, bool isInverse)
 
void blitAntiH (int x, int y, const SkAlpha antialias[], int len) override
 
void blitAntiH (int x, int y, const SkAlpha alpha) override
 
void blitAntiH (int x, int y, int width, const SkAlpha alpha) override
 
- Public Member Functions inherited from RunBasedAdditiveBlitter
 RunBasedAdditiveBlitter (SkBlitter *realBlitter, const SkIRect &ir, const SkIRect &clipBounds, bool isInverse)
 
 ~RunBasedAdditiveBlitter () override
 
SkBlittergetRealBlitter (bool forceRealBlitter) override
 
int getWidth () override
 
void flush_if_y_changed (SkFixed y, SkFixed nextY) override
 
- Public Member Functions inherited from AdditiveBlitter
 ~AdditiveBlitter () override
 
void blitAntiH (int x, int y, const SkAlpha antialias[], const int16_t runs[]) override
 
void blitV (int x, int y, int height, SkAlpha alpha) override
 Blit a vertical run of pixels with a constant alpha value.
 
void blitH (int x, int y, int width) override
 Blit a horizontal run of one or more pixels.
 
void blitRect (int x, int y, int width, int height) override
 Blit a solid rectangle one or more pixels wide.
 
void blitAntiRect (int x, int y, int width, int height, SkAlpha leftAlpha, SkAlpha rightAlpha) override
 
- Public Member Functions inherited from SkBlitter
virtual ~SkBlitter ()
 
void blitFatAntiRect (const SkRect &rect)
 
virtual void blitMask (const SkMask &, const SkIRect &clip)
 
virtual void blitAntiH2 (int x, int y, U8CPU a0, U8CPU a1)
 
virtual void blitAntiV2 (int x, int y, U8CPU a0, U8CPU a1)
 
virtual bool isNullBlitter () const
 
virtual int requestRowsPreserved () const
 
virtual void * allocBlitMemory (size_t sz)
 
void blitRectRegion (const SkIRect &rect, const SkRegion &clip)
 
void blitRegion (const SkRegion &clip)
 

Additional Inherited Members

- Static Public Member Functions inherited from SkBlitter
static bool UseLegacyBlitter (const SkPixmap &, const SkPaint &, const SkMatrix &)
 
static SkBlitterChoose (const SkPixmap &dst, const SkMatrix &ctm, const SkPaint &paint, SkArenaAlloc *, bool drawCoverage, sk_sp< SkShader > clipShader, const SkSurfaceProps &props)
 
static SkBlitterChooseSprite (const SkPixmap &dst, const SkPaint &, const SkPixmap &src, int left, int top, SkArenaAlloc *, sk_sp< SkShader > clipShader)
 
- Protected Member Functions inherited from RunBasedAdditiveBlitter
bool check (int x, int width) const
 
int getRunsSz () const
 
void advanceRuns ()
 
SkAlpha snapAlpha (SkAlpha alpha)
 
void flush ()
 
void checkY (int y)
 
- Protected Attributes inherited from RunBasedAdditiveBlitter
SkBlitterfRealBlitter
 
int fCurrY
 
int fWidth
 
int fLeft
 
int fTop
 
int fRunsToBuffer
 
void * fRunsBuffer
 
int fCurrentRun
 
SkAlphaRuns fRuns
 
int fOffsetX
 
- Protected Attributes inherited from SkBlitter
SkAutoMalloc fBlitMemory
 

Detailed Description

Definition at line 459 of file SkScan_AAAPath.cpp.

Constructor & Destructor Documentation

◆ SafeRLEAdditiveBlitter()

SafeRLEAdditiveBlitter::SafeRLEAdditiveBlitter ( SkBlitter realBlitter,
const SkIRect ir,
const SkIRect clipBounds,
bool  isInverse 
)
inline

Definition at line 461 of file SkScan_AAAPath.cpp.

465 : RunBasedAdditiveBlitter(realBlitter, ir, clipBounds, isInverse) {}

Member Function Documentation

◆ blitAntiH() [1/3]

void SafeRLEAdditiveBlitter::blitAntiH ( int  x,
int  y,
const SkAlpha  alpha 
)
overridevirtual

Reimplemented from RunBasedAdditiveBlitter.

Definition at line 501 of file SkScan_AAAPath.cpp.

501 {
502 checkY(y);
503 x -= fLeft;
504
505 if (x < fOffsetX) {
506 fOffsetX = 0;
507 }
508
509 if (check(x, 1)) {
510 // Break the run
511 fOffsetX = fRuns.add(x, 0, 1, 0, 0, fOffsetX);
512 safely_add_alpha(&fRuns.fAlpha[x], alpha);
513 }
514}
#define check(reporter, ref, unref, make, kill)
static void safely_add_alpha(SkAlpha *alpha, SkAlpha delta)
uint8_t * fAlpha
Definition SkAlphaRuns.h:27
SK_ALWAYS_INLINE int add(int x, U8CPU startAlpha, int middleCount, U8CPU stopAlpha, U8CPU maxValue, int offsetX)
Definition SkAlphaRuns.h:58
double y
double x

◆ blitAntiH() [2/3]

void SafeRLEAdditiveBlitter::blitAntiH ( int  x,
int  y,
const SkAlpha  antialias[],
int  len 
)
overridevirtual

Reimplemented from RunBasedAdditiveBlitter.

Definition at line 472 of file SkScan_AAAPath.cpp.

472 {
473 checkY(y);
474 x -= fLeft;
475
476 if (x < 0) {
477 len += x;
478 antialias -= x;
479 x = 0;
480 }
481 len = std::min(len, fWidth - x);
482 SkASSERT(check(x, len));
483
484 if (x < fOffsetX) {
485 fOffsetX = 0;
486 }
487
488 fOffsetX = fRuns.add(x, 0, len, 0, 0, fOffsetX); // Break the run
489 for (int i = 0; i < len; i += fRuns.fRuns[x + i]) {
490 for (int j = 1; j < fRuns.fRuns[x + i]; j++) {
491 fRuns.fRuns[x + i + j] = 1;
492 fRuns.fAlpha[x + i + j] = fRuns.fAlpha[x + i];
493 }
494 fRuns.fRuns[x + i] = 1;
495 }
496 for (int i = 0; i < len; ++i) {
497 safely_add_alpha(&fRuns.fAlpha[x + i], antialias[i]);
498 }
499}
#define SkASSERT(cond)
Definition SkAssert.h:116
int16_t * fRuns
Definition SkAlphaRuns.h:26

◆ blitAntiH() [3/3]

void SafeRLEAdditiveBlitter::blitAntiH ( int  x,
int  y,
int  width,
const SkAlpha  alpha 
)
overridevirtual

Reimplemented from RunBasedAdditiveBlitter.

Definition at line 516 of file SkScan_AAAPath.cpp.

516 {
517 checkY(y);
518 x -= fLeft;
519
520 if (x < fOffsetX) {
521 fOffsetX = 0;
522 }
523
524 if (check(x, width)) {
525 // Break the run
526 fOffsetX = fRuns.add(x, 0, width, 0, 0, fOffsetX);
527 for (int i = x; i < x + width; i += fRuns.fRuns[i]) {
528 safely_add_alpha(&fRuns.fAlpha[i], alpha);
529 }
530 }
531}
int32_t width

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