sclass G22DataWrangler > Stages { settable BufferedImage inputImage; settable bool withDiagonals = true; settable int blurPixels = 1; // kilobytes per compressed image (pessimistic estimate // counting 2 bytes for each int) new TargetAndActual maxKB; new TargetAndActual coveredPixelsPercentage; new TargetAndActual detailLevel; settable IPosterizer posterizer = new SinglePixelPosterizer(4); BufferedImage blurredImage; int maxLines; // We store the posterized image as Hi15 Hi15Image posterizedImage; FastRegions_Hi15Image regionMaker; L> regions; double detailDivisor() { ret areaRoot(inputImage); } // choose number of colors for posterized image selfType colors(int colors) { int perChannel = iceil(cbrt(colors)); posterizer = new SinglePixelPosterizer(perChannel); this; } stage "Blur" { blurredImage = blurBufferedImage(blurPixels, inputImage); } stage "Posterize" { posterizedImage = new Hi15Image(posterizeBufferedImage(blurredImage, posterizer)); } stage "Regions" { regionMaker = new FastRegions_Hi15Image(posterizedImage) .withDiagonals(withDiagonals); regions = regionMaker!; } stage "SSIs" { ssis = new L; for (region : regions) ssis.addAll(new G22_RegionToSSIs_v2(region).withDiagonals (withDiagonals)!); } stage "Lines" { maxLines = !detailLevel.hasTarget() ? Int.MAX_VALUE : iround(detailDivisor()*detailLevel.target()); } /* totalLines <- totalSSILines ssis // vectorize SSIs optimizedSSIs <- new VectorOptimizedSSIList ssis //print "optimizedSSIs" < l optimizedSSIs // take biggest ones, cut off at selected detail level optimizedSSIs <- VectorOptimizedSSIList alreadyOptimized < biggestSSIsFirst optimizedSSIs //print "optimizedSSIs" < l optimizedSSIs optimizedSSIs <- VectorOptimizedSSIList alreadyOptimized < takeFirstNSSILines maxLines optimizedSSIs //print "optimizedSSIs" < l optimizedSSIs // get stats keptLines <- totalSSILines optimizedSSIs vectorSSIs <- optimizedSSIs vectorSSIs ssis <- optimizedSSIs directSSIs totalSSIs <- l ssis directSSILines <- totalSSILines ssis vectorSSIPoints <- totalVectorSSIPoints vectorSSIs stats <- commaCombine list { resolution n2 totalLines "SSI line" n2_noPlural keptLines "kept" n2 optimizedSSIs "SSI" //n2 totalSSIs "Direct SSI" //n2 vectorSSIs "Vector SSI" n2 directSSILines "Direct SSI line" n2 vectorSSIPoints "Vector SSI point" } imageOut <- transparentImage resolution optimizedSSIs render imageOut infiller <- new ImageInfiller imageOut //infiller maxDepth 2 infiller unlimited infiller infillOpacity 254 //infiller eraseOriginalPixels imageOut <- infiller get imageOut <- renderImageOnBackground imageOut < Color black */ }