Wizcorp / phonegap-plugin-wizCanvas

WizCanvas allows a developer to create a ultra-performant native canvas component. The view is based on the Ejecta framework and has WebGL support.
MIT License
43 stars 13 forks source link

phonegap-plugin-wizCanvas

Description

PhoneGap plugin for creating and manipulating native canvas without UIWebView for ultra performance.

Install (with Plugman)

cordova plugin add https://github.com/Wizcorp/phonegap-plugin-wizCanvas
cordova build

< or >

phonegap local plugin add https://github.com/Wizcorp/phonegap-plugin-wizCanvas
phonegap build

Booting

wizCanvas looks automatically for an index.js file in www/assets/canvas/ if you wish to ignore this and load from another relative location, use wizCanvas.load().

Additional Steps in Xcode

In Xcode Build Settings, add the following 2 lines in the Header Path

"$(SRCROOT)/<your project name>/Plugins/jp.wizcorp.phonegap.plugin.wizCanvasPlugin/lib"
"$(SRCROOT)/<your project name>/Plugins/jp.wizcorp.phonegap.plugin.wizCanvasPlugin/lib/JavaScriptCore"

In Xcode Build Settings, add the following 2 lines in the Library Search Path

"$(SRCROOT)/<your project name>/Plugins/jp.wizcorp.phonegap.plugin.wizCanvasPlugin/lib"
"$(SRCROOT)/<your project name>/Plugins/jp.wizcorp.phonegap.plugin.wizCanvasPlugin/lib/JavaScriptCore"

In Xcode Build Settings remove armv7s from valid architectures.

APIs

Create

Currently, only 1 canvas view can be created. View is hidden after creation.

wizCanvas.create(String viewName, JSONObject options, Function success, Function fail);

Options list;

{
    src: "my/local/script.js" [relative to www/]
    height: 300, [accepts "300px", "30%" - default: fills height] 
    width: 300, [accepts "300px", "30%" - default: fills width] 
    x: 0,
    y: 0, 
    top: 0, [string, pixels or percent - default: 0]
    bottom: 0, [string, pixels or percent - default: 0]
    left: 0, [pixels or percent - default: 0]    
    right: 0, [string, pixels or percent - default: 0]
    backgroundColor: [Colour as hex RGB/ARGB/RRGGBB or "transparent"]
    onTop: false [Default: true. Transparency can only be used when onTop is true][Android Only]
}; 

Note - Android does not yet support String " px" values or " %" values

Load

wizCanvas.load(String viewName, String URI or URL, Function success, Function fail);

Set Layout

wizCanvas.setLayout(String viewName, JSONObject options, Function success, Function fail);

See create API for a list of options.

Show

wizCanvas.show(String viewName, JSONObject options, Function success, Function fail);

A list of animations;

Example animation Object;

options : {
    animation: {
        type: "fadeIn", 
        duration: "300"
    }
};

NOTE : Animation options not yet fully supported!

Hide

wizCanvas.hide(String viewName, JSONObject options, Function success, Function fail);

A list of animations;

Example animation Object;

options : {
    animation: {
        type: "fadeOut",
        duration: "300"
    }
}; 

NOTE : Animation options not yet fully supported!

Messaging

To send a messsage to a view based on W3C post message API... for more information on the MessageEvent API, see: http://www.w3.org/TR/2008/WD-html5-20080610/comms.HTMLElement

wizCanvasMessenger.postMessage(Data message, String targetView);

Add an event listener in the html that wishes to receive the message...

window.addEventListener('message', listeningFunction, false);

In canvas use the following to receive messages from Cordova's page

wizCanvasMessenger.addEventListener('message', listeningFunction);

Example receiver;

function listeningFunction (e) {
    // Event data object comes in here
    // e.data - message data
    // e.origin - the origin of the data
    // e.target - the target for the data
}