refer to color by HTML name in commandline arguments

This commit is contained in:
Zeno Rogue 2021-10-17 09:18:31 +02:00
parent 9d26e98fcd
commit 839ca440ea
8 changed files with 60 additions and 19 deletions

View File

@ -273,5 +273,38 @@ EX int weakfirecolor(int phase) {
return gradient(0xFF8000, 0xFF0000, -1, sintick(500, phase/1000./M_PI), 1); return gradient(0xFF8000, 0xFF0000, -1, sintick(500, phase/1000./M_PI), 1);
} }
/* HTML color names */
EX vector<pair<const char*, color_t>> color_names = {
{"aliceblue", 0xf0f8ff}, {"antiquewhite", 0xfaebd7}, {"aqua", 0x00ffff}, {"aquamarine", 0x7fffd4}, {"azure", 0xf0ffff},
{"beige", 0xf5f5dc}, {"bisque", 0xffe4c4}, {"black", 0x000000}, {"blanchedalmond", 0xffebcd}, {"blue", 0x0000ff}, {"blueviolet", 0x8a2be2}, {"brown", 0xa52a2a}, {"burlywood", 0xdeb887},
{"cadetblue", 0x5f9ea0}, {"chartreuse", 0x7fff00}, {"chocolate", 0xd2691e}, {"coral", 0xff7f50}, {"cornflowerblue", 0x6495ed}, {"cornsilk", 0xfff8dc}, {"crimson", 0xdc143c}, {"cyan", 0x00ffff},
{"darkblue", 0x00008b}, {"darkcyan", 0x008b8b}, {"darkgoldenrod", 0xb8860b}, {"darkgray", 0xa9a9a9}, {"darkgreen", 0x006400}, {"darkkhaki", 0xbdb76b}, {"darkmagenta", 0x8b008b}, {"darkolivegreen", 0x556b2f},
{"darkorange", 0xff8c00}, {"darkorchid", 0x9932cc}, {"darkred", 0x8b0000}, {"darksalmon", 0xe9967a}, {"darkseagreen", 0x8fbc8f}, {"darkslateblue", 0x483d8b}, {"darkslategray", 0x2f4f4f}, {"darkturquoise", 0x00ced1},
{"darkviolet", 0x9400d3}, {"deeppink", 0xff1493}, {"deepskyblue", 0x00bfff}, {"dimgray", 0x696969}, {"dodgerblue", 0x1e90ff},
{"firebrick", 0xb22222}, {"floralwhite", 0xfffaf0}, {"forestgreen", 0x228b22}, {"fuchsia", 0xff00ff},
{"gainsboro", 0xdcdcdc}, {"ghostwhite", 0xf8f8ff}, {"gold", 0xffd700}, {"goldenrod", 0xdaa520}, {"gray", 0x808080}, {"green", 0x008000}, {"greenyellow", 0xadff2f},
{"honeydew", 0xf0fff0}, {"hotpink", 0xff69b4},
{"indianred ", 0xcd5c5c}, {"indigo", 0x4b0082}, {"ivory", 0xfffff0}, {"khaki", 0xf0e68c},
{"lavender", 0xe6e6fa}, {"lavenderblush", 0xfff0f5}, {"lawngreen", 0x7cfc00}, {"lemonchiffon", 0xfffacd}, {"lightblue", 0xadd8e6}, {"lightcoral", 0xf08080}, {"lightcyan", 0xe0ffff}, {"lightgoldenrodyellow", 0xfafad2},
{"lightgrey", 0xd3d3d3}, {"lightgreen", 0x90ee90}, {"lightpink", 0xffb6c1}, {"lightsalmon", 0xffa07a}, {"lightseagreen", 0x20b2aa}, {"lightskyblue", 0x87cefa}, {"lightslategray", 0x778899}, {"lightsteelblue", 0xb0c4de},
{"lightyellow", 0xffffe0}, {"lime", 0x00ff00}, {"limegreen", 0x32cd32}, {"linen", 0xfaf0e6},
{"magenta", 0xff00ff}, {"maroon", 0x800000}, {"mediumaquamarine", 0x66cdaa}, {"mediumblue", 0x0000cd}, {"mediumorchid", 0xba55d3}, {"mediumpurple", 0x9370d8}, {"mediumseagreen", 0x3cb371}, {"mediumslateblue", 0x7b68ee},
{"mediumspringgreen", 0x00fa9a}, {"mediumturquoise", 0x48d1cc}, {"mediumvioletred", 0xc71585}, {"midnightblue", 0x191970}, {"mintcream", 0xf5fffa}, {"mistyrose", 0xffe4e1}, {"moccasin", 0xffe4b5},
{"navajowhite", 0xffdead}, {"navy", 0x000080},
{"oldlace", 0xfdf5e6}, {"olive", 0x808000}, {"olivedrab", 0x6b8e23}, {"orange", 0xffa500}, {"orangered", 0xff4500}, {"orchid", 0xda70d6},
{"palegoldenrod", 0xeee8aa}, {"palegreen", 0x98fb98}, {"paleturquoise", 0xafeeee}, {"palevioletred", 0xd87093}, {"papayawhip", 0xffefd5}, {"peachpuff", 0xffdab9}, {"peru", 0xcd853f}, {"pink", 0xffc0cb}, {"plum", 0xdda0dd}, {"powderblue", 0xb0e0e6}, {"purple", 0x800080},
{"rebeccapurple", 0x663399}, {"red", 0xff0000}, {"rosybrown", 0xbc8f8f}, {"royalblue", 0x4169e1},
{"saddlebrown", 0x8b4513}, {"salmon", 0xfa8072}, {"sandybrown", 0xf4a460}, {"seagreen", 0x2e8b57}, {"seashell", 0xfff5ee}, {"sienna", 0xa0522d}, {"silver", 0xc0c0c0}, {"skyblue", 0x87ceeb}, {"slateblue", 0x6a5acd}, {"slategray", 0x708090}, {"snow", 0xfffafa}, {"springgreen", 0x00ff7f}, {"steelblue", 0x4682b4},
{"tan", 0xd2b48c}, {"teal", 0x008080}, {"thistle", 0xd8bfd8}, {"tomato", 0xff6347}, {"turquoise", 0x40e0d0},
{"violet", 0xee82ee},
{"wheat", 0xf5deb3}, {"white", 0xffffff}, {"whitesmoke", 0xf5f5f5},
{"yellow", 0xffff00}, {"yellowgreen", 0x9acd32}
};
EX pair<const char*, color_t>* find_color_by_name(const string& s) {
for(auto& c: color_names) if(c.first == s) return &c;
return nullptr;
}
} }

View File

@ -102,6 +102,14 @@ EX namespace arg {
} }
} }
EX bool argis(const string& s) { if(args()[0] == '-' && args()[1] == '-') return args().substr(1) == s; return args() == s; } EX bool argis(const string& s) { if(args()[0] == '-' && args()[1] == '-') return args().substr(1) == s; return args() == s; }
EX color_t argcolor(int bits) {
string s = args();
auto p = find_color_by_name(s);
if(p && bits == 24) return p->second;
if(p && bits == 32) return (p->second << 8) | 0xFF;
return strtoll(argcs(), NULL, 16);
}
EX void shift_arg_formula(ld& x, const reaction_t& r IS(reaction_t())) { EX void shift_arg_formula(ld& x, const reaction_t& r IS(reaction_t())) {
shift(); ld old = x; x = argf(); shift(); ld old = x; x = argf();

View File

@ -2951,38 +2951,38 @@ EX int read_color_args() {
using namespace arg; using namespace arg;
if(argis("-back")) { if(argis("-back")) {
PHASEFROM(2); shift(); backcolor = arghex(); PHASEFROM(2); shift(); backcolor = argcolor(24);
} }
else if(argis("-fillmodel")) { else if(argis("-fillmodel")) {
PHASEFROM(2); shift(); modelcolor = arghex(); PHASEFROM(2); shift(); modelcolor = argcolor(32);
} }
else if(argis("-ring")) { else if(argis("-ring")) {
PHASEFROM(2); shift(); ringcolor = arghex(); PHASEFROM(2); shift(); ringcolor = argcolor(32);
} }
else if(argis("-ringw")) { else if(argis("-ringw")) {
PHASEFROM(2); shift_arg_formula(vid.multiplier_ring); PHASEFROM(2); shift_arg_formula(vid.multiplier_ring);
} }
else if(argis("-stdgrid")) { else if(argis("-stdgrid")) {
PHASEFROM(2); shift(); stdgridcolor = arghex(); PHASEFROM(2); shift(); stdgridcolor = argcolor(32);
} }
else if(argis("-gridw")) { else if(argis("-gridw")) {
PHASEFROM(2); shift_arg_formula(vid.multiplier_grid); PHASEFROM(2); shift_arg_formula(vid.multiplier_grid);
} }
else if(argis("-period")) { else if(argis("-period")) {
PHASEFROM(2); shift(); periodcolor = arghex(); PHASEFROM(2); shift(); periodcolor = argcolor(32);
} }
else if(argis("-crosshair")) { else if(argis("-crosshair")) {
PHASEFROM(2); shift(); crosshair_color = arghex(); PHASEFROM(2); shift(); crosshair_color = argcolor(32);
shift_arg_formula(crosshair_size); shift_arg_formula(crosshair_size);
} }
else if(argis("-borders")) { else if(argis("-borders")) {
PHASEFROM(2); shift(); bordcolor = arghex(); PHASEFROM(2); shift(); bordcolor = argcolor(24);
} }
else if(argis("-fore")) { else if(argis("-fore")) {
PHASEFROM(2); shift(); forecolor = arghex(); PHASEFROM(2); shift(); forecolor = argcolor(24);
} }
else if(argis("-dialog")) { else if(argis("-dialog")) {
PHASEFROM(2); shift(); dialog::dialogcolor = arghex(); PHASEFROM(2); shift(); dialog::dialogcolor = argcolor(24);
} }
else if(argis("-d:color")) else if(argis("-d:color"))
launch_dialog(show_color_dialog); launch_dialog(show_color_dialog);

View File

@ -1406,7 +1406,7 @@ int readArgs() {
launch_dialog(show); launch_dialog(show);
else if(argis("-cvcol")) { else if(argis("-cvcol")) {
shift(); int d = argi(); shift(); int d = argi();
shift(); coordcolors[d] = arghex(); shift(); coordcolors[d] = argcolor(24);
} }
else return 1; else return 1;
return 0; return 0;

View File

@ -934,7 +934,7 @@ int expansion_readArgs() {
else if(argis("-expansion-labelcolor")) { else if(argis("-expansion-labelcolor")) {
dist_label_colored = false; dist_label_colored = false;
shift(); dist_label_color = arghex(); shift(); dist_label_color = argcolor(24);
} }
else if(argis("-expansion-off")) { else if(argis("-expansion-off")) {

View File

@ -3072,7 +3072,7 @@ int read_pattern_args() {
shift(); shift();
for(auto& lp: linepatterns::patterns) for(auto& lp: linepatterns::patterns)
if(appears(lp->lpname, ss)) if(appears(lp->lpname, ss))
lp->color = arghex(); lp->color = argcolor(32);
} }
else if(argis("-fat-edges")) { else if(argis("-fat-edges")) {
@ -3102,10 +3102,10 @@ int read_pattern_args() {
if(c == 't') ct = &nestcolors; if(c == 't') ct = &nestcolors;
else if(c == 'd') ct = &distcolors; else if(c == 'd') ct = &distcolors;
else if(c == 'm') ct = &minecolors; else if(c == 'm') ct = &minecolors;
else if(c == 'E') { shift(); int d = argi(); shift(); expcolors[d] = arghex(); return 0; } else if(c == 'E') { shift(); int d = argi(); shift(); expcolors[d] = argcolor(24); return 0; }
else if(c == 'P') { else if(c == 'P') {
shift(); int d = argi(); shift(); shift(); int d = argi(); shift();
color_t h = arghex(); color_t h = argcolor(32);
if(d >= 0 && d < 7) if(d >= 0 && d < 7)
((color_t*)(&vid.cs.skincolor)) [d] = h; ((color_t*)(&vid.cs.skincolor)) [d] = h;
return 0; return 0;
@ -3115,7 +3115,7 @@ int read_pattern_args() {
} }
int d = argi(); int d = argi();
ct->allocate(d+1); ct->allocate(d+1);
shift(); (*ct)[d] = arghex(); shift(); (*ct)[d] = argcolor(24);
} }
else if(argis("-canvas")) { else if(argis("-canvas")) {
PHASEFROM(2); PHASEFROM(2);
@ -3124,7 +3124,7 @@ int read_pattern_args() {
shift(); shift();
if(args() == "i") canvas_default_wall = waInvisibleFloor; if(args() == "i") canvas_default_wall = waInvisibleFloor;
else if(args().size() == 1) patterns::whichCanvas = args()[0]; else if(args().size() == 1) patterns::whichCanvas = args()[0];
else patterns::canvasback = arghex(); else patterns::canvasback = argcolor(24);
stop_game_and_switch_mode(rg::nothing); stop_game_and_switch_mode(rg::nothing);
} }
else if(argis("-canvas-random")) { else if(argis("-canvas-random")) {

View File

@ -2904,7 +2904,7 @@ int readArgs() {
shift_arg_formula(hard_limit); shift_arg_formula(hard_limit);
} }
else if(argis("-ray-out")) { else if(argis("-ray-out")) {
PHASEFROM(2); shift(); color_out_of_range = arghex(); PHASEFROM(2); shift(); color_out_of_range = argcolor(32);
} }
else if(argis("-ray-comp")) { else if(argis("-ray-comp")) {
PHASEFROM(2); PHASEFROM(2);
@ -2947,7 +2947,7 @@ int readArgs() {
else if(argis("-ray-cursor")) { else if(argis("-ray-cursor")) {
start_game(); start_game();
volumetric::enable(); volumetric::enable();
shift(); volumetric::vmap[centerover] = arghex(); shift(); volumetric::vmap[centerover] = argcolor(32);
} }
else return 1; else return 1;
return 0; return 0;

View File

@ -1762,7 +1762,7 @@ int readArgs() {
rotation_center_View = View; rotation_center_View = View;
shift_arg_formula(circle_spins); shift_arg_formula(circle_spins);
shift_arg_formula(circle_radius); shift_arg_formula(circle_radius);
shift(); circle_display_color = arghex(); shift(); circle_display_color = argcolor(24);
} }
else if(argis("-animmove")) { else if(argis("-animmove")) {
ma = maTranslation; ma = maTranslation;