Flutter Engine
The Flutter Engine
Public Member Functions | List of all members
InverseBlitter Class Reference
Inheritance diagram for InverseBlitter:
SkBlitter

Public Member Functions

void setBlitter (SkBlitter *blitter, const SkIRect &clip, int shift)
 
void prepost (int y, bool isStart)
 
void blitH (int x, int y, int width) override
 Blit a horizontal run of one or more pixels. More...
 
void blitAntiH (int, int, const SkAlpha[], 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. More...
 
void blitRect (int x, int y, int width, int height) override
 Blit a solid rectangle one or more pixels wide. More...
 
void blitMask (const SkMask &, const SkIRect &clip) override
 
- Public Member Functions inherited from SkBlitter
virtual ~SkBlitter ()
 
virtual void blitH (int x, int y, int width)=0
 Blit a horizontal run of one or more pixels. More...
 
virtual void blitAntiH (int x, int y, const SkAlpha antialias[], const int16_t runs[])=0
 
virtual void blitV (int x, int y, int height, SkAlpha alpha)
 Blit a vertical run of pixels with a constant alpha value. More...
 
virtual void blitRect (int x, int y, int width, int height)
 Blit a solid rectangle one or more pixels wide. More...
 
virtual void blitAntiRect (int x, int y, int width, int height, SkAlpha leftAlpha, SkAlpha rightAlpha)
 
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 Attributes inherited from SkBlitter
SkAutoMalloc fBlitMemory
 

Detailed Description

Definition at line 322 of file SkScan_Path.cpp.

Member Function Documentation

◆ blitAntiH()

void InverseBlitter::blitAntiH ( int  x,
int  y,
const  antialias[],
const int16_t  runs[] 
)
inlineoverridevirtual

Blit a horizontal run of antialiased pixels; runs[] is a sparse zero-terminated run-length encoding of spans of constant alpha values. The runs[] and antialias[] work together to represent long runs of pixels with the same alphas. The runs[] contains the number of pixels with the same alpha, and antialias[] contain the coverage value for that number of pixels. The runs[] (and antialias[]) are encoded in a clever way. The runs array is zero terminated, and has enough entries for each pixel plus one, in most cases some of the entries will not contain valid data. An entry in the runs array contains the number of pixels (np) that have the same alpha value. The next np value is found np entries away. For example, if runs[0] = 7, then the next valid entry will by at runs[7]. The runs array and antialias[] are coupled by index. So, if the np entry is at runs[45] = 12 then the alpha value can be found at antialias[45] = 0x88. This would mean to use an alpha value of 0x88 for the next 12 pixels starting at pixel 45.

Implements SkBlitter.

Definition at line 350 of file SkScan_Path.cpp.

350 {
351 SkDEBUGFAIL("blitAntiH unexpected");
352 }
#define SkDEBUGFAIL(message)
Definition: SkAssert.h:118

◆ blitH()

void InverseBlitter::blitH ( int  x,
int  y,
int  width 
)
inlineoverridevirtual

Blit a horizontal run of one or more pixels.

Implements SkBlitter.

Definition at line 341 of file SkScan_Path.cpp.

341 {
342 int invWidth = x - fPrevX;
343 if (invWidth > 0) {
344 fBlitter->blitH(fPrevX, y, invWidth);
345 }
346 fPrevX = x + width;
347 }
virtual void blitH(int x, int y, int width)=0
Blit a horizontal run of one or more pixels.
double y
double x
int32_t width

◆ blitMask()

void InverseBlitter::blitMask ( const SkMask mask,
const SkIRect clip 
)
inlineoverridevirtual

Blit a pattern of pixels defined by a rectangle-clipped mask; typically used for text.

Reimplemented from SkBlitter.

Definition at line 359 of file SkScan_Path.cpp.

359 {
360 SkDEBUGFAIL("blitMask unexpected");
361 }

◆ blitRect()

void InverseBlitter::blitRect ( int  x,
int  y,
int  width,
int  height 
)
inlineoverridevirtual

Blit a solid rectangle one or more pixels wide.

Reimplemented from SkBlitter.

Definition at line 356 of file SkScan_Path.cpp.

356 {
357 SkDEBUGFAIL("blitRect unexpected");
358 }

◆ blitV()

void InverseBlitter::blitV ( int  x,
int  y,
int  height,
SkAlpha  alpha 
)
inlineoverridevirtual

Blit a vertical run of pixels with a constant alpha value.

Reimplemented from SkBlitter.

Definition at line 353 of file SkScan_Path.cpp.

353 {
354 SkDEBUGFAIL("blitV unexpected");
355 }

◆ prepost()

void InverseBlitter::prepost ( int  y,
bool  isStart 
)
inline

Definition at line 329 of file SkScan_Path.cpp.

329 {
330 if (isStart) {
331 fPrevX = fFirstX;
332 } else {
333 int invWidth = fLastX - fPrevX;
334 if (invWidth > 0) {
335 fBlitter->blitH(fPrevX, y, invWidth);
336 }
337 }
338 }

◆ setBlitter()

void InverseBlitter::setBlitter ( SkBlitter blitter,
const SkIRect clip,
int  shift 
)
inline

Definition at line 324 of file SkScan_Path.cpp.

324 {
325 fBlitter = blitter;
326 fFirstX = clip.fLeft << shift;
327 fLastX = clip.fRight << shift;
328 }
static SkPath clip(const SkPath &path, const SkHalfPlane &plane)
Definition: SkPath.cpp:3892

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