sclass ImageSurfaceWithXMarkers extends ImageSurface { new L markers; *(BufferedImage img, Collection _markers) { super(img); addAll(this.markers, _markers); overlay = voidfunc(Graphics2D g) { g.setColor(Color.red); for (float x : markers) { Pt p = pointToComponentCoordinates(x, 0); g.drawLine(p.x, 0, p.x, getHeight()-1); } }; disableImageSurfaceSelector(this); imageSurfaceOnMouseDrag(this, voidfunc(Pt p) { //_print("p=" + p); Float marker = floatCloseTo(markers, p.x, 2/zoomX); if (marker == null) markers.add((float) p.x); else replaceElement(markers, marker, (float) p.x); repaint(); }); } }