Просмотр исходного кода

Added few more functions...

master
Ognjen Milan Robovic 6 месяцев назад
Родитель
Сommit
7b6f33f39b
3 измененных файлов: 50 добавлений и 19 удалений
  1. +3
    -8
      example/view.c
  2. +38
    -9
      xurses.c
  3. +9
    -2
      xurses.h

+ 3
- 8
example/view.c Просмотреть файл

@@ -12,10 +12,6 @@ static void i_left (void) { --i_x; limit (& i_x, 0, curses_screen_width - 1);
static void i_right (void) { ++i_x; limit (& i_x, 0, curses_screen_width - 1); } static void i_right (void) { ++i_x; limit (& i_x, 0, curses_screen_width - 1); }


int main (void) { int main (void) {
int i = -420;
char a [64] = "";
char b [5] = "Heyo";

curses_configure (); curses_configure ();


curses_bind (SIGNAL_W, i_up); curses_bind (SIGNAL_W, i_up);
@@ -23,6 +19,8 @@ int main (void) {
curses_bind (SIGNAL_A, i_left); curses_bind (SIGNAL_A, i_left);
curses_bind (SIGNAL_D, i_right); curses_bind (SIGNAL_D, i_right);


terminal_show_cursor (0);

while (curses_active != 0) { while (curses_active != 0) {
curses_render_background ('.', COLOUR_GREY, EFFECT_BOLD); curses_render_background ('.', COLOUR_GREY, EFFECT_BOLD);


@@ -39,10 +37,7 @@ int main (void) {
curses_synchronize (); curses_synchronize ();
} }


number_to_string (i, a);

printf ("%s <> ", b);
printf ("%i <> %s\n", string_length (b), string_reverse (b));
terminal_show_cursor (1);


return (EXIT_SUCCESS); return (EXIT_SUCCESS);
} }

+ 38
- 9
xurses.c Просмотреть файл

@@ -9,6 +9,8 @@ It is distributed in the hope that it will be useful or harmful, it really depen
#ifndef XURSES_SOURCE #ifndef XURSES_SOURCE
#define XURSES_SOURCE #define XURSES_SOURCE


#include <xolatile/xtandard.c>

#include <xolatile/xurses.h> #include <xolatile/xurses.h>


#include <termios.h> #include <termios.h>
@@ -24,10 +26,7 @@ It is distributed in the hope that it will be useful or harmful, it really depen


/* Internal variable definitions. */ /* Internal variable definitions. */


static int curses_signal = SIGNAL_NONE;
static int curses_screen_width = 0;
static int curses_screen_height = 0;
static char * curses_screen = NULL;
static char * curses_screen = NULL;


static char curses_format [CURSES_FORMAT + 1] = "\033[-;3-m-\033[0m"; static char curses_format [CURSES_FORMAT + 1] = "\033[-;3-m-\033[0m";


@@ -96,7 +95,13 @@ static void curses_idle (void) {


/* External variable definitions. */ /* External variable definitions. */


int curses_active = 1;
int curses_realign_x = 0;
int curses_realign_y = 0;
int curses_tab_width = 8;
int curses_signal = SIGNAL_NONE;
int curses_screen_width = 0;
int curses_screen_height = 0;
int curses_active = 1;


/* External function definitions. */ /* External function definitions. */


@@ -192,19 +197,43 @@ void curses_render_background (char character, int colour, int effect) {
} }
} }


void curses_render_string_limit (char * string, int limit, int colour, int effect, int x, int y) {
void curses_render_string_point (char * string, int limit, int colour, int effect, int * x, int * y) {
int offset; int offset;


for (offset = 0; offset != limit; ++offset) { for (offset = 0; offset != limit; ++offset) {
if (x + offset < curses_screen_width) {
curses_render_character (string [offset], colour, effect, x + offset, y);
if (* x + offset < curses_screen_width) {
if (string [offset] == '\n') {
* x = curses_realign_x;
* y += 1;
} else if (string [offset] == '\t') {
* x += curses_tab_width;
} else {
curses_render_character (string [offset], colour, effect, * x, * y);
* x += 1;
}
} else { } else {
curses_render_character ('+', COLOUR_GREY, EFFECT_BOLD, x + offset, y);
curses_render_character ('+', COLOUR_GREY, EFFECT_BOLD, * x, * y);
return; return;
} }
} }
} }


void curses_render_number_point (int number, int limit, int colour, int effect, int * x, int * y) {
(void) number;
(void) limit;
(void) colour;
(void) effect;
(void) x;
(void) y;
return;
}

void curses_render_string_limit (char * string, int limit, int colour, int effect, int x, int y) {
int xx = x, yy = y;

curses_render_string_point (string, limit, colour, effect, & xx, & yy);
}

void curses_render_number_limit (int number, int limit, int colour, int effect, int x, int y) { void curses_render_number_limit (int number, int limit, int colour, int effect, int x, int y) {
(void) number; (void) number;
(void) limit; (void) limit;


+ 9
- 2
xurses.h Просмотреть файл

@@ -9,8 +9,12 @@ It is distributed in the hope that it will be useful or harmful, it really depen
#ifndef XURSES_HEADER #ifndef XURSES_HEADER
#define XURSES_HEADER #define XURSES_HEADER


#include <xolatile/xtandard.h>

extern int curses_realign_x;
extern int curses_realign_y;
extern int curses_tab_width;
extern int curses_signal;
extern int curses_screen_width;
extern int curses_screen_height;
extern int curses_active; extern int curses_active;


extern void curses_configure (void); extern void curses_configure (void);
@@ -24,6 +28,9 @@ extern void curses_render_cursor (int x, int y);
extern void curses_render_character (char character, int colour, int effect, int x, int y); extern void curses_render_character (char character, int colour, int effect, int x, int y);
extern void curses_render_background (char character, int colour, int effect); extern void curses_render_background (char character, int colour, int effect);


extern void curses_render_string_point (char * string, int limit, int colour, int effect, int * x, int * y);
extern void curses_render_number_point (int number, int limit, int colour, int effect, int * x, int * y);

extern void curses_render_string_limit (char * string, int limit, int colour, int effect, int x, int y); extern void curses_render_string_limit (char * string, int limit, int colour, int effect, int x, int y);
extern void curses_render_number_limit (int number, int limit, int colour, int effect, int x, int y); extern void curses_render_number_limit (int number, int limit, int colour, int effect, int x, int y);




Загрузка…
Отмена
Сохранить