Flutter Engine Uber Docs
Docs for the entire Flutter Engine repo.
 
Loading...
Searching...
No Matches
impeller::Canvas::PathBlurShape Class Reference

Inherits impeller::Canvas::BlurShape.

Public Member Functions

 PathBlurShape (const PathSource &source, std::shared_ptr< ShadowVertices > shadow_vertices, Sigma sigma)
 
Rect GetBounds () const override
 
std::shared_ptr< SolidBlurContentsBuildBlurContent (Sigma sigma) override
 
const GeometryBuildDrawGeometry () override
 

Detailed Description

Definition at line 247 of file canvas.cc.

Constructor & Destructor Documentation

◆ PathBlurShape()

impeller::Canvas::PathBlurShape::PathBlurShape ( const PathSource source,
std::shared_ptr< ShadowVertices shadow_vertices,
Sigma  sigma 
)
inline

Construct a PathBlurShape from a path source, a set of shadow vertices (typically produced by ShadowPathGeometry) and the sigma that was used to generate the vertex mesh.

The sigma was already used to generate the shadow vertices, so it is provided here only to make sure it matches the sigma we will see in our BuildBlurContent method.

The source was used to generate the mesh and it might be used again for the SOLID mask operation so we save it here in case the mask rendering code calls our BuildDrawGeometry method. Its lifetime must survive the lifetime of this object, typically because the source object was stack allocated not long before this object is also being stack allocated.

Definition at line 263 of file canvas.cc.

266 : sigma_(sigma),
267 source_(source),
268 shadow_vertices_(std::move(shadow_vertices)) {}

Member Function Documentation

◆ BuildBlurContent()

std::shared_ptr< SolidBlurContents > impeller::Canvas::PathBlurShape::BuildBlurContent ( Sigma  sigma)
inlineoverride

Definition at line 274 of file canvas.cc.

274 {
275 // We have to use the sigma to generate the mesh up front in order to
276 // even know if we can perform the operation, but then the method that
277 // actually uses our contents informs us of the sigma, but it's too
278 // late to make use of it. Instead we remember what sigma we used and
279 // make sure they match.
280 FML_DCHECK(sigma_.sigma == sigma.sigma);
281 return ShadowVerticesContents::Make(shadow_vertices_);
282 }
static std::shared_ptr< ShadowVerticesContents > Make(const std::shared_ptr< ShadowVertices > &geometry)
#define FML_DCHECK(condition)
Definition logging.h:122
Scalar sigma
Definition sigma.h:33

References FML_DCHECK, impeller::ShadowVerticesContents::Make(), and impeller::Sigma::sigma.

◆ BuildDrawGeometry()

const Geometry & impeller::Canvas::PathBlurShape::BuildDrawGeometry ( )
inlineoverride

Definition at line 284 of file canvas.cc.

284 {
285 return source_geometry_.emplace(source_);
286 }

◆ GetBounds()

Rect impeller::Canvas::PathBlurShape::GetBounds ( ) const
inlineoverride

Definition at line 270 of file canvas.cc.

270 {
271 return shadow_vertices_->GetBounds().value_or(Rect());
272 }
TRect< Scalar > Rect
Definition rect.h:822

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