/*
 * Copyright (C) 2020-2021 Aloysius Indrayanto
 *
 * This file is part of the eCxx library, see LICENSE file for the license details.
 */


#include <eCxx/eCxx_Internal.h>

#include <eCxx/CTL/GFX/ColorBuiltIn.h>


namespace eCxx {


namespace Ext {


//
// Built-in K colors
//
namespace K {

extern const KColor volcanicLava( 1225);
extern const KColor match       ( 1700);
extern const KColor candle      ( 1900);
extern const KColor highPressure( 2200);
extern const KColor incandescent( 2800);
extern const KColor warmWhite   ( 2950);
extern const KColor halogen     ( 3000);
extern const KColor metalHalide ( 4000);
extern const KColor naturalWhite( 4250);
extern const KColor sunlight    ( 4800);
extern const KColor dayWhite    ( 5750);
extern const KColor cloudySky   ( 6000);
extern const KColor coolWhite   ( 7250);
extern const KColor blueSky     (10000);

} // namespace K


//
// Built-in W colors
//
namespace W {

extern const WColor black   (  0);
extern const WColor white   (255);
extern const WColor darkGray(128);
extern const WColor gray    (192);

} // namespace W


//
// Built-in RGB colors
//
namespace RGB {

extern const RGBColor black      (  0,   0,   0);
extern const RGBColor white      (255, 255, 255);
extern const RGBColor darkGray   (128, 128, 128);
extern const RGBColor gray       (192, 192, 192);

extern const RGBColor darkRed    (192,   0,   0);
extern const RGBColor red        (255,   0,   0);
extern const RGBColor darkGreen  (  0, 192,   0);
extern const RGBColor green      (  0, 255,   0);
extern const RGBColor darkBlue   (  0,   0, 192);
extern const RGBColor blue       (  0,   0, 255);

extern const RGBColor darkYellow (192, 192,   0);
extern const RGBColor yellow     (255, 255,   0);
extern const RGBColor darkMagenta(192,   0, 192);
extern const RGBColor magenta    (255,   0, 255);
extern const RGBColor darkCyan   (  0, 192, 192);
extern const RGBColor cyan       (  0, 255, 255);

extern const RGBColor darkBrown  (122,  62,  36);
extern const RGBColor brown      (162,  82,  48);
extern const RGBColor darkOrange (192, 124,   0);
extern const RGBColor orange     (255, 164,   0);
extern const RGBColor darkPurple ( 96,   0, 192);
extern const RGBColor purple     (128,   0, 255);

extern const RGBColor darkPink   (192, 144, 152);
extern const RGBColor pink       (255, 192, 202);
extern const RGBColor darkSalmon (192, 120,  92);
extern const RGBColor salmon     (255, 160, 122);
extern const RGBColor warmWhite  (255, 244, 230);
extern const RGBColor coolWhite  (230, 244, 255);

} // namespace RGB


//
// Built-in RGBW colors
//
namespace RGBW {

extern const RGBWColor black      (  0,   0,   0,   0);
extern const RGBWColor white      (  0,   0,   0, 255);
extern const RGBWColor darkGray   (  0,   0,   0, 128);
extern const RGBWColor gray       (  0,   0,   0, 192);

extern const RGBWColor darkRed    (192,   0,   0,   0);
extern const RGBWColor red        (255,   0,   0,   0);
extern const RGBWColor darkGreen  (  0, 192,   0,   0);
extern const RGBWColor green      (  0, 255,   0,   0);
extern const RGBWColor darkBlue   (  0,   0, 192,   0);
extern const RGBWColor blue       (  0,   0, 255,   0);

extern const RGBWColor darkYellow (192, 192,   0,   0);
extern const RGBWColor yellow     (255, 255,   0,   0);
extern const RGBWColor darkMagenta(192,   0, 192,   0);
extern const RGBWColor magenta    (255,   0, 255,   0);
extern const RGBWColor darkCyan   (  0, 192, 192,   0);
extern const RGBWColor cyan       (  0, 255, 255,   0);

extern const RGBWColor darkBrown  ( 86,  26,   0,  36);
extern const RGBWColor brown      (114,  34,   0,  48);
extern const RGBWColor darkOrange (192, 124,   0,   0);
extern const RGBWColor orange     (255, 164,   0,   0);
extern const RGBWColor darkPurple ( 96,   0, 192,   0);
extern const RGBWColor purple     (128,   0, 255,   0);

extern const RGBWColor darkPink   ( 48,   0,   8, 144);
extern const RGBWColor pink       ( 63,   0,  10, 192);
extern const RGBWColor darkSalmon (100,  28,   0,  92);
extern const RGBWColor salmon     (133,  38,   0, 122);
extern const RGBWColor warmWhite  ( 25,  14,   0, 230);
extern const RGBWColor coolWhite  (  0,  14,  25, 230);

} // namespace RGBW


//
// Built-in HSV colors
//
namespace HSV {

extern const HSVColor black      (  0,   0,   0);
extern const HSVColor white      (  0,   0, 200);
extern const HSVColor darkGray   (  0,   0, 100);
extern const HSVColor gray       (  0,   0, 150);

extern const HSVColor darkRed    (  0, 200, 150);
extern const HSVColor red        (  0, 200, 200);
extern const HSVColor darkGreen  (120, 200, 150);
extern const HSVColor green      (120, 200, 200);
extern const HSVColor darkBlue   (240, 200, 150);
extern const HSVColor blue       (240, 200, 200);

extern const HSVColor darkYellow ( 60, 200, 150);
extern const HSVColor yellow     ( 60, 200, 200);
extern const HSVColor darkMagenta(300, 200, 150);
extern const HSVColor magenta    (300, 200, 200);
extern const HSVColor darkCyan   (180, 200, 150);
extern const HSVColor cyan       (180, 200, 200);

extern const HSVColor darkBrown  ( 18, 141,  96);
extern const HSVColor brown      ( 18, 141, 127);
extern const HSVColor darkOrange ( 39, 200, 150);
extern const HSVColor orange     ( 39, 200, 200);
extern const HSVColor darkPurple (269, 200, 150);
extern const HSVColor purple     (269, 200, 200);

extern const HSVColor darkPink   (350,  50, 150);
extern const HSVColor pink       (350,  50, 200);
extern const HSVColor darkSalmon ( 17, 104, 150);
extern const HSVColor salmon     ( 17, 104, 200);
extern const HSVColor warmWhite  ( 34,  20, 200);
extern const HSVColor coolWhite  (206,  20, 200);

} // namespace HSV


//
// Built-in HSL colors
//
namespace HSL {

extern const HSLColor black      (  0,   0,   0);
extern const HSLColor white      (  0,   0, 200);
extern const HSLColor darkGray   (  0,   0, 100);
extern const HSLColor gray       (  0,   0, 150);

extern const HSLColor darkRed    (  0, 200,  75);
extern const HSLColor red        (  0, 200, 100);
extern const HSLColor darkGreen  (120, 200,  75);
extern const HSLColor green      (120, 200, 100);
extern const HSLColor darkBlue   (240, 200,  75);
extern const HSLColor blue       (240,  200, 100);

extern const HSLColor darkYellow ( 60, 200,  75);
extern const HSLColor yellow     ( 60, 200, 100);
extern const HSLColor darkMagenta(300, 200,  75);
extern const HSLColor magenta    (300, 200, 100);
extern const HSLColor darkCyan   (180, 200,  75);
extern const HSLColor cyan       (180, 200, 100);

extern const HSLColor darkBrown  ( 18, 109,  62);
extern const HSLColor brown      ( 18, 109,  82);
extern const HSLColor darkOrange ( 39, 200,  75);
extern const HSLColor orange     ( 39, 200, 100);
extern const HSLColor darkPurple (269, 200,  75);
extern const HSLColor purple     (269, 200, 100);

extern const HSLColor darkPink   (350,  55, 132);
extern const HSLColor pink       (350, 200, 175);
extern const HSLColor darkSalmon ( 17,  88, 111);
extern const HSLColor salmon     ( 17, 200, 148);
extern const HSLColor warmWhite  ( 34, 200, 190);
extern const HSLColor coolWhite  (206, 200, 190);

} // namespace HSL


} // namespace Ext


} // namespace eCxx
