| Flutter Impeller |

Public Member Functions | Friends | List of all members
impeller::StrokePathGeometry Class Referencefinal

A geometry that is created from a stroked path object. More...

`#include <stroke_path_geometry.h>`

Inheritance diagram for impeller::StrokePathGeometry:

## Public Member Functions
| StrokePathGeometry (const Path &path, Scalar stroke_width, Scalar miter_limit, Cap stroke_cap, Join stroke_join)
| ~StrokePathGeometry ()
Scalar | GetStrokeWidth () const
Scalar | GetMiterLimit () const
Cap | GetStrokeCap () const
Join | GetStrokeJoin () const
Scalar | ComputeAlphaCoverage (const Entity &entity) const override
Public Member Functions inherited from impeller::Geometry
virtual bool | CoversArea (const Matrix &transform, const Rect &rect) const
| Determines if this geometry, transformed by the given `transform`, will completely cover all surface area of the given `rect`. More...
virtual bool | IsAxisAlignedRect () const
virtual bool | CanApplyMaskFilter () const

## Friends
class | ImpellerBenchmarkAccessor
class | ImpellerEntityUnitTestAccessor

## Additional Inherited Members
Static Public Member Functions inherited from impeller::Geometry
static std::shared_ptr< Geometry > | MakeFillPath (const Path &path, std::optional< Rect > inner_rect=std::nullopt)
static std::shared_ptr< Geometry > | MakeStrokePath (const Path &path, Scalar stroke_width=0.0, Scalar miter_limit=4.0, Cap stroke_cap=Cap::kButt, Join stroke_join=Join::kMiter)
static std::shared_ptr< Geometry > | MakeCover ()
static std::shared_ptr< Geometry > | MakeRect (const Rect &rect)
static std::shared_ptr< Geometry > | MakeOval (const Rect &rect)
static std::shared_ptr< Geometry > | MakeLine (const Point &p0, const Point &p1, Scalar width, Cap cap)
static std::shared_ptr< Geometry > | MakeCircle (const Point &center, Scalar radius)
static std::shared_ptr< Geometry > | MakeStrokedCircle (const Point &center, Scalar radius, Scalar stroke_width)
static std::shared_ptr< Geometry > | MakeRoundRect (const Rect &rect, const Size &radii)
static std::shared_ptr< Geometry > | MakePointField (std::vector< Point > points, Scalar radius, bool round)
Static Protected Member Functions inherited from impeller::Geometry
static GeometryResult | ComputePositionGeometry (const ContentContext &renderer, const Tessellator::VertexGenerator &generator, const Entity &entity, RenderPass &pass)

## Detailed Description

A geometry that is created from a stroked path object.

Definition at line 13 of file stroke_path_geometry.h.

## Constructor & Destructor Documentation

## ◆ StrokePathGeometry()

impeller::StrokePathGeometry::StrokePathGeometry | ( | const Path & | path,
|  | Scalar | stroke_width,
|  | Scalar | miter_limit,
|  | Cap | stroke_cap,
|  | Join | stroke_join
| ) |  |

Definition at line 539 of file stroke_path_geometry.cc.

544 : path_(path),
545 stroke_width_(stroke_width),
546 miter_limit_(miter_limit),
547 stroke_cap_(stroke_cap),
548 stroke_join_(stroke_join) {}

## ◆ ~StrokePathGeometry()

impeller::StrokePathGeometry::~StrokePathGeometry | ( |  | ) |
| default

## Member Function Documentation

## ◆ ComputeAlphaCoverage()

Scalar impeller::StrokePathGeometry::ComputeAlphaCoverage | ( | const Entity & | entity | ) | const
| override virtual

Reimplemented from impeller::Geometry.

Definition at line 568 of file stroke_path_geometry.cc.

568 {
569 Scalar scaled_stroke_width =
570 entity.GetTransform().GetMaxBasisLengthXY() * stroke_width_;
571 // If the stroke width is 0 or greater than kMinStrokeSizeMSAA, don't apply
572 // any additional alpha. This is intended to match Skia behavior.
573 if (scaled_stroke_width == 0.0 || scaled_stroke_width >= kMinStrokeSizeMSAA) {
574 return 1.0;
575 }
576 // This scalling is eyeballed from Skia.
577 return std::clamp(scaled_stroke_width * 20.0f, 0.f, 1.f);
578 }

References impeller::Matrix::GetMaxBasisLengthXY(), and impeller::Entity::GetTransform().

## ◆ GetMiterLimit()

Scalar impeller::StrokePathGeometry::GetMiterLimit | ( |  | ) | const

Definition at line 556 of file stroke_path_geometry.cc.

556 {
557 return miter_limit_;
558 }

## ◆ GetStrokeCap()

Cap impeller::StrokePathGeometry::GetStrokeCap | ( |  | ) | const

Definition at line 560 of file stroke_path_geometry.cc.

560 {
561 return stroke_cap_;
562 }

## ◆ GetStrokeJoin()

Join impeller::StrokePathGeometry::GetStrokeJoin | ( |  | ) | const

Definition at line 564 of file stroke_path_geometry.cc.

564 {
565 return stroke_join_;
566 }

## ◆ GetStrokeWidth()

Scalar impeller::StrokePathGeometry::GetStrokeWidth | ( |  | ) | const

Definition at line 552 of file stroke_path_geometry.cc.

552 {
553 return stroke_width_;
554 }

## Friends And Related Function Documentation

## ◆ ImpellerBenchmarkAccessor

friend class ImpellerBenchmarkAccessor
| friend

Definition at line 54 of file stroke_path_geometry.h.

## ◆ ImpellerEntityUnitTestAccessor

friend class ImpellerEntityUnitTestAccessor
| friend

Definition at line 55 of file stroke_path_geometry.h.

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

- impeller/entity/geometry/stroke_path_geometry.h
- impeller/entity/geometry/stroke_path_geometry.cc

impeller::Scalar
float Scalar
Definition: scalar.h:18
stroke_width
const Scalar stroke_width
Definition: stroke_path_geometry.cc:304