Changeset 198


Ignore:
Timestamp:
Nov 17, 2003, 5:11:34 PM (17 years ago)
Author:
Sam Hocevar
Message:
  • src/io.c src/caca.h: + Interpret escape sequences for F1, F2, left, right, etc.
  • src/Makefile.am examples/Makefile.am: + Install caca.h in /usr/include. + Do not install example programs.
  • src/blit.c: + Minor improvements to grayscale colors.
Location:
libcaca/trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • libcaca/trunk/examples/Makefile.am

    r193 r198  
    1414endif
    1515
    16 bin_PROGRAMS = demo spritedit
     16noinst_PROGRAMS = demo spritedit
    1717
    1818demo_SOURCES = demo.c
  • libcaca/trunk/src/Makefile.am

    r185 r198  
    1919        $(NULL)
    2020
     21include_HEADERS = caca.h
     22
  • libcaca/trunk/src/blit.c

    r195 r198  
    8686void caca_blit(int x1, int y1, int x2, int y2, void *pixels, int w, int h)
    8787{
     88    static int white_colors[] = {CACA_COLOR_DARKGRAY, CACA_COLOR_LIGHTGRAY, CACA_COLOR_WHITE};
    8889    static int light_colors[] = {CACA_COLOR_LIGHTMAGENTA, CACA_COLOR_LIGHTRED, CACA_COLOR_YELLOW, CACA_COLOR_LIGHTGREEN, CACA_COLOR_LIGHTCYAN, CACA_COLOR_LIGHTBLUE, CACA_COLOR_LIGHTMAGENTA};
    8990    static int dark_colors[] = {CACA_COLOR_MAGENTA, CACA_COLOR_RED, CACA_COLOR_BROWN, CACA_COLOR_GREEN, CACA_COLOR_CYAN, CACA_COLOR_BLUE, CACA_COLOR_MAGENTA};
     
    101102    }
    102103
    103     pitch = (3 * w + 3) / 4 * 4;
     104    //pitch = (3 * w + 3) / 4 * 4;
     105    pitch = 4 * w;
    104106
    105107    for(y = y1 > 0 ? y1 : 0; y <= y2 && y <= (int)caca_get_height(); y++)
     
    113115            int fromx = w * (x - x1) / (x2 - x1 + 1);
    114116            int fromy = h * (y - y1) / (y2 - y1 + 1);
    115             int r = ((unsigned char *)pixels)[3 * fromx + pitch * fromy];
    116             int g = ((unsigned char *)pixels)[3 * fromx + 1 + pitch * fromy];
    117             int b = ((unsigned char *)pixels)[3 * fromx + 2 + pitch * fromy];
     117            //int r = ((unsigned char *)pixels)[3 * fromx + pitch * fromy];
     118            //int g = ((unsigned char *)pixels)[3 * fromx + 1 + pitch * fromy];
     119            //int b = ((unsigned char *)pixels)[3 * fromx + 2 + pitch * fromy];
     120            int b = ((unsigned char *)pixels)[4 * fromx + pitch * fromy];
     121            int g = ((unsigned char *)pixels)[4 * fromx + 1 + pitch * fromy];
     122            int r = ((unsigned char *)pixels)[4 * fromx + 2 + pitch * fromy];
    118123            int hue, sat, val;
    119124
     
    147152            else
    148153            {
    149                 caca_set_color(CACA_COLOR_LIGHTGRAY);
     154                caca_set_color(white_colors[max * 3 / 256]);
    150155            }
    151156
  • libcaca/trunk/src/caca.h

    r195 r198  
    6464
    6565/*
     66 * Keys
     67 */
     68enum caca_key
     69{
     70    CACA_KEY_UP = 273,
     71    CACA_KEY_DOWN = 274,
     72    CACA_KEY_LEFT = 275,
     73    CACA_KEY_RIGHT = 276,
     74
     75    CACA_KEY_F1 = 282,
     76    CACA_KEY_F2 = 283,
     77    CACA_KEY_F3 = 284,
     78    CACA_KEY_F4 = 285,
     79    CACA_KEY_F5 = 286,
     80    CACA_KEY_F6 = 287,
     81    CACA_KEY_F7 = 288,
     82    CACA_KEY_F8 = 289,
     83    CACA_KEY_F9 = 290,
     84    CACA_KEY_F10 = 291,
     85    CACA_KEY_F11 = 292,
     86    CACA_KEY_F12 = 293,
     87    CACA_KEY_F13 = 294,
     88    CACA_KEY_F14 = 295,
     89    CACA_KEY_F15 = 296
     90};
     91
     92/*
    6693 * Types
    6794 */
     
    81108void caca_end(void);
    82109
    83 char caca_get_key(void);
     110int caca_get_key(void);
    84111
    85112void caca_set_color(enum caca_color);
  • libcaca/trunk/src/io.c

    r192 r198  
    3737#include "caca_internals.h"
    3838
    39 char caca_get_key(void)
     39static unsigned char back[5] = {0, 0, 0, 0, 0};
     40
     41static void _push_key(unsigned char key)
     42{
     43    back[4] = back[3];
     44    back[3] = back[2];
     45    back[2] = back[1];
     46    back[1] = back[0];
     47    back[0] = key;
     48}
     49
     50static unsigned char _pop_key(void)
     51{
     52    unsigned char key = back[0];
     53    back[0] = back[1];
     54    back[1] = back[2];
     55    back[2] = back[3];
     56    back[3] = back[4];
     57    return key;
     58}
     59
     60static unsigned char _read_key(void)
    4061{
    4162#if defined(USE_SLANG)
    4263    return SLang_input_pending(0) ? SLang_getkey() : 0;
    43 
    4464#elif defined(USE_NCURSES)
    45     char key = getch();
    46     return key != ERR ? key : 0;
    47 
     65    unsigned char key = getch();
     66    return (key == ERR) ? 0 : key;
    4867#elif defined(USE_CONIO)
    4968    return _conio_kbhit() ? getch() : 0;
    50 
    5169#endif
    5270}
    5371
     72int caca_get_key(void)
     73{
     74    unsigned char key[5];
     75
     76    /* If there were legacy keys, pop them */
     77    key[0] = _pop_key();
     78    if(key[0])
     79        return key[0];
     80
     81    key[0] = _read_key();
     82    if(key[0] != 0x1b)
     83        return key[0];
     84
     85    key[1] = _read_key();
     86    if(!key[1])
     87        return key[0];
     88
     89    key[2] = _read_key();
     90    if(!key[2])
     91    {
     92        _push_key(key[1]);
     93        return key[0];
     94    }
     95
     96    if(key[1] == 0x4f)
     97    {
     98        switch(key[2])
     99        {
     100        case 0x50: return CACA_KEY_F1;
     101        case 0x51: return CACA_KEY_F2;
     102        case 0x52: return CACA_KEY_F3;
     103        case 0x53: return CACA_KEY_F4;
     104        }
     105    }
     106    else if(key[1] == 0x5b)
     107    {
     108        switch(key[2])
     109        {
     110        case 0x41: return CACA_KEY_UP;
     111        case 0x42: return CACA_KEY_DOWN;
     112        case 0x43: return CACA_KEY_LEFT;
     113        case 0x44: return CACA_KEY_RIGHT;
     114        }
     115
     116        key[3] = _read_key();
     117        key[4] = _read_key();
     118
     119        if(key[2] == 0x31 && key[4] == 0x7e)
     120            switch(key[3])
     121            {
     122            case 0x35: return CACA_KEY_F5;
     123            case 0x37: return CACA_KEY_F6;
     124            case 0x38: return CACA_KEY_F7;
     125            case 0x39: return CACA_KEY_F8;
     126            }
     127
     128        if(key[2] == 0x32 && key[4] == 0x7e)
     129            switch(key[3])
     130            {
     131            case 0x30: return CACA_KEY_F9;
     132            case 0x31: return CACA_KEY_F10;
     133            case 0x33: return CACA_KEY_F11;
     134            case 0x34: return CACA_KEY_F12;
     135            }
     136
     137        _push_key(key[4]);
     138        _push_key(key[3]);
     139    }
     140
     141    /* Unknown escape sequence: return 0 */
     142    _push_key(key[2]);
     143    _push_key(key[1]);
     144    return key[0];
     145}
     146
Note: See TracChangeset for help on using the changeset viewer.