8 int main(int argc, char *argv[]){
\r
9 GString *tmp1, *tmp2, *test1, *test2, *filename;
\r
11 char errbuf[errorFileSize];
\r
20 // kShotai = kGothic;
\r
21 // kDesign = 0; //jp
\r
24 kInput = 0; //ids or direct
\r
25 kResultText = g_string_new("");
\r
28 //set some param by request
\r
29 // tmp1 = g_string_new((gchar *)argv[1]);
\r
30 tmp1 = g_string_new((gchar *)getenv("QUERY_STRING"));
\r
36 cur = strchr(pos, '&');
\r
37 tmp2 = g_string_new(pos);
\r
38 if(cur != NULL) g_string_set_size(tmp2, cur - pos);
\r
39 //got request string
\r
40 // if(strncmp(tmp2->str, "design=jp", 9) == 0) kDesign = 0;
\r
41 // else if(strncmp(tmp2->str, "design=cs", 9) == 0) kDesign = 10;
\r
42 // else if(strncmp(tmp2->str, "design=ct", 9) == 0) kDesign = 11;
\r
43 // else if(strncmp(tmp2->str, "design=kr", 9) == 0) kDesign = 20;
\r
44 // else if(strncmp(tmp2->str, "design=vn", 9) == 0) kDesign = 30;
\r
45 // else if(strncmp(tmp2->str, "design=un", 9) == 0) kDesign = 40;
\r
46 // else if(strncmp(tmp2->str, "shotai=mincho", 13) == 0) kShotai = kMincho;
\r
47 if(strncmp(tmp2->str, "shotai=mincho", 13) == 0) kShotai = kMincho;
\r
48 else if(strncmp(tmp2->str, "shotai=gothic", 13) == 0) kShotai = kGothic;
\r
49 else if(strncmp(tmp2->str, "shotai=skeleton", 15) == 0) kShotai = kGothic;
\r
50 else if(strncmp(tmp2->str, "type=png", 8) == 0) kType = 0;
\r
51 else if(strncmp(tmp2->str, "type=svg", 8) == 0) kType = 1;
\r
52 else if(strncmp(tmp2->str, "type=eps", 8) == 0) kType = 2;
\r
53 else if(strncmp(tmp2->str, "type=raw", 8) == 0) kType = 3;
\r
54 else if(strncmp(tmp2->str, "input=ids", 9) == 0) kInput = 0;
\r
55 else if(strncmp(tmp2->str, "input=directwithadjust", 22) == 0) kInput = 2;
\r
56 else if(strncmp(tmp2->str, "input=direct", 12) == 0) kInput = 1;
\r
57 else if(strncmp(tmp2->str, "size=24", 7) == 0) kSize = 24;
\r
58 else if(strncmp(tmp2->str, "size=200", 8) == 0) kSize = 200;
\r
59 else test1 = g_string_new(tmp2->str);
\r
60 if(cur == NULL) break;
\r
64 else{ // redirected request
\r
66 tmp1 = g_string_new((gchar *)getenv("REDIRECT_URL"));
\r
69 cur = strchr(pos, '/');
\r
70 tmp2 = g_string_new(pos);
\r
71 if(cur != NULL) g_string_set_size(tmp2, cur - pos);
\r
72 //got request string
\r
73 // if(strncmp(tmp2->str, "jp", 2) == 0) kDesign = 0;
\r
74 // else if(strncmp(tmp2->str, "cs", 2) == 0) kDesign = 10;
\r
75 // else if(strncmp(tmp2->str, "ct", 2) == 0) kDesign = 11;
\r
76 // else if(strncmp(tmp2->str, "kr", 2) == 0) kDesign = 20;
\r
77 // else if(strncmp(tmp2->str, "vn", 2) == 0) kDesign = 30;
\r
78 // else if(strncmp(tmp2->str, "un", 2) == 0) kDesign = 40;
\r
79 // else if(strncmp(tmp2->str, "mincho", 6) == 0) kShotai = kMincho;
\r
80 if(strncmp(tmp2->str, "mincho", 6) == 0) kShotai = kMincho;
\r
81 else if(strncmp(tmp2->str, "gothic", 6) == 0) kShotai = kGothic;
\r
82 else if(strncmp(tmp2->str, "skeleton", 8) == 0) kShotai = kGothic;
\r
83 else if(strncmp(tmp2->str, "v0.4", 4) == 0);
\r
84 else test1 = g_string_new(tmp2->str);
\r
85 if(cur == NULL) break;
\r
88 if(strncmp(test1->str + test1->len - 4, ".png", 4) == 0) kType = 0;
\r
89 if(strncmp(test1->str + test1->len - 4, ".svg", 4) == 0) kType = 1;
\r
90 if(strncmp(test1->str + test1->len - 4, ".eps", 4) == 0) kType = 2;
\r
91 if(strncmp(test1->str + test1->len - 4, ".raw", 4) == 0) kType = 3;
\r
92 g_string_set_size(test1, test1->len - 4);
\r
95 //clear result buffer
\r
96 test2 = g_string_new("");
\r
97 if(kType == 1){ //svg
\r
98 g_string_append(kResultText, "<?xml version=\"1.0\"?>\n");
\r
99 g_string_append(kResultText, "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.0//EN\" \"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd\">\n");
\r
100 g_string_append(kResultText, "<svg viewBox=\"0 0 1024 1024\">");
\r
102 else if(kType == 2){ //eps
\r
103 g_string_append(kResultText, "%!PS-Adobe-3.0 EPSF-3.0\n");
\r
104 g_string_append(kResultText, "%%BoundingBox: 0 -208 1024 816\n");
\r
105 g_string_append(kResultText, "%%Pages: 0\n");
\r
106 g_string_append(kResultText, "%%Title: ");
\r
107 g_string_append(kResultText, test1->str);
\r
108 g_string_append(kResultText, "\n");
\r
109 g_string_append(kResultText, "%%Creator: KAGE System\n");
\r
110 g_string_append(kResultText, "%%CreationDate: 00:00 1-1-2004\n");
\r
111 g_string_append(kResultText, "%%EndComments\n");
\r
112 g_string_append(kResultText, "%%EndProlog\n");
\r
113 g_string_append(kResultText, "%%Page \"");
\r
114 g_string_append(kResultText, test1->str);
\r
115 g_string_append(kResultText, "\" 1\n");
\r
116 g_string_append(kResultText, "newpath\n");
\r
118 kageCanvas = initPng(canvasWidth, canvasHeight);
\r
119 if(kInput == 0) generateGlyph(test1, test2);
\r
121 convert99(test1, test2);
\r
122 // g_string_append(test2, test1->str);
\r
125 if(kType == 0){ //png(image)
\r
126 if(test2->len != 0){
\r
127 if(kInput != 1){ //0 and 2
\r
128 test2 = CalcSizes(test2, 1);
\r
131 drawGlyph(test2, 0);
\r
133 filename = g_string_new(pngFilePath);
\r
134 // if(kDesign == 0) g_string_append(filename, "jp/");
\r
135 // else if(kDesign == 10) g_string_append(filename, "cs/");
\r
136 // else if(kDesign == 11) g_string_append(filename, "ct/");
\r
137 // else if(kDesign == 20) g_string_append(filename, "kr/");
\r
138 // else if(kDesign == 30) g_string_append(filename, "vn/");
\r
139 // else if(kDesign == 40) g_string_append(filename, "un/");
\r
140 if(kShotai == kMincho) g_string_append(filename, "mincho/");
\r
141 else if(kShotai == kGothic) g_string_append(filename, "gothic/");//skeleton??
\r
142 g_string_append(filename, test1->str);
\r
143 g_string_append(filename, ".png");
\r
145 //skip for adjustment mode
\r
146 // fp = fopen(filename->str, "w");
\r
147 // writePng(pngWidth, pngHeight, kageCanvas, fp);
\r
150 fprintf(stdout, "Content-type: image/png\n\n");
\r
151 writePng(pngWidth, pngHeight, kageCanvas, stdout);
\r
153 closePng(pngWidth, pngHeight, kageCanvas);
\r
156 err = fopen("error.png", "r");
\r
157 fread(errbuf, sizeof(char), errorFileSize, err);
\r
158 // printf("An error occurred.\r\n");
\r
159 fprintf(stdout, "Content-type: image/png\n\n");
\r
160 fwrite(errbuf, sizeof(char), errorFileSize, stdout);
\r
164 else if(kType == 1){ //svg(vector graphics)
\r
165 if(test2->len != 0){
\r
166 test2 = CalcSizes(test2, 1);
\r
168 drawGlyph(test2, 0);
\r
169 g_string_append(kResultText, "</svg>\n");
\r
170 fprintf(stdout, "Content-type: image/svg-xml\n\n");
\r
171 fprintf(stdout, "%s", kResultText->str);
\r
174 fprintf(stdout, "Content-type: text/plain\n\n");
\r
175 fprintf(stdout, "An error occurred.");
\r
178 else if(kType == 2){ //eps(vector graphics)
\r
179 if(test2->len != 0){
\r
180 test2 = CalcSizes(test2, 1);
\r
182 drawGlyph(test2, 0);
\r
183 g_string_append(kResultText, "fill\n");
\r
184 g_string_append(kResultText, "%%EOF\n");
\r
185 fprintf(stdout, "Content-type: application/postscript\n\n");
\r
186 fprintf(stdout, "%s", kResultText->str);
\r
189 fprintf(stdout, "Content-type: text/plain\n\n");
\r
190 fprintf(stdout, "An error occurred.");
\r
194 if(test2->len != 0){
\r
195 fprintf(stdout, "Content-type: text/plain\n\n");
\r
196 fprintf(stdout, "result=%s", test2->str);
\r
199 fprintf(stdout, "Content-type: text/plain\n\n");
\r
200 fprintf(stdout, "result=nodata");
\r