Tracer des diagrammes dans un terminal - retour accueil
git clone git://bebou.netlib.re/boxes
Log | Files | Refs | README |
commit f704741141285a966aeb1c089c55c2a1f0415c3d parent 7dfd13c5626304365b119ee8c9c9a35380bcdd16 Auteurice: Arthur Pons <arthur.pons@unistra.fr> Date: Fri, 13 Jun 2025 21:19:26 +0200 On peut supprimer des boites Implémentation naïve d'un ctrl+z avec, ça supprime toujours la dernière boites faite Diffstat:
M | boxes.c | | | 21 | +++++++++++++-------- |
1 file changed, 13 insertions(+), 8 deletions(-)
diff --git a/boxes.c b/boxes.c @@ -1,9 +1,7 @@ #define TB_IMPL #include "termbox2.h" -/* Le chiffre c'est des octets. Les caractères sont encodés sur un octet chacun ? - * Donc si on met 5 la taille max serait 4 caractères ? */ -#define ELEM_SIZE 1000 +#define MAX_BOX_NB 100 int max(int a, int b) { return a > b ? a : b; } int min(int a, int b) { return a < b ? a : b; } @@ -34,12 +32,18 @@ struct box createbox(int x, int y, int w, int h) { struct box b; b.x=x; b.y=y; b.w=w; b.h=h; return b; } +void deletebox(struct box* boxes, int index, int boxescount) { + for (int i=index;i<boxescount-1;i++) { + boxes[i]=boxes[i+1]; + } +} + int main(int argc, char **argv) { tb_init(); tb_hide_cursor(); tb_set_input_mode(TB_INPUT_ESC | TB_INPUT_MOUSE); struct tb_event ev; - struct box boxes[10]; int boxescount=0; + struct box boxes[MAX_BOX_NB]; int boxescount=0; int curx; int cury; while(1) { tb_clear(); @@ -51,6 +55,7 @@ int main(int argc, char **argv) { tb_shutdown(); return 0; case 65512: /*MouseLeft*/ + if(boxescount==MAX_BOX_NB) break; curx=ev.x; cury=ev.y; while(ev.key!=65509) { /*MouseRelease*/ tb_clear(); @@ -62,11 +67,11 @@ int main(int argc, char **argv) { struct box b=createbox(curx,cury,ev.x-curx,ev.y-cury); boxes[boxescount]=b; boxescount++; break; - case 65511: /*MouseRight*/ - break; - case 65508: /*MouseWheelUp*/ + case 26: /*ctrl+z*/ + deletebox(boxes,boxescount-1,boxescount); + boxescount--; break; - case 65507: /*MouseWheelDown*/ + case 65511: /*MouseRight*/ break; } }