\r
*dlx = 0;\r
*drx = 0;\r
- for(i = 0; i <= pngWidth && *dlx == 0; i++){\r
- for(j = 0; j <= pngHeight; j++){\r
+ for(i = 0; i < canvasWidth && *dlx == 0; i++){\r
+ for(j = 0; j < canvasHeight; j++){\r
if(kageCanvas[j][i] == 0){\r
*dlx = i;\r
break;\r
}\r
}\r
\r
- for(i = pngWidth; i >= 0 && *drx == 0; i--){\r
- for(j = 0; j <= pngHeight; j++){\r
+ for(i = canvasWidth - 1; i >= 0 && *drx == 0; i--){\r
+ for(j = 0; j < canvasHeight; j++){\r
if(kageCanvas[j][i] == 0){\r
*drx = i;\r
break;\r
\r
*dly = 0;\r
*dry = 0;\r
- for(j = 0; j <= pngHeight && *dly == 0; j++){\r
- for(i = 0; i <= pngWidth; i++){\r
+ for(j = 0; j < canvasHeight && *dly == 0; j++){\r
+ for(i = 0; i < canvasWidth; i++){\r
if(kageCanvas[j][i] == 0){\r
*dly = j;\r
break;\r
}\r
}\r
\r
- for(j = pngHeight; j >= 0 && *dry == 0; j--){\r
- for(i = 0; i <= pngWidth; i++){\r
+ for(j = canvasHeight - 1; j >= 0 && *dry == 0; j--){\r
+ for(i = 0; i < canvasWidth; i++){\r
if(kageCanvas[j][i] == 0){\r
*dry = j;\r
break;\r
}\r
}\r
\r
-void PartsWidth(const GString *in, int *lx, int *rx){\r
+void PartsWidth(const KGString *in, int *lx, int *rx){\r
+ int tempShotai;\r
+ DrawBox();\r
+ tempShotai = kShotai;\r
+ kShotai = kGothic;\r
+ drawGlyph(in, 1);\r
+ kShotai = tempShotai;\r
+ DotsWidth(lx, rx);\r
+ /*\r
int i;\r
int *buf, strokes;\r
+ double t, x;\r
\r
*lx = 1000; *rx = 0;\r
buf = convertStroke(in->str, buf, &strokes);\r
\r
for(i = 0; i < strokes; i++){\r
- if(buf[i * 11 + 0] % 10 == 0) continue;\r
+ switch(buf[i * 11 + 0] % 10){\r
\r
- if(*lx > buf[i * 11 + 3]) *lx = buf[i * 11 + 3];\r
- if(*rx < buf[i * 11 + 3]) *rx = buf[i * 11 + 3];\r
- if(*lx > buf[i * 11 + 5]) *lx = buf[i * 11 + 5];\r
- if(*rx < buf[i * 11 + 5]) *rx = buf[i * 11 + 5];\r
- \r
- if(buf[i * 11 + 0] % 10 == 2 || buf[i * 11 + 0] % 10 == 3 || buf[i * 11 + 0] % 10 == 8){\r
+ case 0:\r
+ case 9:\r
+ break;\r
+ case 1:\r
+ if(*lx > buf[i * 11 + 3]) *lx = buf[i * 11 + 3];\r
+ if(*rx < buf[i * 11 + 3]) *rx = buf[i * 11 + 3];\r
+ if(*lx > buf[i * 11 + 5]) *lx = buf[i * 11 + 5];\r
+ if(*rx < buf[i * 11 + 5]) *rx = buf[i * 11 + 5];\r
+ break;\r
+ case 2:\r
+ for(t = 0; t <= 1; t = t + 0.05){\r
+ x = (1.0 - t) * (1.0 - t) * buf[i * 11 + 3] + 2.0 * t * (1.0 - t) * buf[i * 11 + 5] + t * t * buf[i * 11 + 7];\r
+ if(*lx > x) *lx = x;\r
+ if(*rx < x) *rx = x;\r
+ }\r
+ break;\r
+ case 3:\r
+ if(*lx > buf[i * 11 + 3]) *lx = buf[i * 11 + 3];\r
+ if(*rx < buf[i * 11 + 3]) *rx = buf[i * 11 + 3];\r
+ if(*lx > buf[i * 11 + 5]) *lx = buf[i * 11 + 5];\r
+ if(*rx < buf[i * 11 + 5]) *rx = buf[i * 11 + 5];\r
if(*lx > buf[i * 11 + 7]) *lx = buf[i * 11 + 7];\r
if(*rx < buf[i * 11 + 7]) *rx = buf[i * 11 + 7];\r
+ break;\r
+ case 6:\r
+ for(t = 0; t < 1; t = t + 0.05){\r
+ x = (1.0 - t) * (1.0 - t) * (1.0 - t) * buf[i * 11 + 3] + 3.0 * t * (1.0 - t) * (1.0 - t) * buf[i * 11 + 5] + 3 * t * t * (1.0 - t) * buf[i * 11 + 7] + t * t * t * buf[i * 11 + 9];\r
+ if(*lx > x) *lx = x;\r
+ if(*rx < x) *rx = x;\r
+ }\r
+ break;\r
+ case 7:\r
+ if(*lx > buf[i * 11 + 3]) *lx = buf[i * 11 + 3];\r
+ if(*rx < buf[i * 11 + 3]) *rx = buf[i * 11 + 3];\r
+ for(t = 0; t < 1; t = t + 0.05){\r
+ x = (1.0 - t) * (1.0 - t) * buf[i * 11 + 5] + 2.0 * t * (1.0 - t) * buf[i * 11 + 7] + t * t * buf[i * 11 + 9];\r
+ if(*lx > x) *lx = x;\r
+ if(*rx < x) *rx = x;\r
+ }\r
}\r
- if(buf[i * 11 + 0] % 10 == 4 || buf[i * 11 + 0] % 10 == 6 || buf[i * 11 + 0] % 10 == 7){\r
- if(*lx > buf[i * 11 + 9]) *lx = buf[i * 11 + 9];\r
- if(*rx < buf[i * 11 + 9]) *rx = buf[i * 11 + 9];\r
- }\r
}\r
free(buf);\r
+ */\r
}\r
\r
-void PartsHeight(const GString *in, int *ly, int *ry){\r
+void PartsHeight(const KGString *in, int *ly, int *ry){\r
+ int tempShotai;\r
+ DrawBox();\r
+ tempShotai = kShotai;\r
+ kShotai = kGothic;\r
+ drawGlyph(in, 1);\r
+ kShotai = tempShotai;\r
+ DotsHeight(ly, ry);\r
+ /*\r
+ int i;\r
+ int *buf, strokes;\r
+ double t, y;\r
+ \r
+ *ly = 1000; *ry = 0;\r
+ buf = convertStroke(in->str, buf, &strokes);\r
+ \r
+ for(i = 0; i < strokes; i++){\r
+ switch(buf[i * 11 + 0] % 10){\r
+ \r
+ case 0:\r
+ case 9:\r
+ break;\r
+ case 1:\r
+ if(*ly > buf[i * 11 + 4]) *ly = buf[i * 11 + 4];\r
+ if(*ry < buf[i * 11 + 4]) *ry = buf[i * 11 + 4];\r
+ if(*ly > buf[i * 11 + 6]) *ly = buf[i * 11 + 6];\r
+ if(*ry < buf[i * 11 + 6]) *ry = buf[i * 11 + 6];\r
+ break;\r
+ case 2:\r
+ for(t = 0; t <= 1; t = t + 0.05){\r
+ y = (1.0 - t) * (1.0 - t) * buf[i * 11 + 4] + 2.0 * t * (1.0 - t) * buf[i * 11 + 6] + t * t * buf[i * 11 + 8];\r
+ if(*ly > y) *ly = y;\r
+ if(*ry < y) *ry = y;\r
+ }\r
+ break;\r
+ case 3:\r
+ if(*ly > buf[i * 11 + 4]) *ly = buf[i * 11 + 4];\r
+ if(*ry < buf[i * 11 + 4]) *ry = buf[i * 11 + 4];\r
+ if(*ly > buf[i * 11 + 6]) *ly = buf[i * 11 + 6];\r
+ if(*ry < buf[i * 11 + 6]) *ry = buf[i * 11 + 6];\r
+ if(*ly > buf[i * 11 + 8]) *ly = buf[i * 11 + 8];\r
+ if(*ry < buf[i * 11 + 8]) *ry = buf[i * 11 + 8];\r
+ break;\r
+ case 6:\r
+ for(t = 0; t < 1; t = t + 0.05){\r
+ y = (1.0 - t) * (1.0 - t) * (1.0 - t) * buf[i * 11 + 4] + 3.0 * t * (1.0 - t) * (1.0 - t) * buf[i * 11 + 6] + 3 * t * t * (1.0 - t) * buf[i * 11 + 8] + t * t * t * buf[i * 11 + 10];\r
+ if(*ly > y) *ly = y;\r
+ if(*ry < y) *ry = y;\r
+ }\r
+ break;\r
+ case 7:\r
+ if(*ly > buf[i * 11 + 4]) *ly = buf[i * 11 + 4];\r
+ if(*ry < buf[i * 11 + 4]) *ry = buf[i * 11 + 4];\r
+ for(t = 0; t < 1; t = t + 0.05){\r
+ y = (1.0 - t) * (1.0 - t) * buf[i * 11 + 6] + 2.0 * t * (1.0 - t) * buf[i * 11 + 8] + t * t * buf[i * 11 + 10];\r
+ if(*ly > y) *ly = y;\r
+ if(*ry < y) *ry = y;\r
+ }\r
+ }\r
+ }\r
+ free(buf);\r
+ */\r
+ /*\r
int i;\r
int *buf, strokes;\r
\r
}\r
}\r
free(buf);\r
+ */\r
}\r
\r
-GString * CalcSizes(const GString *in, int mode){\r
+KGString * CalcSizes(const KGString *in, int mode){\r
int i, j, k, basewidth, one_lineX, one_lineY;\r
int dlx1, drx1, dly1, dry1;\r
int px1, py1;\r
\r
int *buf, strokes;\r
int tf[12];\r
- GString *out;\r
+ KGString *out;\r
\r
- out = g_string_new("");\r
+ out = kg_string_new("");\r
basewidth = pngWidth * 0.9;\r
\r
if(mode == 0){\r
heightT = pngWidth * 0.9 * 0.5;\r
}\r
\r
- if(flg_boxT % 64 / 32 != 0){\r
- buf = convertStroke(in->str, buf, &strokes);\r
- for(i = 0; i < strokes; i++){\r
- if(buf[i * 11 + 0] == 0) j = buf[i * 11 + 4];// j : center line\r
+ /*\r
+if(flg_boxT % 64 / 32 != 0){\r
+ buf = convertStroke(in->str, buf, &strokes);\r
+ for(i = 0; i < strokes; i++){\r
+ if(buf[i * 11 + 0] == 0) j = buf[i * 11 + 4];// j : center line\r
}\r
free(buf);\r
k = max(j - dlx1, drx1 - j);// k : distance from center line\r
pr1 = (basewidth * 0.5) / k;\r
- \r
+ \r
if(k == j - dlx1) px1 = 0;\r
else px1 = pngWidth * 0.5 - j * pr1;\r
- }\r
- else if(dlx1 == drx1){\r
+ }\r
+ else\r
+*/\r
+ if(dlx1 == drx1){\r
pr1 = 1.0;\r
px1 = pngWidth / 2 - dlx1;\r
- }\r
- else{\r
+ }\r
+ else{\r
pr1 = (double)widthT/(drx1 - dlx1);\r
px1 = pngWidth / 2 - (double)((dlx1 + drx1) / 2 * pr1);\r
if(flg_boxT % 2 / 1 != 0 && flg_boxT % 4 / 2 == 0) px1 = px1 + kWidth * 1.5;\r
if(flg_boxT % 2 / 1 == 0 && flg_boxT % 4 / 2 != 0) px1 = px1 - kWidth * 1.5;\r
- }\r
+ }\r
\r
if(dly1 == dry1){\r
pry1 = 1.0;\r
tf[2] = px1 + pr1 * 200;\r
tf[3] = py1 + pry1 * 200;\r
addStrokeWithTransform(in, 1, tf, out, 0);\r
- return g_string_new(out->str);\r
+ return kg_string_new(out->str);\r
}\r
\r
void DrawBox(){\r
}\r
}\r
\r
-void CalcOptions(const GString *in, int *mitsudo, int *flag, double *yoko, double *tate){\r
+void CalcOptions(const KGString *in, int *mitsudo, int *flag, double *yoko, double *tate){\r
int i, j, k, l, flg;\r
int dlx1, drx1, dly1, dry1;\r
int kari, mode;\r
if(buf[i * 11 + 0] % 10 == 0){\r
if(buf[i * 11 + 1] != 0) *yoko = (double)(buf[i * 11 + 1]) * 0.1;\r
if(buf[i * 11 + 2] != 0) *tate = (double)(buf[i * 11 + 2]) * 0.1;\r
- if(buf[i * 11 + 3] != 0) *flag = *flag + buf[i * 11 + 3] * 16;\r
+ if(buf[i * 11 + 3] != 0) *flag = *flag + buf[i * 11 + 3];\r
}\r
}\r
free(buf);\r
}\r
\r
-void DoDrawParts(const GString *in, const int lx1, const double rf1, const int ly1, const double rfy1){\r
+void DoDrawParts(const KGString *in, const int lx1, const double rf1, const int ly1, const double rfy1){\r
int i;\r
int *buf, strokes;\r
\r
free(buf);\r
}\r
\r
-void DoDrawMixFont(const GString *in1,\r
+void DoDrawMixFont(const KGString *in1,\r
const int lx1,\r
const double rf1,\r
- const GString *in2,\r
+ const KGString *in2,\r
const int lx2,\r
const double rf2,\r
const int ly1,\r