Changeset 287
- Timestamp:
- Dec 31, 2003, 2:16:47 AM (19 years ago)
- Location:
- libcaca/trunk
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
libcaca/trunk/doc
- Property svn:ignore
-
old new 1 1 Makefile 2 2 Makefile.in 3 doxygen.cfg 4 man 3 5 html 4 6 latex
-
- Property svn:ignore
-
libcaca/trunk/examples/demo.c
r268 r287 72 72 while(!quit) 73 73 { 74 int event = caca_get_event(); 75 76 if(event && demo) 74 int menu = 0, mouse = 0, xmouse = 0, ymouse = 0; 75 int event; 76 77 while((event = caca_get_event())) 78 { 79 if(demo && (event & CACA_EVENT_KEY_PRESS)) 80 { 81 menu = 1; 82 demo = NULL; 83 } 84 else if(event & CACA_EVENT_KEY_PRESS) 85 { 86 switch(event & 0xffff) 87 { 88 case 'q': 89 case 'Q': 90 demo = NULL; 91 quit = 1; 92 break; 93 case 'o': 94 case 'O': 95 outline = (outline + 1) % 3; 96 display_menu(); 97 break; 98 case 'b': 99 case 'B': 100 bounds = (bounds + 1) % 2; 101 display_menu(); 102 break; 103 case 'd': 104 case 'D': 105 dithering = (dithering + 1) % 5; 106 caca_set_dithering(dithering); 107 display_menu(); 108 break; 109 case 'c': 110 demo = demo_color; 111 break; 112 case 'f': 113 case 'F': 114 demo = demo_all; 115 break; 116 case '1': 117 demo = demo_dots; 118 break; 119 case '2': 120 demo = demo_lines; 121 break; 122 case '3': 123 demo = demo_boxes; 124 break; 125 case '4': 126 demo = demo_triangles; 127 break; 128 case '5': 129 demo = demo_ellipses; 130 break; 131 case 's': 132 case 'S': 133 if(sprite) 134 demo = demo_sprites; 135 break; 136 case 'r': 137 case 'R': 138 demo = demo_render; 139 break; 140 } 141 142 if(demo) 143 caca_clear(); 144 } 145 else if(event & CACA_EVENT_MOUSE_MOTION) 146 { 147 mouse = 1; 148 xmouse = (event & 0xfff000) >> 12; 149 ymouse = event & 0xfff; 150 } 151 } 152 153 if(menu || (mouse && !demo)) 77 154 { 78 155 display_menu(); 156 if(mouse && !demo) 157 { 158 caca_set_color(CACA_COLOR_RED, CACA_COLOR_BLACK); 159 caca_putstr(xmouse, ymouse, "|\\"); 160 } 79 161 caca_refresh(); 80 demo = NULL; 81 } 82 else if(event & CACA_EVENT_KEY_PRESS) 83 { 84 handle_key: 85 switch(event & 0xffff) 86 { 87 case 'q': 88 case 'Q': 89 demo = NULL; 90 quit = 1; 91 break; 92 case 'o': 93 case 'O': 94 outline = (outline + 1) % 3; 95 display_menu(); 96 break; 97 case 'b': 98 case 'B': 99 bounds = (bounds + 1) % 2; 100 display_menu(); 101 break; 102 case 'd': 103 case 'D': 104 dithering = (dithering + 1) % 5; 105 caca_set_dithering(dithering); 106 display_menu(); 107 break; 108 case 'c': 109 demo = demo_color; 110 break; 111 case 'f': 112 case 'F': 113 demo = demo_all; 114 break; 115 case '1': 116 demo = demo_dots; 117 break; 118 case '2': 119 demo = demo_lines; 120 break; 121 case '3': 122 demo = demo_boxes; 123 break; 124 case '4': 125 demo = demo_triangles; 126 break; 127 case '5': 128 demo = demo_ellipses; 129 break; 130 case 's': 131 case 'S': 132 if(sprite) 133 demo = demo_sprites; 134 break; 135 case 'r': 136 case 'R': 137 demo = demo_render; 138 break; 139 } 140 141 handle_event: 142 event = caca_get_event(); 143 if(event & CACA_EVENT_KEY_PRESS) 144 goto handle_key; 145 else if(event) 146 goto handle_event; 147 148 caca_refresh(); 149 150 if(demo) 151 caca_clear(); 152 } 153 else if(event & CACA_EVENT_MOUSE_CLICK) 154 { 155 display_menu(); 156 caca_set_color(CACA_COLOR_RED, CACA_COLOR_BLACK); 157 caca_putstr((event & 0xff00) >> 8, event & 0xff, "|\\"); 158 caca_refresh(); 162 mouse = menu = 0; 159 163 } 160 164 -
libcaca/trunk/src/caca.h
r276 r287 176 176 enum caca_event 177 177 { 178 CACA_EVENT_NONE = 0x00000000, /**< No event. */ 179 CACA_EVENT_KEY_PRESS = 0x01000000, /**< A key was pressed. */ 180 CACA_EVENT_KEY_RELEASE = 0x02000000, /**< A key was released. */ 181 CACA_EVENT_MOUSE_CLICK = 0x04000000 /**< A mouse button was clicked. */ 178 CACA_EVENT_NONE = 0x00000000, /**< No event. */ 179 CACA_EVENT_KEY_PRESS = 0x01000000, /**< A key was pressed. */ 180 CACA_EVENT_KEY_RELEASE = 0x02000000, /**< A key was released. */ 181 CACA_EVENT_MOUSE_PRESS = 0x04000000, /**< A mouse button was pressed. */ 182 CACA_EVENT_MOUSE_RELEASE = 0x08000000, /**< A mouse button was released. */ 183 CACA_EVENT_MOUSE_MOTION = 0x10000000 /**< The mouse was moved. */ 182 184 }; 183 185 -
libcaca/trunk/src/io.c
r273 r287 70 70 { 71 71 unsigned int event = 0; 72 73 #if defined(USE_X11) 74 if(_caca_driver == CACA_DRIVER_X11) 75 { 76 XEvent xevent; 77 static unsigned int x11_x = 0, x11_y = 0; 78 long int xevent_mask = KeyPressMask | KeyReleaseMask | ButtonPressMask 79 | ButtonReleaseMask | PointerMotionMask; 80 char key; 81 82 while(XCheckWindowEvent(x11_dpy, x11_window, xevent_mask, &xevent) 83 == True) 84 { 85 KeySym keysym; 86 87 if(xevent.type == MotionNotify) 88 { 89 unsigned int x = xevent.xmotion.x / x11_font_width; 90 unsigned int y = xevent.xmotion.y / x11_font_height; 91 92 if(x11_x == x && x11_y == y) 93 continue; 94 95 if(x >= _caca_width) 96 x = _caca_width - 1; 97 if(y >= _caca_height) 98 y = _caca_height - 1; 99 100 x11_x = x & 0xfff; 101 x11_y = y & 0xfff; 102 103 return CACA_EVENT_MOUSE_MOTION | (x << 12) | (y << 0); 104 } 105 106 if(xevent.type == ButtonPress) 107 return CACA_EVENT_MOUSE_PRESS | 1; 108 109 if(xevent.type == ButtonPress) 110 return CACA_EVENT_MOUSE_RELEASE | 1; 111 112 if(xevent.type == KeyPress) 113 event |= CACA_EVENT_KEY_PRESS; 114 else if(xevent.type == KeyRelease) 115 event |= CACA_EVENT_KEY_RELEASE; 116 else 117 return 0; 118 119 if(XLookupString(&xevent.xkey, &key, 1, NULL, NULL)) 120 return event | key; 121 122 keysym = XKeycodeToKeysym(x11_dpy, xevent.xkey.keycode, 0); 123 switch(keysym) 124 { 125 case XK_F1: return event | CACA_KEY_F1; 126 case XK_F2: return event | CACA_KEY_F2; 127 case XK_F3: return event | CACA_KEY_F3; 128 case XK_F4: return event | CACA_KEY_F4; 129 case XK_F5: return event | CACA_KEY_F5; 130 case XK_F6: return event | CACA_KEY_F6; 131 case XK_F7: return event | CACA_KEY_F7; 132 case XK_F8: return event | CACA_KEY_F8; 133 case XK_F9: return event | CACA_KEY_F9; 134 case XK_F10: return event | CACA_KEY_F10; 135 case XK_F11: return event | CACA_KEY_F11; 136 case XK_F12: return event | CACA_KEY_F12; 137 case XK_F13: return event | CACA_KEY_F13; 138 case XK_F14: return event | CACA_KEY_F14; 139 case XK_F15: return event | CACA_KEY_F15; 140 case XK_Left: return event | CACA_KEY_LEFT; 141 case XK_Right: return event | CACA_KEY_RIGHT; 142 case XK_Up: return event | CACA_KEY_UP; 143 case XK_Down: return event | CACA_KEY_DOWN; 144 default: return 0; 145 } 146 } 147 148 return 0; 149 } 150 #endif 72 151 73 152 /* Read all available key events and push them into the buffer */ … … 97 176 event |= (mevent.y) << 0; 98 177 99 return CACA_EVENT_MOUSE_ CLICK| event;178 return CACA_EVENT_MOUSE_PRESS | event; 100 179 } 101 180 … … 169 248 event |= (_pop_key() - '!') << 0; 170 249 171 return CACA_EVENT_MOUSE_ CLICK| event;250 return CACA_EVENT_MOUSE_PRESS | event; 172 251 } 173 252 else if(keybuf[0] == '[' && keybuf[1] == '1' && keybuf[3] == '~' && … … 252 331 #endif 253 332 #if defined(USE_X11) 254 XEvent event;255 static int x11_x = 0, x11_y = 0;256 long int event_mask = KeyPressMask | ButtonPressMask | PointerMotionMask;257 char key;258 333 #endif 259 334 … … 275 350 #if defined(USE_X11) 276 351 case CACA_DRIVER_X11: 277 while(XCheckWindowEvent(x11_dpy, x11_window, event_mask, &event)278 == True)279 {280 KeySym keysym;281 282 if(event.type == MotionNotify)283 {284 x11_x = event.xmotion.x;285 x11_y = event.xmotion.y;286 continue;287 }288 289 if(event.type == ButtonPress)290 {291 unsigned int x = x11_x / x11_font_width;292 unsigned int y = x11_y / x11_font_height;293 294 if(x >= _caca_width)295 x = _caca_width - 1;296 if(y >= _caca_height)297 y = _caca_height - 1;298 299 return CACA_EVENT_MOUSE_CLICK300 | (1 << 16) | (x << 8) | (y << 0);301 }302 303 if(event.type != KeyPress)304 continue;305 306 if(XLookupString(&event.xkey, &key, 1, NULL, NULL))307 return key;308 309 keysym = XKeycodeToKeysym(x11_dpy, event.xkey.keycode, 0);310 switch(keysym)311 {312 case XK_F1: return CACA_KEY_F1;313 case XK_F2: return CACA_KEY_F2;314 case XK_F3: return CACA_KEY_F3;315 case XK_F4: return CACA_KEY_F4;316 case XK_F5: return CACA_KEY_F5;317 case XK_F6: return CACA_KEY_F6;318 case XK_F7: return CACA_KEY_F7;319 case XK_F8: return CACA_KEY_F8;320 case XK_F9: return CACA_KEY_F9;321 case XK_F10: return CACA_KEY_F10;322 case XK_F11: return CACA_KEY_F11;323 case XK_F12: return CACA_KEY_F12;324 case XK_F13: return CACA_KEY_F13;325 case XK_F14: return CACA_KEY_F14;326 case XK_F15: return CACA_KEY_F15;327 case XK_Left: return CACA_KEY_LEFT;328 case XK_Right: return CACA_KEY_RIGHT;329 case XK_Up: return CACA_KEY_UP;330 case XK_Down: return CACA_KEY_DOWN;331 default: return 0;332 }333 }334 335 return 0;336 352 #endif 337 353 default:
Note: See TracChangeset
for help on using the changeset viewer.