Ejemplo n.º 1
0
void RgbEffects::mouth(int Phoneme,int BufferHt, int BufferWi)
{
    /*
    FacesPhoneme.Add("AI");     0
    FacesPhoneme.Add("E");      1
    FacesPhoneme.Add("FV");     2
    FacesPhoneme.Add("L");      3
    FacesPhoneme.Add("MBP");    4
    FacesPhoneme.Add("O");      5
    FacesPhoneme.Add("U");      6
    FacesPhoneme.Add("WQ");     7
    FacesPhoneme.Add("etc");    8
    FacesPhoneme.Add("rest");   9

    ...............|...............
    ...............|...............
    ...............|...............
    ...............|...............
    ...............|...............
    ...............|...............
    ...............|...............
    ...............|...............
    ...............|...............
    ...............|...............
    ...............|...............
    ...............|...............
    ...............|...............
    ...............|...............
    ...............|...............
    ...............|...............
    -1-------------+-------------1-         5% and 95% in x, 52% in y
    .1.............|.............1.         55% in y
    .11111111111111111111111111111.         58% in y
    .2..........55.|.55..........2.
    .2........55...|...55........2.
    .2......55.....|.....55......2.
    .2....55.......|.......55....2.
    .2..55.........|.........55..2.
    .255...........|...........552.
    .2.............|.............2.      y 81%
    .2.............|.............2.
    .255...........|...........552.
    .2..55.........|.........55..2.
    .2....55.......|.......55....2.
    .2......55.....|.....55......2.
    .2........55...|...55........2.
    ............55.|.55............
    */

    int Wt, Ht, x1,x2,x3,x4,y1,y2,y3,y4,y5,y6,y7;
    int xc,yc;
    double radius,offset=0.0;
    Ht = BufferHt-1;
    Wt = BufferWi-1;
    x1=(int)(offset + Wt*0.25);
    x2=(int)(offset + Wt*0.75);
    x3=(int)(offset + Wt*0.30);
    x4=(int)(offset + Wt*0.70);

    y1=(int)(offset + Ht*0.48);
    y2=(int)(offset + Ht*0.40);
    y3=(int)(offset + Ht*0.25);
    y4=(int)(offset + Ht*0.20);
    y5=(int)(offset + Ht*0.30);
    y6=(int)(offset + Ht*0.20);
    y7=(int)(offset + Ht*0.30);

    // eyes


    drawoutline(Phoneme,BufferHt,BufferWi);

    switch (Phoneme)
    {
    case 0:         // AI

        drawline1( Phoneme, x1, x2, y1,y2);
        drawline1( Phoneme, x1, x2, y1,y4);
        break;
    case 3:
    case 1:       // E, L
        drawline1( Phoneme, x1, x2, y1,y2);
        drawline1( Phoneme, x1, x2, y1,y3);
        break;
    case 2:       // FV
        drawline1( Phoneme, x1, x2, y1,y2);
        drawline1( Phoneme, x1, x2, y1,y2-1);
        break;
    case 4:
    case 9:     //  MBP,rest

        drawline1( Phoneme, x1, x2, y1,y2);
        break;
    case 5:
    case 6:       // O,U,WQ
    case 7:
        xc = (int)(0.5 + Wt*0.50);
        yc = (int) (y2-y5)/2 + y5;
        radius = Wt*0.15;  // O
        if(Phoneme==6) radius = Wt*0.10;  // U
        if(Phoneme==7) radius = Wt*0.05;  // WQ
        facesCircle(Phoneme,xc, yc, radius,0,360);
        break;
    case 8:       // WQ, etc
        drawline3( Phoneme, x3, x4, y5, y2);
        break;

    }
}
Ejemplo n.º 2
0
int main(int argc, char **argv)
{
	int grayscale = 0;
	int accelerate = 1;
	xps_context *ctx;
	int code;
	int c;

	while ((c = fz_getopt(argc, argv, "o:p:r:Aadglmtx5")) != -1)
	{
		switch (c)
		{
		case 'o': output = fz_optarg; break;
		case 'r': resolution = atof(fz_optarg); break;
		case 'A': accelerate = 0; break;
		case 'a': savealpha = 1; break;
		case 'l': showoutline++; break;
		case 'm': showtime++; break;
		case 't': showtext++; break;
		case 'x': showxml++; break;
		case '5': showmd5++; break;
		case 'g': grayscale++; break;
		case 'd': uselist = 0; break;
		default: usage(); break;
		}
	}

	if (fz_optind == argc)
		usage();

	if (!showtext && !showxml && !showtime && !showmd5 && !showoutline && !output)
	{
		printf("nothing to do\n");
		exit(0);
	}

	if (accelerate)
		fz_accelerate();

	glyphcache = fz_new_glyph_cache();

	colorspace = fz_device_rgb;
	if (grayscale)
		colorspace = fz_device_gray;
	if (output && strstr(output, ".pgm"))
		colorspace = fz_device_gray;
	if (output && strstr(output, ".ppm"))
		colorspace = fz_device_rgb;

	timing.count = 0;
	timing.total = 0;
	timing.min = 1 << 30;
	timing.max = 0;
	timing.minpage = 0;
	timing.maxpage = 0;

	if (showxml)
		printf("<?xml version=\"1.0\"?>\n");

	while (fz_optind < argc)
	{
		filename = argv[fz_optind++];

		code = xps_open_file(&ctx, filename);
		if (code)
			die(fz_rethrow(code, "cannot open document: %s", filename));

		if (showxml)
			printf("<document name=\"%s\">\n", filename);

		if (showoutline)
			drawoutline(ctx);

		if (showtext || showxml || showtime || showmd5 || output)
		{
			if (fz_optind == argc || !isrange(argv[fz_optind]))
				drawrange(ctx, "1-");
			if (fz_optind < argc && isrange(argv[fz_optind]))
				drawrange(ctx, argv[fz_optind++]);
		}

		if (showxml)
			printf("</document>\n");

		xps_free_context(ctx);
	}

	if (showtime)
	{
		printf("total %dms / %d pages for an average of %dms\n",
			timing.total, timing.count, timing.total / timing.count);
		printf("fastest page %d: %dms\n", timing.minpage, timing.min);
		printf("slowest page %d: %dms\n", timing.maxpage, timing.max);
	}

	fz_free_glyph_cache(glyphcache);

	return 0;
}