neft
Version:
Universal Platform
132 lines (103 loc) • 3.95 kB
text/coffeescript
# Rectangle
```javascript
Rectangle {
width: 150
height: 100
color: 'blue'
border.color: 'black'
border.width: 5
radius: 10
}
```
'use strict'
assert = require 'src/assert'
utils = require 'src/utils'
module.exports = (Renderer, Impl, itemUtils) ->
class Rectangle extends Renderer.Item
= 'Rectangle'
= 'Renderer.Rectangle'
## *Rectangle* Rectangle.New([*Component* component, *Object* options])
= (component, opts) ->
item = new Rectangle
itemUtils.Object.initialize item, component, opts
item
## *Rectangle* Rectangle::constructor() : *Item*
constructor: ->
super()
= 'transparent'
= 0
= null
## *String* Rectangle::color = `'transparent'`
## *Signal* Rectangle::onColorChange(*String* oldValue)
itemUtils.defineProperty
constructor: @
name: 'color'
defaultValue: 'transparent'
implementation: Impl.setRectangleColor
implementationValue: do ->
RESOURCE_REQUEST =
property: 'color'
(val) ->
Renderer.resources?.resolve(val, RESOURCE_REQUEST) or val
developmentSetter: (val) ->
assert.isString val
## *Float* Rectangle::radius = `0`
## *Signal* Rectangle::onRadiusChange(*Float* oldValue)
itemUtils.defineProperty
constructor: @
name: 'radius'
defaultValue: 0
implementation: Impl.setRectangleRadius
developmentSetter: (val) ->
assert.isFloat val
## *Object* Rectangle::border
## *Signal* Rectangle::onBorderChange(*String* property, *Any* oldValue)
class Border extends itemUtils.DeepObject
= 'Border'
itemUtils.defineProperty
constructor: Rectangle
name: 'border'
valueConstructor: Border
developmentSetter: (val) ->
assert.isObject val
setter: (_super) -> (val) ->
{border} = @
border.width = val.width if val.width?
border.color = val.color if val.color?
_super.call @, val
return
constructor: (ref) ->
= 0
= 'transparent'
super ref
## *Float* Rectangle::border.width = `0`
## *Signal* Rectangle::border.onWidthChange(*Float* oldValue)
itemUtils.defineProperty
constructor: @
name: 'width'
defaultValue: 0
namespace: 'border'
parentConstructor: Rectangle
implementation: Impl.setRectangleBorderWidth
developmentSetter: (val) ->
assert.isFloat val
## *String* Rectangle::border.color = `'transparent'`
## *Signal* Rectangle::border.onColorChange(*String* oldValue)
itemUtils.defineProperty
constructor: @
name: 'color'
defaultValue: 'transparent'
namespace: 'border'
parentConstructor: Rectangle
implementation: Impl.setRectangleBorderColor
implementationValue: do ->
RESOURCE_REQUEST =
property: 'color'
(val) ->
Renderer.resources?.resolve(val, RESOURCE_REQUEST) or val
developmentSetter: (val) ->
assert.isString val
toJSON: ->
width:
color:
Rectangle