added border padding back to `massivedynamic::PixelRenderer`

development
Michael Ochmann 2 years ago
parent c6bbf4274a
commit 3456e92a40
  1. 24
      src/PixelRenderer.hpp

@ -12,23 +12,23 @@ namespace massivedynamic {
class PixelRenderer : public Renderer {
protected:
size_t pixelSize;
std::vector<Color> bitmap;
void drawPixelScaled(size_t x, size_t y, Color color) {
size_t pixelSize = floor(static_cast<float>(this->targetSize) / static_cast<float>(this->sourceSize + 2));
size_t pixelSize = this->pixelSize;
if (pixelSize < 1) {
std::cerr << "ERROR: output file size is too small" << std::endl;
exit(1);
}
size_t absoluteX = pixelSize * x;
size_t absoluteY = pixelSize * y;
size_t absoluteX = pixelSize * x + pixelSize;
size_t absoluteY = pixelSize * y + pixelSize;
for (size_t localY = absoluteY + pixelSize; localY < absoluteY + pixelSize + pixelSize; localY++) {
for (size_t localX = absoluteX + pixelSize; localX < absoluteX + pixelSize + pixelSize; localX++) {
size_t absPos = localY * this->targetSize + localX;
this->bitmap.at(absPos) = color;
for (size_t localY = absoluteY; localY < absoluteY + pixelSize; localY++) {
for (size_t localX = absoluteX; localX < absoluteX + pixelSize; localX++) {
this->bitmap.at(localY * this->targetSize + localX) = color;
}
}
}
@ -38,9 +38,13 @@ namespace massivedynamic {
WHITE = 0xFFFFFFFF
};
PixelRenderer(const std::vector<bool>& pixels, size_t sourceSize, size_t targetSize) : Renderer(pixels, sourceSize, targetSize) {
if (this->targetSize == 0)
this->targetSize = (sourceSize + 2) * 2;
PixelRenderer(const std::vector<bool>& pixels, size_t sourceSize, size_t targetSize) : Renderer(pixels, sourceSize, targetSize), pixelSize(0) {
this->targetSize = this->targetSize == 0 ? (sourceSize + 2) * 2 : this->targetSize;
// here we make shure, `targetSize` will be a multiple of `sourceSize`
this->pixelSize = round(static_cast<float>(this->targetSize) / static_cast<float>(this->sourceSize + 2));
this->targetSize = (this->sourceSize + 2) * this->pixelSize;
this->bitmap = std::vector<Color>(this->targetSize * this->targetSize, Colors::WHITE);
}

Loading…
Cancel
Save