[squeak-dev] The Trunk: MorphicExtras-eem.287.mcz
commits at source.squeak.org
commits at source.squeak.org
Mon Apr 12 18:02:24 UTC 2021
Eliot Miranda uploaded a new version of MorphicExtras to project The Trunk:
http://source.squeak.org/trunk/MorphicExtras-eem.287.mcz
==================== Summary ====================
Name: MorphicExtras-eem.287
Author: eem
Time: 12 April 2021, 11:02:21.284327 am
UUID: b74bcd77-a21f-4562-b441-5e2220720482
Ancestors: MorphicExtras-mt.286
Include the actual frame extent in the output of the CameraInterface test methods.
=============== Diff against MorphicExtras-mt.286 ===============
Item was changed:
----- Method: CameraInterface class>>interruptDrivenVideoTest: (in category 'test') -----
interruptDrivenVideoTest: camNum
"A quick test of video input. Displays video on the screen until the mouse is pressed.
Answer nil if the interrupt-driven interface is unavailable."
"self interruptDrivenVideoTest: 1"
"self interruptDrivenVideoTest: 2"
"[self interruptDrivenVideoTest: 2] fork.
self interruptDrivenVideoTest: 1"
+ | semaphore height frameExtent |
- | semaphore height |
height := 16.
1 to: camNum - 1 do:
[:camIndex| "N.B. the of an unopened camera is 0 at 0"
+ height := height + (self frameExtent: camIndex) y + 16].
+ (self cameraIsOpen: camNum) ifFalse:
+ [(self openCamera: camNum width: 352 height: 288) ifNil:
- height := height + (CameraInterface frameExtent: camIndex) y + 16].
- (CameraInterface cameraIsOpen: camNum) ifFalse:
- [(CameraInterface openCamera: camNum width: 352 height: 288) ifNil:
[self inform: 'no camera'.
^nil]].
semaphore := Semaphore new.
+ [self camera: camNum setSemaphore: (Smalltalk registerExternalObject: semaphore)]
- [CameraInterface camera: camNum setSemaphore: (Smalltalk registerExternalObject: semaphore)]
on: Error
do: [:err|
Smalltalk unregisterExternalObject: semaphore.
self inform: 'interrupt-driven camera interface unavailable: ', err messageText.
^nil].
[| f n startTime frameCount msecs fps |
[semaphore wait.
"N.B. the frame extent may not be known until the delivery of the first frame.
So we have to delay initialization."
startTime ifNil:
+ [(frameExtent := self frameExtent: camNum) x = 0 ifTrue: [self inform: 'no camera'. ^nil].
+ f := Form extent: (self frameExtent: camNum) depth: 32.
- [(self frameExtent: camNum) x = 0 ifTrue: [self inform: 'no camera'. ^nil].
- f := Form extent: (CameraInterface frameExtent: camNum) depth: 32.
frameCount := 0.
startTime := Time millisecondClockValue].
Sensor anyButtonPressed] whileFalse:
+ [n := self getFrameForCamera: camNum into: f bits.
- [n := CameraInterface getFrameForCamera: camNum into: f bits.
n > 0 ifTrue:
[frameCount := frameCount + 1.
f displayAt: 16 @ height]].
msecs := Time millisecondClockValue - startTime.
fps := (frameCount * 1000) // msecs.
+ ^(self cameraName: camNum), ': ', frameExtent printString, ' ', frameCount printString, ' frames at ', fps printString, ' frames/sec']
- ^(CameraInterface cameraName: camNum), ': ', frameCount printString, ' frames at ', fps printString, ' frames/sec']
ensure:
+ [self closeCamera: camNum.
- [CameraInterface closeCamera: camNum.
Smalltalk unregisterExternalObject: semaphore.
Sensor waitNoButton]!
Item was changed:
----- Method: CameraInterface class>>videoTest: (in category 'test') -----
videoTest: camNum
"A quick test of video input. Displays video on the screen until the mouse is pressed."
"self videoTest: 1"
"self videoTest: 2"
+ | frameExtent f n startTime frameCount msecs fps |
+ (self openCamera: camNum width: 320 height: 240) ifNil: [^ self inform: 'no camera'].
- | f n startTime frameCount msecs fps |
- (CameraInterface openCamera: camNum width: 320 height: 240) ifNil: [^ self inform: 'no camera'].
self waitForCameraStart: camNum.
+ (frameExtent := self frameExtent: camNum) x = 0 ifTrue: [^ self inform: 'no camera'].
+ f := Form extent: (self frameExtent: camNum) depth: 32.
- (self frameExtent: camNum) x = 0 ifTrue: [^ self inform: 'no camera'].
- f := Form extent: (CameraInterface frameExtent: camNum) depth: 32.
frameCount := 0.
startTime := nil.
+ [Sensor anyButtonPressed] whileFalse:
+ [n := self getFrameForCamera: camNum into: f bits.
+ n > 0 ifTrue:
+ [startTime ifNil: [startTime := Time millisecondClockValue].
- [Sensor anyButtonPressed] whileFalse: [
- n := CameraInterface getFrameForCamera: camNum into: f bits.
- n > 0 ifTrue: [
- startTime ifNil: [startTime := Time millisecondClockValue].
frameCount := frameCount + 1.
f display]].
Sensor waitNoButton.
msecs := Time millisecondClockValue - startTime.
+ self closeCamera: camNum.
+ fps := frameCount * 1000 // msecs.
+ ^frameExtent printString, ' ', frameCount printString, ' frames at ', fps printString, ' frames/sec'!
- CameraInterface closeCamera: camNum.
- fps := (frameCount * 1000) // msecs.
- ^ frameCount printString, ' frames at ', fps printString, ' frames/sec'!
More information about the Squeak-dev
mailing list
|