/** * File: Noise.hh * Copyright (C) 2025 Tyler Triplett * License: GNU GPL 3.0 or later <https://www.gnu.org/licenses/gpl-3.0.html> * * This is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. */ #ifndef NOISE_HH #define NOISE_HH #include "pch.hh" #include "generators/Generator.hh" #include "generators/NoiseData.hh" #include <random> namespace ty { class Noise final : public Generator { private: std::random_device rd_; std::mt19937 gen_; std::uniform_int_distribution<int> dist_; NoiseData noiseData_; unsigned char getRandom(const char& c); ColorRange rangeClamp(const ColorRange& colors); std::vector<Setting> getSettings() override; public: Noise(); ~Noise() = default; Noise(const Noise&) = delete; std::vector<unsigned char> runGen() override; void init(const json& j) override; }; } /// ty #endif /// NOISE_HH