- sclsvg [c+]
[..] La fonction [scl] translatepath_svgscl
Code
int translatepath_svg_xpl(){
scltracefa(§, ƒ, ∅);
scltracefc("scl-%s (%s) : %s\n\n", sclver(), sclsec(), temps_char(0));
int dimn=4, crdj[4]={1, 2, 1, 1};
int cn1, cn2, cn3, cn4;
int ci, pi/*, pa, pe*/;
char svgpath_e[]="../../../php/wks-eclipse/emosign/prd/hr/20110831032136!Meuble_Moucheture_d_hermine.svg";
void **pth1=svg_path_xpl(svgpath_e, dimn, &crdj[0], 0, &cn1);
/*int *pn1=(int*)pth1[0];*/
double **px1=(double**)pth1[1], **py1=(double**)pth1[2];
crdj[0]=1; crdj[1]=2; crdj[2]=1; crdj[3]=3;
void **pth3=svg_path_xpl(svgpath_e, dimn, &crdj[0], 0, &cn3);
int *pn3=(int*)pth3[0];
double **px3=(double**)pth3[1]/*, **py3=(double**)pth3[2]*/;
double xa3= ∞rd, xe3=-∞rd;
for(ci=0;ci<cn3;ci++){
for(pi=0;pi<pn3[ci];pi++){
if(xa3>px3[ci][pi]){ xa3=px3[ci][pi]; /*pa=pi;*/ }
if(xe3<px3[ci][pi]){ xe3=px3[ci][pi]; /*pe=pi;*/ }
}
}
crdj[0]=1; crdj[1]=2; crdj[2]=1; crdj[3]=2;
void **pth2=svg_path_xpl(svgpath_e, dimn, &crdj[0], 0, &cn2);
int *pn2=(int*)pth2[0];
double **px2=(double**)pth2[1]/*, **py2=(double**)pth2[2]*/;
double xa2= ∞rd, xe2=-∞rd;
for(ci=0;ci<cn2;ci++){
for(pi=0;pi<pn2[ci];pi++){
if(xa2>px2[ci][pi]){ xa2=px2[ci][pi]; }
if(xe2<px2[ci][pi]){ xe2=px2[ci][pi]; }
}
}
scltracefc("Translation : %lf, %lf\n", xa2-(-xe3), xe2-(-xa3));
double tx=-px1[0][0], ty=-py1[0][0];
double dr=0.5;
int ndigit = (int)ceil(-log10(dr-floor(dr)));
crdj[0]=1; crdj[1]=2; crdj[2]=1; crdj[3]=1;
char *path1883=translatepath_svg_xpl(svgpath_e, dimn, &crdj[0], tx, ty, dr, &cn1);
//
crdj[0]=1; crdj[1]=2; crdj[2]=1; crdj[3]=2;
char *path1887=translatepath_svg_xpl(svgpath_e, dimn, &crdj[0], tx, ty, dr, &cn2);
//
crdj[0]=1; crdj[1]=2; crdj[2]=1; crdj[3]=3;
char *path1893=translatepath_svg_xpl(svgpath_e, dimn, &crdj[0], tx, ty, dr, &cn3);
//
crdj[0]=1; crdj[1]=2; crdj[2]=1; crdj[3]=4;
char *path1895=translatepath_svg_xpl(svgpath_e, dimn, &crdj[0], tx, ty, dr, &cn4);
char svgpath_s[]="./srt/Meuble_Moucheture_d_hermine-rev-04.svg";
scltracefc("SVG file generation: %s\n", svgpath_s);
FILE *svg=fopen(svgpath_s, "w+");
fprintf(svg, "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n");
fprintf(svg, "<!-- Created with Inkscape (http://www.inkscape.org/) -->\n");
fprintf(svg, "<!-- Modified by scientil-%s %s -->\n", sclver(), temps_char(0));
double width = dr*round(174.18246/dr);
double height = dr*round(326.1676/dr);
fprintf(svg, "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"%s\" height=\"%s\">\n",
dbl_str(width, ndigit), dbl_str(height, ndigit));
double transx = dr*round((-288.6282+px1[0][0])/dr);
double transy = dr*round((-44.98148+py1[0][0])/dr);
fprintf(svg, " <path transform=\"translate(%s,%s)\" style=\"stroke:#000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round\" d=\"%s%s%s%s\"/>\n",
dbl_str(transx, ndigit), dbl_str(transy, ndigit), path1883, path1887, path1893, path1895);
fprintf(svg, "</svg>");
fclose(svg);
scltracefe(§, ƒ, ∅);
return 0;
}
/* ƒ décorée par
le 27-09-2025 14:37:24 */
char *translatepath_svg_xpl(const char* filepath, int dimn, int *crdj,
double tx, double ty, double dr, int *cn){
int ierr=-1;
scltracefa(§, ƒ, ∅);
int dimi;
char **repnom = frepnom(filepath);
char *idf = repnom[2];
std::string sidf = std::string(idf)+"_"+num_str<int>(crdj[0]);
for(dimi=1;dimi<dimn;dimi++){
sidf += "-" + num_str<int>(crdj[dimi]);
}
/*finfo_xml(filepath);*/
FILE *fid = fopen_xml(filepath, dimn, crdj);
if(fid==∅){
scltracerr(§, ƒ, ∅, "erreur fopen_xml()\n");
scltracefe(§, ƒ, ∅);
return ∅;
} ierr--;
int ic; char ac='\0', bc='\0', cc='\0';
// On avance jusqu'a l'attribut d="..."
while((ac!='d')||(bc!='=')||(cc!='"')){
ic=fgetc(fid); ac=bc; bc=cc; cc=(char)ic;
}
char *path = translatepath_svg(fid, tx, ty, dr);
fclose(fid);
scltracefc("path='%s'\n", path);
scltracefe(§, ƒ, ∅);
return path;
}
/* ƒ décorée par
le 27-09-2025 14:37:24 */
Sortie
[>..\xpl\src\sclsvg.xpl.cpp.translatepath_svg_xpl]
scl-25.09 (gwin64) : 27-09-2025 14:37:24
[>..\xpl\src\sclsvg.xpl.cpp.svg_path_xpl]
cn=1
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
<< END OF DISLIN / VERSION 11.3.2 <<
<< Date : 27.09.2025 Time : 14:37:24 Pageformat: DA4L <<
<< Vectors : 424 Warnings: 0 Fileformat: SVG <<
<< Metafile: ./srt/20110831032136!Meuble_Moucheture_d_hermine <<
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
[<..\xpl\src\sclsvg.xpl.cpp.svg_path_xpl]
[>..\xpl\src\sclsvg.xpl.cpp.svg_path_xpl]
cn=1
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
<< END OF DISLIN / VERSION 11.3.2 <<
<< Date : 27.09.2025 Time : 14:37:24 Pageformat: DA4L <<
<< Vectors : 186 Warnings: 0 Fileformat: SVG <<
<< Metafile: ./srt/20110831032136!Meuble_Moucheture_d_hermine <<
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
[<..\xpl\src\sclsvg.xpl.cpp.svg_path_xpl]
[>..\xpl\src\sclsvg.xpl.cpp.svg_path_xpl]
cn=1
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
<< END OF DISLIN / VERSION 11.3.2 <<
<< Date : 27.09.2025 Time : 14:37:24 Pageformat: DA4L <<
<< Vectors : 184 Warnings: 0 Fileformat: SVG <<
<< Metafile: ./srt/20110831032136!Meuble_Moucheture_d_hermine <<
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
[<..\xpl\src\sclsvg.xpl.cpp.svg_path_xpl]
Translation : 751.438810, 751.438810
[>..\xpl\src\sclsvg.xpl.cpp.translatepath_svg_xpl]
path='M0 0c-14 70-40.5 120-69 155.5c12-3.5 25-13.5 38-22.5c-8 18.5-16 34.5-23.5 50.5c4.5-1.5 19.5-18 40-42c3 33 7.5 70 14 92.5c5-22.5 9-59.5 13-93.5c12 15 24 30.5 40.5 43.5L30 132c12 8.5 25.5 19.5 38 24c-30-37.5-55.5-86-68-156z'
[<..\xpl\src\sclsvg.xpl.cpp.translatepath_svg_xpl]
[>..\xpl\src\sclsvg.xpl.cpp.translatepath_svg_xpl]
path='M-57.5 4c-1.5-4-19.5 9-29.5-18.5c24 27.5 49-29 69 9c6 15.5-21 43-39 9.5z'
[<..\xpl\src\sclsvg.xpl.cpp.translatepath_svg_xpl]
[>..\xpl\src\sclsvg.xpl.cpp.translatepath_svg_xpl]
path='M54.5 3.5c1.5-4 19.5 9 29.5-18.5c-24 27.5-49-29-69 9c-6 15.5 21 43 39 9.5z'
[<..\xpl\src\sclsvg.xpl.cpp.translatepath_svg_xpl]
[>..\xpl\src\sclsvg.xpl.cpp.translatepath_svg_xpl]
path='M6.5-56c-3.5-2 13-17-11.5-33c21.5 29.5-39 41.5-6.5 69c14 9.5 46.5-11 18-36z'
[<..\xpl\src\sclsvg.xpl.cpp.translatepath_svg_xpl]
SVG file generation: ./srt/Meuble_Moucheture_d_hermine-rev-04.svg
[<..\xpl\src\sclsvg.xpl.cpp.translatepath_svg_xpl]