| Flutter Impeller |

Public Member Functions | Public Attributes | List of all members
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< Point > | Extrema () const
bool | operator== (const LinearPathComponent &other) const
std::optional< Vector2 > | GetStartDirection () const
std::optional< Vector2 > | GetEndDirection () const

## Public Attributes
Point | p1
Point | p2

## Detailed Description

Definition at line 38 of file path_component.h.

## Constructor & Destructor Documentation

## ◆ LinearPathComponent() [1/2]

impeller::LinearPathComponent::LinearPathComponent | ( |  | ) |
| inline

Definition at line 42 of file path_component.h.

42 {}

## ◆ LinearPathComponent() [2/2]

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

Definition at line 44 of file path_component.h.

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

## Member Function Documentation

## ◆ AppendPolylinePoints()

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

Definition at line 122 of file path_component.cc.

123 {
124 if (points.size() == 0 || points.back() != p2) {
125 points.push_back(p2);
126 }
127 }

References p2.

Referenced by impeller::Path::CreatePolyline().

## ◆ Extrema()

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

Definition at line 129 of file path_component.cc.

129 {
130 return {p1, p2};
131 }

References p1, and p2.

## ◆ GetEndDirection()

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

Definition at line 140 of file path_component.cc.

140 {
141 if (p1 == p2) {
142 return std::nullopt;
143 }
144 return (p2 - p1).Normalize();
145 }

References p1, and p2.

Referenced by impeller::Path::EndContour().

## ◆ GetStartDirection()

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

Definition at line 133 of file path_component.cc.

133 {
134 if (p1 == p2) {
135 return std::nullopt;
136 }
137 return (p1 - p2).Normalize();
138 }

References p1, and p2.

## ◆ operator==()

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

Definition at line 52 of file path_component.h.

52 {
53 return p1 == other.p1 && p2 == other.p2;
54 }

References p1, and p2.

## ◆ Solve()

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

Definition at line 115 of file path_component.cc.

115 {
116 return {
117 LinearSolve(time, p1.x, p2.x), // x
118 LinearSolve(time, p1.y, p2.y), // y
119 };
120 }

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

## Member Data Documentation

## ◆ p1

Point impeller::LinearPathComponent::p1

Definition at line 39 of file path_component.h.

Referenced by Extrema(), GetEndDirection(), GetStartDirection(), operator==(), impeller::PathBuilder::Shift(), Solve(), impeller::testing::TEST(), and impeller::Path::WritePolyline().

## ◆ p2

Point impeller::LinearPathComponent::p2

Definition at line 40 of file path_component.h.

Referenced by AppendPolylinePoints(), Extrema(), GetEndDirection(), GetStartDirection(), operator==(), Solve(), impeller::testing::TEST(), and impeller::Path::WritePolyline().

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

- impeller/geometry/path_component.h
- impeller/geometry/path_component.cc

impeller::TPoint::y
Type y
Definition: point.h:31
impeller::LinearPathComponent::p2
Point p2
Definition: path_component.h:40
impeller::LinearPathComponent::p1
Point p1
Definition: path_component.h:39
impeller::TPoint::x
Type x
Definition: point.h:30
impeller::LinearSolve
static Scalar LinearSolve(Scalar t, Scalar p0, Scalar p1)
Definition: path_component.cc:75