外部変形は データのやり取りをテキストファイルで行うので プログラム言語は 自由に選ぶことができます。図形は機能的かつシンプルなため、数多くのユーザーに受け入れられています。
gccでソリッド線形・三角形・四角形を確認する(sl)
:gccでソリッド線形・三角形・四角形を確認する(sl)
@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 #h1
REM #hc ソリッド線形・三角形・四角形を選択してください
REM #e
#!この次の行からプログラムを書いてください
#include "jw.h"
struct __sl__
{
char sl[4];
double x1;
double y1;
double x2;
double y2;
double x3;
double y3;
double x4;
double y4;
};
int main(void)
{
FILE *f, *g;
int i, NF, sln = 0;
char S_[256], *F[20];
char SS[256];
struct __sl__ sl[101];
int slno[101];
if ( (f = fopen("jwc_temp.txt", "r")) != NULL) {
g = fopen("myfiles", "w");
while (fgets(S_, 256, f) != NULL) {
strcpy(SS, chomp(S_));
NF = split(SS, F);
if (strncmp(S_, "hq", 2) == 0) {
fprintf(g, "hd\n");
continue;
}
if (strncmp(S_, "sl", 2) == 0) {
sln += 1;
strcpy(sl[sln].sl, F[0]);
if (NF == 5) {
sl[sln].x1 = atof(F[1]);
sl[sln].y1 = atof(F[2]);
sl[sln].x2 = atof(F[3]);
sl[sln].y2 = atof(F[4]);
} if (NF == 7) {
sl[sln].x1 = atof(F[1]);
sl[sln].y1 = atof(F[2]);
sl[sln].x2 = atof(F[3]);
sl[sln].y2 = atof(F[4]);
sl[sln].x3 = atof(F[5]);
sl[sln].y3 = atof(F[6]);
} if (NF == 9) {
sl[sln].x1 = atof(F[1]);
sl[sln].y1 = atof(F[2]);
sl[sln].x2 = atof(F[3]);
sl[sln].y2 = atof(F[4]);
sl[sln].x3 = atof(F[5]);
sl[sln].y3 = atof(F[6]);
sl[sln].x4 = atof(F[7]);
sl[sln].y4 = atof(F[8]);
}
slno[sln] = NF;
continue;
}
}
} else {
exit(MISSING_JWC_TEMP_TXT);
}
for (i = 1; i <= sln; i++) {
fprintf(g, "lc%d\n", (5+i));
NF = slno[i];
if (NF == 5) {
fprintf(g, "sl %.15lg %.15lg %.15lg %.15lg\n",
sl[i].x1, sl[i].y1, sl[i].x2, sl[i].y2);
} else if (NF == 7) {
fprintf(g, "sl %.15lg %.15lg %.15lg %.15lg %.15lg %.15lg\n",
sl[i].x1, sl[i].y1, sl[i].x2, sl[i].y2, sl[i].x3, sl[i].y3);
} else if (NF == 9) {
fprintf(g, "sl %.15lg %.15lg %.15lg %.15lg %.15lg %.15lg %.15lg %.15lg\n",
sl[i].x1, sl[i].y1, sl[i].x2, sl[i].y2, sl[i].x3, sl[i].y3, sl[i].x4, sl[i].y4);
}
}
fclose(g);
fclose(f);
remove("jwc_temp.txt");
rename("myfiles", "jwc_temp.txt");
return 0;
}