void fillImageWithDecompostion(const std::vector<Curve> & contours, png::image<png::rgb_pixel> & output) { // Color map for the DLL const png::rgb_pixel pixelColors[4] = { // redPixel png::rgb_pixel(255,0,0), // greenPixel png::rgb_pixel(0,255,0), // bluePixel png::rgb_pixel(0,0,255), // yellowPixel png::rgb_pixel(255,255,0) }; typedef typename DLL::Segment<DLL_Type> DLLSegment; Utils::GreedyDecomposition<DLLSegment> decompositor; unsigned int nbDLL = 0; for (typename std::vector<Curve>::const_iterator contourItor = contours.begin(); contourItor != contours.end(); ++contourItor) { // decompose the current contour typename std::vector<DLLSegment> dlls = decompositor.decomposeCurve(*contourItor); // color each DLL segment into the output image // and display the points coordinates of the DLL segment on the console unsigned int colorIndex = 3; for (typename std::vector<DLLSegment>::const_iterator dllItor = dlls.begin(); dllItor != dlls.end(); ++dllItor) { const Curve & curve = dllItor->getCurve(); if (verbose) std::cout << "DLL " << ++nbDLL << ":\t" << *dllItor << "\n\tPoints: "; for(typename Curve::const_iterator coordItor = curve.begin(); coordItor != curve.end(); ++coordItor) { output.set_pixel(coordItor->first, coordItor->second, pixelColors[colorIndex]); if (verbose) std::cout << "(" << coordItor->first << "," << coordItor->second << ") "; } if (verbose) std::cout << std::endl; colorIndex = (colorIndex + 1) % 3; } } }