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

Public Member Functions

 CanvasLinePathStage (SkSize size)
 
 ~CanvasLinePathStage () override=default
 
void draw (SkCanvas *canvas) override
 
bool animate (double) override
 
std::unique_ptr< MMObjectcreateObject () override
 
- Public Member Functions inherited from Stage
 Stage (SkSize size, int startingObjectCount, int objectIncrement)
 
virtual ~Stage ()=default
 
virtual bool onChar (SkUnichar uni)
 

Additional Inherited Members

- Protected Member Functions inherited from Stage
void initializeObjects ()
 
- Protected Attributes inherited from Stage
SkSize fSize
 
int fStartingObjectCount
 
int fObjectIncrement
 
std::vector< std::unique_ptr< MMObject > > fObjects
 
SkRandom fRandom
 

Detailed Description

Definition at line 560 of file MotionMarkSlide.cpp.

Constructor & Destructor Documentation

◆ CanvasLinePathStage()

CanvasLinePathStage::CanvasLinePathStage ( SkSize  size)
inline

Definition at line 562 of file MotionMarkSlide.cpp.

563 : Stage(size, /*startingObjectCount=*/5000, /*objectIncrement=*/1000) {
564 this->initializeObjects();
565 }
void initializeObjects()

◆ ~CanvasLinePathStage()

CanvasLinePathStage::~CanvasLinePathStage ( )
overridedefault

Member Function Documentation

◆ animate()

bool CanvasLinePathStage::animate ( double  )
inlineoverridevirtual

Reimplemented from Stage.

Definition at line 602 of file MotionMarkSlide.cpp.

602 {
603 // Nothing to do, but return true so we redraw.
604 return true;
605 }

◆ createObject()

std::unique_ptr< MMObject > CanvasLinePathStage::createObject ( )
inlineoverridevirtual

Implements Stage.

Definition at line 607 of file MotionMarkSlide.cpp.

607 {
608 if (fObjects.empty()) {
609 return make_line_path(&fRandom, fSize, nullptr);
610 } else {
611 CanvasLinePoint* prevObject = reinterpret_cast<CanvasLinePoint*>(fObjects.back().get());
612 SkPoint coord = prevObject->getCoord();
613 return make_line_path(&fRandom, fSize, &coord);
614 }
615 }
std::unique_ptr< CanvasLinePoint > make_line_path(SkRandom *random, SkSize size, SkPoint *prev)
SkSize fSize
SkRandom fRandom
std::vector< std::unique_ptr< MMObject > > fObjects

◆ draw()

void CanvasLinePathStage::draw ( SkCanvas canvas)
inlineoverridevirtual

Reimplemented from Stage.

Definition at line 569 of file MotionMarkSlide.cpp.

569 {
570 canvas->clear(SK_ColorWHITE);
571
572 SkPath currentPath;
574 paint.setAntiAlias(true);
576 for (size_t i = 0; i < fObjects.size(); ++i) {
577 CanvasLinePoint* object = reinterpret_cast<CanvasLinePoint*>(fObjects[i].get());
578 if (i == 0) {
579 paint.setStrokeWidth(object->getWidth());
580 paint.setColor(object->getColor());
581 currentPath.moveTo(object->getPoint());
582 } else {
583 object->append(&currentPath);
584
585 if (object->isSplit()) {
586 canvas->drawPath(currentPath, paint);
587
588 paint.setStrokeWidth(object->getWidth());
589 paint.setColor(object->getColor());
590 currentPath.reset();
591 currentPath.moveTo(object->getPoint());
592 }
593
594 if (fRandom.nextF() > 0.995) {
595 object->toggleIsSplit();
596 }
597 }
598 }
599 canvas->drawPath(currentPath, paint);
600 }
constexpr SkColor SK_ColorWHITE
Definition SkColor.h:122
void clear(SkColor color)
Definition SkCanvas.h:1199
void drawPath(const SkPath &path, const SkPaint &paint)
@ kStroke_Style
set to stroke geometry
Definition SkPaint.h:194
SkPath & moveTo(SkScalar x, SkScalar y)
Definition SkPath.cpp:678
SkPath & reset()
Definition SkPath.cpp:360
float nextF()
Definition SkRandom.h:55
const Paint & paint

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