From bd8a347e86c292855090f261bf7efe081e034338 Mon Sep 17 00:00:00 2001 From: cignoni Date: Thu, 9 Jul 2009 07:29:22 +0000 Subject: [PATCH] Added first version of crosshairs in svg (to be corrected) Thanks to Lorenzo Marchi --- wrap/io_edgemesh/export_svg.h | 70 +++++++++++++++++++++++++++++++++-- 1 file changed, 67 insertions(+), 3 deletions(-) diff --git a/wrap/io_edgemesh/export_svg.h b/wrap/io_edgemesh/export_svg.h index df90b52e..1095e001 100644 --- a/wrap/io_edgemesh/export_svg.h +++ b/wrap/io_edgemesh/export_svg.h @@ -45,7 +45,10 @@ public: // the default is two column and enough row. If numRow is not sufficient it is automatically enlarged. int numCol; int numRow; - + + bool crossHairs; //toggle crossHairs printing + float crossHairRad; //crossHair radius in cm + Point2f sizeCm; // The size, in the drawing, of each ViewBox (in cm) Point2f marginCm; // how much space between each slice box (in cm) @@ -93,8 +96,11 @@ public: sizeCm=Point2f(10,10); marginCm=Point2f(1,1); showTextDetails=true; - numCol=2; + numCol=2; numRow=10; + + crossHairs=true; + crossHairRad=.25f; } }; @@ -173,11 +179,67 @@ static void WriteXmlBody(FILE* fpo, EdgeMeshType &mp, SVGProperties &pro, int me fprintf(fpo, " \n", pro.sizeCm[0], pro.sizeCm[1], pro.marginCm[0]+colInd*(pro.sizeCm[0]+pro.marginCm[0]), pro.marginCm[1]+rowInd*(pro.sizeCm[1]+pro.marginCm[1])); + + // write crosshairs + if (pro.crossHairs){ + // WriteCrossHairs(fpo); + float r=pro.crossHairRad; + //ch1 + fprintf(fpo, " \n",meshIndex, + pro.marginCm[0]+colInd*(pro.sizeCm[0]+pro.marginCm[0]), + pro.marginCm[1]+rowInd*(pro.sizeCm[1]+pro.marginCm[1]), + r*2,r*2 + ); + fprintf(fpo," "); + fprintf(fpo," "); + fprintf(fpo," "); + fprintf(fpo," "); + + //ch2 + fprintf(fpo, " \n",meshIndex, + pro.marginCm[0]+(colInd+1)*(pro.sizeCm[0]+pro.marginCm[0])-r*2-pro.marginCm[0], + pro.marginCm[1]+(rowInd+1)*(pro.sizeCm[1]+pro.marginCm[1])-r*2-pro.marginCm[1], + r*2,r*2 + ); + fprintf(fpo," "); + fprintf(fpo," "); + fprintf(fpo," "); + fprintf(fpo," "); + + //ch3 + fprintf(fpo, " \n",meshIndex, + pro.marginCm[0]+colInd*(pro.sizeCm[0]+pro.marginCm[0]), + pro.marginCm[1]+(rowInd+1)*(pro.sizeCm[1]+pro.marginCm[1])-pro.marginCm[1]-2*r, + r*2,r*2 + ); + fprintf(fpo," "); + fprintf(fpo," "); + fprintf(fpo," "); + fprintf(fpo," "); + + //ch3 + fprintf(fpo, " \n",meshIndex, + pro.marginCm[0]+(colInd+1)*(pro.sizeCm[0]+pro.marginCm[0])-pro.marginCm[0]-2*r, + pro.marginCm[1]+rowInd*(pro.sizeCm[1]+pro.marginCm[1]), + r*2,r*2 + ); + fprintf(fpo," "); + fprintf(fpo," "); + fprintf(fpo," "); + fprintf(fpo," "); + + } + fprintf(fpo, " \n", pro.strokeColor.c_str(), pro.strokeLineCap.c_str(),pro.lineWidthPt/100.0f); + + fprintf(fpo, " \n", meshIndex,pro.sizeCm[0],pro.sizeCm[1], pro.marginCm[0]+colInd*(pro.sizeCm[0]+pro.marginCm[0]), pro.marginCm[1]+rowInd*(pro.sizeCm[1]+pro.marginCm[1]) ); + + + // Main loop of edge printing typename EdgeMeshType::EdgeIterator i; @@ -205,7 +267,9 @@ static void WriteXmlBody(FILE* fpo, EdgeMeshType &mp, SVGProperties &pro, int me fprintf(fpo, "\n"); } - + + + };