void render_slides(void) { int bcolor = 0; if (next_slide == -1) { cubepos = 0; render_slide(cur_slide, cur_stime, bcolor, 0); } else if (trans_time >= TRANSITION_TIME) { if (slides[cur_slide].deinit) slides[cur_slide].deinit(slides[cur_slide].context); cur_slide = next_slide; cur_stime = next_stime; cubepos = 0; render_slide(cur_slide, cur_stime, bcolor, 0); next_slide = -1; } else { float raw_subpos = trans_time / TRANSITION_TIME; // apply a sine function to make it accelerate/delecerate smoothly float subpos = (sinf((raw_subpos - 0.5) * M_PI) + 1)/2; if (subpos < 0.5) bcolor = subpos * 1200; else bcolor = (1-subpos) * 1200; bcolor = bcolor > 0 ? bcolor + 0.3 : 0; if (next_slide >= cur_slide) cubepos = -subpos * M_PI/2; else cubepos = subpos * M_PI/2; render_slide(cur_slide, cur_stime, bcolor, raw_subpos); if (next_slide >= cur_slide) cubepos = (1-subpos) * M_PI/2; else cubepos = (subpos-1) * M_PI/2; render_slide(next_slide, next_stime, bcolor, raw_subpos-1); } float ftime = olRenderFrame(100); frames++; gtime += ftime; cur_stime += ftime; next_stime += ftime; trans_time += ftime; OLFrameInfo info; olGetFrameInfo(&info); mvprintw(3, 0, "Frame time: %f, Cur FPS: %f, Avg FPS: %f, Objects: %3d, Points: %d", ftime, 1/ftime, frames/gtime, info.objects, info.points); if (info.resampled_points) printw(", Rp: %4d, Bp: %4d", info.resampled_points, info.resampled_blacks); if (info.padding_points) printw(", Pad %4d", info.padding_points); clrtoeol(); refresh(); }
void qconv_slide() /***************************************************************************** * Put up slide menu. ****************************************************************************/ { USHORT mdis[8]; short temp; if (cs.slide_frames <= 0) cs.slide_frames = 50; for (;;) { /* set up asterisks */ clear_mem(mdis, sizeof(mdis)); if (cs.slide_complete) mdis[4] |= QCF_ASTERISK; switch (soft_qchoice(mdis, "!%d%d%d", "conv_slide", cs.slidex,cs.slidey,cs.slide_frames)) { case 0: slide_with_mouse(); break; case 1: temp = cs.ifi.cel->width; soft_qreq_number(&cs.slidex, -temp, temp, "conv_slidex"); break; case 2: temp = cs.ifi.cel->height; soft_qreq_number(&cs.slidey, -temp, temp, "conv_slidey"); break; case 3: soft_qreq_number(&cs.slide_frames, 2, 100, "conv_slidef"); if (cs.slide_frames < 1) cs.slide_frames = 1; if (cs.slide_frames > MAXFRAMES) cs.slide_frames = MAXFRAMES; break; case 4: cs.slide_complete = !cs.slide_complete; break; case 5: preview_slide(); break; case 6: render_slide(); break; default: return; } } }
qslide() { char *bufs[8]; char b1[30],b2[30],b3[30],b4[30]; int ouzx,ouzy; /* bad kludge to keep menus from moving... */ int choice; int ocx, ocy; ouzx = uzx; ouzy = uzy; for (;;) { uzx = ouzx; uzy = ouzy; bufs[0] = slide_100 /* "Slide with Mouse" */; sprintf(b1, slide_101 /* "Set X %3d" */, dx); bufs[1] = b1; sprintf(b2, slide_102 /* "Set Y %3d" */, dy); bufs[2] = b2; sprintf(b3, slide_103 /* "Set Frames %3d" */, dframes); bufs[3] = b3; sprintf(b4, slide_104 /* "%s Complete" */, complete ? "*" : " "); bufs[4] = b4; bufs[5] = slide_107 /* "Preview" */; bufs[6] = slide_108 /* "Render and Save" */; bufs[7] = slide_109 /* "Exit Menu" */; if ((choice = qchoice(slide_110 /* "Slide..." */, bufs, Array_els(bufs))) == 0) break; switch (choice) { case 1: ocx = pic_cel->x; ocy = pic_cel->y; qmove(); dx = pic_cel->x - ocx; dy = pic_cel->y - ocy; pic_cel->x = ocx; pic_cel->y = ocy; tile_s_cel(pic_cel); break; case 2: qreq_number(slide_111 /* "Set x slide" */, &dx, -pic_cel->w, pic_cel->w); break; case 3: qreq_number(slide_112 /* "Set y slide" */, &dy, -pic_cel->h, pic_cel->h); break; case 4: qreq_number(slide_113 /* "Set frame count" */, &dframes, 1, 100); if (dframes < 1) dframes = 1; break; case 5: complete = !complete; break; case 6: preview_slide(); break; case 7: render_slide(); break; } } }