Flutter Impeller
impeller::PathTessellator::Cubic Struct Reference

#include <path_tessellator.h>

Public Member Functions

Point Last () const
 
Point Solve (Scalar t) const
 
Scalar SubdivisionCount (Scalar scale) const
 
std::optional< Vector2GetStartDirection () const
 
std::optional< Vector2GetEndDirection () const
 

Public Attributes

const Point p1
 
const Point cp1
 
const Point cp2
 
const Point p2
 

Detailed Description

Definition at line 141 of file path_tessellator.h.

Member Function Documentation

◆ GetEndDirection()

std::optional<Vector2> impeller::PathTessellator::Cubic::GetEndDirection ( ) const
inline

Definition at line 174 of file path_tessellator.h.

174  {
175  if (p2 != cp2) {
176  return (p2 - cp2).Normalize();
177  }
178  if (p2 != cp1) {
179  return (p2 - cp1).Normalize();
180  }
181  if (p2 != p1) {
182  return (p2 - p1).Normalize();
183  }
184  return std::nullopt;
185  }

References cp1, cp2, p1, and p2.

◆ GetStartDirection()

std::optional<Vector2> impeller::PathTessellator::Cubic::GetStartDirection ( ) const
inline

Definition at line 161 of file path_tessellator.h.

161  {
162  if (p1 != cp1) {
163  return (p1 - cp1).Normalize();
164  }
165  if (p1 != cp2) {
166  return (p1 - cp2).Normalize();
167  }
168  if (p1 != p2) {
169  return (p1 - p2).Normalize();
170  }
171  return std::nullopt;
172  }

References cp1, cp2, p1, and p2.

◆ Last()

Point impeller::PathTessellator::Cubic::Last ( ) const
inline

Definition at line 147 of file path_tessellator.h.

147 { return p2; }

References p2.

◆ Solve()

Point impeller::PathTessellator::Cubic::Solve ( Scalar  t) const
inline

Definition at line 149 of file path_tessellator.h.

149  {
150  Scalar u = 1.0f - t;
151  return p1 * u * u * u + //
152  3 * cp1 * u * u * t + //
153  3 * cp2 * u * t * t + //
154  p2 * t * t * t;
155  }
float Scalar
Definition: scalar.h:19

References cp1, cp2, p1, and p2.

◆ SubdivisionCount()

Scalar impeller::PathTessellator::Cubic::SubdivisionCount ( Scalar  scale) const
inline

Definition at line 157 of file path_tessellator.h.

157  {
158  return ComputeCubicSubdivisions(scale, p1, cp1, cp2, p2);
159  }
Scalar ComputeCubicSubdivisions(Scalar scale_factor, Point p0, Point p1, Point p2, Point p3)

References impeller::ComputeCubicSubdivisions(), cp1, cp2, p1, and p2.

Member Data Documentation

◆ cp1

const Point impeller::PathTessellator::Cubic::cp1

Definition at line 143 of file path_tessellator.h.

Referenced by GetEndDirection(), GetStartDirection(), Solve(), and SubdivisionCount().

◆ cp2

const Point impeller::PathTessellator::Cubic::cp2

Definition at line 144 of file path_tessellator.h.

Referenced by GetEndDirection(), GetStartDirection(), Solve(), and SubdivisionCount().

◆ p1

const Point impeller::PathTessellator::Cubic::p1

Definition at line 142 of file path_tessellator.h.

Referenced by GetEndDirection(), GetStartDirection(), Solve(), and SubdivisionCount().

◆ p2

const Point impeller::PathTessellator::Cubic::p2

Definition at line 145 of file path_tessellator.h.

Referenced by GetEndDirection(), GetStartDirection(), Last(), Solve(), and SubdivisionCount().


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