static void reset_edge_overlay() { if (smbuf != NULL) { free(smbuf); smbuf = NULL; } if (edgebuf != NULL) { draw_restore(); // Refresh display to restore Canon OSD bv_free(edgebuf); edgebuf = NULL; } fsm_state = EDGE_LIVE; slice = 0; }
static void key_assigner_draw( void* d, mFloat x, mFloat y, mFloat w, mFloat h, mFloat delta) { #define DELTA_X 5 #define DELTA_Y 5 #define GRAY 0.5 key_assigner_t* key = (key_assigner_t*)d; wchar_t buffer[MAX_BUFFER]; drawState state; mFloat dy; int i; mFloat sy = y; (void)h; (void)delta; x += DELTA_X; y += 2 * DELTA_Y; draw_color_rgb(GRAY, GRAY, GRAY); swprintf( buffer, MAX_BUFFER, WC_FORMAT, key_assign.translated); dy = print_message(buffer, x, &y); y += dy; if(key->assigned == NOT_READY) { draw_color_rgb(GRAY, GRAY, GRAY); swprintf( buffer, MAX_BUFFER, WC_FORMAT, no_player.translated); dy = print_message(buffer, x, &y); y += dy; draw_save(&state); draw_color_rgb(GRAY, GRAY, GRAY); draw_translate(10, y - sy); draw_rectangle((unsigned int)((w - 20) * key->timer / ACTIVATION_TIME), 5); draw_restore(&state); key->selection = 0; return; } draw_color_rgb(GRAY, GRAY, GRAY); swprintf( buffer, MAX_BUFFER, WC_FORMAT L":", player_tr.translated); print_message(buffer, x, &y); swprintf( buffer, MAX_BUFFER, L"P%d", key->player_nb); dy = print_message(buffer, x + DELTA_X, &y); y += dy; swprintf( buffer, MAX_BUFFER, WC_FORMAT L":", input.translated); print_message(buffer, x, &y); if(key->type == KEYBOARD) { swprintf( buffer, MAX_BUFFER, WC_FORMAT, keyboard_tr.translated); } else if(key->type == MOUSE) { swprintf( buffer, MAX_BUFFER, WC_FORMAT, mouse_tr.translated); } else { swprintf( buffer, MAX_BUFFER, WC_FORMAT, joystick_tr.translated); } dy = print_message(buffer, x + DELTA_X, &y); y += dy; for(i = 0 ; i < KEY_NB ; i++) { const wchar_t* msgs[] = { jump.translated , left.translated , use.translated , right.translated, }; if(key->selection == i) draw_color_rgb(1.0, 1.0, 1.0); else draw_color_rgb(GRAY, GRAY, GRAY); if(key->type != MOUSE) { swprintf( buffer, MAX_BUFFER, WC_FORMAT L": %d", msgs[i], player_array[key->player_nb].input.key[i]); } else { swprintf( buffer, MAX_BUFFER, WC_FORMAT L": N/A", msgs[i]); } dy = print_message(buffer, x, &y); } y += dy; if(key->assigned == CHOOSE) { int j; int lower, upper; draw_color_rgb(GRAY, GRAY, GRAY); swprintf( buffer, MAX_BUFFER, WC_FORMAT, choose_tr.translated); print_message(buffer, x, &y); y += dy; lower = (int)(key->selected_character - MODELS_TO_SHOW / 2); upper = (int)(key->selected_character + MODELS_TO_SHOW / 2); if(model_nb_filenames > 0) { for(j = lower; j <= upper; j++) { if(j < 0 || j >= (int)model_nb_filenames) y += dy; // Don't print anything. else { if(j == (int)key->selected_character) draw_color_rgb(1.0, 1.0, 1.0); else draw_color_rgb(GRAY, GRAY, GRAY); swprintf( buffer, MAX_BUFFER, MB_FORMAT, model_filenames[j]); print_message(buffer, x, &y); } } y += dy; swprintf( buffer, MAX_BUFFER, WC_FORMAT, accept_tr.translated); draw_color_rgb(GRAY, GRAY, GRAY); print_message(buffer, x, &y); y += dy; draw_save(&state); draw_color_rgb(GRAY, GRAY, GRAY); draw_translate(10, y - sy); draw_rectangle((unsigned int)((w - 20) * key->timer_ready / ACTIVATION_TIME), 5); draw_restore(&state); y += dy; } else { swprintf( buffer, MAX_BUFFER, WC_FORMAT, no_model_tr.translated); print_message(buffer, x, &y); y += dy * MODELS_TO_SHOW; } swprintf( buffer, MAX_BUFFER, WC_FORMAT, unassign.translated); print_message(buffer, x, &y); y += dy; draw_save(&state); draw_color_rgb(GRAY, GRAY, GRAY); draw_translate(10, y - sy); draw_rectangle((unsigned int)((w - 20) * key->timer_unassign / ACTIVATION_TIME), 5); draw_restore(&state); } else if(key->assigned == READY) { oBody* body; loaded_texture_t** textures; draw_color_rgb(1.0, 1.0, 1.0); swprintf( buffer, MAX_BUFFER, WC_FORMAT, unassign.translated); print_message(buffer, x, &y); y += dy; draw_save(&state); draw_color_rgb(GRAY, GRAY, GRAY); draw_translate(10, y - sy); draw_rectangle((unsigned int)((w - 20) * key->timer_unassign / ACTIVATION_TIME), 5); draw_restore(&state); body = player_array[key->player_nb].model->model->body; textures = (loaded_texture_t**)oBodyGetData( body, "Walk", &key->nb_frames, &key->frame_time); // Make sure 'frame_nb' is in the right range. key->frame_nb %= key->nb_frames; draw_save(&state); draw_translate( (w - textures[key->frame_nb]->texture.width) / 2, y - window_border_y / window_zoom); draw_texture(textures[key->frame_nb]); draw_restore(&state); } }