more palette support/testing #230

pull/287/head
nick black 5 years ago committed by Nick Black
parent 684bcdcc8c
commit dfcdd10cb5

@ -182,6 +182,7 @@ typedef struct notcurses {
unsigned inputbuf_occupied;
unsigned inputbuf_valid_starts;
unsigned inputbuf_write_at;
palette256 palette; // 256-indexed palette can be used instead of RGB
struct esctrie* inputescapes; // trie of input escapes -> ncspecial_keys
} notcurses;

@ -1646,8 +1646,16 @@ palette256* palette256_new(void){
int palette256_use(notcurses* nc, const palette256* p){
int ret = -1;
if(!nc->CCCflag){
return -1;
}
pthread_mutex_lock(&nc->lock);
// FIXME load it
for(size_t z = 0 ; z < sizeof(p->chans) / sizeof(*p->chans) ; ++z){
if(nc->palette.chans[z] != p->chans[z]){
nc->palette.chans[z] = p->chans[z];
// FIXME write it to terminal using initc, need another damage map
}
}
pthread_mutex_unlock(&nc->lock);
return ret;
}

@ -23,6 +23,30 @@ TEST_CASE("Palette256") {
palette256_free(p);
}
SUBCASE("SetIndexZero") {
palette256* p = palette256_new();
REQUIRE(nullptr != p);
palette256_set_rgb(p, 0, 0x80, 0x90, 0xa0);
unsigned r, g, b;
palette256_get(p, 0, &r, &g, &b);
CHECK(r == 0x80);
CHECK(g == 0x90);
CHECK(b == 0xa0);
palette256_free(p);
}
SUBCASE("SetIndex255") {
palette256* p = palette256_new();
REQUIRE(nullptr != p);
palette256_set_rgb(p, 255, 0xa0, 0x70, 0x50);
unsigned r, g, b;
palette256_get(p, 255, &r, &g, &b);
CHECK(r == 0xa0);
CHECK(g == 0x70);
CHECK(b == 0x50);
palette256_free(p);
}
// common teardown
CHECK(0 == notcurses_stop(nc_));
CHECK(0 == fclose(outfp_));

Loading…
Cancel
Save