Transpiled version (13709L) is out of date.
!7 cm RecognizeScreen > DynPrintLogAndEnabled { switchable int x1; switchable int y1; switchable int w = screenWidth(); switchable int h = screenHeight(); switchable double maxFPS = 10; switchable int previewWidth = 200; switchable double statsEvery = 5; PersistableThrowable lastProcessingError; transient WithTimestamp<OKOrError<BufferedImage>> lastScreen; transient new Average screenShotTime; transient new Average iiTime; transient Timestamp loopStarted; transient new RestartableCountdown screenShotCountdown; transient BWIntegralImage ii; transient ImageSurface imageSurface; transient Throwable currentProcessingError; transient BufferedImage previewImage; Rect area() { ret rect(x1, y1, w, h); } start-thread { dm_registerAs_direct gazelleV(); dm_watchField enabled(r { if (enabled) dm_reload(); }); print("Screen bounds: " + allScreenBounds()); dm_doEvery(min(statsEvery, 10.0), statsEvery, r { if (enabled) printStats(); }); loopStarted = tsNow(); shoot(); } void shoot enter { if (!enabled) ret; long targetTime = sysNow()+iround(1000/maxFPS); long time = nanoTime(); try { lastScreen = withTimestamp(okOrError(-> screenshot(area()))); screenShotTime.add(nanosToSeconds(nanoTime()-time)); if (lastScreen->isOK()) { time = nanoTime(); ii = BWIntegralImage(lastScreen!!); //ii = BWIntegralImage_luminosity(lastScreen!!); iiTime.add(nanosToSeconds(nanoTime()-time)); previewImage = scaledBufferedImageFromBWIntegralImage(ii, previewWidth); imageSurface?.setImage(previewImage); } currentProcessingError = null; } catch print e { setField(lastProcessingError := currentProcessingError = e); sleepSeconds(60); // errors in processing are no good } screenShotCountdown.setTargetTime(targetTime, r shoot); } void printStats() { print(stats()); } S stats() { var screen = lastScreen?!; ret formatColonProperties_noNulls( "Monitored area", area(), "Error", screen?.getError(), "Last screenshot taken", lastScreen?.timeStamp(), "Average time to take a screenshot", screenShotTime, "Average time to make integral image", iiTime, "Capacity left in first core", percentRatioStrOneDigit(freeInCore()), "Total CPU used", percentRatioStrOneDigit((1-freeInCore())/numberOfCores()), ); } double freeInCore() { ret ratio(toSeconds(screenShotCountdown.totalSleepTime), elapsedSeconds(loopStarted)); } visual hsplit(super, jscroll_center(imageSurface = doubleBufferedImageSurface_noAlpha())); BufferedImage lastScreenImage() { ret getVar(getVar(lastScreen)); } }
download show line numbers debug dex old transpilations
Travelled to 3 computer(s): bhatertpkbcr, mowyntqkapby, mqqgnosmbjvj
No comments. add comment
Snippet ID: | #1033298 |
Snippet name: | Gazelle V (old) |
Eternal ID of this version: | #1033298/32 |
Text MD5: | e26972e97846a45a0e504c89ff7ad75e |
Author: | stefan |
Category: | |
Type: | JavaX source code (Dynamic Module) |
Public (visible to everyone): | Yes |
Archived (hidden from active list): | No |
Created/modified: | 2021-10-27 16:10:34 |
Source code size: | 2842 bytes / 88 lines |
Pitched / IR pitched: | No / No |
Views / Downloads: | 203 / 732 |
Version history: | 31 change(s) |
Referenced in: | #1033309 - Gazelle V, New UI [HEAD] |