add transparency

This commit is contained in:
2026-07-18 08:42:01 +05:00
parent 2bbee73425
commit 7d91df3c6b
5 changed files with 83 additions and 16 deletions

View File

@@ -101,9 +101,10 @@ int main(int argc, char **argv)
return 2;
}
const char internal_url[] = "data:text/html,<body><div id='box'></div></body>";
const char transparent_css[] = "html,body{margin:0;background:transparent!important}"
"#box{position:fixed;inset:0;background:rgba(255,0,0,.5)}";
const char internal_url[] =
"data:text/html,<body style='background:rgb(3,5,7)'><div id='box'></div></body>";
const char transparent_css[] = "html,body{margin:0}"
"#box{position:fixed;inset:16px;background:rgba(255,0,0,.5)}";
const char opaque_css[] = "html,body{margin:0;background:rgb(7,19,31)!important}"
"#box{position:fixed;left:16px;top:16px;width:32px;height:32px;"
"background:rgb(241,23,17);transform:translateZ(0);filter:blur(.1px)}";
@@ -125,6 +126,7 @@ int main(int argc, char **argv)
write_exact(control[0], url, strlen(url)) &&
write_exact(control[0], css, strlen(css));
uint8_t last_bgra[4] = {0};
uint8_t last_corner_bgra[4] = {0};
bool found_red = false;
int max_attempts = external_url ? 120 : 60;
for (int attempt = 0; sent && attempt < max_attempts; attempt++) {
@@ -158,11 +160,14 @@ int main(int argc, char **argv)
}
size_t center = ((size_t)(height / 2) * width + width / 2) * 4;
memcpy(last_bgra, frame + center, sizeof(last_bgra));
memcpy(last_corner_bgra, frame, sizeof(last_corner_bgra));
bool expected = opaque
? last_bgra[0] < 32 && last_bgra[1] < 40 && last_bgra[2] > 210 &&
last_bgra[3] == 255
: last_bgra[0] < 8 && last_bgra[1] < 8 && last_bgra[2] > 120 &&
last_bgra[2] < 136 && last_bgra[3] > 120 && last_bgra[3] < 136;
: last_bgra[0] < 8 && last_bgra[1] < 8 && last_bgra[2] > 248 &&
last_bgra[3] > 120 && last_bgra[3] < 136 &&
last_corner_bgra[0] == 0 && last_corner_bgra[1] == 0 &&
last_corner_bgra[2] == 0 && last_corner_bgra[3] == 0;
if (expected) {
found_red = true;
break;
@@ -183,9 +188,10 @@ int main(int argc, char **argv)
}
fprintf(stderr,
"renderer did not produce the expected %s red BGRA frame "
"(center BGRA=%u,%u,%u,%u)\n",
"(center BGRA=%u,%u,%u,%u; corner BGRA=%u,%u,%u,%u)\n",
opaque ? "opaque" : "transparent", last_bgra[0], last_bgra[1],
last_bgra[2], last_bgra[3]);
last_bgra[2], last_bgra[3], last_corner_bgra[0], last_corner_bgra[1],
last_corner_bgra[2], last_corner_bgra[3]);
return 1;
}
return 0;