You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

65 lines
1.8 KiB

#include "GraphBackgroundPainter.h"
#include <cmath>
#include "util/Util.h"
GraphBackgroundPainter::GraphBackgroundPainter() = default;
GraphBackgroundPainter::~GraphBackgroundPainter() = default;
void GraphBackgroundPainter::resetConfig() {
this->defaultForegroundColor1 = 0x303030;
this->defaultAlternativeForegroundColor1 = 0x434343U;
this->lineWidth = 0.5;
this->drawRaster1 = 14.17;
this->margin1 = 0;
this->roundMargin = 0;
}
void GraphBackgroundPainter::paint() {
this->paintBackgroundColor();
paintBackgroundGraph();
}
void GraphBackgroundPainter::paintBackgroundGraph() {
Util::cairo_set_source_rgbi(cr, this->foregroundColor1);
cairo_set_line_width(cr, lineWidth * lineWidthFactor);
double marginTopBottom = margin1;
double marginLeftRight = margin1;
double snappingOffset = 2.5;
if (roundMargin) {
double w = width - 2 * marginLeftRight;
double r = w - floor(w / drawRaster1) * drawRaster1;
marginLeftRight += r / 2;
// startX = marginLeftRight;
double h = height - 2 * marginTopBottom;
r = h - floor(h / drawRaster1) * drawRaster1;
marginTopBottom += r / 2;
// startY = marginTopBottom;
}
auto pos = [dr1 = drawRaster1](int i) { return dr1 + i * dr1; };
for (int x = 0; pos(x) < width; ++x) {
if (pos(x) < margin1 || pos(x) > (width - margin1)) {
continue;
}
cairo_move_to(cr, pos(x), marginTopBottom - snappingOffset);
cairo_line_to(cr, pos(x), height - marginTopBottom - snappingOffset);
}
for (int y = 0; pos(y) < height; ++y) {
if (pos(y) < margin1 || pos(y) > (height - marginTopBottom)) {
continue;
}
cairo_move_to(cr, marginLeftRight, pos(y));
cairo_line_to(cr, width - marginLeftRight, pos(y));
}
cairo_stroke(cr);
}