Repository files navigation

Node-Five

This is a highly experimental, rapidly-changing project. The APIs might change overnight.

Node-Five brings a subset of HTML5 APIs to Node.js. Presently the main focus is on low-level graphics and audio (for example, Canvas and AudioContext), but other higher-level APIs are welcome. (HTML/CSS layout engine, anyone?)

Node-Five is written in JavaScript on top of Node-Qt.

Hello world

This example illustrates a minimal use of the HTML5 Canvas API:

Screenshot

varfive=require('path-to-node-five-dir'),window=newfive.Window(300,150),canvas=newfive.Canvas(window),ctx=canvas.getContext('2d');ctx.fillStyle='black';ctx.fillText('hello node, hello qt',20,20);

For other examples see the demos/ directory.

Getting started

Since the project is under heavy development, no npm packages are available at the moment. To start, clone the latest development version and install the necessary dependencies:

$ git clone git://github.com/arturadib/node-five.git
$ cd node-five
$ npm install

If everything went well you should be able to run the demos, for example:

$ node demos/03-game-goblins/game.js

To run the unit tests:

$ node make test

(Since different platforms generate different images based on several factors, it's likely the image-based regression tests will fail on your setup. Ignore those errors).

API reference

five

Main object. Typical usage is:

var five = require('path-to-node-five-dir');

useInterval()

Add event handler to Node's event loop via setTimeout(). This is the default event loop integration.

useTick()

Add event handler to Node's event loop via process.nextTick(). This should used in applications that require more instant responsiveness (CPU-intensive!).

stop()

Stop Node-Five's event loop. Applications never exit without a call to this method.

five.Window(width, height)

Native window constructor with the given height and width.

width = 640

Gets/sets window width in pixels

height = 480

Gets/sets window height in pixels

close()

Closes window. It can't be reopened.

addEventListener(event, callback)

Binds event to callback. Supported events are listed below.

removeEventListener(event, callback)

Removes callback from event handler.

Supported events for addEventListener()

  • mousedown: Callback will be passed { clientX, clientY, button }. button values correspond to the convenience constants five.LeftButton, five.RightButton, etc. See http://developer.qt.nokia.com/doc/qt-4.8/qt.html#MouseButton-enum for a list of supported button codes

  • mouseup: Callback will be passed { clientX, clientY, button } as in mousedown.

  • mousemove: Callback will be passed { clientX, clientY }.

  • keydown: Callback will be passed { key, char }. Key values correspond to the convenience constants five.Key_Esc, five.Key_Left, etc. See http://developer.qt.nokia.com/doc/qt-4.8/qt.html#Key-enum for the list of supported keys. char is the corresponding Unicode character, if available.

  • keyup: Callback will be passed { key, char }. Details as in keydown.

five.Canvas(window)

Class/constructor for Canvas objects, either off-screen (no window argument) or inside an existing window.

width = 300

height = 150

viewWidth = width

(Non-standard) Width of the canvas view. Will crop canvas and create scroll bars if smaller than the canvas width.

viewHeight = height

(Non-standard) Height of the canvas view. Will crop canvas and create scroll bars if smaller than the canvas height.

scrollTop = 0

Vertical scroll position. To be used when height > viewHeight. Maximum value is height - viewHeight.

scrollLeft = 0

Horizontal scroll position. To be used when width > viewWidth. Maximum value is width - viewWidth.

top = 0

(Non-standard) Top position of the canvas with respect to parent window (if any), in pixels. Only absolute positioning is available.

left = 0

(Non-standard) Left position of the canvas with respect to parent window (if any), in pixels. Only absolute positioning is available.

getContext(type)

Presently only supports type == '2d'.

toDataURL()

five.Canvas.getContext('2d')

The documentation below is for exposed methods after a ctx = canvas.getContext('2d') call, which returns a CanvasRenderingContext2D object.

ctx.fillStyle = 'color'

Currently only supports color types (e.g. 'rgb()', 'rgba()', 'blue', '#aabbcc', etc)

ctx.strokeStyle = 'color'

Currently only supports color types (e.g. 'rgb()', 'rgba()', 'blue', '#aabbcc', etc)

ctx.font = '10px family'

Currently only supports the format above

ctx.fillRect(x, y, w, h)

ctx.fillText(text, x, y)

ctx.translate(x, y)

ctx.scale(x, y)

ctx.beginPath()

ctx.closePath()

ctx.moveTo(x, y)

ctx.lineTo(x, y)

ctx.stroke()

ctx.drawImage(image, x, y)

Presently only supports images created via five.Image()

five.Image()

Constructor for image objects. Intended to mirror Image() constructor from browsers.

src = 'file_name'

Presently only supports local paths, e.g. ./images/file.png

complete

onload = callback

five.AudioContext

Class/constructor for AudioContext objects.

destination

Currently returns null

createBufferSource()

Returns a new AudioBufferSourceNode object

five.AudioContext.createBufferSource()

The documentation below is for exposed methods after a source = context.createBufferSource() call, which returns an AudioBufferSourceNode object.

source.buffer = 'filename'

Non-compliant. Presently must specify local filename.

source.connect(dest)

dest is currently a dummy variable. The destination will always be the default audio device

source.loop = true/false

source.noteOn(when)

Currently when = 0, i.e. immediately

About

HTML5 graphics and audio for Node.js

Resources

Stars

298 stars

Watchers

13 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

Node-Five

This is a highly experimental, rapidly-changing project. The APIs might change overnight.

Node-Five brings a subset of HTML5 APIs to Node.js. Presently the main focus is on low-level graphics and audio (for example, Canvas and AudioContext), but other higher-level APIs are welcome. (HTML/CSS layout engine, anyone?)

Node-Five is written in JavaScript on top of Node-Qt.

Hello world

This example illustrates a minimal use of the HTML5 Canvas API:

Screenshot

varfive=require('path-to-node-five-dir'),window=newfive.Window(300,150),canvas=newfive.Canvas(window),ctx=canvas.getContext('2d');ctx.fillStyle='black';ctx.fillText('hello node, hello qt',20,20);

For other examples see the demos/ directory.

Getting started

Since the project is under heavy development, no npm packages are available at the moment. To start, clone the latest development version and install the necessary dependencies:

$ git clone git://github.com/arturadib/node-five.git
$ cd node-five
$ npm install

If everything went well you should be able to run the demos, for example:

$ node demos/03-game-goblins/game.js

To run the unit tests:

$ node make test

(Since different platforms generate different images based on several factors, it's likely the image-based regression tests will fail on your setup. Ignore those errors).

API reference

five

Main object. Typical usage is:

var five = require('path-to-node-five-dir');

useInterval()

Add event handler to Node's event loop via setTimeout(). This is the default event loop integration.

useTick()

Add event handler to Node's event loop via process.nextTick(). This should used in applications that require more instant responsiveness (CPU-intensive!).

stop()

Stop Node-Five's event loop. Applications never exit without a call to this method.

five.Window(width, height)

Native window constructor with the given height and width.

width = 640

Gets/sets window width in pixels

height = 480

Gets/sets window height in pixels

close()

Closes window. It can't be reopened.

addEventListener(event, callback)

Binds event to callback. Supported events are listed below.

removeEventListener(event, callback)

Removes callback from event handler.

Supported events for addEventListener()

  • mousedown: Callback will be passed { clientX, clientY, button }. button values correspond to the convenience constants five.LeftButton, five.RightButton, etc. See http://developer.qt.nokia.com/doc/qt-4.8/qt.html#MouseButton-enum for a list of supported button codes

  • mouseup: Callback will be passed { clientX, clientY, button } as in mousedown.

  • mousemove: Callback will be passed { clientX, clientY }.

  • keydown: Callback will be passed { key, char }. Key values correspond to the convenience constants five.Key_Esc, five.Key_Left, etc. See http://developer.qt.nokia.com/doc/qt-4.8/qt.html#Key-enum for the list of supported keys. char is the corresponding Unicode character, if available.

  • keyup: Callback will be passed { key, char }. Details as in keydown.

five.Canvas(window)

Class/constructor for Canvas objects, either off-screen (no window argument) or inside an existing window.

width = 300

height = 150

viewWidth = width

(Non-standard) Width of the canvas view. Will crop canvas and create scroll bars if smaller than the canvas width.

viewHeight = height

(Non-standard) Height of the canvas view. Will crop canvas and create scroll bars if smaller than the canvas height.

scrollTop = 0

Vertical scroll position. To be used when height > viewHeight. Maximum value is height - viewHeight.

scrollLeft = 0

Horizontal scroll position. To be used when width > viewWidth. Maximum value is width - viewWidth.

top = 0

(Non-standard) Top position of the canvas with respect to parent window (if any), in pixels. Only absolute positioning is available.

left = 0

(Non-standard) Left position of the canvas with respect to parent window (if any), in pixels. Only absolute positioning is available.

getContext(type)

Presently only supports type == '2d'.

toDataURL()

five.Canvas.getContext('2d')

The documentation below is for exposed methods after a ctx = canvas.getContext('2d') call, which returns a CanvasRenderingContext2D object.

ctx.fillStyle = 'color'

Currently only supports color types (e.g. 'rgb()', 'rgba()', 'blue', '#aabbcc', etc)

ctx.strokeStyle = 'color'

Currently only supports color types (e.g. 'rgb()', 'rgba()', 'blue', '#aabbcc', etc)

ctx.font = '10px family'

Currently only supports the format above

ctx.fillRect(x, y, w, h)

ctx.fillText(text, x, y)

ctx.translate(x, y)

ctx.scale(x, y)

ctx.beginPath()

ctx.closePath()

ctx.moveTo(x, y)

ctx.lineTo(x, y)

ctx.stroke()

ctx.drawImage(image, x, y)

Presently only supports images created via five.Image()

five.Image()

Constructor for image objects. Intended to mirror Image() constructor from browsers.

src = 'file_name'

Presently only supports local paths, e.g. ./images/file.png

complete

onload = callback

five.AudioContext

Class/constructor for AudioContext objects.

destination

Currently returns null

createBufferSource()

Returns a new AudioBufferSourceNode object

five.AudioContext.createBufferSource()

The documentation below is for exposed methods after a source = context.createBufferSource() call, which returns an AudioBufferSourceNode object.

source.buffer = 'filename'

Non-compliant. Presently must specify local filename.

source.connect(dest)

dest is currently a dummy variable. The destination will always be the default audio device

source.loop = true/false

source.noteOn(when)

Currently when = 0, i.e. immediately

About

HTML5 graphics and audio for Node.js

Resources

Stars

298 stars

Watchers

13 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Node-Five

This is a highly experimental, rapidly-changing project. The APIs might change overnight.

Node-Five brings a subset of HTML5 APIs to Node.js. Presently the main focus is on low-level graphics and audio (for example, Canvas and AudioContext), but other higher-level APIs are welcome. (HTML/CSS layout engine, anyone?)

Node-Five is written in JavaScript on top of Node-Qt.

Hello world

This example illustrates a minimal use of the HTML5 Canvas API:

Screenshot

varfive=require('path-to-node-five-dir'),window=newfive.Window(300,150),canvas=newfive.Canvas(window),ctx=canvas.getContext('2d');ctx.fillStyle='black';ctx.fillText('hello node, hello qt',20,20);

For other examples see the demos/ directory.

Getting started

Since the project is under heavy development, no npm packages are available at the moment. To start, clone the latest development version and install the necessary dependencies:

$ git clone git://github.com/arturadib/node-five.git
$ cd node-five
$ npm install

If everything went well you should be able to run the demos, for example:

$ node demos/03-game-goblins/game.js

To run the unit tests:

$ node make test

(Since different platforms generate different images based on several factors, it's likely the image-based regression tests will fail on your setup. Ignore those errors).

API reference

five

Main object. Typical usage is:

var five = require('path-to-node-five-dir');

useInterval()

Add event handler to Node's event loop via setTimeout(). This is the default event loop integration.

useTick()

Add event handler to Node's event loop via process.nextTick(). This should used in applications that require more instant responsiveness (CPU-intensive!).

stop()

Stop Node-Five's event loop. Applications never exit without a call to this method.

five.Window(width, height)

Native window constructor with the given height and width.

width = 640

Gets/sets window width in pixels

height = 480

Gets/sets window height in pixels

close()

Closes window. It can't be reopened.

addEventListener(event, callback)

Binds event to callback. Supported events are listed below.

removeEventListener(event, callback)

Removes callback from event handler.

Supported events for addEventListener()

  • mousedown: Callback will be passed { clientX, clientY, button }. button values correspond to the convenience constants five.LeftButton, five.RightButton, etc. See http://developer.qt.nokia.com/doc/qt-4.8/qt.html#MouseButton-enum for a list of supported button codes

  • mouseup: Callback will be passed { clientX, clientY, button } as in mousedown.

  • mousemove: Callback will be passed { clientX, clientY }.

  • keydown: Callback will be passed { key, char }. Key values correspond to the convenience constants five.Key_Esc, five.Key_Left, etc. See http://developer.qt.nokia.com/doc/qt-4.8/qt.html#Key-enum for the list of supported keys. char is the corresponding Unicode character, if available.

  • keyup: Callback will be passed { key, char }. Details as in keydown.

five.Canvas(window)

Class/constructor for Canvas objects, either off-screen (no window argument) or inside an existing window.

width = 300

height = 150

viewWidth = width

(Non-standard) Width of the canvas view. Will crop canvas and create scroll bars if smaller than the canvas width.

viewHeight = height

(Non-standard) Height of the canvas view. Will crop canvas and create scroll bars if smaller than the canvas height.

scrollTop = 0

Vertical scroll position. To be used when height > viewHeight. Maximum value is height - viewHeight.

scrollLeft = 0

Horizontal scroll position. To be used when width > viewWidth. Maximum value is width - viewWidth.

top = 0

(Non-standard) Top position of the canvas with respect to parent window (if any), in pixels. Only absolute positioning is available.

left = 0

(Non-standard) Left position of the canvas with respect to parent window (if any), in pixels. Only absolute positioning is available.

getContext(type)

Presently only supports type == '2d'.

toDataURL()

five.Canvas.getContext('2d')

The documentation below is for exposed methods after a ctx = canvas.getContext('2d') call, which returns a CanvasRenderingContext2D object.

ctx.fillStyle = 'color'

Currently only supports color types (e.g. 'rgb()', 'rgba()', 'blue', '#aabbcc', etc)

ctx.strokeStyle = 'color'

Currently only supports color types (e.g. 'rgb()', 'rgba()', 'blue', '#aabbcc', etc)

ctx.font = '10px family'

Currently only supports the format above

ctx.fillRect(x, y, w, h)

ctx.fillText(text, x, y)

ctx.translate(x, y)

ctx.scale(x, y)

ctx.beginPath()

ctx.closePath()

ctx.moveTo(x, y)

ctx.lineTo(x, y)

ctx.stroke()

ctx.drawImage(image, x, y)

Presently only supports images created via five.Image()

five.Image()

Constructor for image objects. Intended to mirror Image() constructor from browsers.

src = 'file_name'

Presently only supports local paths, e.g. ./images/file.png

complete

onload = callback

five.AudioContext

Class/constructor for AudioContext objects.

destination

Currently returns null

createBufferSource()

Returns a new AudioBufferSourceNode object

five.AudioContext.createBufferSource()

The documentation below is for exposed methods after a source = context.createBufferSource() call, which returns an AudioBufferSourceNode object.

source.buffer = 'filename'

Non-compliant. Presently must specify local filename.

source.connect(dest)

dest is currently a dummy variable. The destination will always be the default audio device

source.loop = true/false

source.noteOn(when)

Currently when = 0, i.e. immediately

About

HTML5 graphics and audio for Node.js

Resources

Stars

298 stars

Watchers

13 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Node-Five

This is a highly experimental, rapidly-changing project. The APIs might change overnight.

Node-Five brings a subset of HTML5 APIs to Node.js. Presently the main focus is on low-level graphics and audio (for example, Canvas and AudioContext), but other higher-level APIs are welcome. (HTML/CSS layout engine, anyone?)

Node-Five is written in JavaScript on top of Node-Qt.

Hello world

This example illustrates a minimal use of the HTML5 Canvas API:

Screenshot

varfive=require('path-to-node-five-dir'),window=newfive.Window(300,150),canvas=newfive.Canvas(window),ctx=canvas.getContext('2d');ctx.fillStyle='black';ctx.fillText('hello node, hello qt',20,20);

For other examples see the demos/ directory.

Getting started

Since the project is under heavy development, no npm packages are available at the moment. To start, clone the latest development version and install the necessary dependencies:

$ git clone git://github.com/arturadib/node-five.git
$ cd node-five
$ npm install

If everything went well you should be able to run the demos, for example:

$ node demos/03-game-goblins/game.js

To run the unit tests:

$ node make test

(Since different platforms generate different images based on several factors, it's likely the image-based regression tests will fail on your setup. Ignore those errors).

API reference

five

Main object. Typical usage is:

var five = require('path-to-node-five-dir');

useInterval()

Add event handler to Node's event loop via setTimeout(). This is the default event loop integration.

useTick()

Add event handler to Node's event loop via process.nextTick(). This should used in applications that require more instant responsiveness (CPU-intensive!).

stop()

Stop Node-Five's event loop. Applications never exit without a call to this method.

five.Window(width, height)

Native window constructor with the given height and width.

width = 640

Gets/sets window width in pixels

height = 480

Gets/sets window height in pixels

close()

Closes window. It can't be reopened.

addEventListener(event, callback)

Binds event to callback. Supported events are listed below.

removeEventListener(event, callback)

Removes callback from event handler.

Supported events for addEventListener()

  • mousedown: Callback will be passed { clientX, clientY, button }. button values correspond to the convenience constants five.LeftButton, five.RightButton, etc. See http://developer.qt.nokia.com/doc/qt-4.8/qt.html#MouseButton-enum for a list of supported button codes

  • mouseup: Callback will be passed { clientX, clientY, button } as in mousedown.

  • mousemove: Callback will be passed { clientX, clientY }.

  • keydown: Callback will be passed { key, char }. Key values correspond to the convenience constants five.Key_Esc, five.Key_Left, etc. See http://developer.qt.nokia.com/doc/qt-4.8/qt.html#Key-enum for the list of supported keys. char is the corresponding Unicode character, if available.

  • keyup: Callback will be passed { key, char }. Details as in keydown.

five.Canvas(window)

Class/constructor for Canvas objects, either off-screen (no window argument) or inside an existing window.

width = 300

height = 150

viewWidth = width

(Non-standard) Width of the canvas view. Will crop canvas and create scroll bars if smaller than the canvas width.

viewHeight = height

(Non-standard) Height of the canvas view. Will crop canvas and create scroll bars if smaller than the canvas height.

scrollTop = 0

Vertical scroll position. To be used when height > viewHeight. Maximum value is height - viewHeight.

scrollLeft = 0

Horizontal scroll position. To be used when width > viewWidth. Maximum value is width - viewWidth.

top = 0

(Non-standard) Top position of the canvas with respect to parent window (if any), in pixels. Only absolute positioning is available.

left = 0

(Non-standard) Left position of the canvas with respect to parent window (if any), in pixels. Only absolute positioning is available.

getContext(type)

Presently only supports type == '2d'.

toDataURL()

five.Canvas.getContext('2d')

The documentation below is for exposed methods after a ctx = canvas.getContext('2d') call, which returns a CanvasRenderingContext2D object.

ctx.fillStyle = 'color'

Currently only supports color types (e.g. 'rgb()', 'rgba()', 'blue', '#aabbcc', etc)

ctx.strokeStyle = 'color'

Currently only supports color types (e.g. 'rgb()', 'rgba()', 'blue', '#aabbcc', etc)

ctx.font = '10px family'

Currently only supports the format above

ctx.fillRect(x, y, w, h)

ctx.fillText(text, x, y)

ctx.translate(x, y)

ctx.scale(x, y)

ctx.beginPath()

ctx.closePath()

ctx.moveTo(x, y)

ctx.lineTo(x, y)

ctx.stroke()

ctx.drawImage(image, x, y)

Presently only supports images created via five.Image()

five.Image()

Constructor for image objects. Intended to mirror Image() constructor from browsers.

src = 'file_name'

Presently only supports local paths, e.g. ./images/file.png

complete

onload = callback

five.AudioContext

Class/constructor for AudioContext objects.

destination

Currently returns null

createBufferSource()

Returns a new AudioBufferSourceNode object

five.AudioContext.createBufferSource()

The documentation below is for exposed methods after a source = context.createBufferSource() call, which returns an AudioBufferSourceNode object.

source.buffer = 'filename'

Non-compliant. Presently must specify local filename.

source.connect(dest)

dest is currently a dummy variable. The destination will always be the default audio device

source.loop = true/false

source.noteOn(when)

Currently when = 0, i.e. immediately

About

HTML5 graphics and audio for Node.js

Resources

Stars

298 stars

Watchers

13 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

Node-Five

This is a highly experimental, rapidly-changing project. The APIs might change overnight.

Node-Five brings a subset of HTML5 APIs to Node.js. Presently the main focus is on low-level graphics and audio (for example, Canvas and AudioContext), but other higher-level APIs are welcome. (HTML/CSS layout engine, anyone?)

Node-Five is written in JavaScript on top of Node-Qt.

Hello world

This example illustrates a minimal use of the HTML5 Canvas API:

Screenshot

varfive=require('path-to-node-five-dir'),window=newfive.Window(300,150),canvas=newfive.Canvas(window),ctx=canvas.getContext('2d');ctx.fillStyle='black';ctx.fillText('hello node, hello qt',20,20);

For other examples see the demos/ directory.

Getting started

Since the project is under heavy development, no npm packages are available at the moment. To start, clone the latest development version and install the necessary dependencies:

$ git clone git://github.com/arturadib/node-five.git
$ cd node-five
$ npm install

If everything went well you should be able to run the demos, for example:

$ node demos/03-game-goblins/game.js

To run the unit tests:

$ node make test

(Since different platforms generate different images based on several factors, it's likely the image-based regression tests will fail on your setup. Ignore those errors).

API reference

five

Main object. Typical usage is:

var five = require('path-to-node-five-dir');

useInterval()

Add event handler to Node's event loop via setTimeout(). This is the default event loop integration.

useTick()

Add event handler to Node's event loop via process.nextTick(). This should used in applications that require more instant responsiveness (CPU-intensive!).

stop()

Stop Node-Five's event loop. Applications never exit without a call to this method.

five.Window(width, height)

Native window constructor with the given height and width.

width = 640

Gets/sets window width in pixels

height = 480

Gets/sets window height in pixels

close()

Closes window. It can't be reopened.

addEventListener(event, callback)

Binds event to callback. Supported events are listed below.

removeEventListener(event, callback)

Removes callback from event handler.

Supported events for addEventListener()

  • mousedown: Callback will be passed { clientX, clientY, button }. button values correspond to the convenience constants five.LeftButton, five.RightButton, etc. See http://developer.qt.nokia.com/doc/qt-4.8/qt.html#MouseButton-enum for a list of supported button codes

  • mouseup: Callback will be passed { clientX, clientY, button } as in mousedown.

  • mousemove: Callback will be passed { clientX, clientY }.

  • keydown: Callback will be passed { key, char }. Key values correspond to the convenience constants five.Key_Esc, five.Key_Left, etc. See http://developer.qt.nokia.com/doc/qt-4.8/qt.html#Key-enum for the list of supported keys. char is the corresponding Unicode character, if available.

  • keyup: Callback will be passed { key, char }. Details as in keydown.

five.Canvas(window)

Class/constructor for Canvas objects, either off-screen (no window argument) or inside an existing window.

width = 300

height = 150

viewWidth = width

(Non-standard) Width of the canvas view. Will crop canvas and create scroll bars if smaller than the canvas width.

viewHeight = height

(Non-standard) Height of the canvas view. Will crop canvas and create scroll bars if smaller than the canvas height.

scrollTop = 0

Vertical scroll position. To be used when height > viewHeight. Maximum value is height - viewHeight.

scrollLeft = 0

Horizontal scroll position. To be used when width > viewWidth. Maximum value is width - viewWidth.

top = 0

(Non-standard) Top position of the canvas with respect to parent window (if any), in pixels. Only absolute positioning is available.

left = 0

(Non-standard) Left position of the canvas with respect to parent window (if any), in pixels. Only absolute positioning is available.

getContext(type)

Presently only supports type == '2d'.

toDataURL()

five.Canvas.getContext('2d')

The documentation below is for exposed methods after a ctx = canvas.getContext('2d') call, which returns a CanvasRenderingContext2D object.

ctx.fillStyle = 'color'

Currently only supports color types (e.g. 'rgb()', 'rgba()', 'blue', '#aabbcc', etc)

ctx.strokeStyle = 'color'

Currently only supports color types (e.g. 'rgb()', 'rgba()', 'blue', '#aabbcc', etc)

ctx.font = '10px family'

Currently only supports the format above

ctx.fillRect(x, y, w, h)

ctx.fillText(text, x, y)

ctx.translate(x, y)

ctx.scale(x, y)

ctx.beginPath()

ctx.closePath()

ctx.moveTo(x, y)

ctx.lineTo(x, y)

ctx.stroke()

ctx.drawImage(image, x, y)

Presently only supports images created via five.Image()

five.Image()

Constructor for image objects. Intended to mirror Image() constructor from browsers.

src = 'file_name'

Presently only supports local paths, e.g. ./images/file.png

complete

onload = callback

five.AudioContext

Class/constructor for AudioContext objects.

destination

Currently returns null

createBufferSource()

Returns a new AudioBufferSourceNode object

five.AudioContext.createBufferSource()

The documentation below is for exposed methods after a source = context.createBufferSource() call, which returns an AudioBufferSourceNode object.

source.buffer = 'filename'

Non-compliant. Presently must specify local filename.

source.connect(dest)

dest is currently a dummy variable. The destination will always be the default audio device

source.loop = true/false

source.noteOn(when)

Currently when = 0, i.e. immediately

About

HTML5 graphics and audio for Node.js

Resources

Stars

298 stars

Watchers

13 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Node-Five

This is a highly experimental, rapidly-changing project. The APIs might change overnight.

Node-Five brings a subset of HTML5 APIs to Node.js. Presently the main focus is on low-level graphics and audio (for example, Canvas and AudioContext), but other higher-level APIs are welcome. (HTML/CSS layout engine, anyone?)

Node-Five is written in JavaScript on top of Node-Qt.

Hello world

This example illustrates a minimal use of the HTML5 Canvas API:

Screenshot

varfive=require('path-to-node-five-dir'),window=newfive.Window(300,150),canvas=newfive.Canvas(window),ctx=canvas.getContext('2d');ctx.fillStyle='black';ctx.fillText('hello node, hello qt',20,20);

For other examples see the demos/ directory.

Getting started

Since the project is under heavy development, no npm packages are available at the moment. To start, clone the latest development version and install the necessary dependencies:

$ git clone git://github.com/arturadib/node-five.git
$ cd node-five
$ npm install

If everything went well you should be able to run the demos, for example:

$ node demos/03-game-goblins/game.js

To run the unit tests:

$ node make test

(Since different platforms generate different images based on several factors, it's likely the image-based regression tests will fail on your setup. Ignore those errors).

API reference

five

Main object. Typical usage is:

var five = require('path-to-node-five-dir');

useInterval()

Add event handler to Node's event loop via setTimeout(). This is the default event loop integration.

useTick()

Add event handler to Node's event loop via process.nextTick(). This should used in applications that require more instant responsiveness (CPU-intensive!).

stop()

Stop Node-Five's event loop. Applications never exit without a call to this method.

five.Window(width, height)

Native window constructor with the given height and width.

width = 640

Gets/sets window width in pixels

height = 480

Gets/sets window height in pixels

close()

Closes window. It can't be reopened.

addEventListener(event, callback)

Binds event to callback. Supported events are listed below.

removeEventListener(event, callback)

Removes callback from event handler.

Supported events for addEventListener()

  • mousedown: Callback will be passed { clientX, clientY, button }. button values correspond to the convenience constants five.LeftButton, five.RightButton, etc. See http://developer.qt.nokia.com/doc/qt-4.8/qt.html#MouseButton-enum for a list of supported button codes

  • mouseup: Callback will be passed { clientX, clientY, button } as in mousedown.

  • mousemove: Callback will be passed { clientX, clientY }.

  • keydown: Callback will be passed { key, char }. Key values correspond to the convenience constants five.Key_Esc, five.Key_Left, etc. See http://developer.qt.nokia.com/doc/qt-4.8/qt.html#Key-enum for the list of supported keys. char is the corresponding Unicode character, if available.

  • keyup: Callback will be passed { key, char }. Details as in keydown.

five.Canvas(window)

Class/constructor for Canvas objects, either off-screen (no window argument) or inside an existing window.

width = 300

height = 150

viewWidth = width

(Non-standard) Width of the canvas view. Will crop canvas and create scroll bars if smaller than the canvas width.

viewHeight = height

(Non-standard) Height of the canvas view. Will crop canvas and create scroll bars if smaller than the canvas height.

scrollTop = 0

Vertical scroll position. To be used when height > viewHeight. Maximum value is height - viewHeight.

scrollLeft = 0

Horizontal scroll position. To be used when width > viewWidth. Maximum value is width - viewWidth.

top = 0

(Non-standard) Top position of the canvas with respect to parent window (if any), in pixels. Only absolute positioning is available.

left = 0

(Non-standard) Left position of the canvas with respect to parent window (if any), in pixels. Only absolute positioning is available.

getContext(type)

Presently only supports type == '2d'.

toDataURL()

five.Canvas.getContext('2d')

The documentation below is for exposed methods after a ctx = canvas.getContext('2d') call, which returns a CanvasRenderingContext2D object.

ctx.fillStyle = 'color'

Currently only supports color types (e.g. 'rgb()', 'rgba()', 'blue', '#aabbcc', etc)

ctx.strokeStyle = 'color'

Currently only supports color types (e.g. 'rgb()', 'rgba()', 'blue', '#aabbcc', etc)

ctx.font = '10px family'

Currently only supports the format above

ctx.fillRect(x, y, w, h)

ctx.fillText(text, x, y)

ctx.translate(x, y)

ctx.scale(x, y)

ctx.beginPath()

ctx.closePath()

ctx.moveTo(x, y)

ctx.lineTo(x, y)

ctx.stroke()

ctx.drawImage(image, x, y)

Presently only supports images created via five.Image()

five.Image()

Constructor for image objects. Intended to mirror Image() constructor from browsers.

src = 'file_name'

Presently only supports local paths, e.g. ./images/file.png

complete

onload = callback

five.AudioContext

Class/constructor for AudioContext objects.

destination

Currently returns null

createBufferSource()

Returns a new AudioBufferSourceNode object

five.AudioContext.createBufferSource()

The documentation below is for exposed methods after a source = context.createBufferSource() call, which returns an AudioBufferSourceNode object.

source.buffer = 'filename'

Non-compliant. Presently must specify local filename.

source.connect(dest)

dest is currently a dummy variable. The destination will always be the default audio device

source.loop = true/false

source.noteOn(when)

Currently when = 0, i.e. immediately

About

HTML5 graphics and audio for Node.js

Resources

Stars

298 stars

Watchers

13 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Node-Five

This is a highly experimental, rapidly-changing project. The APIs might change overnight.

Node-Five brings a subset of HTML5 APIs to Node.js. Presently the main focus is on low-level graphics and audio (for example, Canvas and AudioContext), but other higher-level APIs are welcome. (HTML/CSS layout engine, anyone?)

Node-Five is written in JavaScript on top of Node-Qt.

Hello world

This example illustrates a minimal use of the HTML5 Canvas API:

Screenshot

varfive=require('path-to-node-five-dir'),window=newfive.Window(300,150),canvas=newfive.Canvas(window),ctx=canvas.getContext('2d');ctx.fillStyle='black';ctx.fillText('hello node, hello qt',20,20);

For other examples see the demos/ directory.

Getting started

Since the project is under heavy development, no npm packages are available at the moment. To start, clone the latest development version and install the necessary dependencies:

$ git clone git://github.com/arturadib/node-five.git
$ cd node-five
$ npm install

If everything went well you should be able to run the demos, for example:

$ node demos/03-game-goblins/game.js

To run the unit tests:

$ node make test

(Since different platforms generate different images based on several factors, it's likely the image-based regression tests will fail on your setup. Ignore those errors).

API reference

five

Main object. Typical usage is:

var five = require('path-to-node-five-dir');

useInterval()

Add event handler to Node's event loop via setTimeout(). This is the default event loop integration.

useTick()

Add event handler to Node's event loop via process.nextTick(). This should used in applications that require more instant responsiveness (CPU-intensive!).

stop()

Stop Node-Five's event loop. Applications never exit without a call to this method.

five.Window(width, height)

Native window constructor with the given height and width.

width = 640

Gets/sets window width in pixels

height = 480

Gets/sets window height in pixels

close()

Closes window. It can't be reopened.

addEventListener(event, callback)

Binds event to callback. Supported events are listed below.

removeEventListener(event, callback)

Removes callback from event handler.

Supported events for addEventListener()

  • mousedown: Callback will be passed { clientX, clientY, button }. button values correspond to the convenience constants five.LeftButton, five.RightButton, etc. See http://developer.qt.nokia.com/doc/qt-4.8/qt.html#MouseButton-enum for a list of supported button codes

  • mouseup: Callback will be passed { clientX, clientY, button } as in mousedown.

  • mousemove: Callback will be passed { clientX, clientY }.

  • keydown: Callback will be passed { key, char }. Key values correspond to the convenience constants five.Key_Esc, five.Key_Left, etc. See http://developer.qt.nokia.com/doc/qt-4.8/qt.html#Key-enum for the list of supported keys. char is the corresponding Unicode character, if available.

  • keyup: Callback will be passed { key, char }. Details as in keydown.

five.Canvas(window)

Class/constructor for Canvas objects, either off-screen (no window argument) or inside an existing window.

width = 300

height = 150

viewWidth = width

(Non-standard) Width of the canvas view. Will crop canvas and create scroll bars if smaller than the canvas width.

viewHeight = height

(Non-standard) Height of the canvas view. Will crop canvas and create scroll bars if smaller than the canvas height.

scrollTop = 0

Vertical scroll position. To be used when height > viewHeight. Maximum value is height - viewHeight.

scrollLeft = 0

Horizontal scroll position. To be used when width > viewWidth. Maximum value is width - viewWidth.

top = 0

(Non-standard) Top position of the canvas with respect to parent window (if any), in pixels. Only absolute positioning is available.

left = 0

(Non-standard) Left position of the canvas with respect to parent window (if any), in pixels. Only absolute positioning is available.

getContext(type)

Presently only supports type == '2d'.

toDataURL()

five.Canvas.getContext('2d')

The documentation below is for exposed methods after a ctx = canvas.getContext('2d') call, which returns a CanvasRenderingContext2D object.

ctx.fillStyle = 'color'

Currently only supports color types (e.g. 'rgb()', 'rgba()', 'blue', '#aabbcc', etc)

ctx.strokeStyle = 'color'

Currently only supports color types (e.g. 'rgb()', 'rgba()', 'blue', '#aabbcc', etc)

ctx.font = '10px family'

Currently only supports the format above

ctx.fillRect(x, y, w, h)

ctx.fillText(text, x, y)

ctx.translate(x, y)

ctx.scale(x, y)

ctx.beginPath()

ctx.closePath()

ctx.moveTo(x, y)

ctx.lineTo(x, y)

ctx.stroke()

ctx.drawImage(image, x, y)

Presently only supports images created via five.Image()

five.Image()

Constructor for image objects. Intended to mirror Image() constructor from browsers.

src = 'file_name'

Presently only supports local paths, e.g. ./images/file.png

complete

onload = callback

five.AudioContext

Class/constructor for AudioContext objects.

destination

Currently returns null

createBufferSource()

Returns a new AudioBufferSourceNode object

five.AudioContext.createBufferSource()

The documentation below is for exposed methods after a source = context.createBufferSource() call, which returns an AudioBufferSourceNode object.

source.buffer = 'filename'

Non-compliant. Presently must specify local filename.

source.connect(dest)

dest is currently a dummy variable. The destination will always be the default audio device

source.loop = true/false

source.noteOn(when)

Currently when = 0, i.e. immediately

About

HTML5 graphics and audio for Node.js

Resources

Stars

298 stars

Watchers

13 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

Node-Five

This is a highly experimental, rapidly-changing project. The APIs might change overnight.

Node-Five brings a subset of HTML5 APIs to Node.js. Presently the main focus is on low-level graphics and audio (for example, Canvas and AudioContext), but other higher-level APIs are welcome. (HTML/CSS layout engine, anyone?)

Node-Five is written in JavaScript on top of Node-Qt.

Hello world

This example illustrates a minimal use of the HTML5 Canvas API:

Screenshot

varfive=require('path-to-node-five-dir'),window=newfive.Window(300,150),canvas=newfive.Canvas(window),ctx=canvas.getContext('2d');ctx.fillStyle='black';ctx.fillText('hello node, hello qt',20,20);

For other examples see the demos/ directory.

Getting started

Since the project is under heavy development, no npm packages are available at the moment. To start, clone the latest development version and install the necessary dependencies:

$ git clone git://github.com/arturadib/node-five.git
$ cd node-five
$ npm install

If everything went well you should be able to run the demos, for example:

$ node demos/03-game-goblins/game.js

To run the unit tests:

$ node make test

(Since different platforms generate different images based on several factors, it's likely the image-based regression tests will fail on your setup. Ignore those errors).

API reference

five

Main object. Typical usage is:

var five = require('path-to-node-five-dir');

useInterval()

Add event handler to Node's event loop via setTimeout(). This is the default event loop integration.

useTick()

Add event handler to Node's event loop via process.nextTick(). This should used in applications that require more instant responsiveness (CPU-intensive!).

stop()

Stop Node-Five's event loop. Applications never exit without a call to this method.

five.Window(width, height)

Native window constructor with the given height and width.

width = 640

Gets/sets window width in pixels

height = 480

Gets/sets window height in pixels

close()

Closes window. It can't be reopened.

addEventListener(event, callback)

Binds event to callback. Supported events are listed below.

removeEventListener(event, callback)

Removes callback from event handler.

Supported events for addEventListener()

  • mousedown: Callback will be passed { clientX, clientY, button }. button values correspond to the convenience constants five.LeftButton, five.RightButton, etc. See http://developer.qt.nokia.com/doc/qt-4.8/qt.html#MouseButton-enum for a list of supported button codes

  • mouseup: Callback will be passed { clientX, clientY, button } as in mousedown.

  • mousemove: Callback will be passed { clientX, clientY }.

  • keydown: Callback will be passed { key, char }. Key values correspond to the convenience constants five.Key_Esc, five.Key_Left, etc. See http://developer.qt.nokia.com/doc/qt-4.8/qt.html#Key-enum for the list of supported keys. char is the corresponding Unicode character, if available.

  • keyup: Callback will be passed { key, char }. Details as in keydown.

five.Canvas(window)

Class/constructor for Canvas objects, either off-screen (no window argument) or inside an existing window.

width = 300

height = 150

viewWidth = width

(Non-standard) Width of the canvas view. Will crop canvas and create scroll bars if smaller than the canvas width.

viewHeight = height

(Non-standard) Height of the canvas view. Will crop canvas and create scroll bars if smaller than the canvas height.

scrollTop = 0

Vertical scroll position. To be used when height > viewHeight. Maximum value is height - viewHeight.

scrollLeft = 0

Horizontal scroll position. To be used when width > viewWidth. Maximum value is width - viewWidth.

top = 0

(Non-standard) Top position of the canvas with respect to parent window (if any), in pixels. Only absolute positioning is available.

left = 0

(Non-standard) Left position of the canvas with respect to parent window (if any), in pixels. Only absolute positioning is available.

getContext(type)

Presently only supports type == '2d'.

toDataURL()

five.Canvas.getContext('2d')

The documentation below is for exposed methods after a ctx = canvas.getContext('2d') call, which returns a CanvasRenderingContext2D object.

ctx.fillStyle = 'color'

Currently only supports color types (e.g. 'rgb()', 'rgba()', 'blue', '#aabbcc', etc)

ctx.strokeStyle = 'color'

Currently only supports color types (e.g. 'rgb()', 'rgba()', 'blue', '#aabbcc', etc)

ctx.font = '10px family'

Currently only supports the format above

ctx.fillRect(x, y, w, h)

ctx.fillText(text, x, y)

ctx.translate(x, y)

ctx.scale(x, y)

ctx.beginPath()

ctx.closePath()

ctx.moveTo(x, y)

ctx.lineTo(x, y)

ctx.stroke()

ctx.drawImage(image, x, y)

Presently only supports images created via five.Image()

five.Image()

Constructor for image objects. Intended to mirror Image() constructor from browsers.

src = 'file_name'

Presently only supports local paths, e.g. ./images/file.png

complete

onload = callback

five.AudioContext

Class/constructor for AudioContext objects.

destination

Currently returns null

createBufferSource()

Returns a new AudioBufferSourceNode object

five.AudioContext.createBufferSource()

The documentation below is for exposed methods after a source = context.createBufferSource() call, which returns an AudioBufferSourceNode object.

source.buffer = 'filename'

Non-compliant. Presently must specify local filename.

source.connect(dest)

dest is currently a dummy variable. The destination will always be the default audio device

source.loop = true/false

source.noteOn(when)

Currently when = 0, i.e. immediately

About

HTML5 graphics and audio for Node.js

Resources

Stars

298 stars

Watchers

13 watching

Forks

Releases

Packages

Used by

Contributors

Languages