void traite_car(char c) { if(c < 32) { switch(c) { case 8: if(cursor_col!=0){ place_curseur(cursor_lig, cursor_col-1); } break; case 9: place_curseur(cursor_lig, (cursor_col!=NB_COL-1)?((cursor_col/8)*8+8):NB_COL-1 ); break; case 10: if(cursor_lig+1==NB_LINE){ defilement(); place_curseur(NB_LINE-1, 0); } else place_curseur(cursor_lig+1, 0); break; case 12: efface_ecran(); break; case 13: place_curseur(cursor_lig, 0); break; default: break; } } else { ecrit_car(cursor_lig, cursor_col, c); step_cursor(); } }
static void step (AppData *appdata) { cairo_t *cr; set_up_for_buffer (appdata, &cr); cairo_save (cr); cairo_set_source_rgb (cr, 1, 1, 1); cairo_paint (cr); appdata->x += 10 * appdata->dir; if (appdata->x > 1239 || appdata->x < 0) appdata->dir *= -1; cairo_set_source_rgb (cr, 1, 0, 0); cairo_rectangle (cr, appdata->x - 50, 75, 681, 800); cairo_fill (cr); cairo_translate (cr, appdata->x, 200); cairo_set_source_surface (cr, appdata->craig, 0, 0); cairo_rectangle (cr, 0, 0, 681, 800); cairo_fill (cr); cairo_restore (cr); /* cairo_save (cr); cairo_scale (cr, 2, 2); rsvg_handle_render_cairo (appdata->tiger, cr); cairo_restore (cr); */ swap_buffer (appdata); step_cursor (appdata); step_cursor (appdata); step_cursor (appdata); step_cursor (appdata); step_cursor (appdata); step_cursor (appdata); step_cursor (appdata); ++appdata->time; }