!7 module WebCamPixelated > DynImageSurface { int width = 16; transient BufferedImage lastImage; start { doEvery(1000, rstUpdate()); ImageSurface.verbose = true; } enhanceFrame { dm_intFieldMenuItem(f, 'width, formTitle := "Set Pixelated Image Width", onSet := r { setField(lastImage := null) }); } afterVisualize { imageSurface.setDoubleBuffered(true); imageSurface.noAlpha = true; imageSurface.interpolationMode = RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR; } void update { if (imageSurface == null) ret; final BufferedImage img = dm_webCamImage(); temp tempAfterwards(r { lastImage = img }); if (img == null || img == lastImage) ret; setZoom(doubleRatio(img.getWidth(), width)); setImage(resizeImage(img, width)); } }