sclass IIImageSurface extends ImageSurface { IBWIntegralImage ii; *() {} *(IBWIntegralImage *ii) {} *(IBWIntegralImage *ii, BufferedImage img) { super(img); } void drawImageItself(int w, int h, Graphics2D g) { if (ii == null) ret with super.drawImageItself(w, h, g); int iw = getZoomedWidth(), ih = getZoomedHeight(); Rect r = toRect(getVisibleRect()); //_print(visibleRect := r); // TODO: scale only the visible part //var scaled = scaledGrayImageFromBWIntegralImage(ii, iw, ih); var scaled = scaledGrayImageFromBWIntegralImage_clip(ii, doubleRatio(iw, ii.getWidth()), r); g.drawImage(scaled, r.x, r.y, null); } public void setImage(BufferedImage img) { ii = null; super.setImage(img); } void setImage(BWIntegralImage ii, BufferedImage img default null) { this.ii = ii; super.setImage(img); } bool hasImage() { ret ii != null || image != null; } int w() { ret ii != null ? ii.getWidth() : super.w(); } int h() { ret ii != null ? ii.getHeight() : super.h(); } }