void Topo3PrimalRender<PFP>::toSVG(Utils::SVG::SVGOut& svg) { // alpha2 Utils::SVG::SvgGroup* svg2 = new Utils::SVG::SvgGroup("alpha2", svg.m_model, svg.m_proj); Geom::Vec3f* ptr = reinterpret_cast<Geom::Vec3f*>(m_vbo1->lockPtr()); svg2->setWidth(m_topo_relation_width); svg2->beginLines(); for (unsigned int i=0; i<m_nbRel2; ++i) { Geom::Vec3f P = ptr[2*i]; Geom::Vec3f Q = ptr[2*i+1]; svg2->addLine(P, Q, Geom::Vec3f(0.8f,0.0f,0.0f)); } svg2->endLines(); m_vbo1->releasePtr(); svg.addGroup(svg2); const Geom::Vec3f* colorsPtr = reinterpret_cast<const Geom::Vec3f*>(m_vbo2->lockPtr()); ptr= reinterpret_cast<Geom::Vec3f*>(m_vbo0->lockPtr()); Utils::SVG::SvgGroup* svg4 = new Utils::SVG::SvgGroup("darts", svg.m_model, svg.m_proj); svg4->setWidth(m_topo_dart_width); svg4->beginLines(); for (unsigned int i=0; i<m_nbDarts; ++i) { Geom::Vec3f col = colorsPtr[2*i]; if (col.norm2()>2.9f) col = Geom::Vec3f(1.0f,1.0f,1.0f) - col; svg4->addLine(ptr[2*i], ptr[2*i+1], col); } svg4->endLines(); svg.addGroup(svg4); Utils::SVG::SvgGroup* svg5 = new Utils::SVG::SvgGroup("dartEmb", svg.m_model, svg.m_proj); svg5->setWidth(m_topo_dart_width); svg5->beginPoints(); for (unsigned int i=0; i<m_nbDarts; ++i) { Geom::Vec3f col = colorsPtr[2*i]; if (col.norm2()>2.9f) col = Geom::Vec3f(1.0f,1.0f,1.0f) - col; svg5->addPoint(ptr[2*i], col); } svg5->endPoints(); svg.addGroup(svg5); m_vbo0->releasePtr(); m_vbo2->releasePtr(); }
void TopoRender::toSVG(Utils::SVG::SVGOut& svg) { // svg.setWidth(m_topo_relation_width); // // // PHI2 / beta2 // const Geom::Vec3f* ptr = reinterpret_cast<Geom::Vec3f*>(m_vbo2->lockPtr()); // svg.beginLines(); // for (unsigned int i=0; i<m_nbRel2; ++i) // svg.addLine(ptr[2*i], ptr[2*i+1],Geom::Vec3f(0.8f,0.0f,0.0f)); // svg.endLines(); // // m_vbo2->releasePtr(); // // //PHI1 /beta1 // ptr = reinterpret_cast<Geom::Vec3f*>(m_vbo1->lockPtr()); // svg.beginLines(); // for (unsigned int i=0; i<m_nbRel1; ++i) // svg.addLine(ptr[2*i], ptr[2*i+1],Geom::Vec3f(0.0f,0.7f,0.7f)); // svg.endLines(); // m_vbo1->releasePtr(); // // // const Geom::Vec3f* colorsPtr = reinterpret_cast<const Geom::Vec3f*>(m_vbo3->lockPtr()); // ptr= reinterpret_cast<Geom::Vec3f*>(m_vbo0->lockPtr()); // // svg.setWidth(m_topo_dart_width); // svg.beginLines(); // for (unsigned int i=0; i<m_nbDarts; ++i) // svg.addLine(ptr[2*i], ptr[2*i+1], colorsPtr[2*i]); // svg.endLines(); // // svg.beginPoints(); // for (unsigned int i=0; i<m_nbDarts; ++i) // svg.addPoint(ptr[2*i], colorsPtr[2*i]); // svg.endPoints(); // // m_vbo0->releasePtr(); // m_vbo3->releasePtr(); // PHI2 / beta2 Utils::SVG::SvgGroup* svg1 = new Utils::SVG::SvgGroup("phi2", svg.m_model, svg.m_proj); svg1->setToLayer(); const Geom::Vec3f* ptr = reinterpret_cast<Geom::Vec3f*>(m_vbo2->lockPtr()); svg1->setWidth(m_topo_relation_width); svg1->beginLines(); for (unsigned int i=0; i<m_nbRel2; ++i) svg1->addLine(ptr[2*i], ptr[2*i+1],Geom::Vec3f(0.8f,0.0f,0.0f)); svg1->endLines(); m_vbo2->releasePtr(); svg.addGroup(svg1); //PHI1 /beta1 Utils::SVG::SvgGroup* svg2 = new Utils::SVG::SvgGroup("phi1", svg.m_model, svg.m_proj); svg2->setToLayer(); ptr = reinterpret_cast<Geom::Vec3f*>(m_vbo1->lockPtr()); svg2->setWidth(m_topo_relation_width); svg2->beginLines(); for (unsigned int i=0; i<m_nbRel1; ++i) svg2->addLine(ptr[2*i], ptr[2*i+1],Geom::Vec3f(0.0f,0.7f,0.7f)); svg2->endLines(); m_vbo1->releasePtr(); svg.addGroup(svg2); const Geom::Vec3f* colorsPtr = reinterpret_cast<const Geom::Vec3f*>(m_vbo3->lockPtr()); ptr= reinterpret_cast<Geom::Vec3f*>(m_vbo0->lockPtr()); Utils::SVG::SvgGroup* svg3 = new Utils::SVG::SvgGroup("darts", svg.m_model, svg.m_proj); svg3->setToLayer(); svg3->setWidth(m_topo_dart_width); svg3->beginLines(); for (unsigned int i=0; i<m_nbDarts; ++i) svg3->addLine(ptr[2*i], ptr[2*i+1], colorsPtr[2*i]); svg3->endLines(); svg.addGroup(svg3); Utils::SVG::SvgGroup* svg4 = new Utils::SVG::SvgGroup("dartEmb", svg.m_model, svg.m_proj); svg4->setWidth(m_topo_dart_width); svg4->setToLayer(); svg4->beginPoints(); for (unsigned int i=0; i<m_nbDarts; ++i) svg4->addPoint(ptr[2*i], colorsPtr[2*i]); svg4->endPoints(); svg.addGroup(svg4); m_vbo0->releasePtr(); m_vbo3->releasePtr(); }
void Drawer::toSVG(Utils::SVG::SVGOut& svg) { const Geom::Vec3f* ptrP = reinterpret_cast<Geom::Vec3f*>(m_vboPos->lockPtr()); const Geom::Vec3f* ptrC = reinterpret_cast<Geom::Vec3f*>(m_vboCol->lockPtr()); Utils::SVG::SvgGroup* svg1 = new Utils::SVG::SvgGroup("points", svg.m_model, svg.m_proj); Utils::SVG::SvgGroup* svg2 = new Utils::SVG::SvgGroup("lines", svg.m_model, svg.m_proj); Utils::SVG::SvgGroup* svg3 = new Utils::SVG::SvgGroup("faces", svg.m_model, svg.m_proj); for (std::vector<PrimParam>::iterator pp = m_begins.begin(); pp != m_begins.end(); ++pp) { svg1->setWidth(pp->width); if (pp->mode == GL_POINTS) { unsigned int end = pp->begin + pp->nb; svg1->beginPoints(); for (unsigned int i=pp->begin; i<end; ++i) svg1->addPoint(ptrP[i], ptrC[i]); svg1->endPoints(); } svg2->setWidth(pp->width); if (pp->mode == GL_LINES) { unsigned int end = pp->begin + pp->nb; svg2->beginLines(); for (unsigned int i=pp->begin; i<end; i+=2) svg2->addLine(ptrP[i], ptrP[i+1], ptrC[i]); svg2->endLines(); } svg3->setWidth(pp->width); if ((pp->mode == GL_LINE_LOOP) || (pp->mode == GL_POLYGON)) { unsigned int end = pp->begin + pp->nb-1; svg3->beginLines(); for (unsigned int i=pp->begin; i<=end; ++i) svg3->addLine(ptrP[i], ptrP[i+1], ptrC[i]); svg3->addLine(ptrP[end], ptrP[pp->begin], ptrC[end]); svg3->endLines(); } if (pp->mode == GL_TRIANGLES) { unsigned int end = pp->begin + pp->nb; svg3->beginLines(); for (unsigned int i=pp->begin; i<end; i+=3) { svg3->addLine(ptrP[i], ptrP[i+1], ptrC[i]); svg3->addLine(ptrP[i+1], ptrP[i+2], ptrC[i+1]); svg3->addLine(ptrP[i+2], ptrP[i], ptrC[i+2]); } svg3->endLines(); } if (pp->mode == GL_QUADS) { unsigned int end = pp->begin + pp->nb; svg3->beginLines(); for (unsigned int i=pp->begin; i<end; i+=4) { svg3->addLine(ptrP[i], ptrP[i+1], ptrC[i]); svg3->addLine(ptrP[i+1], ptrP[i+2], ptrC[i+1]); svg3->addLine(ptrP[i+2], ptrP[i+3], ptrC[i+2]); svg3->addLine(ptrP[i+3], ptrP[i], ptrC[i+3]); } svg3->endLines(); } } svg.addGroup(svg1); svg.addGroup(svg2); svg.addGroup(svg3); m_vboPos->releasePtr(); m_vboCol->releasePtr(); }
void Topo3Render::toSVG(Utils::SVG::SVGOut& svg) { // PHI3 / beta3 Utils::SVG::SvgGroup* svg1 = new Utils::SVG::SvgGroup("phi3", svg.m_model, svg.m_proj); const Geom::Vec3f* ptr = reinterpret_cast<Geom::Vec3f*>(m_vbo3->lockPtr()); svg1->setWidth(m_topo_relation_width); svg1->beginLines(); for (unsigned int i=0; i<m_nbRel3; ++i) { Geom::Vec3f P = (ptr[4*i]+ ptr[4*i+3])/2.0f; Geom::Vec3f Q = (ptr[4*i+1]+ ptr[4*i+2])/2.0f; svg1->addLine(P, Q,Geom::Vec3f(0.8f,0.8f,0.0f)); } svg1->endLines(); m_vbo3->releasePtr(); svg.addGroup(svg1); // PHI2 / beta2 Utils::SVG::SvgGroup* svg2 = new Utils::SVG::SvgGroup("phi2", svg.m_model, svg.m_proj); ptr = reinterpret_cast<Geom::Vec3f*>(m_vbo2->lockPtr()); svg2->setWidth(m_topo_relation_width); svg2->beginLines(); for (unsigned int i=0; i<m_nbRel2; ++i) { Geom::Vec3f P = (ptr[4*i]+ ptr[4*i+3])/2.0f; Geom::Vec3f Q = (ptr[4*i+1]+ ptr[4*i+2])/2.0f; svg2->addLine(P, Q,Geom::Vec3f(0.8f,0.0f,0.0f)); } svg2->endLines(); m_vbo2->releasePtr(); svg.addGroup(svg2); //PHI1 /beta1 Utils::SVG::SvgGroup* svg3 = new Utils::SVG::SvgGroup("phi1", svg.m_model, svg.m_proj); ptr = reinterpret_cast<Geom::Vec3f*>(m_vbo1->lockPtr()); svg3->setWidth(m_topo_relation_width); svg3->beginLines(); for (unsigned int i=0; i<m_nbRel1; ++i) svg3->addLine(ptr[2*i], ptr[2*i+1],Geom::Vec3f(0.0f,0.7f,0.7f)); svg3->endLines(); m_vbo1->releasePtr(); svg.addGroup(svg3); const Geom::Vec3f* colorsPtr = reinterpret_cast<const Geom::Vec3f*>(m_vbo4->lockPtr()); ptr= reinterpret_cast<Geom::Vec3f*>(m_vbo0->lockPtr()); Utils::SVG::SvgGroup* svg4 = new Utils::SVG::SvgGroup("darts", svg.m_model, svg.m_proj); svg4->setWidth(m_topo_dart_width); svg4->beginLines(); for (unsigned int i=0; i<m_nbDarts; ++i) { Geom::Vec3f col = colorsPtr[2*i]; if (col.norm2()>2.9f) col = Geom::Vec3f(1.0f,1.0f,1.0f) - col; svg4->addLine(ptr[2*i], ptr[2*i+1], col); } svg4->endLines(); svg.addGroup(svg4); Utils::SVG::SvgGroup* svg5 = new Utils::SVG::SvgGroup("dartEmb", svg.m_model, svg.m_proj); svg5->setWidth(m_topo_dart_width); svg5->beginPoints(); for (unsigned int i=0; i<m_nbDarts; ++i) { Geom::Vec3f col = colorsPtr[2*i]; if (col.norm2()>2.9f) col = Geom::Vec3f(1.0f,1.0f,1.0f) - col; svg5->addPoint(ptr[2*i], col); } svg5->endPoints(); svg.addGroup(svg5); m_vbo0->releasePtr(); m_vbo4->releasePtr(); }