Changeset 3914
- Timestamp:
- Nov 17, 2009, 4:36:37 PM (13 years ago)
- Location:
- neercs/trunk/src
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
neercs/trunk/src/configuration.c
r3896 r3914 291 291 else if(IS_VALUE("vsplit")) screen_list->wm_type = WM_VSPLIT; 292 292 else if(IS_VALUE("card")) screen_list->wm_type = WM_CARD; 293 293 else if(IS_VALUE("cube")) screen_list->wm_type = WM_CUBE; 294 294 else fprintf(stderr, "Unknown window manager '%s'\n", option->key); 295 295 -
neercs/trunk/src/effects.c
r3895 r3914 143 143 case WM_VSPLIT: 144 144 strcpy(text, "vsplit"); 145 break; 146 case WM_CUBE: 147 strcpy(text, "cube"); 145 148 break; 146 149 case WM_FULL: -
neercs/trunk/src/input.c
r3899 r3914 108 108 screen_list->prevpty = screen_list->pty; 109 109 screen_list->pty = (screen_list->pty + 1) % screen_list->count; 110 if(screen_list->pty!=screen_list->prevpty) { 111 screen_list->last_switch = get_us(); 112 screen_list->cube.in_switch = 1; 113 screen_list->cube.side = 0; 114 } 110 115 refresh = 1; 111 116 break; … … 114 119 screen_list->prevpty = screen_list->pty; 115 120 screen_list->pty = (screen_list->pty + screen_list->count - 1) % screen_list->count; 121 if(screen_list->pty!=screen_list->prevpty) { 122 screen_list->last_switch = get_us(); 123 screen_list->cube.in_switch = 1; 124 screen_list->cube.side = 1; 125 } 116 126 refresh = 1; 117 127 break; -
neercs/trunk/src/main.c
r3896 r3914 85 85 #define NEERCS_RECV_BUFSIZE 128*1024 86 86 char * buf = NULL; 87 87 88 88 screen_list = create_screen_list(); 89 89 screen_list->default_shell = getenv("SHELL"); … … 251 251 } 252 252 } 253 253 254 if(ret) 254 255 break; … … 400 401 screen_list->attach = 0; 401 402 screen_list->forceattach = 0; 403 404 screen_list->force_refresh = 0; 405 screen_list->cube.in_switch = 0; 406 screen_list->cube.first=0; 407 screen_list->cube.second=0; 402 408 403 409 -
neercs/trunk/src/neercs.h
r3896 r3914 24 24 WM_HSPLIT, 25 25 WM_VSPLIT, 26 WM_CUBE, 26 27 27 28 WM_MAX, … … 146 147 }; 147 148 149 struct cube_props 150 { 151 int in_switch; 152 int side; 153 int first, second; 154 }; 155 148 156 struct screen_list 149 157 { … … 153 161 int changed; /* Global redraw needed (e.g. adding a screen) */ 154 162 int delay; /* Minimal time between two refresh (ms) */ 163 int force_refresh; 155 164 156 165 /* Detaching */ … … 176 185 int cur_in_list; /* Window list */ 177 186 char *title; /* Window title */ 187 struct cube_props cube; /* Cube */ 188 long long unsigned int last_switch; /* Cube */ 178 189 179 190 /* ScreenSaver stuff */ … … 264 275 void update_windows_props_full(struct screen_list *screen_list); 265 276 void update_windows_props_vsplit(struct screen_list *screen_list); 277 void update_windows_props_cube(struct screen_list *screen_list); 278 279 void wm_refresh(struct screen_list *screen_list); 280 void wm_refresh_card(struct screen_list *screen_list); 281 void wm_refresh_cube(struct screen_list *screen_list); 282 void wm_refresh_full(struct screen_list *screen_list); 283 void wm_refresh_hsplit(struct screen_list *screen_list); 284 void wm_refresh_vsplit(struct screen_list *screen_list); 285 int switch_screen_recurrent(struct screen_list* screen_list, struct recurrent* rec, void *user, long long unsigned int t); 286 266 287 267 288 /* Effects and addons */ -
neercs/trunk/src/neercsrc
r2500 r3914 10 10 11 11 [windows] 12 window_manager = hsplit ; full card hsplit vsplit12 window_manager = cube ; full card hsplit vsplit cube 13 13 status_bar = true ; Activate status bar 14 14 autolock_timeout = 120 ; Lock session after 100 seconds -
neercs/trunk/src/screens.c
r3893 r3914 187 187 screen_list->height = caca_get_canvas_height(screen_list->cv) - (screen_list->mini*6) - screen_list->status; 188 188 189 if(!screen_list->dont_update_coords) 189 if(!screen_list->dont_update_coords) 190 { 190 191 update_windows_props(screen_list); 192 } 191 193 192 194 if(screen_list->changed) … … 197 199 caca_set_color_ansi(screen_list->cv, CACA_LIGHTRED, CACA_BLACK); 198 200 199 for(i = screen_list->count - 1; i >=0; i--) 200 { 201 if(i!=screen_list->pty && screen_list->screen[i]->visible && 202 (screen_list->screen[i]->changed || screen_list->changed || screen_list->wm_type==WM_CARD)) 203 { 204 caca_blit(screen_list->cv, 205 screen_list->screen[i]->x, 206 screen_list->screen[i]->y, 207 screen_list->screen[i]->cv, NULL); 208 209 caca_draw_cp437_box(screen_list->cv, 210 screen_list->screen[i]->x - 1, 211 screen_list->screen[i]->y - 1, 212 screen_list->screen[i]->w + 2, 213 screen_list->screen[i]->h + 2); 214 if(screen_list->screen[i]->title) 215 caca_printf(screen_list->cv, 216 screen_list->screen[i]->x, 217 screen_list->screen[i]->y - 1, 218 " %.*s ", 219 screen_list->screen[i]->w - 3, 220 screen_list->screen[i]->title); 221 } 222 } 223 224 if(screen_list->screen[screen_list->pty]->changed || screen_list->changed || screen_list->wm_type==WM_CARD) 225 caca_blit(screen_list->cv, 226 screen_list->screen[screen_list->pty]->x, 227 screen_list->screen[screen_list->pty]->y, 228 screen_list->screen[screen_list->pty]->cv, NULL); 229 230 if(screen_list->screen[screen_list->pty]->bell) 231 { 232 caca_set_color_ansi(screen_list->cv, CACA_RED, CACA_BLACK); 233 screen_list->screen[screen_list->pty]->bell = 0; 234 screen_list->in_bell--; 235 } 236 else 237 { 238 caca_set_color_ansi(screen_list->cv, CACA_LIGHTGREEN, CACA_BLACK); 239 } 240 241 caca_draw_cp437_box(screen_list->cv, 242 screen_list->screen[screen_list->pty]->x - 1, 243 screen_list->screen[screen_list->pty]->y - 1, 244 screen_list->screen[screen_list->pty]->w + 2, 245 screen_list->screen[screen_list->pty]->h + 2); 246 247 if(screen_list->screen[screen_list->pty]->title) 248 { 249 caca_printf(screen_list->cv, 250 screen_list->screen[screen_list->pty]->x, 251 screen_list->screen[screen_list->pty]->y - 1, 252 " %.*s ", 253 screen_list->screen[screen_list->pty]->w - 3, 254 screen_list->screen[screen_list->pty]->title); 255 } 256 201 wm_refresh(screen_list); 202 257 203 caca_gotoxy(screen_list->cv, 258 259 260 261 262 263 204 screen_list->screen[screen_list->pty]->x + 205 caca_get_cursor_x(screen_list->screen[screen_list->pty]->cv), 206 screen_list->screen[screen_list->pty]->y + 207 caca_get_cursor_y(screen_list->screen[screen_list->pty]->cv)); 208 209 264 210 if(screen_list->mini) 265 211 { -
neercs/trunk/src/server.c
r3896 r3914 261 261 /* Read program output */ 262 262 refresh |= update_screens_contents(screen_list); 263 263 264 264 /* Check if we got something from the client */ 265 265 while (screen_list->socket[SOCK_SERVER] && (n = read(screen_list->socket[SOCK_SERVER], buf, sizeof(buf)-1)) > 0) … … 376 376 refresh |= update_terms(screen_list); 377 377 378 /* Launch rec curents if any */378 /* Launch recurrents if any */ 379 379 refresh |= handle_recurrents(screen_list); 380 380 … … 432 432 else 433 433 debug("Skipping refresh (%lld < %d)", tdiff, screen_list->delay); 434 } 435 } 434 } 435 436 } 437 438 if(screen_list->force_refresh) 439 { 440 wm_refresh(screen_list); 441 request_refresh(screen_list); 442 } 443 436 444 eof = 1; 437 445 for(i=0; i < screen_list->count; i++) -
neercs/trunk/src/wm.c
r3551 r3914 18 18 #include <caca.h> 19 19 #include <stdlib.h> 20 #include <math.h> 20 21 21 22 #include "neercs.h" … … 52 53 void update_windows_props(struct screen_list *screen_list) 53 54 { 55 debug("%s, %d screens, type %d\n", __FUNCTION__, screen_list->count, screen_list->wm_type); 56 54 57 if(!screen_list->count) return; 55 58 … … 65 68 update_windows_props_vsplit(screen_list); 66 69 break; 70 case WM_CUBE: 71 update_windows_props_cube(screen_list); 72 break; 67 73 case WM_FULL: 68 74 default: … … 159 165 } 160 166 167 void update_windows_props_cube(struct screen_list *screen_list) 168 { 169 int i; 170 int w = screen_list->width - 2; 171 int h = screen_list->height - 2; 172 173 for(i = 0; i < screen_list->count; i++) 174 { 175 screen_list->screen[i]->visible = 0; 176 screen_list->screen[i]->x = 1; 177 screen_list->screen[i]->y = 1; 178 179 resize_screen(screen_list->screen[i], 180 w, h); 181 } 182 screen_list->screen[screen_list->pty]->visible = 1; 183 } 184 185 /* Window managers refresh */ 186 187 void wm_refresh(struct screen_list *screen_list) 188 { 189 switch (screen_list->wm_type) { 190 case WM_CARD: 191 wm_refresh_card(screen_list); 192 break; 193 case WM_FULL: 194 wm_refresh_full(screen_list); 195 break; 196 case WM_HSPLIT: 197 wm_refresh_hsplit(screen_list); 198 break; 199 case WM_VSPLIT: 200 wm_refresh_hsplit(screen_list); 201 break; 202 case WM_CUBE: 203 wm_refresh_cube(screen_list); 204 break; 205 default: 206 wm_refresh_full(screen_list); 207 break; 208 } 209 } 210 211 void wm_refresh_card(struct screen_list *screen_list) 212 { 213 int i; 214 215 for(i = screen_list->count - 1; i >=0; i--) 216 { 217 if(i!=screen_list->pty && screen_list->screen[i]->visible && 218 (screen_list->screen[i]->changed || screen_list->changed)) 219 { 220 caca_blit(screen_list->cv, 221 screen_list->screen[i]->x, 222 screen_list->screen[i]->y, 223 screen_list->screen[i]->cv, NULL); 224 225 caca_draw_cp437_box(screen_list->cv, 226 screen_list->screen[i]->x - 1, 227 screen_list->screen[i]->y - 1, 228 screen_list->screen[i]->w + 2, 229 screen_list->screen[i]->h + 2); 230 if(screen_list->screen[i]->title) 231 caca_printf(screen_list->cv, 232 screen_list->screen[i]->x, 233 screen_list->screen[i]->y - 1, 234 " %.*s ", 235 screen_list->screen[i]->w - 3, 236 screen_list->screen[i]->title); 237 } 238 } 239 240 if(screen_list->screen[screen_list->pty]->changed || screen_list->changed) 241 caca_blit(screen_list->cv, 242 screen_list->screen[screen_list->pty]->x, 243 screen_list->screen[screen_list->pty]->y, 244 screen_list->screen[screen_list->pty]->cv, NULL); 245 246 if(screen_list->screen[screen_list->pty]->bell) 247 { 248 caca_set_color_ansi(screen_list->cv, CACA_RED, CACA_BLACK); 249 screen_list->screen[screen_list->pty]->bell = 0; 250 screen_list->in_bell--; 251 } 252 else 253 { 254 caca_set_color_ansi(screen_list->cv, CACA_LIGHTGREEN, CACA_BLACK); 255 } 256 257 caca_draw_cp437_box(screen_list->cv, 258 screen_list->screen[screen_list->pty]->x - 1, 259 screen_list->screen[screen_list->pty]->y - 1, 260 screen_list->screen[screen_list->pty]->w + 2, 261 screen_list->screen[screen_list->pty]->h + 2); 262 263 if(screen_list->screen[screen_list->pty]->title) 264 { 265 caca_printf(screen_list->cv, 266 screen_list->screen[screen_list->pty]->x, 267 screen_list->screen[screen_list->pty]->y - 1, 268 " %.*s ", 269 screen_list->screen[screen_list->pty]->w - 3, 270 screen_list->screen[screen_list->pty]->title); 271 } 272 273 274 } 275 276 277 void wm_refresh_full(struct screen_list *screen_list) 278 { 279 int i; 280 281 for(i = screen_list->count - 1; i >=0; i--) 282 { 283 if(i!=screen_list->pty && screen_list->screen[i]->visible && 284 (screen_list->screen[i]->changed || screen_list->changed)) 285 { 286 caca_blit(screen_list->cv, 287 screen_list->screen[i]->x, 288 screen_list->screen[i]->y, 289 screen_list->screen[i]->cv, NULL); 290 291 caca_draw_cp437_box(screen_list->cv, 292 screen_list->screen[i]->x - 1, 293 screen_list->screen[i]->y - 1, 294 screen_list->screen[i]->w + 2, 295 screen_list->screen[i]->h + 2); 296 if(screen_list->screen[i]->title) 297 caca_printf(screen_list->cv, 298 screen_list->screen[i]->x, 299 screen_list->screen[i]->y - 1, 300 " %.*s ", 301 screen_list->screen[i]->w - 3, 302 screen_list->screen[i]->title); 303 } 304 } 305 306 if(screen_list->screen[screen_list->pty]->changed || screen_list->changed) 307 caca_blit(screen_list->cv, 308 screen_list->screen[screen_list->pty]->x, 309 screen_list->screen[screen_list->pty]->y, 310 screen_list->screen[screen_list->pty]->cv, NULL); 311 312 if(screen_list->screen[screen_list->pty]->bell) 313 { 314 caca_set_color_ansi(screen_list->cv, CACA_RED, CACA_BLACK); 315 screen_list->screen[screen_list->pty]->bell = 0; 316 screen_list->in_bell--; 317 } 318 else 319 { 320 caca_set_color_ansi(screen_list->cv, CACA_LIGHTGREEN, CACA_BLACK); 321 } 322 323 caca_draw_cp437_box(screen_list->cv, 324 screen_list->screen[screen_list->pty]->x - 1, 325 screen_list->screen[screen_list->pty]->y - 1, 326 screen_list->screen[screen_list->pty]->w + 2, 327 screen_list->screen[screen_list->pty]->h + 2); 328 329 if(screen_list->screen[screen_list->pty]->title) 330 { 331 caca_printf(screen_list->cv, 332 screen_list->screen[screen_list->pty]->x, 333 screen_list->screen[screen_list->pty]->y - 1, 334 " %.*s ", 335 screen_list->screen[screen_list->pty]->w - 3, 336 screen_list->screen[screen_list->pty]->title); 337 } 338 339 340 } 341 342 void wm_refresh_vsplit(struct screen_list *screen_list) 343 { 344 int i; 345 346 for(i = screen_list->count - 1; i >=0; i--) 347 { 348 if(i!=screen_list->pty && screen_list->screen[i]->visible && 349 (screen_list->screen[i]->changed || screen_list->changed)) 350 { 351 caca_blit(screen_list->cv, 352 screen_list->screen[i]->x, 353 screen_list->screen[i]->y, 354 screen_list->screen[i]->cv, NULL); 355 356 caca_draw_cp437_box(screen_list->cv, 357 screen_list->screen[i]->x - 1, 358 screen_list->screen[i]->y - 1, 359 screen_list->screen[i]->w + 2, 360 screen_list->screen[i]->h + 2); 361 if(screen_list->screen[i]->title) 362 caca_printf(screen_list->cv, 363 screen_list->screen[i]->x, 364 screen_list->screen[i]->y - 1, 365 " %.*s ", 366 screen_list->screen[i]->w - 3, 367 screen_list->screen[i]->title); 368 } 369 } 370 371 if(screen_list->screen[screen_list->pty]->changed || screen_list->changed) 372 caca_blit(screen_list->cv, 373 screen_list->screen[screen_list->pty]->x, 374 screen_list->screen[screen_list->pty]->y, 375 screen_list->screen[screen_list->pty]->cv, NULL); 376 377 if(screen_list->screen[screen_list->pty]->bell) 378 { 379 caca_set_color_ansi(screen_list->cv, CACA_RED, CACA_BLACK); 380 screen_list->screen[screen_list->pty]->bell = 0; 381 screen_list->in_bell--; 382 } 383 else 384 { 385 caca_set_color_ansi(screen_list->cv, CACA_LIGHTGREEN, CACA_BLACK); 386 } 387 388 caca_draw_cp437_box(screen_list->cv, 389 screen_list->screen[screen_list->pty]->x - 1, 390 screen_list->screen[screen_list->pty]->y - 1, 391 screen_list->screen[screen_list->pty]->w + 2, 392 screen_list->screen[screen_list->pty]->h + 2); 393 394 if(screen_list->screen[screen_list->pty]->title) 395 { 396 caca_printf(screen_list->cv, 397 screen_list->screen[screen_list->pty]->x, 398 screen_list->screen[screen_list->pty]->y - 1, 399 " %.*s ", 400 screen_list->screen[screen_list->pty]->w - 3, 401 screen_list->screen[screen_list->pty]->title); 402 } 403 404 405 } 406 407 void wm_refresh_hsplit(struct screen_list *screen_list) 408 { 409 int i; 410 411 for(i = screen_list->count - 1; i >=0; i--) 412 { 413 if(i!=screen_list->pty && screen_list->screen[i]->visible && 414 (screen_list->screen[i]->changed || screen_list->changed)) 415 { 416 caca_blit(screen_list->cv, 417 screen_list->screen[i]->x, 418 screen_list->screen[i]->y, 419 screen_list->screen[i]->cv, NULL); 420 421 caca_draw_cp437_box(screen_list->cv, 422 screen_list->screen[i]->x - 1, 423 screen_list->screen[i]->y - 1, 424 screen_list->screen[i]->w + 2, 425 screen_list->screen[i]->h + 2); 426 if(screen_list->screen[i]->title) 427 caca_printf(screen_list->cv, 428 screen_list->screen[i]->x, 429 screen_list->screen[i]->y - 1, 430 " %.*s ", 431 screen_list->screen[i]->w - 3, 432 screen_list->screen[i]->title); 433 } 434 } 435 436 if(screen_list->screen[screen_list->pty]->changed || screen_list->changed) 437 caca_blit(screen_list->cv, 438 screen_list->screen[screen_list->pty]->x, 439 screen_list->screen[screen_list->pty]->y, 440 screen_list->screen[screen_list->pty]->cv, NULL); 441 442 if(screen_list->screen[screen_list->pty]->bell) 443 { 444 caca_set_color_ansi(screen_list->cv, CACA_RED, CACA_BLACK); 445 screen_list->screen[screen_list->pty]->bell = 0; 446 screen_list->in_bell--; 447 } 448 else 449 { 450 caca_set_color_ansi(screen_list->cv, CACA_LIGHTGREEN, CACA_BLACK); 451 } 452 453 caca_draw_cp437_box(screen_list->cv, 454 screen_list->screen[screen_list->pty]->x - 1, 455 screen_list->screen[screen_list->pty]->y - 1, 456 screen_list->screen[screen_list->pty]->w + 2, 457 screen_list->screen[screen_list->pty]->h + 2); 458 459 if(screen_list->screen[screen_list->pty]->title) 460 { 461 caca_printf(screen_list->cv, 462 screen_list->screen[screen_list->pty]->x, 463 screen_list->screen[screen_list->pty]->y - 1, 464 " %.*s ", 465 screen_list->screen[screen_list->pty]->w - 3, 466 screen_list->screen[screen_list->pty]->title); 467 } 468 469 470 } 471 472 float get_direction(float p1x, float p1y, float p2x, float p2y, float p3x, float p3y) { 473 float d1x, d1y, d2x, d2y; 474 475 d1x = p3x - p1x; 476 d1y = p3y - p1y; 477 d2x = p3x - p2x; 478 d2y = p3y - p2y; 479 return (d1x * d2y) - (d1y * d2x); 480 } 481 482 /* 3D Cube. Yeah I know, it's a mess. Just look anywhere else. */ 483 void wm_refresh_cube(struct screen_list *screen_list) 484 { 485 int i; 486 487 if(!screen_list->cube.in_switch) { 488 if(screen_list->screen[screen_list->pty]->changed || screen_list->changed) { 489 caca_blit(screen_list->cv, 490 screen_list->screen[screen_list->pty]->x, 491 screen_list->screen[screen_list->pty]->y, 492 screen_list->screen[screen_list->pty]->cv, NULL); 493 494 } 495 496 if(screen_list->screen[screen_list->pty]->bell) 497 { 498 caca_set_color_ansi(screen_list->cv, CACA_RED, CACA_BLACK); 499 screen_list->screen[screen_list->pty]->bell = 0; 500 screen_list->in_bell--; 501 } 502 else 503 { 504 caca_set_color_ansi(screen_list->cv, CACA_LIGHTGREEN, CACA_BLACK); 505 } 506 507 caca_draw_cp437_box(screen_list->cv, 508 screen_list->screen[screen_list->pty]->x - 1, 509 screen_list->screen[screen_list->pty]->y - 1, 510 screen_list->screen[screen_list->pty]->w + 2, 511 screen_list->screen[screen_list->pty]->h + 2); 512 513 if(screen_list->screen[screen_list->pty]->title) 514 { 515 caca_printf(screen_list->cv, 516 screen_list->screen[screen_list->pty]->x, 517 screen_list->screen[screen_list->pty]->y - 1, 518 " %.*s ", 519 screen_list->screen[screen_list->pty]->w - 3, 520 screen_list->screen[screen_list->pty]->title); 521 } 522 screen_list->force_refresh = 0; 523 } else { 524 525 #define CUBE_TIME 1000000 526 527 528 529 long long unsigned int cur_time = get_us() - screen_list->last_switch; 530 531 if(cur_time >= CUBE_TIME || screen_list->count==1) { 532 screen_list->changed = 1 ; 533 screen_list->force_refresh = 1; 534 screen_list->cube.in_switch = 0; 535 } else { 536 537 float cube[12][3] = { 538 {-1, -1, 1}, 539 {1, -1, 1}, 540 {1, 1, 1}, 541 {-1, 1, 1}, 542 543 {1, -1, 1}, 544 {1, -1, -1}, 545 {1, 1, -1}, 546 {1, 1, 1}, 547 548 {-1, -1, 1}, 549 {-1, -1, -1}, 550 {-1, 1, -1}, 551 {-1, 1, 1}, 552 }; 553 float cube_transformed[12][3]; 554 float cube_projected[12][2]; 555 float fov = 0.5f; 556 float angle = 90.0f * ((float)cur_time / (float)CUBE_TIME); 557 angle*= (M_PI/180.0f); 558 559 if(screen_list->cube.side==1) 560 angle = -angle; 561 562 563 for(i = 0; i < 12; i++) { 564 565 cube_transformed[i][2] = cube[i][2]*cos(angle) - cube[i][0]*sin(angle); 566 cube_transformed[i][0] = cube[i][2]*sin(angle) + cube[i][0]*cos(angle); 567 cube_transformed[i][1] = cube[i][1]; 568 569 cube_transformed[i][2] -= 3; 570 571 cube_projected[i][0] = cube_transformed[i][0] / (cube_transformed[i][2] * fov); 572 cube_projected[i][1] = cube_transformed[i][1] / (cube_transformed[i][2] * fov); 573 574 cube_projected[i][0] /=2.0f; cube_projected[i][1] /=2.0f; 575 cube_projected[i][0] +=0.5f; cube_projected[i][1] +=0.5f; 576 577 cube_projected[i][0] *= screen_list->width; 578 cube_projected[i][1] *= screen_list->height; 579 580 581 } 582 caca_clear_canvas(screen_list->cv); 583 584 caca_canvas_t *first = screen_list->screen[screen_list->prevpty]->cv; 585 caca_canvas_t *second = screen_list->screen[screen_list->pty]->cv; 586 587 if(get_direction(cube_projected[0][0], cube_projected[0][1], 588 cube_projected[1][0], cube_projected[1][1], 589 cube_projected[2][0], cube_projected[2][1]) >=0) { 590 caca_fill_triangle_textured(screen_list->cv, 591 cube_projected[0][0], cube_projected[0][1], 592 cube_projected[1][0], cube_projected[1][1], 593 cube_projected[2][0], cube_projected[2][1], 594 1, 1, 595 0, 1, 596 0, 0, 597 first); 598 caca_fill_triangle_textured(screen_list->cv, 599 cube_projected[0][0], cube_projected[0][1], 600 cube_projected[2][0], cube_projected[2][1], 601 cube_projected[3][0], cube_projected[3][1], 602 1, 1, 603 0, 0, 604 1, 0, 605 first); 606 607 608 caca_set_color_ansi(screen_list->cv, CACA_LIGHTGREEN, CACA_BLACK); 609 caca_draw_thin_line(screen_list->cv, 610 cube_projected[0][0], cube_projected[0][1], 611 cube_projected[1][0], cube_projected[1][1]); 612 caca_draw_thin_line(screen_list->cv, 613 cube_projected[1][0], cube_projected[1][1], 614 cube_projected[2][0], cube_projected[2][1]); 615 caca_draw_thin_line(screen_list->cv, 616 cube_projected[2][0], cube_projected[2][1], 617 cube_projected[3][0], cube_projected[3][1]); 618 caca_draw_thin_line(screen_list->cv, 619 cube_projected[3][0], cube_projected[3][1], 620 cube_projected[0][0], cube_projected[0][1]); 621 } 622 623 624 625 if(screen_list->cube.side) 626 { 627 if(get_direction(cube_projected[4][0], cube_projected[4][1], 628 cube_projected[5][0], cube_projected[5][1], 629 cube_projected[6][0], cube_projected[6][1]) >=0) { 630 caca_fill_triangle_textured(screen_list->cv, 631 cube_projected[4][0], cube_projected[4][1], 632 cube_projected[5][0], cube_projected[5][1], 633 cube_projected[6][0], cube_projected[6][1], 634 1, 1, 635 0, 1, 636 0, 0, 637 second); 638 caca_fill_triangle_textured(screen_list->cv, 639 cube_projected[4][0], cube_projected[4][1], 640 cube_projected[6][0], cube_projected[6][1], 641 cube_projected[7][0], cube_projected[7][1], 642 1, 1, 643 0, 0, 644 1, 0, 645 second); 646 caca_set_color_ansi(screen_list->cv, CACA_RED, CACA_BLACK); 647 648 caca_draw_thin_line(screen_list->cv, 649 cube_projected[4][0], cube_projected[4][1], 650 cube_projected[5][0], cube_projected[5][1]); 651 caca_draw_thin_line(screen_list->cv, 652 cube_projected[5][0], cube_projected[5][1], 653 cube_projected[6][0], cube_projected[6][1]); 654 caca_draw_thin_line(screen_list->cv, 655 cube_projected[6][0], cube_projected[6][1], 656 cube_projected[7][0], cube_projected[7][1]); 657 caca_draw_thin_line(screen_list->cv, 658 cube_projected[7][0], cube_projected[7][1], 659 cube_projected[4][0], cube_projected[4][1]); 660 } 661 662 663 } else 664 { 665 if(get_direction(cube_projected[9][0], cube_projected[9][1], 666 cube_projected[8][0], cube_projected[8][1], 667 cube_projected[10][0], cube_projected[10][1])) { 668 caca_fill_triangle_textured(screen_list->cv, 669 cube_projected[9][0], cube_projected[9][1], 670 cube_projected[8][0], cube_projected[8][1], 671 cube_projected[10][0], cube_projected[10][1], 672 1, 1, 673 0, 1, 674 1, 0, 675 second); 676 caca_fill_triangle_textured(screen_list->cv, 677 cube_projected[8][0], cube_projected[8][1], 678 cube_projected[10][0], cube_projected[10][1], 679 cube_projected[11][0], cube_projected[11][1], 680 0, 1, 681 1, 0, 682 0, 0, 683 second); 684 caca_set_color_ansi(screen_list->cv, CACA_RED, CACA_BLACK); 685 caca_draw_thin_line(screen_list->cv, 686 cube_projected[8][0], cube_projected[8][1], 687 cube_projected[9][0], cube_projected[9][1]); 688 caca_draw_thin_line(screen_list->cv, 689 cube_projected[9][0], cube_projected[9][1], 690 cube_projected[10][0], cube_projected[10][1]); 691 caca_draw_thin_line(screen_list->cv, 692 cube_projected[10][0], cube_projected[10][1], 693 cube_projected[11][0], cube_projected[11][1]); 694 caca_draw_thin_line(screen_list->cv, 695 cube_projected[11][0], cube_projected[11][1], 696 cube_projected[8][0], cube_projected[8][1]); 697 } 698 } 699 700 screen_list->changed =1 ; 701 screen_list->force_refresh = 1; 702 screen_list->cube.in_switch = 1; 703 } 704 705 } 706 } 707
Note: See TracChangeset
for help on using the changeset viewer.