/**
|
|
_enyo.canvas.Control_ is the base kind for items that live inside an
|
|
<a href="#enyo.Canvas">enyo.Canvas</a> control.
|
|
|
|
If you're using this kind directly, you may implement an _onRender_ event
|
|
handler in the owner to handle drawing into the canvas.
|
|
|
|
If you're deriving a new kind based on this one, override the _renderSelf_
|
|
method and use that for your drawing code.
|
|
*/
|
|
enyo.kind({
|
|
name: "enyo.canvas.Control",
|
|
kind: enyo.UiComponent,
|
|
defaultKind: "enyo.canvas.Control",
|
|
published: {
|
|
//* Structure with l (left), t (top), w (width), and h (height) members.
|
|
//* The default constructor sets those properties to random values.
|
|
bounds: null
|
|
},
|
|
events: {
|
|
/**
|
|
Fires when this control is to be rendered.
|
|
|
|
_inEvent.context_ contains the active canvas context.
|
|
*/
|
|
onRender: ""
|
|
},
|
|
//* @protected
|
|
constructor: function() {
|
|
this.bounds = {l: enyo.irand(400), t: enyo.irand(400), w: enyo.irand(100), h: enyo.irand(100)};
|
|
this.inherited(arguments);
|
|
},
|
|
importProps: function(inProps) {
|
|
this.inherited(arguments);
|
|
if (inProps && inProps.bounds) {
|
|
enyo.mixin(this.bounds, inProps.bounds);
|
|
delete inProps.bounds;
|
|
}
|
|
},
|
|
renderSelf: function(inContext) {
|
|
this.doRender({context: inContext});
|
|
},
|
|
render: function(inContext) {
|
|
if (this.children.length) {
|
|
this.renderChildren(inContext);
|
|
} else {
|
|
this.renderSelf(inContext);
|
|
}
|
|
},
|
|
renderChildren: function(inContext) {
|
|
for (var i=0, c; (c=this.children[i]); i++) {
|
|
c.render(inContext);
|
|
}
|
|
}
|
|
});
|