diff --git a/src/graphics.c b/src/graphics.c index 806ac3d..f6a5bff 100644 --- a/src/graphics.c +++ b/src/graphics.c @@ -264,12 +264,16 @@ unsigned int gl_width, gl_height; float gl_font_width, gl_font_height; float gl_incx, gl_incy; int id[94]; -unsigned char gl_resized=0, gl_bit=0; -unsigned char gl_mouse_changed=0, gl_mouse_clicked=0; +unsigned char gl_resized = 0, gl_bit = 0; +unsigned char gl_mouse_changed = 0, gl_mouse_clicked = 0; unsigned int gl_mouse_x, gl_mouse_y; -unsigned int gl_mouse_button=0, gl_mouse_state=0; -#endif +unsigned int gl_mouse_button = 0, gl_mouse_state = 0; +unsigned char gl_key = 0; +int gl_special_key = 0; +int gl_new_width; +int gl_new_height; +#endif static char *_caca_empty_line; static char *_caca_scratch_line; @@ -301,50 +305,11 @@ static int x11_error_handler(Display *, XErrorEvent *); #endif #if defined(USE_GL) -unsigned char gl_key = 0; -int gl_special_key = 0; -int gl_new_width; -int gl_new_height; - -static void gl_handle_keyboard(unsigned char key, int x, int y) -{ - gl_key = key; -} - -static void gl_handle_special_key(int key, int x, int y) -{ - gl_special_key = key; -} - -static void gl_handle_reshape(int w, int h) -{ - if(gl_bit) /* Do not handle reshaping at the first time*/ - { - gl_new_width = w; - gl_new_height = h; - - gl_resized = 1; - } - else - gl_bit = 1; -} - -static void gl_handle_mouse(int button, int state, int x, int y) -{ - gl_mouse_clicked = 1; - gl_mouse_button = button; - gl_mouse_state = state; - gl_mouse_x = x / gl_font_width; - gl_mouse_y = y / gl_font_height; - gl_mouse_changed = 1; -} - -static void gl_handle_mouse_motion(int x, int y) -{ - gl_mouse_x = x / gl_font_width; - gl_mouse_y = y / gl_font_height; - gl_mouse_changed = 1; -} +static void gl_handle_keyboard(unsigned char, int, int); +static void gl_handle_special_key(int, int, int); +static void gl_handle_reshape(int, int); +static void gl_handle_mouse(int, int, int, int); +static void gl_handle_mouse_motion(int, int); #endif /** \brief Set the default colour pair. @@ -1480,7 +1445,7 @@ void caca_refresh(void) glClear(GL_COLOR_BUFFER_BIT); - offsety=0; + offsety = 0; for(y = 0; y < gl_height; y += gl_font_height) { offsetx = 0; @@ -1488,7 +1453,7 @@ void caca_refresh(void) { uint8_t *attr = cache_attr + offsetx + offsety * _caca_width; int offset; - float br, bg, bb; + float br, bg, bb; offset = attr[0] >> 4; br = ((gl_bgpal[offset] & 0x00FF0000) >> 16) / 255.0f; @@ -1498,10 +1463,10 @@ void caca_refresh(void) glDisable(GL_TEXTURE_2D); glColor3f(br, bg, bb); glBegin(GL_QUADS); - glVertex2f(x, y); - glVertex2f(x + gl_font_width, y); - glVertex2f(x + gl_font_width, y + gl_font_height); - glVertex2f(x, y + gl_font_height); + glVertex2f(x, y); + glVertex2f(x + gl_font_width, y); + glVertex2f(x + gl_font_width, y + gl_font_height); + glVertex2f(x, y + gl_font_height); glEnd(); offsetx++; @@ -1535,14 +1500,14 @@ void caca_refresh(void) glColor3f(fr, fg, fb); glBegin(GL_QUADS); - glTexCoord2f(0, 1); - glVertex2f(x, y); - glTexCoord2f(0.5, 1); - glVertex2f(x + gl_font_width, y); - glTexCoord2f(0.5, 0); - glVertex2f(x + gl_font_width, y + gl_font_height); - glTexCoord2f(0, 0); - glVertex2f(x, y + gl_font_height); + glTexCoord2f(0, 1); + glVertex2f(x, y); + glTexCoord2f(0.5, 1); + glVertex2f(x + gl_font_width, y); + glTexCoord2f(0.5, 0); + glVertex2f(x + gl_font_width, y + gl_font_height); + glTexCoord2f(0, 0); + glVertex2f(x, y + gl_font_height); glEnd(); } offsetx++; @@ -1595,7 +1560,7 @@ void caca_refresh(void) } /* - * XXX: following functions are loca + * XXX: following functions are local */ static void caca_handle_resize(void) { @@ -1636,6 +1601,7 @@ static void caca_handle_resize(void) #if defined(USE_CONIO) if(_caca_driver == CACA_DRIVER_CONIO) { + /* Nothing to do here. */ } else #endif @@ -1663,6 +1629,7 @@ static void caca_handle_resize(void) #if defined(USE_WIN32) if(_caca_driver == CACA_DRIVER_WIN32) { + /* Nothing to do here. */ } else #endif @@ -1784,6 +1751,48 @@ static RETSIGTYPE sigwinch_handler(int sig) } #endif +#if defined(USE_GL) +static void gl_handle_keyboard(unsigned char key, int x, int y) +{ + gl_key = key; +} + +static void gl_handle_special_key(int key, int x, int y) +{ + gl_special_key = key; +} + +static void gl_handle_reshape(int w, int h) +{ + if(gl_bit) /* Do not handle reshaping at the first time*/ + { + gl_new_width = w; + gl_new_height = h; + + gl_resized = 1; + } + else + gl_bit = 1; +} + +static void gl_handle_mouse(int button, int state, int x, int y) +{ + gl_mouse_clicked = 1; + gl_mouse_button = button; + gl_mouse_state = state; + gl_mouse_x = x / gl_font_width; + gl_mouse_y = y / gl_font_height; + gl_mouse_changed = 1; +} + +static void gl_handle_mouse_motion(int x, int y) +{ + gl_mouse_x = x / gl_font_width; + gl_mouse_y = y / gl_font_height; + gl_mouse_changed = 1; +} +#endif + /* Exporters */ /* HTML */ @@ -2029,10 +2038,10 @@ char * caca_get_ansi(int trailing) 30, 34, 32, 36, 31, 35, 33, 37, /* Both lines (light and dark) are the same, */ 30, 34, 32, 36, 31, 35, 33, 37, /* light colors handling is done later */ }; - + char *buffer, *cur; unsigned int x, y; - + /* 20 bytes assumed for max length per pixel. * Add height*9 to that (zeroes color at the end and jump to next line) */ buffer = malloc(((_caca_height*9) + (_caca_width * _caca_height * 20)) * sizeof(char)); @@ -2058,7 +2067,7 @@ char * caca_get_ansi(int trailing) cur += sprintf(cur, "\033["); else cur += sprintf(cur, "\\033["); - + if(fg > 7) cur += sprintf(cur, "1;%d;%dm",fg,bg); else