moved to libscscreensaver
This commit is contained in:
parent
31dca75b13
commit
fb09e7434d
@ -1,56 +0,0 @@
|
|||||||
//
|
|
||||||
// ScreensaverPlugin.cpp
|
|
||||||
// tmp
|
|
||||||
//
|
|
||||||
// Created by Bob Polis at 2020-10-26
|
|
||||||
// Copyright (c) 2020 SwiftCoder. All rights reserved.
|
|
||||||
//
|
|
||||||
|
|
||||||
#include "ScreensaverPlugin.hpp"
|
|
||||||
|
|
||||||
ScreensaverPlugin::ScreensaverPlugin(cairo_t* context, const cairo_rectangle_t& rect)
|
|
||||||
: _c {context}, _r {rect}, _x_dist {rect.x, rect.width}, _y_dist {rect.y, rect.height} {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void ScreensaverPlugin::make_black() {
|
|
||||||
cairo_set_source_rgb(_c, 0, 0, 0);
|
|
||||||
cairo_rectangle(_c, 0, 0, _r.width, _r.height);
|
|
||||||
cairo_fill(_c);
|
|
||||||
}
|
|
||||||
|
|
||||||
cairo_rectangle_t ScreensaverPlugin::random_rect() {
|
|
||||||
cairo_rectangle_t rect;
|
|
||||||
double v1, v2;
|
|
||||||
v1 = random_x();
|
|
||||||
v2 = random_x();
|
|
||||||
if (v1 < v2) {
|
|
||||||
rect.x = v1;
|
|
||||||
rect.width = v2 - v1;
|
|
||||||
} else {
|
|
||||||
rect.x = v2;
|
|
||||||
rect.width = v1 - v2;
|
|
||||||
}
|
|
||||||
v1 = random_y();
|
|
||||||
v2 = random_y();
|
|
||||||
if (v1 < v2) {
|
|
||||||
rect.y = v1;
|
|
||||||
rect.height = v2 - v1;
|
|
||||||
} else {
|
|
||||||
rect.y = v2;
|
|
||||||
rect.height = v1 - v2;
|
|
||||||
}
|
|
||||||
return rect;
|
|
||||||
}
|
|
||||||
|
|
||||||
double ScreensaverPlugin::random_x() {
|
|
||||||
return _x_dist(_eng);
|
|
||||||
}
|
|
||||||
|
|
||||||
double ScreensaverPlugin::random_y() {
|
|
||||||
return _y_dist(_eng);
|
|
||||||
}
|
|
||||||
|
|
||||||
double ScreensaverPlugin::random01() {
|
|
||||||
return _01_dist(_eng);
|
|
||||||
}
|
|
@ -1,39 +0,0 @@
|
|||||||
//
|
|
||||||
// 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(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_
|
|
Loading…
x
Reference in New Issue
Block a user