!7 module HorizontalAutoSplit > DynImageSurface { float threshold = 0.99f; transient ReliableSingleThread rst = dm_rst(this, r segmentIt); visualize { JSlider slider = jLiveValueSlider(dm_fieldLiveValue('threshold)); main.onChange(slider, rst); ret withCenteredLineBelow(super.visualize(), withLabel("Threshold:", slider)); } start { ownResource(vmBus_onMessage('newClipboardContents, voidfunc(fO o) { if (o cast BufferedImage) { temp enter(); thread { setImage(o); rst.trigger(); } } })); } void segmentIt { temp enter(); if (!hasImage()) ret; overlaySelectionsOnImageSurface(imageSurface, horizontalAutoSplitThenAutoCrop(BWImage(getImage()), threshold)); } }