Implement alternate screen usage
authorLukáš Jiřiště <gymnazium.jiriste@gmail.com>
Sat, 2 Mar 2024 18:33:30 +0000 (19:33 +0100)
committerLukáš Jiřiště <gymnazium.jiriste@gmail.com>
Sat, 2 Mar 2024 18:33:30 +0000 (19:33 +0100)
This is an entry point to possible "graphics".

Makefile
inc/FET_sim.h
src/main.c
src/terminal.c [new file with mode: 0644]

index 25bf565e1d7e2cb8c93676b5e229582d32148a32..d5e8252e04fe49cfb2fd56682e088711cf8d659b 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -17,6 +17,7 @@ SOURCES :=    main.c                  \
                        sim_node.c              \
                        sim_state.c             \
                                                        \
+                       terminal.c              \
                        text.c                  \
                        colors.c                \
                                                        \
index 6a6bccf94024dfc3c4ca08438d696100d7644d52..eee311d7aca78f5e3368966ed08e469f170b1e70 100644 (file)
@@ -109,6 +109,8 @@ void        update_nodes(t_vec *nodes);
 int            should_open(t_type type, t_state state);
 int            sim_step(t_vec *nodes, t_vec *mosfets);
 
+void   setup_terminal(void);
+void   clean_terminal(void);
 void   print_start(void);
 void   command_not_found(const char *input);
 void   print_help(t_command c);
index 69cb3ae7e3adf4d023c286eb653a715b27a1e009..769e87fbfa458a32e1aded92e08a30cc5e7aa3bc 100644 (file)
@@ -278,6 +278,7 @@ void        cleanup(t_vec *nodes, t_vec *mosfets)
        ft_vec_free(nodes, free_node);
        ft_vec_free(mosfets, NULL);
        get_next_line(-1);
+       clean_terminal();
        return ;
 }
 
@@ -286,6 +287,7 @@ int main(int argc, char **argv)
        t_vec   nodes;
        t_vec   mosfets;
 
+       setup_terminal();
        print_start();
        ft_vec_init(&nodes, sizeof(t_node));
        ft_vec_init(&mosfets, sizeof(t_mosfet));
diff --git a/src/terminal.c b/src/terminal.c
new file mode 100644 (file)
index 0000000..d1252a6
--- /dev/null
@@ -0,0 +1,18 @@
+#include "FET_sim.h"
+#include "libft.h"
+
+static const char      alt_term_on[] = "\033[?1049h";
+static const char      alt_term_off[] = "\033[?1049l";
+
+void   setup_terminal(void)
+{
+       ft_printf("%s", alt_term_on);
+       ft_printf("\033[H");
+       return ;
+}
+
+void   clean_terminal(void)
+{
+       ft_printf("%s", alt_term_off);
+       return ;
+}