# a quick crap script for working with Tremulous's source code import re color_vectors = """vec4_t colorBlack = {0.000f, 0.000f, 0.000f, 1.000f}; vec4_t colorRed = {1.000f, 0.000f, 0.000f, 1.000f}; vec4_t colorGreen = {0.000f, 1.000f, 0.000f, 1.000f}; vec4_t colorBlue = {0.000f, 0.000f, 1.000f, 1.000f}; vec4_t colorYellow = {1.000f, 1.000f, 0.000f, 1.000f}; vec4_t colorMagenta = {1.000f, 0.000f, 1.000f, 1.000f}; vec4_t colorCyan = {0.000f, 1.000f, 1.000f, 1.000f}; vec4_t colorWhite = {1.000f, 1.000f, 1.000f, 1.000f}; vec4_t colorGray = {0.502f, 0.502f, 0.502f, 1.000f}; vec4_t colorOrange = {1.000f, 0.686f, 0.000f, 1.000f}; vec4_t colorRoseBud = {0.996f, 0.671f, 0.604f, 1.000f}; vec4_t colorPaleGreen = {0.596f, 0.984f, 0.596f, 1.000f}; vec4_t colorPaleGolden = {0.933f, 0.910f, 0.667f, 1.000f}; vec4_t colorColumbiaBlue = {0.608f, 0.867f, 1.000f, 1.000f}; vec4_t colorPaleTurquoise = {0.686f, 0.933f, 0.933f, 1.000f}; vec4_t colorPaleVioletRed = {0.859f, 0.439f, 0.576f, 1.000f}; vec4_t colorPalacePaleWhite = {0.910f, 0.898f, 0.863f, 1.000f}; vec4_t colorOlive = {0.231f, 0.235f, 0.212f, 1.000f}; vec4_t colorTomato = {1.000f, 0.388f, 0.278f, 1.000f}; vec4_t colorLime = {0.749f, 1.000f, 0.000f, 1.000f}; vec4_t colorLemon = {1.000f, 0.969f, 0.000f, 1.000f}; vec4_t colorBlueBerry = {0.310f, 0.525f, 0.969f, 1.000f}; vec4_t colorTurquoise = {0.251f, 0.878f, 0.816f, 1.000f}; vec4_t colorWildWatermelon = {0.992f, 0.357f, 0.471f, 1.000f}; vec4_t colorSaltpan = {0.933f, 0.953f, 0.898f, 1.000f}; vec4_t colorGrayChateau = {0.624f, 0.639f, 0.655f, 1.000f}; vec4_t colorRust = {0.718f, 0.255f, 0.055f, 1.000f}; vec4_t colorCopperGreen = {0.431f, 0.553f, 0.443f, 1.000f}; vec4_t colorGold = {1.000f, 0.843f, 0.000f, 1.000f}; vec4_t colorSteelBlue = {0.275f, 0.510f, 0.706f, 1.000f}; vec4_t colorSteelGray = {0.482f, 0.565f, 0.584f, 1.000f}; vec4_t colorBronze = {0.804f, 0.498f, 0.196f, 1.000f}; vec4_t colorSilver = {0.753f, 0.753f, 0.753f, 1.000f}; vec4_t colorDarkGray = {0.663f, 0.663f, 0.663f, 1.000f}; vec4_t colorDarkOrange = {1.000f, 0.549f, 0.000f, 1.000f}; vec4_t colorDarkGreen = {0.000f, 0.392f, 0.000f, 1.000f}; vec4_t colorRedOrange = {1.000f, 0.247f, 0.204f, 1.000f}; vec4_t colorForestGreen = {0.133f, 0.545f, 0.133f, 1.000f}; vec4_t colorBrightSun = {0.926f, 0.741f, 0.173f, 1.000f}; vec4_t colorMediumSlateBlue = {0.482f, 0.408f, 0.933f, 1.000f}; vec4_t colorCeleste = {0.698f, 1.000f, 1.000f, 1.000f}; vec4_t colorIronstone = {0.525f, 0.314f, 0.251f, 1.000f}; vec4_t colorTimberwolf = {0.859f, 0.843f, 0.824f, 1.000f}; vec4_t colorOnyx = {0.059f, 0.059f, 0.059f, 1.000f}; vec4_t colorRosewood = {0.396f, 0.000f, 0.043f, 1.000f}; vec4_t colorKokoda = {0.482f, 0.471f, 0.353f, 1.000f}; vec4_t colorPorsche = {0.875f, 0.616f, 0.357f, 1.000f}; vec4_t colorCloudBurst = {0.208f, 0.369f, 0.310f, 1.000f}; vec4_t colorBlueDiane = {0.208f, 0.318f, 0.310f, 1.000f}; vec4_t colorRope = {0.557f, 0.349f, 0.235f, 1.000f}; vec4_t colorBlonde = {0.980f, 0.941f, 0.745f, 1.000f}; vec4_t colorSmokeyBlack = {0.063f, 0.047f, 0.031f, 1.000f}; vec4_t colorAmericanRose = {1.000f, 0.012f, 0.243f, 1.000f}; vec4_t colorNeonGreen = {0.224f, 1.000f, 0.078f, 1.000f}; vec4_t colorNeonYellow = {0.980f, 0.929f, 0.153f, 1.000f}; vec4_t colorUltramarine = {0.071f, 0.039f, 0.561f, 1.000f}; vec4_t colorTurquoiseBlue = {0.000f, 1.000f, 0.937f, 1.000f}; vec4_t colorDarkMagenta = {0.545f, 0.000f, 0.545f, 1.000f}; vec4_t colorMagicMint = {0.667f, 0.941f, 0.820f, 1.000f}; vec4_t colorLightGray = {0.827f, 0.827f, 0.827f, 1.000f}; vec4_t colorLightSalmon = {1.000f, 0.600f, 0.600f, 1.000f}; vec4_t colorLightGreen = {0.565f, 0.933f, 0.565f, 1.000f};""" cc_defines = """#define COLOR_BLACK '0' #define COLOR_RED '1' #define COLOR_GREEN '2' #define COLOR_YELLOW '3' #define COLOR_BLUE '4' #define COLOR_CYAN '5' #define COLOR_MAGENTA '6' #define COLOR_WHITE '7' #define COLOR_GRAY '8' #define COLOR_ORANGE '9' #define COLOR_ROSE_BUD 'a' #define COLOR_PALE_GREEN 'b' #define COLOR_PALE_GOLDEN 'c' #define COLOR_COLUMBIA_BLUE 'd' #define COLOR_PALE_TURQUOISE 'e' #define COLOR_PALE_VIOLET_RED 'f' #define COLOR_PALACE_PALE_WHITE 'g' #define COLOR_OLIVE 'h' #define COLOR_TOMATO 'i' #define COLOR_LIME 'j' #define COLOR_LEMON 'k' #define COLOR_BLUE_BERRY 'l' #define COLOR_TURQUOISE 'm' #define COLOR_WILD_WATERMELON 'n' #define COLOR_SALTPAN 'o' #define COLOR_GRAY_CHATEAU 'p' #define COLOR_RUST 'q' #define COLOR_COPPER_GREEN 'r' #define COLOR_GOLD 's' #define COLOR_STEEL_BLUE 't' #define COLOR_STEEL_GRAY 'u' #define COLOR_BRONZE 'v' #define COLOR_SILVER 'w' #define COLOR_DARK_GRAY 'x' #define COLOR_DARK_ORANGE 'y' #define COLOR_DARK_GREEN 'z' #define COLOR_RED_ORANGE 'A' #define COLOR_FOREST_GREEN 'B' #define COLOR_BRIGHT_SUN 'C' #define COLOR_MEDIUM_SLATE_BLUE 'D' #define COLOR_CELESTE 'E' #define COLOR_IRONSTONE 'F' #define COLOR_TIMBERWOLF 'G' #define COLOR_ONYX 'H' #define COLOR_ROSEWOOD 'I' #define COLOR_KOKODA 'J' #define COLOR_PORSCHE 'K' #define COLOR_CLOUD_BURST 'L' #define COLOR_BLUE_DIANE 'M' #define COLOR_ROPE 'N' #define COLOR_BLONDE 'O' #define COLOR_SMOKEY_BLACK 'P' #define COLOR_AMERICAN_ROSE 'Q' #define COLOR_NEON_GREEN 'R' #define COLOR_NEON_YELLOW 'S' #define COLOR_ULTRAMARINE 'T' #define COLOR_TURQUOISE_BLUE 'U' #define COLOR_DARK_MAGENTA 'V' #define COLOR_MAGIC_MINT 'W' #define COLOR_LIGHT_GRAY 'X' #define COLOR_LIGHT_SALMON 'Y' #define COLOR_LIGHT_GREEN 'Z'""" colors = [] for cc in cc_defines.split("\n"): rv = re.match("#define\s+COLOR_([A-Z_]+)\s+\'(.)\'", cc) name, symbol = rv.groups() search = name.replace("_", "").lower() for line in color_vectors.split("\n"): rv = re.match(".*color([a-zA-Z]+)", line) if search != rv.group(1).lower(): continue rv = re.match(".*{(\d+\.\d+)f, (\d+\.\d+)f, (\d+\.\d+)f", line) rgb = [float(group) for group in rv.groups()] colors.append([symbol, rgb, name.replace("_", " ").lower()]) print("palette_24_bit = [") for symbol, rgb, name in colors: code = "#" + "".join(["%02x" % int(c * 255) for c in rgb]) print("\t(\"trem %s\", \"%s\", \"black\"), # %s" % (symbol, code, name)) print("]")