外部変形は データのやり取りをテキストファイルで行うので プログラム言語は 自由に選ぶことができます。図形は機能的かつシンプルなため、数多くのユーザーに受け入れられています。
gccで指示点を確認する(hp)
:gccで指示点を確認する(hp)
@echo off
if not exist %~dpn0.exe (
for /f "delims=:" %%n in ('findstr /n "^#!" %0') do (
more +%%n %0 > %~dpn0.c
gcc -Os %~dpn0.c -o %~dpn0.exe -s
)
)
%~dpn0
goto:eof
REM #jww
REM #1-%d 点を指示してください
REM #99#
REM #zs
REM #e
#!この次の行からプログラムを書いてください
#include "jw.h"
int main(void)
{
FILE *f, *g;
int i, n;
char S_[256], *F[20];
char SS[256];
double hs[16], w, h, hp[101][2];
char lg[4], plg[4], nn[4];
int flg = 0, hpn = 0;
double sc;
if ( (f = fopen("jwc_temp.txt", "r")) != NULL) {
g = fopen("myfiles", "w");
while (fgets(S_, 256, f) != NULL) {
strcpy(SS, chomp(S_));
split(SS, F);
if (strncmp(S_, "hq", 2) == 0) fprintf(g, "hd\n");
if (strncmp(S_, "hs", 2) == 0) {
for (i = 0; i < 16; i++) hs[i] = atof(F[i+1]);
}
if (strncmp(S_, "hzs", 3) == 0) { w = atof(F[1]); h = atof(F[2]); }
if (strncmp(S_, "hp", 2) == 0) {
n = strlen(F[0]);
substr(F[0], 2, n-1, nn);
chomp(nn);
if (n > 0 && nn[n-1] == '-')
{
substr(F[0], 2, n-2, nn);
}
i = atoi(nn);
hp[i][0] = atof(F[1]);
hp[i][1] = atof(F[2]);
hpn++;
}
if (strncmp(S_, "lg", 2) == 0) {
n = strlen(S_);
substr(S_, 2, n-1, plg);
if (flg == 0) { strcpy(lg, plg); flg = 1; }
}
}
} else {
exit(MISSING_JWC_TEMP_TXT);
}
sc = hs[htoi(lg)];
w *= sc;
h *= sc;
fprintf(g, "%.15g %.15g %.15g %.15g\n", (-w) / 2.0, 0.0, w / 2.0, 0.0);
fprintf(g, "%.15g %.15g %.15g %.15g\n", 0.0, (-h) / 2.0, 0.0, h / 2.0);
fprintf(g, "ch 0 0 1 0 \"[0, 0]\n");
for (i = 1; i <= hpn; i++) {
fprintf(g, "pt %.15g %.15g\n", hp[i][0], hp[i][1]);
fprintf(g, "ch %.15g %.15g 1 0 \"[%.15g, %.15g]\n", hp[i][0], hp[i][1], hp[i][0], hp[i][1]);
}
fclose(g);
fclose(f);
remove("jwc_temp.txt");
rename("myfiles", "jwc_temp.txt");
return 0;
}