Files
libscscreensaver/src/ScreensaverPlugin.hpp
2020-11-16 12:28:39 +01:00

43 lines
1.1 KiB
C++

//
// 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 <cairo/cairo.h>
#include <random>
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 {};
std::random_device _dev {};
std::default_random_engine _eng {_dev()};
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_