Flutter Impeller
impeller::LinearPathComponent Struct Reference

#include <path_component.h>

Public Member Functions

 LinearPathComponent ()
 
 LinearPathComponent (Point ap1, Point ap2)
 
Point Solve (Scalar time) const
 
void AppendPolylinePoints (std::vector< Point > &points) const
 
std::vector< PointExtrema () const
 
bool operator== (const LinearPathComponent &other) const
 
std::optional< Vector2GetStartDirection () const
 
std::optional< Vector2GetEndDirection () const
 

Public Attributes

Point p1
 
Point p2
 

Detailed Description

Definition at line 29 of file path_component.h.

Constructor & Destructor Documentation

◆ LinearPathComponent() [1/2]

impeller::LinearPathComponent::LinearPathComponent ( )
inline

Definition at line 33 of file path_component.h.

33 {}

◆ LinearPathComponent() [2/2]

impeller::LinearPathComponent::LinearPathComponent ( Point  ap1,
Point  ap2 
)
inline

Definition at line 35 of file path_component.h.

35 : p1(ap1), p2(ap2) {}

Member Function Documentation

◆ AppendPolylinePoints()

void impeller::LinearPathComponent::AppendPolylinePoints ( std::vector< Point > &  points) const

Definition at line 62 of file path_component.cc.

63  {
64  if (points.size() == 0 || points.back() != p2) {
65  points.push_back(p2);
66  }
67 }

References p2.

◆ Extrema()

std::vector< Point > impeller::LinearPathComponent::Extrema ( ) const

Definition at line 69 of file path_component.cc.

69  {
70  return {p1, p2};
71 }

References p1, and p2.

◆ GetEndDirection()

std::optional< Vector2 > impeller::LinearPathComponent::GetEndDirection ( ) const

Definition at line 80 of file path_component.cc.

80  {
81  if (p1 == p2) {
82  return std::nullopt;
83  }
84  return (p2 - p1).Normalize();
85 }

References p1, and p2.

Referenced by impeller::PathComponentEndDirectionVisitor::operator()().

◆ GetStartDirection()

std::optional< Vector2 > impeller::LinearPathComponent::GetStartDirection ( ) const

Definition at line 73 of file path_component.cc.

73  {
74  if (p1 == p2) {
75  return std::nullopt;
76  }
77  return (p1 - p2).Normalize();
78 }

References p1, and p2.

Referenced by impeller::PathComponentStartDirectionVisitor::operator()().

◆ operator==()

bool impeller::LinearPathComponent::operator== ( const LinearPathComponent other) const
inline

Definition at line 43 of file path_component.h.

43  {
44  return p1 == other.p1 && p2 == other.p2;
45  }

References p1, and p2.

◆ Solve()

Point impeller::LinearPathComponent::Solve ( Scalar  time) const

Definition at line 55 of file path_component.cc.

55  {
56  return {
57  LinearSolve(time, p1.x, p2.x), // x
58  LinearSolve(time, p1.y, p2.y), // y
59  };
60 }

References impeller::LinearSolve(), p1, p2, impeller::TPoint< T >::x, and impeller::TPoint< T >::y.

Member Data Documentation

◆ p1

Point impeller::LinearPathComponent::p1

◆ p2

Point impeller::LinearPathComponent::p2

The documentation for this struct was generated from the following files:
impeller::TPoint::y
Type y
Definition: point.h:31
impeller::LinearPathComponent::p2
Point p2
Definition: path_component.h:31
impeller::LinearPathComponent::p1
Point p1
Definition: path_component.h:30
impeller::TPoint::x
Type x
Definition: point.h:30
impeller::LinearSolve
static Scalar LinearSolve(Scalar t, Scalar p0, Scalar p1)
Definition: path_component.cc:15