Code

Extensions. XAML export improvements.
[inkscape.git] / src / livarot / ShapeDraw.cpp
1 /*
2  *  ShapeDraw.cpp
3  *  nlivarot
4  *
5  *  Created by fred on Mon Jun 16 2003.
6  *
7  */
9 #include <cstdio>
10 #include <cstdlib>
11 #include <cstring>
12 #include "Shape.h"
13 //#include <ApplicationServices/ApplicationServices.h>
15 // debug routine for vizualizing the polygons
16 void
17 Shape::Plot (double ix, double iy, double ir, double mx, double my, bool doPoint,
18              bool edgesNo, bool pointsNo, bool doDir,char* fileName)
19 {
20   FILE*  outFile=fopen(fileName,"w+");
21 //  fprintf(outFile,"\n\n\n");
22   fprintf(outFile,"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n");
23   fprintf(outFile,"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.0//EN\"\n");
24   fprintf(outFile,"\"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd\">\n");
25   fprintf(outFile,"<svg:svg\n");
26   fprintf(outFile,"   id=\"svg1\"\n");
27   fprintf(outFile,"   inkscape:version=\"0.38cvs\"\n");
28   fprintf(outFile,"   xmlns:svg=\"http://www.w3.org/2000/svg\"\n");
29   fprintf(outFile,"   xmlns:sodipodi=\"http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd\"\n");
30   fprintf(outFile,"   xmlns:inkscape=\"http://www.inkscape.org/namespaces/inkscape\"\n");
31   fprintf(outFile,"   xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n");
32   fprintf(outFile,"   width=\"210mm\"\n");
33   fprintf(outFile,"   height=\"297mm\"\n");
34   fprintf(outFile,"   sodipodi:docbase=\"/Volumes/Sancho/inkscapecvs\"\n");
35   fprintf(outFile,"   sodipodi:docname=\"/Volumes/Sancho/inkscapecvs/modele.svg\">\n");
36   fprintf(outFile,"  <svg:defs\n");
37   fprintf(outFile,"     id=\"defs3\" />\n");
38   fprintf(outFile,"  <sodipodi:namedview\n");
39   fprintf(outFile,"     id=\"base\"\n");
40   fprintf(outFile,"     pagecolor=\"#ffffff\"\n");
41   fprintf(outFile,"     bordercolor=\"#666666\"\n");
42   fprintf(outFile,"     borderopacity=\"1.0\"\n");
43   fprintf(outFile,"     inkscape:pageopacity=\"0.0\"\n");
44   fprintf(outFile,"     inkscape:pageshadow=\"2\"\n");
45   fprintf(outFile,"     inkscape:zoom=\"0.43415836\"\n");
46   fprintf(outFile,"     inkscape:cx=\"305.25952637\"\n");
47   fprintf(outFile,"     inkscape:cy=\"417.84947271\"\n");
48   fprintf(outFile,"     inkscape:window-width=\"640\"\n");
49   fprintf(outFile,"     inkscape:window-height=\"496\"\n");
50   fprintf(outFile,"     inkscape:window-x=\"20\"\n");
51   fprintf(outFile,"     inkscape:window-y=\"42\" />\n");
52   
53         if ( doPoint ) {
54                 for (int i=0;i<numberOfPoints();i++) {
55                         double   ph=(getPoint(i).x[0]-ix)*ir+mx;
56                         double   pv=(getPoint(i).x[1]-iy)*ir+my;
57       fprintf(outFile,"     <svg:circle cx=\"%f\" cy=\"%f\" r=\"5\" fill=\"none\" stroke=\"red\" stroke-width=\"0.25\" />\n",ph,pv); // localizing ok
58     }
59         }
60   if ( pointsNo ) {
61                 for (int i=0;i<numberOfPoints();i++) {
62                         double   ph=(getPoint(i).x[0]-ix)*ir+mx;
63                         double   pv=(getPoint(i).x[1]-iy)*ir+my;
64       fprintf(outFile,"     <svg:text x=\"%f\" y=\"%f\" font-family=\"Monaco\" font-size=\"5\" fill=\"blue\" >\n",ph-2,pv+1); // localizing ok
65       fprintf(outFile,"%i\n",i);
66       fprintf(outFile,"     </text>\n");
67     }
68   }
69         {
70                 for (int i=0;i<numberOfEdges();i++) {
71                         int     stP=getEdge(i).st;
72                         int     enP=getEdge(i).en;
73                         if ( stP < 0 || enP < 0 ) continue;
74                         double   sh=(getPoint(stP).x[0]-ix)*ir+mx;
75                         double   sv=(getPoint(stP).x[1]-iy)*ir+my;
76                         double   eh=(getPoint(enP).x[0]-ix)*ir+mx;
77                         double   ev=(getPoint(enP).x[1]-iy)*ir+my;
78                         if ( doDir ) {
79                                 double   endh=(9*eh+1*sh)/10;
80                                 double   endv=(9*ev+1*sv)/10;
81         fprintf(outFile,"     <svg:line x1=\"%f\" y1=\"%f\" x2=\"%f\" y2=\"%f\" stroke=\"black\" stroke-width=\"0.5\" />\n",sh,sv,endh,endv); // localizing ok
82                         } else {
83         fprintf(outFile,"     <svg:line x1=\"%f\" y1=\"%f\" x2=\"%f\" y2=\"%f\" stroke=\"black\" stroke-width=\"0.5\" />\n",sh,sv,eh,ev); // localizing ok
84                         }
85                 }
86         }
87   if ( edgesNo ) {
88                 for (int i=0;i<numberOfEdges();i++) {
89                         int     stP=getEdge(i).st;
90                         int     enP=getEdge(i).en;
91                         if ( stP < 0 || enP < 0 ) continue;
92                         double   sh=(getPoint(stP).x[0]-ix)*ir+mx;
93                         double   sv=(getPoint(stP).x[1]-iy)*ir+my;
94                         double   eh=(getPoint(enP).x[0]-ix)*ir+mx;
95                         double   ev=(getPoint(enP).x[1]-iy)*ir+my;
96       fprintf(outFile,"     <svg:text x=\"%f\" y=\"%f\" font-family=\"Monaco\" font-size=\"5\" fill=\"blue\" >\n",(sh+eh)/2+2,(sv+ev)/2); // localizing ok
97       fprintf(outFile,"%i\n",i);
98       fprintf(outFile,"     </text>\n");
99                 }
100   }
101   
102   fprintf(outFile,"</svg>\n");
103   fclose(outFile);