Warning: session_start(): open(/var/lib/php/sessions/sess_bqbngesjfldj220lumqjcuaqus, O_RDWR) failed: No space left on device (28) in /var/www/tb-usercake/models/config.php on line 51
Warning: session_start(): Failed to read session data: files (path: /var/lib/php/sessions) in /var/www/tb-usercake/models/config.php on line 51
!7
cm LiveWebCamOnTop > DynSCP {
transient WebcamPanel panel;
int fpsLimit = -1;
switchable bool autoStart;
switchable bool showFPS;
switchable int height = 240;
switchable int posX;
switchable int posY;
void cleanMeUp_panel {
stopIt();
}
start {
dm_onFieldChange(ll("height", "posX", "posY"), r updatePanelSize);
if (autoStart)
thread { startIt(); }
}
enhanceFrame {
internalFramePopupMenuItem(f, "Save to AI Album",
rThread { dm_saveToAIAlbum(getImage()) });
internalFramePopupMenuItem(f, "Set FPS...", r {
final JTextField tf = jtextfield(str(fpsLimit));
showFormTitled("Set FPS Limit",
"FPS Limit (-1 for no limit, 0 for no updates):", tf,
rThread { setFPSLimit(parseInt(gtt(tf))) });
});
}
JComponent visualize2() {
ret panel != null
? jcenteredbutton("Stop", rThread stopIt)
: jcenteredbutton("Start", rThread startIt);
}
void updatePanelSize() swing {
var window = getWindow(panel);
if (panel == null || window == null) ret;
int h = height;
var pref = getPreferredSize(panel);
int w = widthForHeight(pref.getWidth(), pref.getHeight(), h);
int x1 = screenWidth()-w+posX, y1 = posY;
setWindowBounds(panel, x1, y1, w, h);
alwaysOnTop(panel);
}
void startIt enter {
selectWebCam(vf selectCam);
}
void startPreferredOrSelect {
selectWebCam_withPreferred(vf selectCam);
}
void selectCam(Webcam cam) swing {
enter;
if (panel != null) ret;
WebcamPanel panel = new(cam, false);
onClick(panel, r { dm_activateOSAndModule(me()) });
LiveWebCamOnTop.this.panel = panel;
bindToComponent(panel, null, r { panel.stop() });
updateFPSLimitInPanel();
showInTopRightCorner(panel);
updatePanelSize();
revisualize2(); // show stop button
}
void stopIt swing {
if (panel == null) ret;
disposeWindow(panel);
dispose panel;
revisualize2(); // show start button again
}
BufferedImage getImage() {
ret imageFromWebcamPanel(panel);
}
void setFPSLimit(int limit) {
setField(fpsLimit := limit);
updateFPSLimitInPanel();
}
void updateFPSLimitInPanel swing {
setModuleName((fpsLimit >= 0 ? fpsLimit + " FPS - " : "") + "Live WebCam");
if (panel == null) ret;
panel.stop();
if (fpsLimit == 0) ret; // TODO - want to keep last image there anyway
panel.setFPSDisplayed(showFPS && fpsLimit < 0);
if (fpsLimit > 0) panel.setFPSLimit(fpsLimit);
panel.setFPSLimited(fpsLimit > 0);
panel.start();
}
bool isWebCamLive() {
ret panel != null && fpsLimit != 0;
}
}