port to platformio
This commit is contained in:
53
lib/Figments/Figment.h
Normal file
53
lib/Figments/Figment.h
Normal file
@@ -0,0 +1,53 @@
|
||||
#pragma once
|
||||
#include <Arduino.h>
|
||||
#include <functional>
|
||||
#include <ArduinoLog.h>
|
||||
|
||||
class Display;
|
||||
class InputEvent;
|
||||
class InputSource;
|
||||
|
||||
struct Loopable {
|
||||
virtual void handleEvent(const InputEvent& event) {}
|
||||
virtual void loop() = 0;
|
||||
};
|
||||
|
||||
struct Task : public virtual Loopable {
|
||||
virtual void onStart() {};
|
||||
virtual void onStop() {};
|
||||
|
||||
enum State {
|
||||
Running,
|
||||
Stopped,
|
||||
};
|
||||
|
||||
Task() {}
|
||||
Task(State initialState) : Task(0, initialState) {}
|
||||
Task(const char* name) : Task(name, Running) {}
|
||||
Task(const char* name, State initialState) : name(name), state(initialState) {}
|
||||
|
||||
void start() { state = Running; onStart(); }
|
||||
void stop() { onStop(); state = Stopped; }
|
||||
virtual bool isFigment() const { return false; }
|
||||
|
||||
const char* name = 0;
|
||||
State state = Running;
|
||||
};
|
||||
|
||||
struct Figment: public Task {
|
||||
Figment() : Task() {}
|
||||
Figment(State initialState) : Task(initialState) {}
|
||||
Figment(const char* name) : Task(name) {}
|
||||
Figment(const char* name, State initialState) : Task(name, initialState) {}
|
||||
virtual void render(Display* dpy) const = 0;
|
||||
bool isFigment() const override { return true; }
|
||||
};
|
||||
|
||||
struct FigmentFunc: public Figment {
|
||||
FigmentFunc(std::function<void(Display*)> func) : Figment("lambda"), func(func) {}
|
||||
void loop() override {}
|
||||
void render(Display* dpy) const override {
|
||||
func(dpy);
|
||||
}
|
||||
std::function<void(Display*)> func;
|
||||
};
|
||||
Reference in New Issue
Block a user