diff --git a/src/QR.cpp b/src/QR.cpp index 4512691..608e2cf 100644 --- a/src/QR.cpp +++ b/src/QR.cpp @@ -1,6 +1,6 @@ #include #include -#include +#include #include "QR.hpp" diff --git a/src/QR.hpp b/src/QR.hpp index d2ed8c9..ed90cf1 100644 --- a/src/QR.hpp +++ b/src/QR.hpp @@ -28,6 +28,10 @@ namespace massivedynamic { std::unordered_map> renderers; public: QR(const std::string& data, std::string outputFile, size_t size, qrcodegen::QrCode::Ecc type); + QR(const QR&&) = delete; + QR(QR&) = delete; + ~QR() = default; + void render(Format format); }; diff --git a/src/Renderer.hpp b/src/Renderer.hpp index b91e954..4f968ec 100644 --- a/src/Renderer.hpp +++ b/src/Renderer.hpp @@ -11,7 +11,10 @@ class Renderer { size_t targetSize; public: Renderer(const std::vector& pixels, size_t sourceSize, size_t targetSize) : pixels(pixels), sourceSize(sourceSize), targetSize(targetSize) {} - virtual ~Renderer() = default; + Renderer(const Renderer&&) = delete; + Renderer(Renderer&) = delete; + virtual ~Renderer() = default; + virtual void render(const std::string& filename) = 0; }; diff --git a/src/renderers/PixelRenderer.hpp b/src/renderers/PixelRenderer.hpp index 8ffd810..e8e1179 100644 --- a/src/renderers/PixelRenderer.hpp +++ b/src/renderers/PixelRenderer.hpp @@ -2,6 +2,7 @@ #include #include +#include #include "Renderer.hpp" #define STB_IMAGE_WRITE_IMPLEMENTATION @@ -19,10 +20,7 @@ namespace massivedynamic { void drawPixelScaled(size_t x, size_t y, Color color) { size_t pixelSize = this->pixelSize; - if (pixelSize < 1) { - std::cerr << "ERROR: output file size is too small" << std::endl; - exit(1); - } + assert(pixelSize > 1 && "ERROR: output file size is too small"); size_t absoluteX = pixelSize * x + this->border; size_t absoluteY = pixelSize * y + this->border; @@ -42,12 +40,12 @@ namespace massivedynamic { PixelRenderer(const std::vector& pixels, size_t sourceSize, size_t targetSize) : Renderer(pixels, sourceSize, targetSize), pixelSize(0) { this->targetSize = this->targetSize == 0 ? (sourceSize + 2) * 2 : this->targetSize; this->pixelSize = round(static_cast(this->targetSize) / static_cast(this->sourceSize + 2)); - this->border = round((this->targetSize - this->pixelSize * this->sourceSize) / 2); + this->border = round(static_cast(this->targetSize - this->pixelSize * this->sourceSize) / 2.0f); this->bitmap = std::vector(this->targetSize * this->targetSize, Colors::WHITE); } - void generateBuffer() { + virtual void generateBuffer() { for (size_t y = 0; y < sourceSize; y++) { for (size_t x = 0; x < sourceSize; x++) { if (!pixels.at(y * sourceSize + x))