Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Public Member Functions | List of all members
CanvasLineSegment Class Reference
Inheritance diagram for CanvasLineSegment:
MMObject

Public Member Functions

 CanvasLineSegment (SkRandom *random, const LineSegmentParams &params)
 
 ~CanvasLineSegment () override=default
 
void draw (SkCanvas *canvas) override
 
void animate (double nanos) override
 
- Public Member Functions inherited from MMObject
virtual ~MMObject ()=default
 

Detailed Description

Definition at line 168 of file MotionMarkSlide.cpp.

Constructor & Destructor Documentation

◆ CanvasLineSegment()

CanvasLineSegment::CanvasLineSegment ( SkRandom random,
const LineSegmentParams params 
)
inline

Definition at line 170 of file MotionMarkSlide.cpp.

170 {
171 int circle = random->nextRangeU(0, 3);
172
173 static constexpr SkColor kColors[] = {
174 0xffe01040, 0xff10c030, 0xff744cba, 0xffe05010
175 };
176 fColor = kColors[circle];
177 fLineWidth = std::pow(random->nextF(), 12) * 20 + 3;
178 fOmega = random->nextF() * 3 + 0.2f;
179 float theta = random->nextRangeF(0, 2*SK_ScalarPI);
180 fCosTheta = std::cos(theta);
181 fSinTheta = std::sin(theta);
182 fStart = params.fCircleCenters[circle] + SkPoint::Make(params.fCircleRadius * fCosTheta,
183 params.fCircleRadius * fSinTheta);
184 fLength = params.fLineMinimum;
185 fLength += std::pow(random->nextF(), 8) * params.fLineLengthMaximum;
186 fSegmentDirection = random->nextF() > 0.5 ? -1 : 1;
187 }
uint32_t SkColor
Definition SkColor.h:37
#define SK_ScalarPI
Definition SkScalar.h:21
float nextF()
Definition SkRandom.h:55
float nextRangeF(float min, float max)
Definition SkRandom.h:64
uint32_t nextRangeU(uint32_t min, uint32_t max)
Definition SkRandom.h:80
const EmbeddedViewParams * params
const DlColor kColors[]
static constexpr SkPoint Make(float x, float y)

◆ ~CanvasLineSegment()

CanvasLineSegment::~CanvasLineSegment ( )
overridedefault

Member Function Documentation

◆ animate()

void CanvasLineSegment::animate ( double  nanos)
inlineoverridevirtual

Implements MMObject.

Definition at line 205 of file MotionMarkSlide.cpp.

205 {
206 fLength += std::sin(time_counter_value(nanos, 100) * fOmega);
207 }

◆ draw()

void CanvasLineSegment::draw ( SkCanvas canvas)
inlineoverridevirtual

Implements MMObject.

Definition at line 191 of file MotionMarkSlide.cpp.

191 {
193 paint.setAntiAlias(true);
194 paint.setColor(fColor);
195 paint.setStrokeWidth(fLineWidth);
197
198 SkPoint end = {
199 fStart.fX + fSegmentDirection * fLength * fCosTheta,
200 fStart.fY + fSegmentDirection * fLength * fSinTheta
201 };
202 canvas->drawLine(fStart, end, paint);
203 }
void drawLine(SkScalar x0, SkScalar y0, SkScalar x1, SkScalar y1, const SkPaint &paint)
@ kStroke_Style
set to stroke geometry
Definition SkPaint.h:194
const Paint & paint
glong glong end
float fX
x-axis value
float fY
y-axis value

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