Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Public Types | Public Member Functions | List of all members
skgpu::graphite::EdgeAAQuad Class Reference

#include <EdgeAAQuad.h>

Public Types

enum class  Flags : uint8_t {
  kLeft = 0b0001 , kTop = 0b0010 , kRight = 0b0100 , kBottom = 0b1000 ,
  kNone = 0b0000 , kAll = 0b1111
}
 

Public Member Functions

 EdgeAAQuad ()=delete
 
 EdgeAAQuad (const SkRect &rect, SkEnumBitMask< Flags > edgeFlags)
 
 EdgeAAQuad (const Rect &rect, SkEnumBitMask< Flags > edgeFlags)
 
 EdgeAAQuad (const SkPoint points[4], SkEnumBitMask< Flags > edgeFlags)
 
 EdgeAAQuad (const skvx::float4 &xs, const skvx::float4 &ys, SkEnumBitMask< Flags > edgeFlags)
 
Rect bounds () const
 
const skvx::float4xs () const
 
const skvx::float4ys () const
 
SkEnumBitMask< FlagsedgeFlags () const
 
bool isRect () const
 

Detailed Description

EdgeAAQuad contains (x,y) coordinates for the four corners of a quadrilateral, assumed to be convex and in a consistent winding (CW vs. CCW is fine). Locally, the vertices are ordered "top-left", "top-right", "bottom-right", "bottom-left". The edges are in order left (p0-p3), top (p1-p0), right (p2-p1), and bottom (p3-p2).

Definition at line 24 of file EdgeAAQuad.h.

Member Enumeration Documentation

◆ Flags

enum class skgpu::graphite::EdgeAAQuad::Flags : uint8_t
strong
Enumerator
kLeft 
kTop 
kRight 
kBottom 
kNone 
kAll 

Definition at line 27 of file EdgeAAQuad.h.

Constructor & Destructor Documentation

◆ EdgeAAQuad() [1/5]

skgpu::graphite::EdgeAAQuad::EdgeAAQuad ( )
delete

◆ EdgeAAQuad() [2/5]

skgpu::graphite::EdgeAAQuad::EdgeAAQuad ( const SkRect rect,
SkEnumBitMask< Flags edgeFlags 
)
inline

Definition at line 39 of file EdgeAAQuad.h.

40 : fXs{rect.fLeft, rect.fRight, rect.fRight, rect.fLeft}
41 , fYs{rect.fTop, rect.fTop, rect.fBottom, rect.fBottom}
42 , fEdgeFlags(edgeFlags)
43 , fIsRect(true) {}
SkEnumBitMask< Flags > edgeFlags() const
Definition EdgeAAQuad.h:74
sk_sp< SkBlender > blender SkRect rect
Definition SkRecords.h:350

◆ EdgeAAQuad() [3/5]

skgpu::graphite::EdgeAAQuad::EdgeAAQuad ( const Rect rect,
SkEnumBitMask< Flags edgeFlags 
)
inline

Definition at line 44 of file EdgeAAQuad.h.

45 : fXs{skvx::shuffle<0,2,2,0>(rect.ltrb())}
46 , fYs{skvx::shuffle<1,1,3,3>(rect.ltrb())}
47 , fEdgeFlags(edgeFlags)
48 , fIsRect(true) {}

◆ EdgeAAQuad() [4/5]

skgpu::graphite::EdgeAAQuad::EdgeAAQuad ( const SkPoint  points[4],
SkEnumBitMask< Flags edgeFlags 
)
inline

Definition at line 49 of file EdgeAAQuad.h.

50 : fXs{points[0].fX, points[1].fX, points[2].fX, points[3].fX}
51 , fYs{points[0].fY, points[1].fY, points[2].fY, points[3].fY}
52 , fEdgeFlags(edgeFlags)
53 , fIsRect(false) {}
static const int points[]

◆ EdgeAAQuad() [5/5]

skgpu::graphite::EdgeAAQuad::EdgeAAQuad ( const skvx::float4 xs,
const skvx::float4 ys,
SkEnumBitMask< Flags edgeFlags 
)
inline

Definition at line 54 of file EdgeAAQuad.h.

55 : fXs(xs)
56 , fYs(ys)
57 , fEdgeFlags(edgeFlags)
58 , fIsRect(false) {}
const skvx::float4 & ys() const
Definition EdgeAAQuad.h:73
const skvx::float4 & xs() const
Definition EdgeAAQuad.h:72

Member Function Documentation

◆ bounds()

Rect skgpu::graphite::EdgeAAQuad::bounds ( ) const
inline

Definition at line 61 of file EdgeAAQuad.h.

61 {
62 if (fIsRect) {
63 return Rect({fXs[0], fYs[0]}, {fXs[2], fYs[2]});
64 }
65
66 Rect p0p1 = Rect::LTRB(skvx::shuffle<0,2,1,3>(skvx::float4(fXs.lo, fYs.lo))).makeSorted();
67 Rect p2p3 = Rect::LTRB(skvx::shuffle<0,2,1,3>(skvx::float4(fXs.hi, fYs.hi))).makeSorted();
68 return p0p1.makeJoin(p2p3);
69 }
static AI Rect LTRB(float4 ltrb)
Definition Rect.h:36
AI Rect makeSorted() const
Definition Rect.h:141
AI Rect makeJoin(Rect rect) const
Definition Rect.h:139
TRect< Scalar > Rect
Definition rect.h:746
Vec< N/2, T > hi
Definition SkVx.h:117
Vec< N/2, T > lo
Definition SkVx.h:117

◆ edgeFlags()

SkEnumBitMask< Flags > skgpu::graphite::EdgeAAQuad::edgeFlags ( ) const
inline

Definition at line 74 of file EdgeAAQuad.h.

74{ return fEdgeFlags; }

◆ isRect()

bool skgpu::graphite::EdgeAAQuad::isRect ( ) const
inline

Definition at line 76 of file EdgeAAQuad.h.

76{ return fIsRect; }

◆ xs()

const skvx::float4 & skgpu::graphite::EdgeAAQuad::xs ( ) const
inline

Definition at line 72 of file EdgeAAQuad.h.

72{ return fXs; }

◆ ys()

const skvx::float4 & skgpu::graphite::EdgeAAQuad::ys ( ) const
inline

Definition at line 73 of file EdgeAAQuad.h.

73{ return fYs; }

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