Wrote some color tests.

This commit is contained in:
2024-07-02 11:23:16 -04:00
parent 2942c1c9c1
commit c4d41454f6

159
main.cpp
View File

@@ -1,6 +1,158 @@
#include <iostream>
#include <vector>
#include <functional>
#include <mcolor.h>
void printAnsiColorTable()
{
std::vector<mcolor::ansiColors::Colors> ansifg = {
mcolor::ansiColors::Colors::FG_BLACK,
mcolor::ansiColors::Colors::FG_RED,
mcolor::ansiColors::Colors::FG_GREEN,
mcolor::ansiColors::Colors::FG_YELLOW,
mcolor::ansiColors::Colors::FG_BLUE,
mcolor::ansiColors::Colors::FG_MAGENTA,
mcolor::ansiColors::Colors::FG_CYAN,
mcolor::ansiColors::Colors::FG_WHITE,
};
std::vector<mcolor::ansiColors::Colors> ansibg = {
mcolor::ansiColors::Colors::BG_BLACK,
mcolor::ansiColors::Colors::BG_RED,
mcolor::ansiColors::Colors::BG_GREEN,
mcolor::ansiColors::Colors::BG_YELLOW,
mcolor::ansiColors::Colors::BG_BLUE,
mcolor::ansiColors::Colors::BG_MAGENTA,
mcolor::ansiColors::Colors::BG_CYAN,
mcolor::ansiColors::Colors::BG_WHITE,
};
std::vector<mcolor::ansiColors::Colors> ansifg_bright = {
mcolor::ansiColors::Colors::FG_BRIGHT_BLACK,
mcolor::ansiColors::Colors::FG_BRIGHT_RED,
mcolor::ansiColors::Colors::FG_BRIGHT_GREEN,
mcolor::ansiColors::Colors::FG_BRIGHT_YELLOW,
mcolor::ansiColors::Colors::FG_BRIGHT_BLUE,
mcolor::ansiColors::Colors::FG_BRIGHT_MAGENTA,
mcolor::ansiColors::Colors::FG_BRIGHT_CYAN,
mcolor::ansiColors::Colors::FG_BRIGHT_WHITE,
};
std::vector<mcolor::ansiColors::Colors> ansibg_bright = {
mcolor::ansiColors::Colors::BG_BRIGHT_BLACK,
mcolor::ansiColors::Colors::BG_BRIGHT_RED,
mcolor::ansiColors::Colors::BG_BRIGHT_GREEN,
mcolor::ansiColors::Colors::BG_BRIGHT_YELLOW,
mcolor::ansiColors::Colors::BG_BRIGHT_BLUE,
mcolor::ansiColors::Colors::BG_BRIGHT_MAGENTA,
mcolor::ansiColors::Colors::BG_BRIGHT_CYAN,
mcolor::ansiColors::Colors::BG_BRIGHT_WHITE,
};
std::vector<mcolor::ansiColors::Colors> all;
all.insert(all.end(), ansifg.begin(), ansifg.end());
all.insert(all.end(), ansibg.begin(), ansibg.end());
all.insert(all.end(), ansifg_bright.begin(), ansifg_bright.end());
all.insert(all.end(), ansibg_bright.begin(), ansibg_bright.end());
for (const auto i : all)
{
auto n = static_cast<typename std::underlying_type<mcolor::ansiColors::Colors>::type>(i);
std::cout << mcolor::toEscapeCode(i) << unsigned(n) << mcolor::toEscapeCode(mcolor::ansiColors::Colors::RESET);
if (n == 37 || n == 47 || n == 97 || n == 107)
std::cout << std::endl;
}
}
void printRGBColorTable()
{
rgbColor red = {100, 0, 0};
rgbColor green = {0, 100, 0};
rgbColor blue = {0, 0, 100};
std::cout << mcolor::toEscapeCode(red) << "red" << std::endl;
std::cout << mcolor::toEscapeCode(green) << "green" << std::endl;
std::cout << mcolor::toEscapeCode(blue) << "blue" << std::endl;
}
std::vector<uint8_t> createRGBScale(uint8_t startValue = 200, uint8_t increment = 5)
{
std::vector<uint8_t> scale;
for (int i = startValue; i < 256; i += increment)
{
scale.push_back(i);
}
return scale;
}
std::vector<rgbColor> redScaler(rgbColor c)
{
std::vector<rgbColor> scale;
auto nscale = createRGBScale(c.r);
for (auto const i : nscale)
{
scale.push_back(rgbColor(i, c.g, c.b));
}
return scale;
}
std::vector<rgbColor> greenScaler(rgbColor c)
{
std::vector<rgbColor> scale;
auto nscale = createRGBScale(c.g);
for (auto const i : nscale)
{
scale.push_back(rgbColor(c.r, i, c.b));
}
return scale;
}
std::vector<rgbColor> blueScaler(rgbColor c)
{
std::vector<rgbColor> scale;
auto nscale = createRGBScale(c.b);
for (auto const i : nscale)
{
scale.push_back(rgbColor(c.r, c.g, i));
}
return scale;
}
std::vector<rgbColor> RGBColorScale(rgbColor startingColor, std::vector<rgbColor> (*scaler)(rgbColor))
{
return scaler(startingColor);
}
void printRGBScale(std::vector<rgbColor> cs)
{
for (auto i : cs) {
std::cout << mcolor::toEscapeCode(i) << mcolor::toEscapeCode(i, true) << ":3" << mcolor::toEscapeCode(mcolor::ansiColors::Colors::RESET);
}
std::cout << std::endl;
}
/*
* Some terminals/consoles can't show all 16 million colors.
* This provides a visual test as to whether or not a terminal
* can show all 16 million colors.
*
* If the small change in color scale is visible this means
* the terminal is capable of outputting 16 million colors.
* If the change is not visible IE most of it looks to be the
* same shade then it is not capable.
*/
void printRGBConsoleTest()
{
auto redScale = RGBColorScale(rgbColor(), redScaler);
auto greenScale = RGBColorScale(rgbColor(), greenScaler);
auto blueScale = RGBColorScale(rgbColor(), blueScaler);
printRGBScale(redScale);
printRGBScale(greenScale);
printRGBScale(blueScale);
}
int main()
{
#ifdef WIN32
@@ -18,5 +170,12 @@ int main()
//std::cout << "ass" << std::endl;
std::cout << mcolor::toEscapeCode(mcolor::ansiColors::Colors::FG_RED) << "Hello, Colors!" << mcolor::toEscapeCode(mcolor::ansiColors::Colors::RESET) << std::endl;
std::cout << mcolor::toEscapeCode(mcolor::rgbColors::CYAN) << "Hello, Colors!" << mcolor::toEscapeCode(mcolor::ansiColors::Colors::RESET) << std::endl;
printAnsiColorTable();
//printRGBColorTable();
printRGBConsoleTest();
return 0;
}