diff --git a/wrap/qt/PolyToQImage.cpp b/wrap/qt/PolyToQImage.cpp index 17af14a0..5f22f27c 100644 --- a/wrap/qt/PolyToQImage.cpp +++ b/wrap/qt/PolyToQImage.cpp @@ -18,11 +18,10 @@ void rectSetToPolySet(vector< Box2f > &rectVec, vector< vector > &polyV polyVec.back().push_back(Point2f(b.max[0],b.min[1])); polyVec.back().push_back(b.max); polyVec.back().push_back(Point2f(b.min[0],b.max[1])); - } } -void dumpPolySet(const char * imageName, vector< vector > &polyVec, int width, int height) +void dumpPolySet(const char * imageName, vector< vector > &polyVec, PolyDumperParam &pp) { Box2f bb; for(size_t i=0;i > &polyVec, int bb.Add(polyVec[i][j]); Similarity2f sim; - sim.sca = min(float(width)/bb.DimX(),float(height)/bb.DimY()); - sim.tra = Point2f(width/2.0f,height/2.0f)-bb.Center()*sim.sca; + sim.sca = min(float(pp.widthPx)/bb.DimX(),float(pp.heightPx)/bb.DimY()); + sim.tra = Point2f(pp.widthPx/2.0f,pp.heightPx/2.0f)-bb.Center()*sim.sca; vector trVec(polyVec.size(),sim); - dumpPolySet(imageName,polyVec,trVec,width,height); + dumpPolySet(imageName,polyVec,trVec,pp); } -void dumpPolySet(const char * imageName, vector< vector< vector > > &polyVecVec, vector &trVec, int width, int height) -{ - assert(polyVecVec.size() == trVec.size()); - QImage img(width,height,QImage::Format_RGB32); - img.fill(qRgb(128,128,128)); - - QSvgGenerator svg; - svg.setFileName(imageName); - QPainter painter; - - if(QString(imageName).endsWith("svg",Qt::CaseInsensitive)) - painter.begin(&svg); - else painter.begin(&img); - - for(size_t i=0;i ppQ; - for(int j=0;j > &polyVec, vector &trVec, int width, int height) +void dumpPolySet(const char * imageName, vector< vector > &polyVec, vector &trVec, PolyDumperParam &pp) { vector< vector< vector > > polyVecVec(polyVec.size()); for(size_t i=0;i > &polyVec, vec polyVecVec[i].resize(1); polyVecVec[i][0]=polyVec[i]; } - dumpPolySet(imageName,polyVecVec,trVec,width,height); + vector labelVec(polyVec.size()); + dumpPolySet(imageName,polyVecVec,trVec,labelVec,pp); +} + + + +void dumpPolySet(const char * imageName, vector< vector< vector > > &polyVecVec, vector &trVec, vector &labelVec, PolyDumperParam &pp) +{ + assert(polyVecVec.size() == trVec.size()); + QFont qf("courier",1); + QSvgGenerator svg; + svg.setFileName(imageName); +// pp.widthPx = pp.widthDot; +// pp.heightPx = pp.heightDot; + svg.setSize(QSize(pp.widthMm,pp.heightMm)); + svg.setResolution(pp.dpi); // ?? dpm or dpi + + QImage img(pp.widthPx,pp.heightPx,QImage::Format_RGB32); + img.fill(vcg::ColorConverter::ToQColor( pp.backgroundColor).rgb()); + + QPainter painter; + + if(QString(imageName).endsWith("svg",Qt::CaseInsensitive)) + painter.begin(&svg); + else painter.begin(&img); + QBrush bb; + QPen qp; + qp.setWidth(0); +// printf("polyVecVec.size() = %i \n",polyVecVec.size()); + for(size_t i=0;i ppQ; + for(int j=0;j +#include #include #include -void dumpPolySet(const char * imageName, std::vector< std::vector< std::vector > > &polyVecVec, std::vector &trVec, int width, int height); -void dumpPolySet(const char * imageName, std::vector< std::vector > &polyVec, std::vector &trVec, int width=1024,int height=1024); -void dumpPolySet(const char * imageName, std::vector< std::vector > &polyVec, int width=1024,int height=1024); -void rectSetToPolySet(std::vector< vcg::Box2f > &rectVec, std::vector< std::vector > &polyVec); +class PolyDumperParam +{ +public: + vcg::Color4b backgroundColor; + int widthPx; + int heightPx; + int widthMm; + int heightMm; + int dpi; + bool useDPI; + + PolyDumperParam() + { + backgroundColor = vcg::Color4b::Gray; + widthPx=1024; + heightPx=1024; + dpi=72; + widthMm = 100; + heightMm = 100; + useDPI=false; + } +}; + + void dumpPolySet(const char * imageName, std::vector< std::vector< std::vector > > &polyVecVec, std::vector &trVec, std::vector &labelVec, PolyDumperParam &pp); + void dumpPolySet(const char * imageName, std::vector< std::vector > &polyVec, std::vector &trVec, PolyDumperParam &pp); + void dumpPolySet(const char * imageName, std::vector< std::vector > &polyVec, PolyDumperParam &pp); + void rectSetToPolySet(std::vector< vcg::Box2f > &rectVec, std::vector< std::vector > &polyVec); + #endif // POLYTOQIMAGE_H