Eliot Miranda uploaded a new version of VMMaker to project VM Maker: http://source.squeak.org/VMMaker/VMMaker.oscog-eem.598.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.598 Author: eem Time: 30 January 2014, 5:06:23.221 pm UUID: b85d7330-2ddc-4d90-8592-4e37234f4ac2 Ancestors: VMMaker.oscog-eem.597
Eliminate declaratiosn for non-existent vars in ScratchPlugin>>primitiveFisheye
=============== Diff against VMMaker.oscog-eem.597 ===============
Item was changed: ----- Method: ScratchPlugin>>primitiveFisheye (in category 'other filters') ----- primitiveFisheye
| inOop outOop width in out sz height centerX centerY dx dy ang pix power r srcX srcY scaledPower | <export: true> + <var: 'in' type: #'unsigned int *'> + <var: 'out' type: #'unsigned int *'> + <var: 'dx' type: #double> + <var: 'dy' type: #double> + <var: 'ang' type: #double> + <var: 'r' type: #double> + <var: 'scaledPower' type: #double> - <var: 'in' declareC: 'unsigned int *in'> - <var: 'out' declareC: 'unsigned int *out'> - <var: 'scaleX' declareC: 'double scaleX'> - <var: 'scaleY' declareC: 'double scaleY'> - <var: 'whirlRadians' declareC: 'double whirlRadians'> - <var: 'radiusSquared' declareC: 'double radiusSquared'> - <var: 'dx' declareC: 'double dx'> - <var: 'dy' declareC: 'double dy'> - <var: 'd' declareC: 'double d'> - <var: 'factor' declareC: 'double factor'> - <var: 'ang' declareC: 'double ang'> - <var: 'sina' declareC: 'double sina'> - <var: 'cosa' declareC: 'double cosa'> - <var: 'r' declareC: 'double r'> - <var: 'scaledPower' declareC: 'double scaledPower'>
inOop := interpreterProxy stackValue: 3. outOop := interpreterProxy stackValue: 2. width := interpreterProxy stackIntegerValue: 1. power := interpreterProxy stackIntegerValue: 0. in := self checkedUnsignedIntPtrOf: inOop. out := self checkedUnsignedIntPtrOf: outOop. sz := interpreterProxy stSizeOf: inOop. interpreterProxy success: ((interpreterProxy stSizeOf: outOop) = sz). interpreterProxy failed ifTrue: [^ nil].
"calculate height, center, scales, radius, whirlRadians, and radiusSquared" height := sz // width. centerX := width // 2. centerY := height // 2.
height := sz // width. centerX := width // 2. centerY := height // 2. scaledPower := power / 100.0.
0 to: width - 1 do: [:x | 0 to: height - 1 do: [:y | dx := (x - centerX) / centerX asFloat. dy := (y - centerY) / centerY asFloat. r := ((dx * dx) + (dy * dy)) sqrt raisedTo: scaledPower. r <= 1.0 ifTrue: [ ang := self cCode: 'atan2(dy,dx)'. srcX := (1024 * (centerX + ((r * ang cos) * centerX))) asInteger. srcY := (1024 * (centerY + ((r * ang sin) * centerY))) asInteger] ifFalse: [ srcX := 1024 * x. srcY := 1024 * y]. pix := self interpolatedFrom: in x: srcX y: srcY width: width height: height. out at: ((y * width) + x "+ 1 for Squeak") put: pix]].
interpreterProxy pop: 4. "pop args, leave rcvr on stack" ^ 0 !
vm-dev@lists.squeakfoundation.org