The jscanvas
Image Provider renders an image described by a Javascript function.
Field name | Value | Description |
---|---|---|
Required fields | ||
type | ImageProvider.Type | jscanvas |
jscanvasdescription | JSCanvasDescription | An object describing the parameters and Javascript source. |
Optional fields | ||
width | Integer | The width of the rendered image. If not specified the width will be inferred from the tracks below. |
height | Integer | The height of the rendered image. If not specified the height will be inferred from the tracks below. |
Field name | Value | Description |
---|---|---|
Required fields | ||
mode | JSCanvasDescription.Mode | jscanvas_script | jscanvas_source |
script | StringVariable | A String containing the Javascript source. |
source | FileLocation | A FileLocation indicating the source. |
Optional fields | ||
defaultparams | KeyValuePair [ ] | A map of keys and values send to the Javascript function |
keys | String [ ] | A list of HTTP query parameter names to foraward to the Javascript function |
completionfunction | Function | Function to use to animate time. (Advanced) |
You must supply a function called renderFrame
that accepts four parameters
function renderFrame(ctx, frameno, renderinfo, params) { // render function }
The parameter of the function are
Parameter | Description |
---|---|
ctx | Canvas context |
frameno | current frame number |
renderinfo | Object {frameno: int, completion: float} The property completion is float between 0 and 1, indicating the percentage of time passed for this scene. It is controlled by the completion function in the ImageProvider. |
params | Object with the query parameters indicated by keys |
{ "scenes": [ { "tracks": [ { "content": { "type": "emptyimage", "color": { "red": 0, "green": 0, "blue": 0, "alpha": 255 } } }, { "content": { "type": "jscanvas", "width": 640, "height": 360, "jscanvasdescription": { "script": { "type": "constant", "value": "function renderFrame( ctx, frameno, renderinfo, params ) { ctx.fillStyle='#f00'; ctx.font='100px Arial'; ctx.translate(ctx.canvas.width/2, ctx.canvas.height/2); ctx.rotate( renderinfo.completion*2*Math.PI ); ctx.fillText('hallo', 0, 0 ); }" }, "completionfunction": { "type": "linear" } } } } ], "numframes": 100 } ], "params": { "vparams": { "width": 640, "height": 360 } } }
Terms of Use | © 2017, Impossible Software, or its affiliates.