// // 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 #include class ScreensaverPlugin { public: ScreensaverPlugin(cairo_t* context, const cairo_rectangle_t& rect); virtual ~ScreensaverPlugin() = default; virtual void draw_frame() = 0; virtual int fps() const = 0; protected: cairo_t* _c; cairo_rectangle_t _r; std::random_device _dev; std::default_random_engine _eng {_dev()}; std::uniform_real_distribution<> _01_dist {}; std::uniform_real_distribution<> _x_dist; std::uniform_real_distribution<> _y_dist; void make_black(); cairo_rectangle_t random_rect(); double random_x(); double random_y(); double random01(); }; #endif // _ScreensaverPlugin_H_