!7 sclass LiveWebCam > DynSCP { transient WebcamPanel panel; int fpsLimit = -1; void enhanceFrame(Container f) { internalFramePopupMenuItem(f/JInternalFrame, "FPS Limit...", r { final JTextField tf = jtextfield(str(fpsLimit)); showFormTitled("Set FPS Limit", "FPS Limit (-1 for no limit, 0 for no updates):", tf, r { setFPSLimit(parseInt(gtt(tf))) }); }); } JComponent visualize2() { ret jcenteredbutton("Start", rThread startIt); } void startIt { selectWebCam(voidfunc(Webcam cam) { final WebcamPanel panel = new WebcamPanel(cam, false); LiveWebCam.this.panel = panel; panel.setFPSDisplayed(true); bindToComponent(panel, null, r { panel.stop() }); updateFPSLimitInPanel(); setComponent(panel); dm_packFrame(); }); } BufferedImage getImage() { ret imageFromWebcamPanel(panel); } void setFPSLimit(int limit) { setField(fpsLimit := limit); updateFPSLimitInPanel(); } void updateFPSLimitInPanel { if (panel == null) ret; panel.stop(); if (fpsLimit == 0) ret; if (fpsLimit > 0) panel.setFPSLimit(fpsLimit); panel.setFPSLimited(fpsLimit > 0); panel.start(); } }