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; } }
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; }