mirror of
https://github.com/dankamongmen/notcurses.git
synced 2024-11-18 03:25:55 +00:00
kill rotator PoC; it's covered by visual PoC
This commit is contained in:
parent
b26730a7e0
commit
51bd8b7c40
@ -1,230 +0,0 @@
|
||||
#include <math.h>
|
||||
#include <unistd.h>
|
||||
#include <stdlib.h>
|
||||
#include <locale.h>
|
||||
#include <notcurses/notcurses.h>
|
||||
#include "compat/compat.h"
|
||||
|
||||
static int
|
||||
rotate_grad(struct notcurses* nc){
|
||||
struct timespec ts = {
|
||||
.tv_sec = 0,
|
||||
.tv_nsec = 750000000,
|
||||
};
|
||||
int dimy, dimx;
|
||||
struct ncplane* n = notcurses_stddim_yx(nc, &dimy, &dimx);
|
||||
ncplane_home(n);
|
||||
uint32_t tl = 0, tr = 0, bl = 0, br = 0;
|
||||
ncchannel_set_rgb8(&tl, 0xff, 0, 0);
|
||||
ncchannel_set_rgb8(&tr, 0, 0, 0xff);
|
||||
ncchannel_set_rgb8(&bl, 0, 0xff, 0);
|
||||
ncchannel_set_rgb8(&br, 0, 0xff, 0xff);
|
||||
if(ncplane_highgradient(n, tl, tr, bl, br, dimy - 1, dimx - 1) <= 0){
|
||||
return -1;
|
||||
}
|
||||
notcurses_render(nc);
|
||||
clock_nanosleep(CLOCK_MONOTONIC, 0, &ts, NULL);
|
||||
uint32_t* rgba = ncplane_as_rgba(n, NCBLIT_DEFAULT, 0, 0,
|
||||
dimy, dimx, NULL, NULL);
|
||||
if(rgba == NULL){
|
||||
return -1;
|
||||
}
|
||||
ncplane_erase(n);
|
||||
notcurses_render(nc);
|
||||
clock_nanosleep(CLOCK_MONOTONIC, 0, &ts, NULL);;
|
||||
|
||||
struct ncvisual_options vopts = {
|
||||
.n = n,
|
||||
.leny = dimy * 2,
|
||||
.lenx = dimx,
|
||||
};
|
||||
if(ncblit_rgba(rgba, dimx * 4, &vopts) < 0){
|
||||
free(rgba);
|
||||
return -1;
|
||||
}
|
||||
notcurses_render(nc);
|
||||
clock_nanosleep(CLOCK_MONOTONIC, 0, &ts, NULL);;
|
||||
|
||||
ncplane_erase(n);
|
||||
notcurses_render(nc);
|
||||
clock_nanosleep(CLOCK_MONOTONIC, 0, &ts, NULL);;
|
||||
|
||||
// now promote it to a visual
|
||||
struct ncvisual* v = ncvisual_from_rgba(rgba, dimy * 2, dimx * 4, dimx);
|
||||
free(rgba);
|
||||
if(v == NULL){
|
||||
return -1;
|
||||
}
|
||||
vopts.leny = 0;
|
||||
vopts.lenx = 0;
|
||||
if(n != ncvisual_render(nc, v, &vopts)){
|
||||
ncvisual_destroy(v);
|
||||
return -1;
|
||||
}
|
||||
notcurses_render(nc);
|
||||
clock_nanosleep(CLOCK_MONOTONIC, 0, &ts, NULL);;
|
||||
vopts.n = NULL;
|
||||
vopts.x = NCALIGN_CENTER;
|
||||
vopts.y = NCALIGN_CENTER;
|
||||
vopts.flags |= NCVISUAL_OPTION_HORALIGNED | NCVISUAL_OPTION_VERALIGNED;
|
||||
ncplane_erase(n);
|
||||
for(int i = 0 ; i < 4 ; ++i){
|
||||
if(ncvisual_rotate(v, M_PI / 2)){
|
||||
return -1;
|
||||
}
|
||||
struct ncplane* newn = ncvisual_render(nc, v, &vopts);
|
||||
if(newn == NULL){
|
||||
return -1;
|
||||
}
|
||||
notcurses_render(nc);
|
||||
ncplane_destroy(newn);
|
||||
clock_nanosleep(CLOCK_MONOTONIC, 0, &ts, NULL);;
|
||||
}
|
||||
|
||||
for(int i = 0 ; i < 8 ; ++i){
|
||||
if(ncvisual_rotate(v, M_PI / 4)){
|
||||
return -1;
|
||||
}
|
||||
ncplane_erase(n);
|
||||
struct ncplane* newn = ncvisual_render(nc, v, &vopts);
|
||||
if(newn == NULL){
|
||||
return -1;
|
||||
}
|
||||
notcurses_render(nc);
|
||||
ncplane_destroy(newn);
|
||||
clock_nanosleep(CLOCK_MONOTONIC, 0, &ts, NULL);;
|
||||
}
|
||||
|
||||
ncvisual_destroy(v);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
rotate(struct notcurses* nc){
|
||||
struct timespec ts = {
|
||||
.tv_sec = 0,
|
||||
.tv_nsec = 250000000,
|
||||
};
|
||||
const int XSIZE = 16;
|
||||
int dimy, dimx;
|
||||
struct ncplane* n = notcurses_stddim_yx(nc, &dimy, &dimx);
|
||||
if(dimy < XSIZE || dimx < 2){
|
||||
return -1;
|
||||
}
|
||||
int r = 255;
|
||||
int g = 0;
|
||||
int b = 0;
|
||||
for(int x = 0 ; x < XSIZE ; ++x){
|
||||
if(ncplane_set_fg_rgb8(n, r, g, b)){
|
||||
return -1;
|
||||
}
|
||||
if(ncplane_set_bg_rgb8(n, b, r, g)){
|
||||
return -1;
|
||||
}
|
||||
if(ncplane_putegc_yx(n, dimy / 2, x, "▀", NULL) < 0){
|
||||
return -1;
|
||||
}
|
||||
g += 15;
|
||||
r -= 14;
|
||||
}
|
||||
g = 0;
|
||||
b = 255;
|
||||
for(int x = 0 ; x < XSIZE ; ++x){
|
||||
if(ncplane_set_fg_rgb8(n, r, g, b)){
|
||||
return -1;
|
||||
}
|
||||
if(ncplane_set_bg_rgb8(n, b, r, g)){
|
||||
return -1;
|
||||
}
|
||||
if(ncplane_putegc_yx(n, dimy / 2 + 1, x, "▄", NULL) < 0){
|
||||
return -1;
|
||||
}
|
||||
g += 14;
|
||||
b -= 15;
|
||||
}
|
||||
notcurses_render(nc);
|
||||
clock_nanosleep(CLOCK_MONOTONIC, 0, &ts, NULL);;
|
||||
|
||||
// we now have 2 rows of 20 cells each, with gradients. load 'em.
|
||||
uint32_t* rgba = ncplane_as_rgba(n, NCBLIT_DEFAULT, dimy / 2, 0,
|
||||
2, XSIZE, NULL, NULL);
|
||||
if(rgba == NULL){
|
||||
return -1;
|
||||
}
|
||||
/*
|
||||
for(int y = 0 ; y < 4 ; ++y){
|
||||
for(int x = 0 ; x < XSIZE ; ++x){
|
||||
fprintf(stderr, "rgba %02d/%02d: %08x\n", y, x, rgba[y * XSIZE + x]);
|
||||
}
|
||||
}
|
||||
*/
|
||||
ncplane_erase(n);
|
||||
notcurses_render(nc);
|
||||
clock_nanosleep(CLOCK_MONOTONIC, 0, &ts, NULL);;
|
||||
|
||||
struct ncvisual_options vopts = {
|
||||
.lenx = XSIZE,
|
||||
.leny = 4,
|
||||
.y = dimy / 2,
|
||||
.x = XSIZE,
|
||||
.n = n,
|
||||
};
|
||||
if(ncblit_rgba(rgba, XSIZE * 4, &vopts) < 0){
|
||||
free(rgba);
|
||||
return -1;
|
||||
}
|
||||
notcurses_render(nc);
|
||||
clock_nanosleep(CLOCK_MONOTONIC, 0, &ts, NULL);;
|
||||
|
||||
ncplane_erase(n);
|
||||
notcurses_render(nc);
|
||||
clock_nanosleep(CLOCK_MONOTONIC, 0, &ts, NULL);;
|
||||
|
||||
// now promote it to a visual
|
||||
struct ncvisual* v = ncvisual_from_rgba(rgba, 4, XSIZE * 4, XSIZE);
|
||||
free(rgba);
|
||||
if(v == NULL){
|
||||
return -1;
|
||||
}
|
||||
vopts.x = (dimx - XSIZE) / 2;
|
||||
vopts.y = dimy / 2;
|
||||
ncvisual_render(nc, v, &vopts);
|
||||
notcurses_render(nc);
|
||||
clock_nanosleep(CLOCK_MONOTONIC, 0, &ts, NULL);;
|
||||
|
||||
for(int i = 0 ; i < 4 ; ++i){
|
||||
if(ncvisual_rotate(v, M_PI / 2)){
|
||||
return -1;
|
||||
}
|
||||
ncplane_erase(n);
|
||||
ncvisual_render(nc, v, &vopts);
|
||||
notcurses_render(nc);
|
||||
clock_nanosleep(CLOCK_MONOTONIC, 0, &ts, NULL);;
|
||||
}
|
||||
|
||||
for(int i = 0 ; i < 8 ; ++i){
|
||||
if(ncvisual_rotate(v, M_PI / 4)){
|
||||
return -1;
|
||||
}
|
||||
ncplane_erase(n);
|
||||
ncvisual_render(nc, v, &vopts);
|
||||
notcurses_render(nc);
|
||||
clock_nanosleep(CLOCK_MONOTONIC, 0, &ts, NULL);;
|
||||
}
|
||||
|
||||
ncvisual_destroy(v);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int main(void){
|
||||
setlocale(LC_ALL, "");
|
||||
struct notcurses_options nopts = {
|
||||
.flags = NCOPTION_INHIBIT_SETLOCALE | NCOPTION_NO_ALTERNATE_SCREEN,
|
||||
};
|
||||
struct notcurses* nc = notcurses_init(&nopts, NULL);
|
||||
int r = 0;
|
||||
r |= rotate(nc);
|
||||
r |= rotate_grad(nc);
|
||||
r |= notcurses_stop(nc);
|
||||
return r ? EXIT_FAILURE : EXIT_SUCCESS;
|
||||
}
|
@ -154,6 +154,7 @@ int main(void){
|
||||
notcurses_stop(nc);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
fprintf(stderr, " stderr ought be redirected\n");
|
||||
int r = wipebitmap(nc);
|
||||
r |= notcurses_stop(nc);
|
||||
return r;
|
||||
|
Loading…
Reference in New Issue
Block a user