1
0
mirror of https://github.com/zenorogue/hyperrogue.git synced 2025-09-14 16:24:06 +00:00

added colors.cpp for all color-related functions

This commit is contained in:
Zeno Rogue
2021-03-25 10:56:20 +01:00
parent d16aa1b160
commit 355b8df23a
6 changed files with 276 additions and 213 deletions

View File

@@ -235,39 +235,6 @@ int textwidth(int siz, const string &str) {
}
#endif
EX int darkenedby(int c, int lev) {
for(int i=0; i<lev; i++)
c = ((c & 0xFEFEFE) >> 1);
return c;
}
bool fading = false;
ld fadeout = 1;
EX color_t darkened(color_t c) {
if(inmirrorcount&1)
c = gradient(c, winf[waMirror].color, 0, 0.5, 1);
else if(inmirrorcount)
c = gradient(c, winf[waCloud].color, 0, 0.5, 1);
if(fading) c = gradient(backcolor, c, 0, fadeout, 1);
if(vid.desaturate) {
ld luminance = 0.2125 * part(c,2) + 0.7154 * part(c,1) + 0.0721 * part(c, 0);
c = gradient(c, int(luminance+.5) * 0x10101, 0, vid.desaturate, 100);
}
for(int i=0; i<darken; i++)
c = ((c & 0xFEFEFE) >> 1) + ((backcolor & 0xFEFEFE) >> 1);
return c;
}
EX color_t darkena3(color_t c, int lev, int a) {
return (darkenedby(c, lev) << 8) + a;
}
EX color_t darkena(color_t c, int lev, int a) {
return darkena3(c, lev, GDIM == 3 ? 255 : a);
}
#if !CAP_GL
EX void setcameraangle(bool b) { }
#endif
@@ -1008,17 +975,6 @@ EX void drawmessages() {
}
}
EX color_t gradient(color_t c0, color_t c1, ld v0, ld v, ld v1) {
int vv = int(256 * ((v-v0) / (v1-v0)));
color_t c = 0;
for(int a=0; a<4; a++) {
int p0 = part(c0, a);
int p1 = part(c1, a);
part(c, a) = (p0*(256-vv) + p1*vv + 127) >> 8;
}
return c;
}
EX void drawCircle(int x, int y, int size, color_t color, color_t fillcolor IS(0)) {
if(size < 0) size = -size;
#if CAP_GL && CAP_POLY