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

#include <AnalyticBlurMask.h>

Public Types

enum class  ShapeType { kRect , kRRect , kCircle }
 

Public Member Functions

 AnalyticBlurMask ()=delete
 
const RectdrawBounds () const
 
const SkM44deviceToScaledShape () const
 
const RectshapeData () const
 
ShapeType shapeType () const
 
bool isFast () const
 
float invSixSigma () const
 
sk_sp< TextureProxyrefProxy () const
 

Static Public Member Functions

static std::optional< AnalyticBlurMaskMake (Recorder *, const Transform &localToDevice, float deviceSigma, const SkRRect &srcRRect)
 

Detailed Description

AnalyticBlurMask holds the shader inputs used to do an analytic blur over rects, rrects, or circles.

Definition at line 29 of file AnalyticBlurMask.h.

Member Enumeration Documentation

◆ ShapeType

Constructor & Destructor Documentation

◆ AnalyticBlurMask()

skgpu::graphite::AnalyticBlurMask::AnalyticBlurMask ( )
delete

Member Function Documentation

◆ deviceToScaledShape()

const SkM44 & skgpu::graphite::AnalyticBlurMask::deviceToScaledShape ( ) const
inline

Definition at line 52 of file AnalyticBlurMask.h.

52{ return fDevToScaledShape; }

◆ drawBounds()

const Rect & skgpu::graphite::AnalyticBlurMask::drawBounds ( ) const
inline

Definition at line 51 of file AnalyticBlurMask.h.

51{ return fDrawBounds; }

◆ invSixSigma()

float skgpu::graphite::AnalyticBlurMask::invSixSigma ( ) const
inline

Definition at line 56 of file AnalyticBlurMask.h.

56{ return fInvSixSigma; }

◆ isFast()

bool skgpu::graphite::AnalyticBlurMask::isFast ( ) const
inline

Definition at line 55 of file AnalyticBlurMask.h.

55{ return fIsFast; }

◆ Make()

std::optional< AnalyticBlurMask > skgpu::graphite::AnalyticBlurMask::Make ( Recorder recorder,
const Transform localToDevice,
float  deviceSigma,
const SkRRect srcRRect 
)
static

Definition at line 46 of file AnalyticBlurMask.cpp.

49 {
50 // TODO: Implement SkMatrix functionality used below for Transform.
51 SkMatrix localToDevice = localToDeviceTransform;
52
53 if (srcRRect.isRect() && localToDevice.preservesRightAngles()) {
54 return MakeRect(recorder, localToDevice, deviceSigma, srcRRect.rect());
55 }
56
57 SkRRect devRRect;
58 const bool devRRectIsValid = srcRRect.transform(localToDevice, &devRRect);
59 if (devRRectIsValid && SkRRectPriv::IsCircle(devRRect)) {
60 return MakeCircle(recorder, localToDevice, deviceSigma, srcRRect.rect(), devRRect.rect());
61 }
62
63 // A local-space circle transformed by a rotation matrix will fail SkRRect::transform since it
64 // only supports scale + translate matrices, but is still a valid circle that can be blurred.
65 if (SkRRectPriv::IsCircle(srcRRect) && localToDevice.isSimilarity()) {
66 const SkRect srcRect = srcRRect.rect();
67 const SkPoint devCenter = localToDevice.mapPoint(srcRect.center());
68 const float devRadius = localToDevice.mapVector(0.0f, srcRect.width() / 2.0f).length();
69 const SkRect devRect = {devCenter.x() - devRadius,
70 devCenter.y() - devRadius,
71 devCenter.x() + devRadius,
72 devCenter.y() + devRadius};
73 return MakeCircle(recorder, localToDevice, deviceSigma, srcRect, devRect);
74 }
75
76 // TODO(b/238762890) Support analytic blurring with rrects.
77 return std::nullopt;
78}
bool preservesRightAngles(SkScalar tol=SK_ScalarNearlyZero) const
Definition SkMatrix.cpp:209
SkPoint mapPoint(SkPoint pt) const
Definition SkMatrix.h:1374
bool isSimilarity(SkScalar tol=SK_ScalarNearlyZero) const
Definition SkMatrix.cpp:180
void mapVector(SkScalar dx, SkScalar dy, SkVector *result) const
Definition SkMatrix.h:1524
static bool IsCircle(const SkRRect &rr)
Definition SkRRectPriv.h:18
const SkRect & rect() const
Definition SkRRect.h:264
bool transform(const SkMatrix &matrix, SkRRect *dst) const
Definition SkRRect.cpp:436
bool isRect() const
Definition SkRRect.h:84
constexpr float y() const
constexpr float x() const
constexpr float width() const
Definition SkRect.h:762
constexpr SkPoint center() const
Definition SkRect.h:792

◆ refProxy()

sk_sp< TextureProxy > skgpu::graphite::AnalyticBlurMask::refProxy ( ) const
inline

Definition at line 57 of file AnalyticBlurMask.h.

57{ return fProxy; }

◆ shapeData()

const Rect & skgpu::graphite::AnalyticBlurMask::shapeData ( ) const
inline

Definition at line 53 of file AnalyticBlurMask.h.

53{ return fShapeData; }

◆ shapeType()

ShapeType skgpu::graphite::AnalyticBlurMask::shapeType ( ) const
inline

Definition at line 54 of file AnalyticBlurMask.h.

54{ return fShapeType; }

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