[..] 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]