fake screen for testing

This commit is contained in:
mrbesen 2022-03-12 20:55:52 +01:00
parent 0a598543cd
commit ca55845e5f
Signed by: MrBesen
GPG Key ID: 596B2350DCD67504
4 changed files with 83 additions and 18 deletions

21
include/fakescreen.h Normal file
View File

@ -0,0 +1,21 @@
#include "screen.h"
class FakeScreen : public ScreenShot {
private:
int xoffset = 0;
int yoffset = 0;
int xsize = 0;
int ysize = 0;
public:
FakeScreen(int xoffset = 0, int yoffset = 0, int xsize = 0, int ysize = 0);
~FakeScreen();
virtual void take(cv::Mat& cvimg) override;
virtual void operator() (cv::Mat& cvimg) override;
virtual int getXOffset() const override;
virtual int getYOffset() const override;
virtual double getXScale() const override;
virtual double getYScale() const override;
};

View File

@ -33,28 +33,17 @@ public:
ScreenShot();
ScreenShot(Display* d, Window w);
~ScreenShot();
virtual ~ScreenShot();
void take(cv::Mat& cvimg);
void operator() (cv::Mat& cvimg);
virtual void take(cv::Mat& cvimg);
virtual void operator() (cv::Mat& cvimg);
constexpr operator bool () const {
return valid;
}
constexpr int getXOffset() const {
return wattrib.x;
}
constexpr int getYOffset() const {
return wattrib.y;
}
constexpr double getXScale() const {
return wattrib.width / (double) DEFAULTWIDTH;
}
constexpr double getYScale() const {
return wattrib.height / (double) DEFAULTHEIGHT;
}
virtual int getXOffset() const;
virtual int getYOffset() const;
virtual double getXScale() const;
virtual double getYScale() const;
};

38
src/fakescreen.cpp Normal file
View File

@ -0,0 +1,38 @@
#include "fakescreen.h"
FakeScreen::FakeScreen(int xoffset, int yoffset, int xsize, int ysize) : ScreenShot(),
xoffset(xoffset), yoffset(yoffset), xsize(xsize), ysize(ysize) {
}
FakeScreen::~FakeScreen() {}
void FakeScreen::take(cv::Mat& cvimg) {
// take screenshot from entire screen using base class
cv::Mat entireScreen;
ScreenShot::take(entireScreen);
// only return part of the screenshot
entireScreen({yoffset, yoffset + ysize}, {xoffset, xoffset + xsize}).copyTo(cvimg);
}
void FakeScreen::operator() (cv::Mat& cvimg) {
take(cvimg);
}
int FakeScreen::getXOffset() const {
return xoffset;
}
int FakeScreen::getYOffset() const {
return yoffset;
}
double FakeScreen::getXScale() const {
return xsize / (double) DEFAULTWIDTH;
}
double FakeScreen::getYScale() const {
return ysize / (double) DEFAULTHEIGHT;
}

View File

@ -139,3 +139,20 @@ ScreenShot::~ScreenShot() {
if (closeDisp)
XCloseDisplay(display);
}
int ScreenShot::getXOffset() const {
return wattrib.x;
}
int ScreenShot::getYOffset() const {
return wattrib.y;
}
double ScreenShot::getXScale() const {
return wattrib.width / (double) DEFAULTWIDTH;
}
double ScreenShot::getYScale() const {
return wattrib.height / (double) DEFAULTHEIGHT;
}