now can add chars
This commit is contained in:
parent
7877f52c87
commit
3b038e8073
45
ste.c
45
ste.c
@ -1,6 +1,7 @@
|
||||
#include <ncurses.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
|
||||
/* defines */
|
||||
#define CTRL(k) ((k) & 0x1f) // Control mask modifier
|
||||
@ -65,6 +66,7 @@ static int curRealToRender (row *rw, int c_x);
|
||||
|
||||
/* Row operations */
|
||||
static inline void rowInit (void);
|
||||
static void rowAddChar (row *rw, char c);
|
||||
|
||||
/* Terminal operations */
|
||||
static void termInit (void);
|
||||
@ -121,6 +123,8 @@ int main (int argc, char *argv[])
|
||||
case (KEY_DOWN):
|
||||
cursorMove(c);
|
||||
break;
|
||||
default:
|
||||
rowAddChar(&rows.rw[t.cur.y + t.cur.off_y], c);
|
||||
}
|
||||
}
|
||||
|
||||
@ -158,7 +162,7 @@ void termInit (void)
|
||||
init_pair(1, COLOR_BLACK, COLOR_WHITE);
|
||||
|
||||
/* Set default color */
|
||||
bkgd(COLOR_PAIR(1));
|
||||
//bkgd(COLOR_PAIR(1));
|
||||
|
||||
/* Populate the main data structure */
|
||||
getmaxyx(stdscr, t.dim.y, t.dim.x);
|
||||
@ -233,14 +237,14 @@ void drawLines (void)
|
||||
attroff(COLOR_PAIR(2));
|
||||
lnMove(i, 0);
|
||||
|
||||
if (ln == t.cur.y + t.cur.off_y) attron(COLOR_PAIR(2));
|
||||
//if (ln == t.cur.y + t.cur.off_y) attron(COLOR_PAIR(2));
|
||||
|
||||
/* Draw the line matcing render memory */
|
||||
if (rows.rw[ln].r_size >= t.cur.off_x) {
|
||||
addnstr(&rows.rw[ln].render[t.cur.off_x], t.dim.x + 1 - rows.rw[ln].delta);
|
||||
}
|
||||
|
||||
attroff(COLOR_PAIR(2));
|
||||
//attroff(COLOR_PAIR(2));
|
||||
|
||||
lnMove(++line, 0);
|
||||
}
|
||||
@ -258,7 +262,7 @@ void lnMove (int y, int x)
|
||||
void drawBar (char *s)
|
||||
{
|
||||
/* Set maximum contrast for bar */
|
||||
attron(A_STANDOUT);
|
||||
attron(COLOR_PAIR(2));
|
||||
/* get the length of the statusbar text */
|
||||
int len = strlen(s);
|
||||
/* Print the message */
|
||||
@ -272,7 +276,7 @@ void drawBar (char *s)
|
||||
mvaddstr(t.dim.y, t.dim.x + t.pad - strlen(m), m);
|
||||
|
||||
/* Return to normal contrast mode */
|
||||
attroff(A_STANDOUT);
|
||||
attroff(COLOR_PAIR(2));
|
||||
}
|
||||
|
||||
/* convert the cursor matchoing the memory to the drawn one */
|
||||
@ -368,6 +372,37 @@ void rowInit (void)
|
||||
rows.rownum = 0;
|
||||
}
|
||||
|
||||
void rowAddChar (row *rw, char c) // WIP
|
||||
{
|
||||
// Error checking
|
||||
if (!c || iscntrl(c)) return;
|
||||
|
||||
int cur = t.cur.x + t.cur.off_x, i = 0;
|
||||
char *s = rw->chars;
|
||||
|
||||
// reallocate mem and inc size
|
||||
rw->chars = malloc(rw->size + 2);
|
||||
rw->size++;
|
||||
|
||||
// copy bf cursor
|
||||
for (i = 0; i < cur; i++) {
|
||||
rw->chars[i] = s[i];
|
||||
}
|
||||
|
||||
// add at cursor
|
||||
rw->chars[cur++] = (char)c;
|
||||
|
||||
//copy after cursor
|
||||
for (i = cur; i < rw->size + 1; i++) {
|
||||
rw->chars[i] = s[i - 1];
|
||||
}
|
||||
|
||||
free(s);
|
||||
|
||||
updateRender(rw);
|
||||
t.cur.x++;
|
||||
}
|
||||
|
||||
/* ----------------------------- file operations --------------------------- */
|
||||
|
||||
/* take care of the cursor movement */
|
||||
|
Loading…
Reference in New Issue
Block a user