From e85e5fa6ae5da775fdb02a9e408ab06814dde8e1 Mon Sep 17 00:00:00 2001 From: Remotion Date: Sat, 9 Jun 2018 00:33:39 +0200 Subject: [PATCH] Renamed enum color to colors. Added enum colors conversion to rgb struct. Added colors_test.cpp. --- include/fmt/colors.h | 6 +++++- test/colors_test.cpp | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 test/colors_test.cpp diff --git a/include/fmt/colors.h b/include/fmt/colors.h index 665958ae..f9bbb33a 100644 --- a/include/fmt/colors.h +++ b/include/fmt/colors.h @@ -16,6 +16,8 @@ FMT_BEGIN_NAMESPACE +enum class colors : uint32_t; + // rgb is a struct for red, green and blue colors. // We use rgb as name because some editors will show it as color direct in the // editor. @@ -25,6 +27,8 @@ struct rgb { : r(r_), g(g_), b(b_) {} FMT_CONSTEXPR_DECL rgb(uint32_t hex) : r((hex >> 16) & 0xFF), g((hex >> 8) & 0xFF), b((hex) & 0xFF) {} + FMT_CONSTEXPR_DECL rgb(colors hex) + : r((uint32_t(hex) >> 16) & 0xFF), g((uint32_t(hex) >> 8) & 0xFF), b(uint32_t(hex) & 0xFF) {} uint8_t r; uint8_t g; uint8_t b; @@ -87,7 +91,7 @@ inline void print(rgb fd, rgb bg, string_view format_str, const Args & ... args) vprint_rgb(fd, bg, format_str, make_format_args(args...)); } -enum class color : uint32_t { +enum class colors : uint32_t { alice_blue = 0xF0F8FF, // rgb(240,248,255) antique_white = 0xFAEBD7, // rgb(250,235,215) aqua = 0x00FFFF, // rgb(0,255,255) diff --git a/test/colors_test.cpp b/test/colors_test.cpp new file mode 100644 index 00000000..fd1d9d5a --- /dev/null +++ b/test/colors_test.cpp @@ -0,0 +1,35 @@ +// Formatting library for C++ - the core API +// +// Copyright (c) 2012 - present, Victor Zverovich +// All rights reserved. +// +// For the license information refer to format.h. +// +// Copyright (c) 2018 - present, Remotion (Igor Schulz) +// All Rights Reserved +// {fmt} support for rgb color output. + +#include "gtest.h" + +#include "fmt/colors.h" +#include "fmt/printf.h" + +#include +#include +#include +#include + +TEST(ColorsTest, RgbTest) { + fmt::print(fmt::rgb(10,20,30), "rgb(10,20,30) \n"); // \x1b[38;2;010;020;030mrgb(10,20,30) \n\x1b[0m + fmt::print(fmt::rgb(255,20,30), "rgb(255,20,30) \n"); // \x1b[38;2;255;020;030mrgb(255,20,30) \n\x1b[0m + fmt::print(fmt::rgb(30,255,30), "rgb(30,255,30) \n"); // \x1b[38;2;030;255;030mrgb(30,255,30) \n\x1b[0m + fmt::print(fmt::rgb(30,30,255), "rgb(30,30,255) \n"); // \x1b[38;2;030;030;255mrgb(30,30,255) \n\x1b[0m + + EXPECT_WRITE(stdout, fmt::print(fmt::rgb(255,20,30), "rgb(255,20,30)"), "\x1b[38;2;255;020;030mrgb(255,20,30)\x1b[0m"); +} + +TEST(ColorsTest, Colors) { + fmt::print(fmt::colors::blue,"blue \n"); // \x1b[38;2;000;000;255mblue \n\x1b[0m + fmt::print(fmt::colors::medium_spring_green,"medium_spring_green \n"); // \x1b[38;2;000;250;154mmedium_spring_green \n\x1b[0m + fmt::print(fmt::colors::light_golden_rod_yellow,"light_golden_rod_yellow \n"); // \x1b[38;2;250;250;210mlight_golden_rod_yellow \n\x1b[0m +} \ No newline at end of file