[Vm-dev] VM Maker: VMMaker.oscog-eem.598.mcz
commits at source.squeak.org
commits at source.squeak.org
Fri Jan 31 01:10:47 UTC 2014
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
!
More information about the Vm-dev
mailing list