예제 #1
0
파일: main.c 프로젝트: AdelGit/openlase
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();
}
예제 #2
0
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;
		}
	}
}
예제 #3
0
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;
		}
	}
}