Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(34)

Unified Diff: native_client_sdk/src/gonacl_appengine/static/pnacl-demo-smoothlife/example.js

Issue 58573003: [NaCl SDK] Update SmoothLife demo to the most recent version. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « native_client_sdk/src/gonacl_appengine/src/smoothlife/build.sh ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: native_client_sdk/src/gonacl_appengine/static/pnacl-demo-smoothlife/example.js
diff --git a/native_client_sdk/src/gonacl_appengine/static/pnacl-demo-smoothlife/example.js b/native_client_sdk/src/gonacl_appengine/static/pnacl-demo-smoothlife/example.js
index 5171d330b0c3433f6f4484b1148838dc8af0ae55..c6c6a215ae61687c8435e699270151541b4c6984 100644
--- a/native_client_sdk/src/gonacl_appengine/static/pnacl-demo-smoothlife/example.js
+++ b/native_client_sdk/src/gonacl_appengine/static/pnacl-demo-smoothlife/example.js
@@ -132,6 +132,9 @@ function moduleDidLoad() {
bar.max = 100;
naclModule = $('nacl_module');
hideStatus();
+ setSize(256);
+ setThreadCount(4);
+ setMaxScale(1);
loadPreset(0);
}
@@ -202,10 +205,19 @@ function attachListeners() {
});
}
+/**
+ * Load the current preset from the select element with id "preset".
+ */
function loadSelectedPreset() {
loadPreset($('preset').value);
}
+/**
+ * Set the SmoothLife parameters from a preset, indexing into the |presets|
+ * global above.
+ *
+ * @param {number} index into |presets| variable.
+ */
function loadPreset(index) {
var preset = presets[index];
@@ -216,10 +228,59 @@ function loadPreset(index) {
splat();
}
+/**
+ * Clear the SmoothLife buffer with a given number value, between 0 and 1.
+ *
+ * @param {number} color The clear value.
+ */
function clear(color) {
naclModule.postMessage({cmd: 'clear', color: color});
}
+/**
+ * Set the size of the SmoothLife buffer.
+ *
+ * @param {number} size The width and height of the new buffer. Currently it
+ * must be one of 256, 384 or 512.
+ */
+function setSize(size) {
+ naclModule.postMessage({cmd: 'setSize', size: size});
+}
+
+/**
+ * Set the maximum scale factor when drawing the SmoothLife buffer to the
+ * Graphics2D canvas. If the buffer would have to scale past this factor, it
+ * will tile instead.
+ *
+ * For example, if the buffer is 256x256, and the canvas is 1024x512, and the
+ * max scale factor is 1, then the buffer will be tiled 8 times: 4 in the top
+ * row and 4 in the bottom row.
+ *
+ * @param {number} scale The maximum scale,
+ */
+function setMaxScale(scale) {
+ naclModule.postMessage({cmd: 'setMaxScale', scale: scale});
+}
+
+/**
+ * Set the number of threads to use for calls to FFTW.
+ *
+ * @param {number} threadCount The number of threads to use. Must be >= 1.
+ */
+function setThreadCount(threadCount) {
+ naclModule.postMessage({cmd: 'setThreadCount', threadCount: threadCount});
+}
+
+
+/**
+ * Set the "kernel" of the SmoothLife calculations. Please read the SmoothLife
+ * paper for more information.
+ *
+ * @param {number} discRadius The radius of the kernel "disc" (the inner part).
+ * @param {number} ringRadius The radius of the kernel "ring" (surrounds the
+ * disc).
+ * @param {number} blendRadius The amount of blending between the disc and ring.
+ */
function setKernel(discRadius, ringRadius, blendRadius) {
naclModule.postMessage({
cmd: 'setKernel',
@@ -228,6 +289,22 @@ function setKernel(discRadius, ringRadius, blendRadius) {
blendRadius: blendRadius});
}
+/**
+ * Set the "smoother" of the SmoothLife calculations. Please read the
+ * SmoothLife paper for more information.
+ *
+ * @param {number} type A timestep type, in the range [0,4].
+ * @param {number} dt A positive real timestep delta. Only used if type > 0.
+ * @param {number} b1 A positive real, used to parameterize the smoother curve
+ * @param {number} d1 A positive real, used to parameterize the smoother curve
+ * @param {number} b2 A positive real, used to parameterize the smoother curve
+ * @param {number} d2 A positive real, used to parameterize the smoother curve
+ * @param {number} mode A sigmoid combination function, in the range [0,3].
+ * @param {number} sigmoid A sigmoid function, in the range [0,4].
+ * @param {number} mix Another sigmoid function, in the range [0,4].
+ * @param {number} sn A positive real, used to parameterize the smoother curve
+ * @param {number} sm A positive real, used to parameterize the smoother curve
+ */
function setSmoother(type, dt, b1, d1, b2, d2, mode, sigmoid, mix, sn, sm) {
naclModule.postMessage({
cmd: 'setSmoother',
@@ -237,6 +314,29 @@ function setSmoother(type, dt, b1, d1, b2, d2, mode, sigmoid, mix, sn, sm) {
sn: sn, sm: sm});
}
+/**
+ * Set the palette used to draw the buffer, mapping a value from [0,1] to a
+ * RGBA value.
+ *
+ * The first argument (arguments[0]) is either 0 or 1:
+ * 0: Any color outside of the range is clamped to the closest color in the
+ * range.
+ * 1: The palette cycles for any values not in the given range.
+ *
+ * The rest of the arguments are pairs of (color, stop).
+ *
+ * |color| is a string in standard HTML/CSS format, like "#ff00ff". It does not
+ * support abbreviations ('#fff').
+ *
+ * |stop| is a number in the range [0, 100]. Any value that is not exactly on a
+ * stop will be interpolated between the closest two stops.
+ *
+ * For example, if there are two stops ('#000000', 0) and ('#808080', 50),
+ * then the buffer value 0.25 will map to the color '#404040'.
+ *
+ * If |repeating| is 0, then the buffer value 0.75 will map to '#808080'.
+ * If |repeating| is 1, then the buffer value 0.75 will map to '#404040'.
+ */
function setPalette() {
var repeating = arguments[0] !== 0;
var colors = []
@@ -252,10 +352,20 @@ function setPalette() {
stops: stops});
}
+/**
+ * Draw a bunch of random circles in the SmoothLife buffer.
+ */
function splat() {
naclModule.postMessage({cmd: 'splat'});
}
+/**
+ * Change the size and color of the mouse "brush", when drawing on the canvas.
+ *
+ * @param {number} radius The radius of the brush in buffer units. See setSize()
+ * @param {number} color The "color" of the brush, in the range [0, 1]. This is
+ * actually not a color, but a value to draw into the buffer.
+ */
function setBrushSize(radius, color) {
naclModule.postMessage({cmd: 'setBrush', radius: radius, color: color});
}
« no previous file with comments | « native_client_sdk/src/gonacl_appengine/src/smoothlife/build.sh ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698