- Timestamp:
- Apr 25, 2006, 7:43:16 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libcaca/trunk/cucul/import.c
r879 r880 197 197 198 198 #define IS_ALPHA(x) (x>='A' && x<='z') 199 #define END_TUP 0x1337 199 200 unsigned char _get_ansi_command(unsigned char const *buffer, int size); 200 201 int _parse_tuple(unsigned int *ret, unsigned char const *buffer, int size); 201 void _manage_modifiers(char c, int *fg, int *bg, int * old_fg, int *old_bg);202 void _manage_modifiers(char c, int *fg, int *bg, int *save_fg, int *save_bg); 202 203 203 204 static cucul_canvas_t *import_ansi(void const *data, unsigned int size) … … 212 213 int save_x = 0, save_y = 0; 213 214 unsigned int j, add = 0; 214 int fg, bg, old_fg, old_bg;215 216 fg = old_fg = CUCUL_COLOR_LIGHTGRAY;217 bg = old_bg = CUCUL_COLOR_BLACK;215 int fg, bg, save_fg, save_bg; 216 217 fg = save_fg = CUCUL_COLOR_LIGHTGRAY; 218 bg = save_bg = CUCUL_COLOR_BLACK; 218 219 219 220 cv = cucul_create_canvas(width, height); … … 230 231 count = 0; 231 232 232 while(tuple[count] != 0x1337)233 while(tuple[count] != END_TUP) 233 234 count++; /* Gruik */ 234 235 … … 237 238 case 'f': 238 239 case 'H': 239 if(tuple[0] != 0x1337)240 if(tuple[0] != END_TUP) 240 241 { 241 x = tuple[0]; 242 if(tuple[1] != 0x1337) 243 y = tuple[1]; 242 y = tuple[0] - 1; 243 x = tuple[1] == END_TUP ? 0 : tuple[1] - 1; 244 244 } 245 245 else 246 246 { 247 y = 0; 247 248 x = 0; 249 } 250 break; 251 case 'A': 252 y -= tuple[0] == END_TUP ? 1 : tuple[0]; 253 if(y < 0) 248 254 y = 0; 249 }250 break;251 case 'A':252 if(tuple[0] == 0x1337)253 y -= 1;254 else255 y -= tuple[0];256 if(y < 0) y = 0;257 255 break; 258 256 case 'B': 259 if(tuple[0] == 0x1337) 260 y++; 261 else 262 y += tuple[0]; 257 y += tuple[0] == END_TUP ? 1 : tuple[0]; 263 258 break; 264 259 case 'C': 265 if(tuple[0] == 0x1337) 266 x++; 267 else 268 x += tuple[0]; 260 x += tuple[0] == END_TUP ? 1 : tuple[0]; 269 261 break; 270 262 case 'D': 271 if(tuple[0] == 0x1337) 272 x--; 273 else 274 x -= tuple[0]; 275 if(x < 0) x = 0; 263 x -= tuple[0] == END_TUP ? 1 : tuple[0]; 264 if(x < 0) 265 x = 0; 276 266 break; 277 267 case 's': … … 295 285 case 'm': 296 286 for(j = 0; j < count; j++) 297 _manage_modifiers(tuple[j], &fg, &bg, & old_fg, &old_bg);287 _manage_modifiers(tuple[j], &fg, &bg, &save_fg, &save_bg); 298 288 cucul_set_color(cv, fg, bg); 299 289 break; … … 366 356 unsigned char nbr[1024]; 367 357 368 ret[0] = 0x1337;358 ret[0] = END_TUP; 369 359 370 360 for(i = 0; i < size; i++) … … 377 367 t++; 378 368 } 379 ret[t] = 0x1337;369 ret[t] = END_TUP; 380 370 j = 0; 381 371 return i; … … 392 382 ret[t] = atoi((char*)nbr); 393 383 t++; 394 ret[t] = 0x1337;384 ret[t] = END_TUP; 395 385 j = 0; 396 386 } … … 401 391 402 392 403 void _manage_modifiers(char c, int *fg, int *bg, int * old_fg, int *old_bg)393 void _manage_modifiers(char c, int *fg, int *bg, int *save_fg, int *save_bg) 404 394 { 405 395 switch(c) … … 420 410 break; 421 411 case 8: // invisible 422 * old_fg = *fg;423 * old_bg = *bg;412 *save_fg = *fg; 413 *save_bg = *bg; 424 414 *fg = CUCUL_COLOR_TRANSPARENT; 425 415 *bg = CUCUL_COLOR_TRANSPARENT; 426 416 break; 427 417 case 28: // not invisible 428 *fg = * old_fg;429 *bg = * old_bg;418 *fg = *save_fg; 419 *bg = *save_bg; 430 420 break; 431 421 case 30: *fg = CUCUL_COLOR_BLACK; break;
Note: See TracChangeset
for help on using the changeset viewer.