Flutter Engine
The Flutter Engine
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
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:
impeller::Geometry

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 GeometryResult GetPositionBuffer (const ContentContext &renderer, const Entity &entity, RenderPass &pass) const =0
 
virtual GeometryResult::Mode GetResultMode () const
 
virtual std::optional< RectGetCoverage (const Matrix &transform) const =0
 
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
 
virtual Scalar ComputeAlphaCoverage (const Entity &entitys) const
 

Friends

class ImpellerBenchmarkAccessor
 
class ImpellerEntityUnitTestAccessor
 

Additional Inherited Members

- Static Public Member Functions inherited from impeller::Geometry
static std::shared_ptr< GeometryMakeFillPath (const Path &path, std::optional< Rect > inner_rect=std::nullopt)
 
static std::shared_ptr< GeometryMakeStrokePath (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< GeometryMakeCover ()
 
static std::shared_ptr< GeometryMakeRect (const Rect &rect)
 
static std::shared_ptr< GeometryMakeOval (const Rect &rect)
 
static std::shared_ptr< GeometryMakeLine (const Point &p0, const Point &p1, Scalar width, Cap cap)
 
static std::shared_ptr< GeometryMakeCircle (const Point &center, Scalar radius)
 
static std::shared_ptr< GeometryMakeStrokedCircle (const Point &center, Scalar radius, Scalar stroke_width)
 
static std::shared_ptr< GeometryMakeRoundRect (const Rect &rect, const Size &radii)
 
static std::shared_ptr< GeometryMakePointField (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) {}
DEF_SWITCHES_START aot vmservice shared library Name of the *so containing AOT compiled Dart assets for launching the service isolate vm snapshot The VM snapshot data that will be memory mapped as read only SnapshotAssetPath must be present isolate snapshot The isolate snapshot data that will be memory mapped as read only SnapshotAssetPath must be present cache dir path
Definition: switches.h:57
const Scalar stroke_width

◆ ~StrokePathGeometry()

impeller::StrokePathGeometry::~StrokePathGeometry ( )
default

Member Function Documentation

◆ ComputeAlphaCoverage()

Scalar impeller::StrokePathGeometry::ComputeAlphaCoverage ( const Entity entity) const
overridevirtual

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}
static unsigned clamp(SkFixed fx, int max)
float Scalar
Definition: scalar.h:18

◆ 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: