Flutter Impeller
impeller::PointFieldGeometry Class Referencefinal

#include <point_field_geometry.h>

Inheritance diagram for impeller::PointFieldGeometry:
impeller::Geometry

Public Member Functions

 PointFieldGeometry (std::vector< Point > points, Scalar radius, bool round)
 
 ~PointFieldGeometry ()=default
 
- Public Member Functions inherited from impeller::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
 

Static Public Member Functions

static size_t ComputeCircleDivisions (Scalar scaled_radius, bool round)
 Compute the number of vertices to divide each circle into. More...
 
- 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)
 

Additional Inherited Members

- Static Protected Member Functions inherited from impeller::Geometry
static GeometryResult ComputePositionGeometry (const ContentContext &renderer, const Tessellator::VertexGenerator &generator, const Entity &entity, RenderPass &pass)
 
static GeometryResult ComputePositionUVGeometry (const ContentContext &renderer, const Tessellator::VertexGenerator &generator, const Matrix &uv_transform, const Entity &entity, RenderPass &pass)
 

Detailed Description

Definition at line 12 of file point_field_geometry.h.

Constructor & Destructor Documentation

◆ PointFieldGeometry()

impeller::PointFieldGeometry::PointFieldGeometry ( std::vector< Point points,
Scalar  radius,
bool  round 
)

Definition at line 12 of file point_field_geometry.cc.

15  : points_(std::move(points)), radius_(radius), round_(round) {}

◆ ~PointFieldGeometry()

impeller::PointFieldGeometry::~PointFieldGeometry ( )
default

Member Function Documentation

◆ ComputeCircleDivisions()

size_t impeller::PointFieldGeometry::ComputeCircleDivisions ( Scalar  scaled_radius,
bool  round 
)
static

Compute the number of vertices to divide each circle into.

Returns
the number of vertices.

Definition at line 238 of file point_field_geometry.cc.

239  {
240  if (!round) {
241  return 4;
242  }
243 
244  // Note: these values are approximated based on the values returned from
245  // the decomposition of 4 cubics performed by Path::CreatePolyline.
246  if (scaled_radius < 1.0) {
247  return 4;
248  }
249  if (scaled_radius < 2.0) {
250  return 8;
251  }
252  if (scaled_radius < 12.0) {
253  return 24;
254  }
255  if (scaled_radius < 22.0) {
256  return 34;
257  }
258  return std::min(scaled_radius, 140.0f);
259 }

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


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