void sub_shc_draw(SDL_Surface * screen) { int td, animating = 0; shc_node *curr = NULL; if (shc_init_stage) { sub_shc_stages(screen); } if (shc_movereq && !shc_movedir) { if (shc_movereq < 0) { sfx_play(SFXMOVE); shc_movedir = -1; shc_movereq++; } else if (shc_movereq > 0) { sfx_play(SFXMOVE); shc_movedir = 1; shc_movereq--; } shc_assign_move(shc_movedir); shc_timer2 = SDL_GetTicks(); } if (!shc_init_stage) gfx_draw_image(shc_arrow, 25, 113, screen); curr = shc_root; td = (SDL_GetTicks() - shc_timer2); shc_timer2 = SDL_GetTicks(); if (!curr && !shc_init_stage) /* Did not find anything */ { gfx_draw_text(screen, font_normal, 50, 115, USESHADOW, NOGLOW, "There are no applications."); } while (curr && !shc_init_stage) { char t_name[32]; t_name[0] = '\0'; strncat(t_name, curr->title, 31); if (shc_movedir) { int move_td_x = (int) rint((curr->move_x) / (float) XMBMOVEDELAY * td); int move_td_y = (int) rint((curr->move_y) / (float) XMBMOVEDELAY * td); curr->pos_x += move_td_x; curr->pos_y += move_td_y; if ((move_td_x > 0 && curr->pos_x > curr->move_tx) || (move_td_x < 0 && curr->pos_x < curr->move_tx)) { curr->pos_x = curr->move_tx; curr->move_x = 0; curr->move_tx = 0; if (curr->pos_x == 50) { SDL_FreeSurface(curr->icon_curr); curr->icon_curr = gfx_scaleperc_surface(curr->icon_orig, 1.0, 1.0); } else { SDL_FreeSurface(curr->icon_curr); curr->icon_curr = gfx_scaleperc_surface(curr->icon_orig, 0.5, 0.5); } } if ((move_td_y > 0 && curr->pos_y > curr->move_ty) || (move_td_y < 0 && curr->pos_y < curr->move_ty)) { curr->pos_y = curr->move_ty; curr->move_y = 0; curr->move_ty = 0; } if (curr->move_x) { float bval = ((1.0 / (SHCICONX / 4)) * (curr->pos_x + (curr->move_x - curr->move_tx)) / 2.0); if (bval < 0) bval = 0.5 + fabs(bval); else if (bval > 0) bval = 0.5 + (0.5 - fabs(bval)); if (bval) { SDL_FreeSurface(curr->icon_curr); curr->icon_curr = gfx_scaleperc_surface(curr->icon_orig, bval, bval); } } if (curr->move_x || curr->move_y) animating = 1; } else if (curr->pos_y == 83) /* selected ... ugly but it works, for now */ { gfx_draw_text(screen, font_normal, curr->pos_x + SHCICONX + 10, curr->pos_y + ((SHCICONY - SFont_TextHeight(font_normal)) / 2), USESHADOW, NOGLOW, curr->title); } if ((curr->pos_y + curr->icon_curr->h) > 0 && curr->pos_y < 240) gfx_draw_image(curr->icon_curr, curr->pos_x, curr->pos_y, screen); curr = curr->next; } if (!animating) shc_movedir = 0; if(shc_showpopup) POPUP_draw(screen); }
void sub_music_draw(SDL_Surface * screen) { if (music_stage == 1) /* move left */ { if (!music_xmb_offset_tx) { music_xmb_offset_ox = music_xmb_offset_x; music_xmb_offset_tx = -LIST_columnWidth(); } music_xmb_offset_x -= rint(LIST_columnWidth() / ((float) (XMBMOVEDELAY)) * (SDL_GetTicks() - music_animtimer)); } else if (music_stage == 2) /* move right */ { if (!music_xmb_offset_tx) { music_xmb_offset_ox = music_xmb_offset_x; music_xmb_offset_tx = LIST_columnWidth(); } music_xmb_offset_x += rint(LIST_columnWidth() / ((float) (XMBMOVEDELAY)) * (SDL_GetTicks() - music_animtimer)); } else if (music_stage == 3) /* move left (inital) */ { if (!music_xmb_offset_tx) { music_xmb_offset_ox = music_xmb_offset_x; music_xmb_offset_tx = -LIST_columnWidth(); } music_xmb_offset_x -= rint(LIST_columnWidth() / ((float) (XMBMOVEDELAY)) * (SDL_GetTicks() - music_animtimer)); } else if (music_stage == 4) /* move right (final) */ { if (!music_xmb_offset_tx) { music_xmb_offset_ox = music_xmb_offset_x; music_xmb_offset_tx = LIST_columnWidth(); } music_xmb_offset_x += rint(LIST_columnWidth() / ((float) (XMBMOVEDELAY)) * (SDL_GetTicks() - music_animtimer)); } else if (music_stage == 5) { music_stage++; } else if (music_stage == 6) { sub_music_browse(); music_stage = 0; } if (SDL_GetTicks() - music_animtimer_b > XMBMOVEDELAY && music_stage) { if (music_stage == 1 || music_stage == 3) { LIST_setEmptyMsg("Please Wait..."); music_stage = 5; } if (music_stage == 4 && music_levels == -1) { music_xmb_offset_x = 0; LIST_destroy(); sub_music_destroy(); submenu = NULL; sub_music_playing = 0; return; } if (music_stage <= 5) { music_xmb_offset_x = music_xmb_offset_ox + music_xmb_offset_tx; music_xmb_offset_tx = 0; music_xmb_offset_ox = 0; } if (music_stage > 0 && music_stage < 5) music_stage = 0; } music_animtimer = SDL_GetTicks(); if (music_stage != MUS_FULLSCREEN) { if (music_stage != 3 && music_stage != 4) { LIST_draw(screen, (int) music_xmb_offset_x + ICONSCALE_X - 5, 0); } } else if (sub_music_playing) { tlistitem *sel; SDL_Rect wrect; char textstr[16]; int minutes = 0, seconds = 0, tmin = 0, tsec = 0; textstr[0] = '\0'; wrect.x = screen->w - 210; wrect.y = screen->h - 14; wrect.w = 200; wrect.h = 4; SDL_FillRect(screen, &wrect, SDL_MapRGB(screen->format, 255, 255, 255)); wrect.w *= mus_getpos() / (float) mus_getlength(); wrect.w = ceil(wrect.w); SDL_FillRect(screen, &wrect, SDL_MapRGB(screen->format, 0, 130, 180)); #ifdef TREMOR minutes = ((mus_getpos() / 1000) / 60); seconds = ((mus_getpos() / 1000) % 60); tmin = ((mus_getlength() / 1000) / 60); tsec = ((mus_getlength() / 1000) % 60); #else minutes = ((mus_getpos()) / 60); seconds = ((mus_getpos()) % 60); tmin = ((mus_getlength()) / 60); tsec = ((mus_getlength()) % 60); #endif sprintf(textstr, "%02i:%02i / %02i:%02i", minutes, seconds, tmin, tsec); gfx_draw_text(screen, font_monospace, 215, 210, USESHADOW, NOGLOW, textstr); sel = LIST_getSelected(); gfx_draw_image(sel->icon, 25, 102, screen); gfx_draw_text(screen, font_normal, 71, 100, USESHADOW, NOGLOW, sel->title); gfx_draw_text(screen, font_small, 71, 126, USESHADOW, NOGLOW, sel->subtitle); if (mus_eof()) { if (LIST_down()) { mus_stop(); while (!mus_ready()); sub_music_playsel(); } else { sub_music_handle_input(GP2X_BUTTON_B); } } } }
void sub_shc_stages(SDL_Surface * screen) { if (!shc_arrow) shc_arrow = gfx_load_image("images/icons/arrow-left.png", 1); if (shc_init_stage == 1) { if (shc_timer && shc_xmb_offset_x > -80) { shc_xmb_offset_x -= (int) rint(((80) / (float) XMBMOVEDELAY) * (SDL_GetTicks() - shc_timer)); } else if (shc_xmb_offset_x == -80) shc_init_stage = 2; shc_timer = SDL_GetTicks(); if (shc_xmb_offset_x < -80) shc_xmb_offset_x = -80; } else if (shc_init_stage == 2) { gfx_draw_text(screen, font_normal, 50, 115, USESHADOW, NOGLOW, "Please Wait..."); shc_init_stage++; } else if (shc_init_stage == 3) { /* Load everything */ shc_load(); shc_assign_initial_pos(); shc_init_stage++; } else if (shc_init_stage == 4) shc_init_stage = 0; if (shc_init_stage == 10) { if (shc_timer && shc_xmb_offset_x < 0) { shc_xmb_offset_x += (int) rint(((80) / (float) XMBMOVEDELAY) * (SDL_GetTicks() - shc_timer)); } else if (shc_xmb_offset_x == 0) shc_init_stage = 11; shc_timer = SDL_GetTicks(); if (shc_xmb_offset_x > 0) shc_xmb_offset_x = 0; } else if (shc_init_stage == 11) { shc_xmb_offset_x = 0; shc_timer = 0; submenu = NULL; shc_init_stage = 1; shc_selection = 0; shc_delete_list(); } }