!7 cm WebCamPixelated > DynImageSurface { int width = 16; switchable int interval = 1000; transient BufferedImage lastImage; start { doEvery(interval, rstUpdate()); dm_reloadOnFieldChange interval(); } enhanceFrame { dm_intFieldMenuItem(f, 'width, formTitle := "Set Pixelated Image Width", onSet := r { setField(lastImage := null) }); } afterVisualize { imageSurface_pixelated(imageSurface); } void update { if (imageSurface == null) ret; final BufferedImage img = dm_webCamImage(); temp tempAfterwards(r { lastImage = img }); if (img == null || img == lastImage) ret; if (lastImage == null) setZoom(doubleRatio(img.getWidth(), width)); setImage(resizeImage(img, width)); } }