neft
Version:
Universal Platform
61 lines (47 loc) • 1.84 kB
text/coffeescript
utils = require 'src/utils'
assert = require 'src/assert'
module.exports = (impl) ->
{bridge} = impl
{outActions, pushAction, pushItem, pushBoolean, pushInteger, pushFloat, pushString} = bridge
createPointerListener = (action) ->
(event) ->
pushAction action
pushItem @
pushFloat event.x
pushFloat event.y
return
onPointerPress = createPointerListener outActions.ON_NATIVE_ITEM_POINTER_PRESS
onPointerRelease = createPointerListener outActions.ON_NATIVE_ITEM_POINTER_RELEASE
onPointerMove = createPointerListener outActions.ON_NATIVE_ITEM_POINTER_MOVE
bridge.listen bridge.inActions.NATIVE_ITEM_WIDTH, (reader) ->
item = bridge.getItemFromReader reader
item._impl.nativeWidth = reader.getFloat()
updateNativeSize.call item
return
bridge.listen bridge.inActions.NATIVE_ITEM_HEIGHT, (reader) ->
item = bridge.getItemFromReader reader
item._impl.nativeHeight = reader.getFloat()
updateNativeSize.call item
return
DATA =
nativeWidth: 0
nativeHeight: 0
DATA: DATA
createData: impl.utils.createDataCloner 'Item', DATA
create: (data) ->
if data.id is -1
pushAction outActions.CREATE_NATIVE_ITEM
pushString .__name__
data.id = bridge.getId @
.onPress onPointerPress, @
.onRelease onPointerRelease, @
.onMove onPointerMove, @
return
updateNativeSize: updateNativeSize = ->
{setPropertyValue} = impl.Renderer.itemUtils
if
setPropertyValue @, 'width', .nativeWidth
if
setPropertyValue @, 'height', .nativeHeight
return