#include "pixel/pixel.hpp" #include #include namespace { void print(pixel::Pixel value) { std::cout << static_cast(value.red) << ' ' << static_cast(value.green) << ' ' << static_cast(value.blue) << '\n'; } } int main() { try { pixel::Pixel current{12, 34, 56}; const auto accepted = pixel::replace_pixel(current, {0.0, 0.25, 1.0}); if (!accepted) { std::cerr << "Unexpected failure: " << pixel::describe(accepted.error().reason) << '\n'; return 1; } std::cout << "accepted: "; print(current); const auto rejected = pixel::replace_pixel(current, {0.0, 1.5, 1.0}); if (rejected) { std::cerr << "Invalid candidate was accepted\n"; return 1; } std::cout << "rejected channel " << rejected.error().channel << ": " << pixel::describe(rejected.error().reason) << '\n'; std::cout << "still: "; print(current); std::cout.flush(); return std::cout ? 0 : 1; } catch (const std::exception& error) { std::cerr << "Application failure: " << error.what() << '\n'; return 1; } }