| Flutter Impeller |

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

A geometry class specialized for Canvas::DrawPoints. More...

`#include <point_field_geometry.h>`

Inheritance diagram for impeller::PointFieldGeometry:

## Public Member Functions
| PointFieldGeometry (const Point *points, size_t point_count, Scalar radius, bool round)
| ~PointFieldGeometry () override
std::optional< Rect > | GetCoverage (const Matrix &transform) const override
Public Member Functions inherited from impeller::Geometry
virtual | ~Geometry ()
virtual GeometryResult::Mode | GetResultMode () const
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 Matrix &transform) const

## Additional Inherited Members
Static Public Member Functions inherited from impeller::Geometry
static std::unique_ptr< Geometry > | MakeFillPath (const flutter::DlPath &path, std::optional< Rect > inner_rect=std::nullopt)
static std::unique_ptr< Geometry > | MakeStrokePath (const flutter::DlPath &path, const StrokeParameters &stroke={})
static std::unique_ptr< Geometry > | MakeCover ()
static std::unique_ptr< Geometry > | MakeRect (const Rect &rect)
static std::unique_ptr< Geometry > | MakeOval (const Rect &rect)
static std::unique_ptr< Geometry > | MakeLine (const Point &p0, const Point &p1, const StrokeParameters &stroke)
static std::unique_ptr< Geometry > | MakeCircle (const Point &center, Scalar radius)
static std::unique_ptr< Geometry > | MakeStrokedCircle (const Point &center, Scalar radius, Scalar stroke_width)
static std::unique_ptr< Geometry > | MakeFilledArc (const Rect &oval_bounds, Degrees start, Degrees sweep, bool include_center)
static std::unique_ptr< Geometry > | MakeStrokedArc (const Rect &oval_bounds, Degrees start, Degrees sweep, const StrokeParameters &stroke)
static std::unique_ptr< Geometry > | MakeRoundRect (const Rect &rect, const Size &radii)
static std::unique_ptr< Geometry > | MakeRoundSuperellipse (const Rect &rect, Scalar corner_radius)
static Scalar | ComputeStrokeAlphaCoverage (const Matrix &entity, Scalar stroke_width)
| Compute an alpha value to simulate lower coverage of fractional pixel strokes. More...
static GeometryResult | ComputePositionGeometry (const ContentContext &renderer, const Tessellator::VertexGenerator &generator, const Entity &entity, RenderPass &pass)

## Detailed Description

A geometry class specialized for Canvas::DrawPoints.

Does not hold ownership of the allocated point data, which is expected to be maintained via the display list structure.

Definition at line 16 of file point_field_geometry.h.

## Constructor & Destructor Documentation

## ◆ PointFieldGeometry()

impeller::PointFieldGeometry::PointFieldGeometry | ( | const Point * | points,
|  | size_t | point_count,
|  | Scalar | radius,
|  | bool | round
| ) |  |

Definition at line 15 of file point_field_geometry.cc.

19 : point_count_(point_count),
20 radius_(radius),
21 round_(round),
22 points_(points) {}
points
std::vector< Point > points
Definition: tessellator_libtess.cc:76

## ◆ ~PointFieldGeometry()

impeller::PointFieldGeometry::~PointFieldGeometry | ( |  | ) |
| overridedefault

## Member Function Documentation

## ◆ GetCoverage()

std::optional< Rect > impeller::PointFieldGeometry::GetCoverage | ( | const Matrix & | transform | ) | const
| overridevirtual

Implements impeller::Geometry.

Definition at line 134 of file point_field_geometry.cc.

135 {
136 if (point_count_ > 0) {
137 // Doesn't use MakePointBounds as this isn't resilient to points that
138 // all lie along the same axis.
139 Scalar left = points_[0].x;
140 Scalar top = points_[0].y;
141 Scalar right = points_[0].x;
142 Scalar bottom = points_[0].y;
143 for (auto i = 1u; i < point_count_; i++) {
144 const Point point = points_[i];
145 left = std::min(left, point.x);
146 top = std::min(top, point.y);
147 right = std::max(right, point.x);
148 bottom = std::max(bottom, point.y);
149 }
150 Rect coverage = Rect::MakeLTRB(left - radius_, top - radius_,
151 right + radius_, bottom + radius_);
152 return coverage.TransformBounds(transform);
153 }
154 return std::nullopt;
155 }
transform
Matrix transform
Definition: gaussian_blur_filter_contents.cc:312
impeller::Scalar
float Scalar
Definition: scalar.h:19
impeller::Rect
TRect< Scalar > Rect
Definition: rect.h:788
impeller::Point
TPoint< Scalar > Point
Definition: point.h:425
impeller::TPoint::y
Type y
Definition: point.h:32
impeller::TPoint::x
Type x
Definition: point.h:31
impeller::TRect< Scalar >::MakeLTRB
constexpr static TRect MakeLTRB(Type left, Type top, Type right, Type bottom)
Definition: rect.h:129

References impeller::TRect< Scalar >::MakeLTRB(), transform, impeller::TRect< T >::TransformBounds(), impeller::TPoint< T >::x, and impeller::TPoint< T >::y.

Referenced by impeller::testing::TEST_P().

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

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