// // ScreensaverPlugin.hpp // screensaver // // Created by Bob Polis at 2020-10-26 // Copyright (c) 2020 SwiftCoder. All rights reserved. // #ifndef _ScreensaverPlugin_H_ #define _ScreensaverPlugin_H_ #include class ScreensaverPlugin { public: ScreensaverPlugin() = default; virtual ~ScreensaverPlugin() = default; virtual void setup(cairo_t* context, const cairo_rectangle_t& rect); virtual int fps() const; virtual void update() = 0; // advance state for next frame virtual void render() = 0; // draw next frame protected: cairo_t* _c {nullptr}; cairo_rectangle_t _r {}; void make_black(); cairo_rectangle_t random_rect(); cairo_rectangle_t random_rect_in_rect(const cairo_rectangle_t& rect); double random_x(); double random_y(); double random01(); double random_between(double v1, double v2); void rounded_rect(const cairo_rectangle_t& rect, double radius); }; #endif // _ScreensaverPlugin_H_