[squeak-dev] The Trunk: EToys-eem.402.mcz

commits at source.squeak.org commits at source.squeak.org
Mon Sep 28 00:43:10 UTC 2020


Eliot Miranda uploaded a new version of EToys to project The Trunk:
http://source.squeak.org/trunk/EToys-eem.402.mcz

==================== Summary ====================

Name: EToys-eem.402
Author: eem
Time: 27 September 2020, 5:43:02.068038 pm
UUID: bbda2475-d7bb-4381-b306-0eab22b9ddad
Ancestors: EToys-eem.401

CameraInterface: document camera:getParam:. Provide a utility for evaluating a block with grabbed frames.

=============== Diff against EToys-eem.401 ===============

Item was added:
+ ----- Method: CameraInterface class>>camera:framesDo:while: (in category 'utilities') -----
+ camera: cameraNum framesDo: aBlock while: whileBlock
+ 	"Evaluate aBlock every time a frame becomes available.  Answer a tuple of frames per second and number of 16ms delays per second.
+ 	 Be destructive; use only one bitmap, overwriting its contents with each successive frame.
+ 	 It is the sender's responsibility to open and close the camera."
+ 	| form bitmap delay start duration frameCount delayCount |
+ 	form := Form
+ 				extent: (self frameExtent: cameraNum)
+ 				depth: 32.
+ 	bitmap := form bits.
+ 	delay := Delay forMilliseconds: (1000 / 60) asInteger. "60 fps is fast"
+ 	start := Time utcMicrosecondClock.
+ 	frameCount := delayCount := 0.
+ 	[[(self camera: cameraNum getParam: 1) <= 0] whileTrue:
+ 		[delay wait. delayCount := delayCount + 1].
+ 	 self getFrameForCamera: cameraNum into: bitmap.
+ 	 frameCount := frameCount + 1.
+ 	 aBlock value: form.
+ 	 whileBlock value] whileTrue.
+ 	^{ frameCount * 1.0e6 / (duration := Time utcMicrosecondClock - start).
+ 		delayCount * 1.0e6 / duration }
+ 
+ 	"| cameraNum |
+ 	 self openCamera: (cameraNum := 1) width: 640 height: 480.
+ 	 self waitForCameraStart: cameraNum.
+ 	 [self camera: cameraNum framesDo: [:bitmap| bitmap display] while: [Sensor noButtonPressed]] ensure:
+ 		[self closeCamera: cameraNum]"!

Item was changed:
  ----- Method: CameraInterface class>>camera:getParam: (in category 'camera ops') -----
  camera: cameraNum getParam: paramNum
+ 	"Answer the given parameter for the given camera.
+ 		param 1 is the frame count, the number of frames grabbed since the last send of getFrameForCamera:into:
+ 		param 2 is the size of the bitmap in bytes required for an image"
- 	"Answer the given parameter for the given camera."
  
+ 	<primitive: 'primGetParam' module: 'CameraPlugin' error: ec>
+ 	^nil
- 	<primitive: 'primGetParam' module: 'CameraPlugin'>
- 	^ nil
  !



More information about the Squeak-dev mailing list