sclass Hi15ScanlineIndex { Hi15Image image; int[] indexed; new IntBuffer scanlines; *() {} *(Hi15Image *image) {} run { int w = image.getWidth(), h = image.getHeight(); short[] pixels = image.pixels; int lineStart = 0; indexed = new int[w*h]; for y to h: { int i = lineStart; int lineEnd = lineStart+w; while (i < lineEnd) { short color = pixels[i]; int j = i+1; if (j < lineEnd && pixels[j] == color) { do ++j; while (j < lineEnd && pixels[j] == color); scanlines.add(i); scanlines.add(j); int iScanline = scanlines.size(); for (int k = i; k < j; k++) indexed[k] = iScanline; } i = j; } lineStart += w; } } }