summaryrefslogtreecommitdiffstats
path: root/src/c_utils.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/c_utils.c')
-rw-r--r--src/c_utils.c117
1 files changed, 52 insertions, 65 deletions
diff --git a/src/c_utils.c b/src/c_utils.c
index 24545f3..8bc940e 100644
--- a/src/c_utils.c
+++ b/src/c_utils.c
@@ -11,7 +11,6 @@
/* ************************************************************************** */
#include <libft.h>
-#include <stdio.h>
#include <stdlib.h>
#include <term.h>
#include <unistd.h>
@@ -25,24 +24,11 @@
/*
** TODO:
** delchar MOVE
-** END MONGARS
+** plen opti
** NORME
** FLECHES UP DOWN
** C-c globul pid
- */
-
-uint16_t
- c_get_win_size(struct winsize *ws)
-{
-
- if (!(ioctl(STDOUT_FILENO, TIOCGWINSZ, ws)))
- return (-1);
- if (!ws->ws_col)
- ws->ws_col = 80;
- if (!ws->ws_row)
- ws->ws_row = 80;
- return (1);
-}
+*/
int16_t
c_new_line(char *line,
@@ -70,27 +56,23 @@ char
char c,
t_caps *tcaps)
{
- size_t i;
- size_t j;
- size_t len;
- char *dst;
+ int32_t i;
+ size_t j;
+ size_t len;
+ char *dst;
- i = 0;
+ i = -1;
j = 0;
len = (ft_strlen(str) + 2);
if (!(dst = (char*)malloc((len) * sizeof(char))))
return (NULL);
- while (i < len)
+ while (++i < (int32_t)len)
{
- if (i == tcaps->cpos)
- {
+ if (i == (int32_t)tcaps->cpos)
dst[i] = c;
- i++;
- }
else
{
dst[i] = str[j];
- i++;
j++;
}
}
@@ -102,9 +84,9 @@ char
*c_delchar(char *str,
uint16_t cpos)
{
- char *dst;
- uint16_t i;
- uint16_t j;
+ char *dst;
+ uint16_t i;
+ uint16_t j;
j = 0;
i = 0;
@@ -124,58 +106,63 @@ char
return (dst);
}
+static int16_t
+ c_redraw_next(size_t plen,
+ uint32_t len,
+ t_caps *tcaps)
+{
+ uint32_t i;
+ uint32_t j;
+
+ i = (tcaps->nlines == tcaps->lpos) ? 0 : tcaps->ws.ws_col * (tcaps->lpos - 1);
+ j = tcaps->nlines;
+ if (tcaps->nlines != tcaps->lpos)
+ {
+ while (--j > tcaps->lpos)
+ tputs(tgetstr("up", NULL), 1, ft_putchar);
+ tputs(tgetstr("up", NULL), 1, ft_putchar);
+ tputs(tgetstr("cr", NULL), 1, ft_putchar); /* cr, cpos mauvaise col, bonne ligne */
+ while (i <= (tcaps->cpos + plen))
+ {
+ tputs(tgetstr("nd", NULL), 1, ft_putchar); /* cr, cpos mauvaise col, bonne ligne */
+ i++;
+ }
+ }
+ else
+ while (--len > tcaps->cpos)
+ tputs(tgetstr("le", NULL), 1, ft_putchar);
+ return (len);
+}
+
int16_t
c_redraw_line(char *line,
t_caps *tcaps,
t_msh *msh)
{
- uint32_t i;
- uint32_t len;
- uint32_t mod;
- int16_t ret;
+ uint32_t i;
+ uint32_t j;
+ uint32_t len;
- i = 0;
- tcaps->nlines = c_get_line_num(line, tcaps->cpos, ft_strlen(msh->ps[0]), tcaps);
len = ft_strlen(line);
- mod = (tcaps->ws.ws_col);
+ tcaps->nlines = c_get_line_num(line, tcaps->cpos, ft_strlen(msh->ps[0]), tcaps);
+ j = tcaps->lpos;
+ i = 0;
tputs(tgetstr("cr", NULL), 1, ft_putchar);
- if (((tcaps->cpos + ft_strlen(msh->ps[0])) % mod) == 0)
+ if (((tcaps->cpos + ft_strlen(msh->ps[0])) % tcaps->ws.ws_col) == 0)
{
tputs(tgetstr("sf", NULL), 1, ft_putchar);
return (1);
}
- while (--tcaps->lpos > 0)
+ while (--j > 0)
{
tputs(tgetstr("sf", NULL), 1, ft_putchar);
tputs(tgetstr("up", NULL), 1, ft_putchar);
tputs(tgetstr("up", NULL), 1, ft_putchar);
}
- while (i < ft_strlen(msh->ps[0]))
- {
+ while (i++ < ft_strlen(msh->ps[0]))
tputs(tgetstr("nd", NULL), 1, ft_putchar);
- i++;
- }
- tcaps->nlines = c_get_line_num(line, tcaps->cpos, ft_strlen(msh->ps[0]), tcaps);
- ret = ft_printf("%s", line);
- i = (tcaps->nlines == (tcaps->lpos)) ? 0 : tcaps->ws.ws_col * (tcaps->lpos - 1);
+ ft_printf("%s", line);
if (tcaps->cpos != len)
- {
- if (tcaps->nlines != tcaps->lpos)
- {
- while (--tcaps->nlines > tcaps->lpos)
- tputs(tgetstr("up", NULL), 1, ft_putchar);
- tputs(tgetstr("up", NULL), 1, ft_putchar);
- tputs(tgetstr("cr", NULL), 1, ft_putchar); /* cr, cpos mauvaise col, bonne ligne */
- while (i <= (tcaps->cpos + ft_strlen(msh->ps[0])))
- {
- tputs(tgetstr("nd", NULL), 1, ft_putchar); /* cr, cpos mauvaise col, bonne ligne */
- i++;
- }
- }
- else
- while (--len > tcaps->cpos)
- tputs(tgetstr("le", NULL), 1, ft_putchar);
- }
- tcaps->nlines = c_get_line_num(line, tcaps->cpos, ft_strlen(msh->ps[0]), tcaps);
- return (ret);
+ return (c_redraw_next(ft_strlen(msh->ps[0]), len, tcaps));
+ return (len);
}