@ -1,101 +0,0 @@ | |||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> | |||||
<html> | |||||
<head> | |||||
<title>Data from datasource</title> | |||||
<style> | |||||
body {font: 10pt arial;} | |||||
</style> | |||||
<script type="text/javascript" src="http://www.google.com/jsapi"></script> | |||||
<script type="text/javascript" src="../graph3d.js"></script> | |||||
<script type="text/javascript"> | |||||
var dataSourceUrl = "datasource.php"; | |||||
var data = null; | |||||
var graph = null; | |||||
var query = null; | |||||
function sendRequest () { | |||||
drawVisualization = function(response) { | |||||
document.getElementById("info").innerHTML = ""; | |||||
document.getElementById("getdata").disabled = ""; | |||||
if (response.isError()) { | |||||
alert('Error: ' + response.getMessage()); | |||||
return; | |||||
} | |||||
// retrieve the data from the query response | |||||
data = response.getDataTable(); | |||||
// specify options | |||||
var options = {width: "600px", | |||||
height: "600px", | |||||
style: "surface", | |||||
showPerspective: true, | |||||
showGrid: true, | |||||
showShadow: false, | |||||
keepAspectRatio: true, | |||||
verticalRatio: 0.5 | |||||
}; | |||||
// Instantiate our graph object. | |||||
graph = new links.Graph3d(document.getElementById('mygraph')); | |||||
// Draw our graph with the created data and options | |||||
graph.draw(data, options); | |||||
}; | |||||
// built up the url with parameters | |||||
var url = dataSourceUrl + "?" + | |||||
"xmin=" + document.getElementById("xmin").value + "&" + | |||||
"xmax=" + document.getElementById("xmax").value + "&" + | |||||
"xstepnum=" + document.getElementById("xstepnum").value + "&" + | |||||
"ymin=" + document.getElementById("ymin").value+ "&" + | |||||
"ymax=" + document.getElementById("ymax").value + "&" + | |||||
"ystepnum=" + document.getElementById("ystepnum").value; | |||||
document.getElementById("info").innerHTML = "Loading..."; | |||||
document.getElementById("getdata").disabled = "disabled"; | |||||
// send the request | |||||
query && query.abort(); | |||||
query = new google.visualization.Query(url); | |||||
query.send(drawVisualization); | |||||
} | |||||
google.load("visualization", "1"); | |||||
// Set callback to run when API is loaded | |||||
google.setOnLoadCallback(sendRequest); | |||||
</script> | |||||
</head> | |||||
<body> | |||||
<h1>Data from datasource</h1> | |||||
<p style="font-style:italic;"> | |||||
Note: this example works only when running it on a PHP server, | |||||
as the datasource is a php file. | |||||
</p> | |||||
<p> | |||||
xmin: <input type="text" value="-100" id="xmin" style="width:50px;"> | |||||
xmax: <input type="text" value="300" id="xmax" style="width:50px;"> | |||||
steps: <input type="text" value="50" id="xstepnum" style="width:50px;"> | |||||
</p> | |||||
<p> | |||||
ymin: <input type="text" value="-100" id="ymin" style="width:50px;"> | |||||
ymax: <input type="text" value="100" id="ymax" style="width:50px;"> | |||||
steps: <input type="text" value="25" id="ystepnum" style="width:50px;"> | |||||
</p> | |||||
<p> | |||||
<input type="button" value="Get Data" id="getdata" onclick="sendRequest();"> | |||||
<span id="info"></span> | |||||
</p> | |||||
<div id="mygraph"></div> | |||||
<div id="info"></div> | |||||
</body> | |||||
</html> |
@ -1,90 +0,0 @@ | |||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> | |||||
<html> | |||||
<head> | |||||
<title>Graph 3D Internet Explorer 9 support</title> | |||||
<style> | |||||
body {font: 10pt arial; width: 600px; } | |||||
</style> | |||||
<script type="text/javascript" src="http://www.google.com/jsapi"></script> | |||||
<script type="text/javascript" src="../graph3d.js"></script> | |||||
<script type="text/javascript"> | |||||
var data = null; | |||||
var graph = null; | |||||
google.load("visualization", "1"); | |||||
// Set callback to run when API is loaded | |||||
google.setOnLoadCallback(drawVisualization); | |||||
function custom(x, y) { | |||||
return (Math.sin(x/50) * Math.cos(y/50) * 50 + 50); | |||||
} | |||||
// Called when the Visualization API is loaded. | |||||
function drawVisualization() { | |||||
// Create and populate a data table. | |||||
data = new google.visualization.DataTable(); | |||||
data.addColumn('number', 'x'); | |||||
data.addColumn('number', 'y'); | |||||
data.addColumn('number', 'value'); | |||||
// create some nice looking data with sin/cos | |||||
var steps = 50; // number of datapoints will be steps*steps | |||||
var axisMax = 314; | |||||
var axisStep = axisMax / steps; | |||||
for (var x = 0; x < axisMax; x+=axisStep) { | |||||
for (var y = 0; y < axisMax; y+=axisStep) { | |||||
var value = custom(x,y); | |||||
data.addRow([x, y, value]); | |||||
} | |||||
} | |||||
// specify options | |||||
var options = { | |||||
width: "100%", | |||||
height: "600px", | |||||
style: "surface", | |||||
showPerspective: true, | |||||
showGrid: true, | |||||
showShadow: false, | |||||
keepAspectRatio: true, | |||||
verticalRatio: 0.5 | |||||
}; | |||||
// Instantiate our graph object. | |||||
graph = new links.Graph3d(document.getElementById('mygraph')); | |||||
// Draw our graph with the created data and options | |||||
graph.draw(data, options); | |||||
} | |||||
</script> | |||||
</head> | |||||
<body> | |||||
<p> | |||||
Graph3D uses the HTML Canvas element. This element is supported by all | |||||
major browsers. The Canvas element is also supported in Internet Explorer | |||||
9 and newer. However, for Internet Explorer it is necessary to specify | |||||
the doctype of the html page: | |||||
</p> | |||||
<pre style= "margin-left:40px;" ><code > | |||||
<b style= "color:red;" ><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"></b> | |||||
<html> | |||||
<head> | |||||
<!-- ... --> | |||||
</head> | |||||
<body> | |||||
<!-- ... --> | |||||
</body> | |||||
</html> | |||||
</code></pre> | |||||
<div id="mygraph"></div> | |||||
<div id="info"></div> | |||||
</body> | |||||
</html> |
@ -1,92 +0,0 @@ | |||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> | |||||
<html> | |||||
<head> | |||||
<title>Data from datasource</title> | |||||
<style> | |||||
body {font: 10pt arial;} | |||||
</style> | |||||
<script type="text/javascript" src="http://www.google.com/jsapi"></script> | |||||
<script type="text/javascript" src="../graph3d.js"></script> | |||||
<script type="text/javascript"> | |||||
var DATASOURCE_URL = "datasource_csv_to_json.php"; | |||||
var REFRESH_INTERVAL = 1000; // milliseconds | |||||
var data = null; | |||||
var graph = null; | |||||
var query = null; | |||||
var draw = function() { | |||||
// create an empty table to initialized the graph | |||||
data = new google.visualization.DataTable(); | |||||
data.addColumn('number', 'x'); | |||||
data.addColumn('number', 'y'); | |||||
data.addColumn('number', 'z'); | |||||
data.addColumn('number', 'color'); | |||||
// specify options | |||||
var options = { | |||||
width: "600px", | |||||
height: "600px", | |||||
style: "dot-color", | |||||
showPerspective: true, | |||||
showGrid: true, | |||||
showShadow: false, | |||||
keepAspectRatio: true, | |||||
verticalRatio: 0.5, | |||||
cameraPosition: { | |||||
distance: 1.4, | |||||
horizontal: 0.0, | |||||
vertical: 1.0 | |||||
} | |||||
}; | |||||
// Instantiate our graph object. | |||||
graph = new links.Graph3d(document.getElementById('graph')); | |||||
// Draw our graph with the created data and options | |||||
graph.draw(data, options); | |||||
refresh(); | |||||
}; | |||||
google.load("visualization", "1"); | |||||
// Set callback to run when API is loaded | |||||
google.setOnLoadCallback(draw); | |||||
// callback function, executed when the response data is received | |||||
var redraw = function(response) { | |||||
data = response.getDataTable(); | |||||
graph.redraw(data); | |||||
document.getElementById("info").innerHTML = "Updated " + new Date(); | |||||
}; | |||||
var refresh = function() { | |||||
// send the datasource request | |||||
query && query.abort(); | |||||
query = new google.visualization.Query(DATASOURCE_URL); | |||||
query.send(redraw); | |||||
window.setTimeout(refresh, REFRESH_INTERVAL); | |||||
} | |||||
</script> | |||||
</head> | |||||
<body> | |||||
<h1>Refresh data from external datasource</h1> | |||||
<p> | |||||
This example refreshes once per second the data from an external datasource. | |||||
</p> | |||||
<p style="font-style:italic;"> | |||||
Note: this example works only when running it on a PHP server, | |||||
as the datasource is a php file. | |||||
</p> | |||||
<div id="graph"></div> | |||||
<div id="info"></div> | |||||
</body> | |||||
</html> |
@ -1,185 +0,0 @@ | |||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> | |||||
<html> | |||||
<head> | |||||
<title>Datastream example</title> | |||||
<style> | |||||
body { | |||||
width: 600px; | |||||
font-size: 14px; | |||||
} | |||||
</style> | |||||
<script type="text/javascript" src="http://www.google.com/jsapi"></script> | |||||
<script type="text/javascript" src="../graph3d.js"></script> | |||||
<script type="text/javascript" src="ajax.js"></script> | |||||
<script> | |||||
var url = "datastream_csv.php"; | |||||
google.load("visualization", "1"); | |||||
// Set callback to run when API is loaded | |||||
google.setOnLoadCallback(load); | |||||
var loaded = false; | |||||
var ajax = new Ajax(); | |||||
var dataBuffer = ""; | |||||
var indexTable = undefined; | |||||
var dataTable = undefined; | |||||
var graph = undefined; | |||||
var options = undefined; | |||||
function load() { | |||||
// initialize data table | |||||
indexTable = new Array(); | |||||
dataTable = new google.visualization.DataTable(); | |||||
dataTable.addColumn('number', 'x'); | |||||
dataTable.addColumn('number', 'y'); | |||||
dataTable.addColumn('number', 'z'); | |||||
dataTable.addColumn('number', 'color'); | |||||
// specify options | |||||
options = { | |||||
width: "500px", | |||||
height: "500px", | |||||
style: "dot-color", | |||||
showPerspective: true, | |||||
showGrid: true, | |||||
showShadow: false, | |||||
keepAspectRatio: true, | |||||
verticalRatio: 0.5, | |||||
cameraPosition: { | |||||
distance: 1.4, | |||||
horizontal: 0.0, | |||||
vertical: 1.0 | |||||
} | |||||
}; | |||||
// Instantiate our graph object. | |||||
graph = new links.Graph3d(document.getElementById('graph')); | |||||
// Draw our graph with the created data and options | |||||
graph.draw(dataTable, options); | |||||
loaded = true; | |||||
} | |||||
/** | |||||
* Update the data in the datatable | |||||
*/ | |||||
function setData(id, x, y, z, color) { | |||||
if (indexTable[id] != undefined) { | |||||
// update data | |||||
var row = indexTable[id]; | |||||
dataTable.setValue(row, 0, x); | |||||
dataTable.setValue(row, 1, y); | |||||
dataTable.setValue(row, 2, z); | |||||
dataTable.setValue(row, 3, color); | |||||
} | |||||
else { | |||||
// add data | |||||
var row = dataTable.addRow([x, y,z, color]); | |||||
indexTable[id] = row; | |||||
} | |||||
} | |||||
/** | |||||
* Parse data in csv format. | |||||
* The data is supposed to be in CSV format and has five numeric columns: | |||||
* id, x, y,z, color | |||||
* Rows are separated by a line and, and fields by a comma. spaces are | |||||
* neglected. | |||||
* @param {string} data | |||||
* @param {string} delimeter Optional delimeter. A comma "," by default | |||||
*/ | |||||
function parseData(data, delimeter) { | |||||
if (delimeter == undefined) { | |||||
delimeter = ","; | |||||
} | |||||
dataBuffer += data; | |||||
var id = undefined; | |||||
var x = undefined; | |||||
var y = undefined; | |||||
var z = undefined; | |||||
var color = undefined; | |||||
var rows = dataBuffer.split("\n"); | |||||
for (var i = 0; i < rows.length; i++) { | |||||
var row = rows[i].split(delimeter); | |||||
if (row.length == 5) { | |||||
var id = parseInt(row[0]); | |||||
var x = parseFloat(row[1]); | |||||
var y = parseFloat(row[2]); | |||||
var z = parseFloat(row[3]); | |||||
var color = parseFloat(row[4]); | |||||
setData(id, x, y, z, color); | |||||
} | |||||
else { | |||||
// corrupt data or empty line | |||||
} | |||||
} | |||||
// empty the buffer up to the last line | |||||
// TODO: handle the buffer smarter, makes not much sense right now. | |||||
var lastReturn = dataBuffer.lastIndexOf("\n"); | |||||
if (lastReturn >= 0) | |||||
dataBuffer = dataBuffer.substring(lastReturn); | |||||
else | |||||
dataBuffer = ""; | |||||
} | |||||
function start() { | |||||
if(!loaded) { | |||||
alert("Still loading Google API. One moment please..."); | |||||
return; | |||||
} | |||||
var callback = function (newData) { | |||||
parseData(newData); | |||||
graph.redraw(dataTable); | |||||
} | |||||
ajax.abort(); | |||||
ajax.requestLongPoll("GET", url, callback); | |||||
} | |||||
function stop () { | |||||
ajax.abort(); | |||||
} | |||||
</script> | |||||
</head> | |||||
<body> | |||||
<h1>Datastream example</h1> | |||||
<p> | |||||
This example demonstrates reading a data stream, via a long poll. | |||||
</p> | |||||
<p> | |||||
Note that some browsers buffer data from a stream before sending it to the | |||||
screen. In that case "nothing" seems to happens until the buffer limit is | |||||
reached. | |||||
</p> | |||||
<p> | |||||
When the datasource is located on an external server, | |||||
the datasource must enable cross domain scripting | |||||
(Access-Control-Allow-Origin must be set on the server side). | |||||
</p> | |||||
<p> | |||||
<input type="button" id="start" value="Start" onclick="start();"> | |||||
<input type="button" is="stop" value="Stop" onclick="stop();"> | |||||
</p> | |||||
<div id="graph"></div> | |||||
</body> | |||||
</html> |
@ -1 +0,0 @@ | |||||
jsdoc |
@ -1,68 +0,0 @@ | |||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> | |||||
<html> | |||||
<head> | |||||
<title>Graph 3D demo</title> | |||||
<style> | |||||
body {font: 10pt arial;} | |||||
</style> | |||||
<script type="text/javascript" src="http://www.google.com/jsapi"></script> | |||||
<script type="text/javascript" src="../graph3d.js"></script> | |||||
<script type="text/javascript"> | |||||
var data = null; | |||||
var graph = null; | |||||
google.load("visualization", "1"); | |||||
// Set callback to run when API is loaded | |||||
google.setOnLoadCallback(drawVisualization); | |||||
function custom(x, y) { | |||||
return Math.sin(x/50) * Math.cos(y/50) * 50 + 50; | |||||
} | |||||
// Called when the Visualization API is loaded. | |||||
function drawVisualization() { | |||||
// Create and populate a data table. | |||||
data = new google.visualization.DataTable(); | |||||
data.addColumn('number', 'x'); | |||||
data.addColumn('number', 'y'); | |||||
data.addColumn('number', 'value'); | |||||
// create some nice looking data with sin/cos | |||||
var steps = 25; // number of datapoints will be steps*steps | |||||
var axisMax = 314; | |||||
axisStep = axisMax / steps; | |||||
for (var x = 0; x < axisMax; x+=axisStep) { | |||||
for (var y = 0; y < axisMax; y+=axisStep) { | |||||
var value = custom(x,y); | |||||
data.addRow([x, y, value]); | |||||
} | |||||
} | |||||
// specify options | |||||
options = {width: "400px", | |||||
height: "400px", | |||||
style: "surface", | |||||
showPerspective: true, | |||||
showGrid: true, | |||||
showShadow: false, | |||||
keepAspectRatio: true, | |||||
verticalRatio: 0.5 | |||||
}; | |||||
// Instantiate our graph object. | |||||
graph = new links.Graph3d(document.getElementById('mygraph')); | |||||
// Draw our graph with the created data and options | |||||
graph.draw(data, options); | |||||
} | |||||
</script> | |||||
</head> | |||||
<body> | |||||
<div id="mygraph"></div> | |||||
</body> | |||||
</html> |
@ -1,2 +0,0 @@ | |||||
PR.registerLangHandler(PR.createSimpleLexer([["com",/^#[^\r\n]*/,null,"#"],["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"']],[["kwd",/^(?:ADS|AD|AUG|BZF|BZMF|CAE|CAF|CA|CCS|COM|CS|DAS|DCA|DCOM|DCS|DDOUBL|DIM|DOUBLE|DTCB|DTCF|DV|DXCH|EDRUPT|EXTEND|INCR|INDEX|NDX|INHINT|LXCH|MASK|MSK|MP|MSU|NOOP|OVSK|QXCH|RAND|READ|RELINT|RESUME|RETURN|ROR|RXOR|SQUARE|SU|TCR|TCAA|OVSK|TCF|TC|TS|WAND|WOR|WRITE|XCH|XLQ|XXALQ|ZL|ZQ|ADD|ADZ|SUB|SUZ|MPY|MPR|MPZ|DVP|COM|ABS|CLA|CLZ|LDQ|STO|STQ|ALS|LLS|LRS|TRA|TSQ|TMI|TOV|AXT|TIX|DLY|INP|OUT)\s/, | |||||
null],["typ",/^(?:-?GENADR|=MINUS|2BCADR|VN|BOF|MM|-?2CADR|-?[1-6]DNADR|ADRES|BBCON|[SE]?BANK\=?|BLOCK|BNKSUM|E?CADR|COUNT\*?|2?DEC\*?|-?DNCHAN|-?DNPTR|EQUALS|ERASE|MEMORY|2?OCT|REMADR|SETLOC|SUBRO|ORG|BSS|BES|SYN|EQU|DEFINE|END)\s/,null],["lit",/^\'(?:-*(?:\w|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?)?/],["pln",/^-*(?:[!-z_]|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?/i],["pun",/^[^\w\t\n\r \xA0()\"\\\';]+/]]),["apollo","agc","aea"]) |
@ -1,2 +0,0 @@ | |||||
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[ \t\r\n\f]+/,null," \t\r\n\u000c"]],[["str",/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],["str",/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']*)\)/i],["kwd",/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],["com",/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//], | |||||
["com",/^(?:<!--|--\>)/],["lit",/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],["lit",/^#(?:[0-9a-f]{3}){1,2}/i],["pln",/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],["pun",/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[["kwd",/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[["str",/^[^\)\"\']+/]]),["css-str"]) |
@ -1,2 +0,0 @@ | |||||
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\x0B\x0C\r ]+/,null,"\t\n\u000b\u000c\r "],["str",/^\"(?:[^\"\\\n\x0C\r]|\\[\s\S])*(?:\"|$)/,null,'"'],["str",/^\'(?:[^\'\\\n\x0C\r]|\\[^&])\'?/,null,"'"],["lit",/^(?:0o[0-7]+|0x[\da-f]+|\d+(?:\.\d+)?(?:e[+\-]?\d+)?)/i,null,"0123456789"]],[["com",/^(?:(?:--+(?:[^\r\n\x0C]*)?)|(?:\{-(?:[^-]|-+[^-\}])*-\}))/],["kwd",/^(?:case|class|data|default|deriving|do|else|if|import|in|infix|infixl|infixr|instance|let|module|newtype|of|then|type|where|_)(?=[^a-zA-Z0-9\']|$)/, | |||||
null],["pln",/^(?:[A-Z][\w\']*\.)*[a-zA-Z][\w\']*/],["pun",/^[^\t\n\x0B\x0C\r a-zA-Z0-9\'\"]+/]]),["hs"]) |
@ -1,2 +0,0 @@ | |||||
PR.registerLangHandler(PR.createSimpleLexer([["opn",/^\(/,null,"("],["clo",/^\)/,null,")"],["com",/^;[^\r\n]*/,null,";"],["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"']],[["kwd",/^(?:block|c[ad]+r|catch|con[ds]|def(?:ine|un)|do|eq|eql|equal|equalp|eval-when|flet|format|go|if|labels|lambda|let|load-time-value|locally|macrolet|multiple-value-call|nil|progn|progv|quote|require|return-from|setq|symbol-macrolet|t|tagbody|the|throw|unwind)\b/, | |||||
null],["lit",/^[+\-]?(?:0x[0-9a-f]+|\d+\/\d+|(?:\.\d+|\d+(?:\.\d*)?)(?:[ed][+\-]?\d+)?)/i],["lit",/^\'(?:-*(?:\w|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?)?/],["pln",/^-*(?:[a-z_]|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?/i],["pun",/^[^\w\t\n\r \xA0()\"\\\';]+/]]),["cl","el","lisp","scm"]) |
@ -1,2 +0,0 @@ | |||||
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^(?:\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)|\'(?:[^\'\\]|\\[\s\S])*(?:\'|$))/,null,"\"'"]],[["com",/^--(?:\[(=*)\[[\s\S]*?(?:\]\1\]|$)|[^\r\n]*)/],["str",/^\[(=*)\[[\s\S]*?(?:\]\1\]|$)/],["kwd",/^(?:and|break|do|else|elseif|end|false|for|function|if|in|local|nil|not|or|repeat|return|then|true|until|while)\b/,null],["lit",/^[+-]?(?:0x[\da-f]+|(?:(?:\.\d+|\d+(?:\.\d*)?)(?:e[+\-]?\d+)?))/i], | |||||
["pln",/^[a-z_]\w*/i],["pun",/^[^\w\t\n\r \xA0][^\w\t\n\r \xA0\"\'\-\+=]*/]]),["lua"]) |
@ -1,2 +0,0 @@ | |||||
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["com",/^#(?:if[\t\n\r \xA0]+(?:[a-z_$][\w\']*|``[^\r\n\t`]*(?:``|$))|else|endif|light)/i,null,"#"],["str",/^(?:\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)|\'(?:[^\'\\]|\\[\s\S])*(?:\'|$))/,null,"\"'"]],[["com",/^(?:\/\/[^\r\n]*|\(\*[\s\S]*?\*\))/],["kwd",/^(?:abstract|and|as|assert|begin|class|default|delegate|do|done|downcast|downto|elif|else|end|exception|extern|false|finally|for|fun|function|if|in|inherit|inline|interface|internal|lazy|let|match|member|module|mutable|namespace|new|null|of|open|or|override|private|public|rec|return|static|struct|then|to|true|try|type|upcast|use|val|void|when|while|with|yield|asr|land|lor|lsl|lsr|lxor|mod|sig|atomic|break|checked|component|const|constraint|constructor|continue|eager|event|external|fixed|functor|global|include|method|mixin|object|parallel|process|protected|pure|sealed|trait|virtual|volatile)\b/], | |||||
["lit",/^[+\-]?(?:0x[\da-f]+|(?:(?:\.\d+|\d+(?:\.\d*)?)(?:e[+\-]?\d+)?))/i],["pln",/^(?:[a-z_]\w*[!?#]?|``[^\r\n\t`]*(?:``|$))/i],["pun",/^[^\t\n\r \xA0\"\'\w]+/]]),["fs","ml"]) |
@ -1 +0,0 @@ | |||||
PR.registerLangHandler(PR.sourceDecorator({keywords:"bool bytes default double enum extend extensions false fixed32 fixed64 float group import int32 int64 max message option optional package repeated required returns rpc service sfixed32 sfixed64 sint32 sint64 string syntax to true uint32 uint64",cStyleComments:true}),["proto"]) |
@ -1,2 +0,0 @@ | |||||
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^(?:"(?:(?:""(?:""?(?!")|[^\\"]|\\.)*"{0,3})|(?:[^"\r\n\\]|\\.)*"?))/,null,'"'],["lit",/^`(?:[^\r\n\\`]|\\.)*`?/,null,"`"],["pun",/^[!#%&()*+,\-:;<=>?@\[\\\]^{|}~]+/,null,"!#%&()*+,-:;<=>?@[\\]^{|}~"]],[["str",/^'(?:[^\r\n\\']|\\(?:'|[^\r\n']+))'/],["lit",/^'[a-zA-Z_$][\w$]*(?!['$\w])/],["kwd",/^(?:abstract|case|catch|class|def|do|else|extends|final|finally|for|forSome|if|implicit|import|lazy|match|new|object|override|package|private|protected|requires|return|sealed|super|throw|trait|try|type|val|var|while|with|yield)\b/], | |||||
["lit",/^(?:true|false|null|this)\b/],["lit",/^(?:(?:0(?:[0-7]+|X[0-9A-F]+))L?|(?:(?:0|[1-9][0-9]*)(?:(?:\.[0-9]+)?(?:E[+\-]?[0-9]+)?F?|L?))|\\.[0-9]+(?:E[+\-]?[0-9]+)?F?)/i],["typ",/^[$_]*[A-Z][_$A-Z0-9]*[a-z][\w$]*/],["pln",/^[$a-zA-Z_][\w$]*/],["com",/^\/(?:\/.*|\*(?:\/|\**[^*/])*(?:\*+\/?)?)/],["pun",/^(?:\.+|\/)/]]),["scala"]) |
@ -1,2 +0,0 @@ | |||||
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^(?:"(?:[^\"\\]|\\.)*"|'(?:[^\'\\]|\\.)*')/,null,"\"'"]],[["com",/^(?:--[^\r\n]*|\/\*[\s\S]*?(?:\*\/|$))/],["kwd",/^(?:ADD|ALL|ALTER|AND|ANY|AS|ASC|AUTHORIZATION|BACKUP|BEGIN|BETWEEN|BREAK|BROWSE|BULK|BY|CASCADE|CASE|CHECK|CHECKPOINT|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMN|COMMIT|COMPUTE|CONSTRAINT|CONTAINS|CONTAINSTABLE|CONTINUE|CONVERT|CREATE|CROSS|CURRENT|CURRENT_DATE|CURRENT_TIME|CURRENT_TIMESTAMP|CURRENT_USER|CURSOR|DATABASE|DBCC|DEALLOCATE|DECLARE|DEFAULT|DELETE|DENY|DESC|DISK|DISTINCT|DISTRIBUTED|DOUBLE|DROP|DUMMY|DUMP|ELSE|END|ERRLVL|ESCAPE|EXCEPT|EXEC|EXECUTE|EXISTS|EXIT|FETCH|FILE|FILLFACTOR|FOR|FOREIGN|FREETEXT|FREETEXTTABLE|FROM|FULL|FUNCTION|GOTO|GRANT|GROUP|HAVING|HOLDLOCK|IDENTITY|IDENTITYCOL|IDENTITY_INSERT|IF|IN|INDEX|INNER|INSERT|INTERSECT|INTO|IS|JOIN|KEY|KILL|LEFT|LIKE|LINENO|LOAD|NATIONAL|NOCHECK|NONCLUSTERED|NOT|NULL|NULLIF|OF|OFF|OFFSETS|ON|OPEN|OPENDATASOURCE|OPENQUERY|OPENROWSET|OPENXML|OPTION|OR|ORDER|OUTER|OVER|PERCENT|PLAN|PRECISION|PRIMARY|PRINT|PROC|PROCEDURE|PUBLIC|RAISERROR|READ|READTEXT|RECONFIGURE|REFERENCES|REPLICATION|RESTORE|RESTRICT|RETURN|REVOKE|RIGHT|ROLLBACK|ROWCOUNT|ROWGUIDCOL|RULE|SAVE|SCHEMA|SELECT|SESSION_USER|SET|SETUSER|SHUTDOWN|SOME|STATISTICS|SYSTEM_USER|TABLE|TEXTSIZE|THEN|TO|TOP|TRAN|TRANSACTION|TRIGGER|TRUNCATE|TSEQUAL|UNION|UNIQUE|UPDATE|UPDATETEXT|USE|USER|VALUES|VARYING|VIEW|WAITFOR|WHEN|WHERE|WHILE|WITH|WRITETEXT)(?=[^\w-]|$)/i, | |||||
null],["lit",/^[+-]?(?:0x[\da-f]+|(?:(?:\.\d+|\d+(?:\.\d*)?)(?:e[+\-]?\d+)?))/i],["pln",/^[a-z_][\w-]*/i],["pun",/^[^\w\t\n\r \xA0\"\'][^\w\t\n\r \xA0+\-\"\']*/]]),["sql"]) |
@ -1,2 +0,0 @@ | |||||
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0\u2028\u2029]+/,null,"\t\n\r \u00a0\u2028\u2029"],["str",/^(?:[\"\u201C\u201D](?:[^\"\u201C\u201D]|[\"\u201C\u201D]{2})(?:[\"\u201C\u201D]c|$)|[\"\u201C\u201D](?:[^\"\u201C\u201D]|[\"\u201C\u201D]{2})*(?:[\"\u201C\u201D]|$))/i,null,'"\u201c\u201d'],["com",/^[\'\u2018\u2019][^\r\n\u2028\u2029]*/,null,"'\u2018\u2019"]],[["kwd",/^(?:AddHandler|AddressOf|Alias|And|AndAlso|Ansi|As|Assembly|Auto|Boolean|ByRef|Byte|ByVal|Call|Case|Catch|CBool|CByte|CChar|CDate|CDbl|CDec|Char|CInt|Class|CLng|CObj|Const|CShort|CSng|CStr|CType|Date|Decimal|Declare|Default|Delegate|Dim|DirectCast|Do|Double|Each|Else|ElseIf|End|EndIf|Enum|Erase|Error|Event|Exit|Finally|For|Friend|Function|Get|GetType|GoSub|GoTo|Handles|If|Implements|Imports|In|Inherits|Integer|Interface|Is|Let|Lib|Like|Long|Loop|Me|Mod|Module|MustInherit|MustOverride|MyBase|MyClass|Namespace|New|Next|Not|NotInheritable|NotOverridable|Object|On|Option|Optional|Or|OrElse|Overloads|Overridable|Overrides|ParamArray|Preserve|Private|Property|Protected|Public|RaiseEvent|ReadOnly|ReDim|RemoveHandler|Resume|Return|Select|Set|Shadows|Shared|Short|Single|Static|Step|Stop|String|Structure|Sub|SyncLock|Then|Throw|To|Try|TypeOf|Unicode|Until|Variant|Wend|When|While|With|WithEvents|WriteOnly|Xor|EndIf|GoSub|Let|Variant|Wend)\b/i, | |||||
null],["com",/^REM[^\r\n\u2028\u2029]*/i],["lit",/^(?:True\b|False\b|Nothing\b|\d+(?:E[+\-]?\d+[FRD]?|[FRDSIL])?|(?:&H[0-9A-F]+|&O[0-7]+)[SIL]?|\d*\.\d+(?:E[+\-]?\d+)?[FRD]?|#\s+(?:\d+[\-\/]\d+[\-\/]\d+(?:\s+\d+:\d+(?::\d+)?(\s*(?:AM|PM))?)?|\d+:\d+(?::\d+)?(\s*(?:AM|PM))?)\s+#)/i],["pln",/^(?:(?:[a-z]|_\w)\w*|\[(?:[a-z]|_\w)\w*\])/i],["pun",/^[^\w\t\n\r \"\'\[\]\xA0\u2018\u2019\u201C\u201D\u2028\u2029]+/],["pun",/^(?:\[|\])/]]),["vb","vbs"]) |
@ -1,3 +0,0 @@ | |||||
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"]],[["str",/^(?:[BOX]?"(?:[^\"]|"")*"|'.')/i],["com",/^--[^\r\n]*/],["kwd",/^(?:abs|access|after|alias|all|and|architecture|array|assert|attribute|begin|block|body|buffer|bus|case|component|configuration|constant|disconnect|downto|else|elsif|end|entity|exit|file|for|function|generate|generic|group|guarded|if|impure|in|inertial|inout|is|label|library|linkage|literal|loop|map|mod|nand|new|next|nor|not|null|of|on|open|or|others|out|package|port|postponed|procedure|process|pure|range|record|register|reject|rem|report|return|rol|ror|select|severity|shared|signal|sla|sll|sra|srl|subtype|then|to|transport|type|unaffected|units|until|use|variable|wait|when|while|with|xnor|xor)(?=[^\w-]|$)/i, | |||||
null],["typ",/^(?:bit|bit_vector|character|boolean|integer|real|time|string|severity_level|positive|natural|signed|unsigned|line|text|std_u?logic(?:_vector)?)(?=[^\w-]|$)/i,null],["typ",/^\'(?:ACTIVE|ASCENDING|BASE|DELAYED|DRIVING|DRIVING_VALUE|EVENT|HIGH|IMAGE|INSTANCE_NAME|LAST_ACTIVE|LAST_EVENT|LAST_VALUE|LEFT|LEFTOF|LENGTH|LOW|PATH_NAME|POS|PRED|QUIET|RANGE|REVERSE_RANGE|RIGHT|RIGHTOF|SIMPLE_NAME|STABLE|SUCC|TRANSACTION|VAL|VALUE)(?=[^\w-]|$)/i,null],["lit",/^\d+(?:_\d+)*(?:#[\w\\.]+#(?:[+\-]?\d+(?:_\d+)*)?|(?:\.\d+(?:_\d+)*)?(?:E[+\-]?\d+(?:_\d+)*)?)/i], | |||||
["pln",/^(?:[a-z]\w*|\\[^\\]*\\)/i],["pun",/^[^\w\t\n\r \xA0\"\'][^\w\t\n\r \xA0\-\"\']*/]]),["vhdl","vhd"]) |
@ -1,2 +0,0 @@ | |||||
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t \xA0a-gi-z0-9]+/,null,"\t \u00a0abcdefgijklmnopqrstuvwxyz0123456789"],["pun",/^[=*~\^\[\]]+/,null,"=*~^[]"]],[["lang-wiki.meta",/(?:^^|\r\n?|\n)(#[a-z]+)\b/],["lit",/^(?:[A-Z][a-z][a-z0-9]+[A-Z][a-z][a-zA-Z0-9]+)\b/],["lang-",/^\{\{\{([\s\S]+?)\}\}\}/],["lang-",/^`([^\r\n`]+)`/],["str",/^https?:\/\/[^\/?#\s]*(?:\/[^?#\s]*)?(?:\?[^#\s]*)?(?:#\S*)?/i],["pln",/^(?:\r\n|[\s\S])[^#=*~^A-Zh\{`\[\r\n]*/]]),["wiki"]); | |||||
PR.registerLangHandler(PR.createSimpleLexer([["kwd",/^#[a-z]+/i,null,"#"]],[]),["wiki.meta"]) |
@ -1,2 +0,0 @@ | |||||
PR.registerLangHandler(PR.createSimpleLexer([["pun",/^[:|>?]+/,null,":|>?"],["dec",/^%(?:YAML|TAG)[^#\r\n]+/,null,"%"],["typ",/^[&]\S+/,null,"&"],["typ",/^!\S*/,null,"!"],["str",/^"(?:[^\\"]|\\.)*(?:"|$)/,null,'"'],["str",/^'(?:[^']|'')*(?:'|$)/,null,"'"],["com",/^#[^\r\n]*/,null,"#"],["pln",/^\s+/,null," \t\r\n"]],[["dec",/^(?:---|\.\.\.)(?:[\r\n]|$)/],["pun",/^-/],["kwd",/^\w+:[ \r\n]/],["pln",/^\w+/]]), | |||||
["yaml","yml"]) |
@ -1 +0,0 @@ | |||||
.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun{color:#660}.pln{color:#000}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec{color:#606}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee}@media print{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun{color:#440}.pln{color:#000}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}} |
@ -1,33 +0,0 @@ | |||||
window.PR_SHOULD_USE_CONTINUATION=true;window.PR_TAB_WIDTH=8;window.PR_normalizedHtml=window.PR=window.prettyPrintOne=window.prettyPrint=void 0;window._pr_isIE6=function(){var y=navigator&&navigator.userAgent&&navigator.userAgent.match(/\bMSIE ([678])\./);y=y?+y[1]:false;window._pr_isIE6=function(){return y};return y}; | |||||
(function(){function y(b){return b.replace(L,"&").replace(M,"<").replace(N,">")}function H(b,f,i){switch(b.nodeType){case 1:var o=b.tagName.toLowerCase();f.push("<",o);var l=b.attributes,n=l.length;if(n){if(i){for(var r=[],j=n;--j>=0;)r[j]=l[j];r.sort(function(q,m){return q.name<m.name?-1:q.name===m.name?0:1});l=r}for(j=0;j<n;++j){r=l[j];r.specified&&f.push(" ",r.name.toLowerCase(),'="',r.value.replace(L,"&").replace(M,"<").replace(N,">").replace(X,"""),'"')}}f.push(">"); | |||||
for(l=b.firstChild;l;l=l.nextSibling)H(l,f,i);if(b.firstChild||!/^(?:br|link|img)$/.test(o))f.push("</",o,">");break;case 3:case 4:f.push(y(b.nodeValue));break}}function O(b){function f(c){if(c.charAt(0)!=="\\")return c.charCodeAt(0);switch(c.charAt(1)){case "b":return 8;case "t":return 9;case "n":return 10;case "v":return 11;case "f":return 12;case "r":return 13;case "u":case "x":return parseInt(c.substring(2),16)||c.charCodeAt(1);case "0":case "1":case "2":case "3":case "4":case "5":case "6":case "7":return parseInt(c.substring(1), | |||||
8);default:return c.charCodeAt(1)}}function i(c){if(c<32)return(c<16?"\\x0":"\\x")+c.toString(16);c=String.fromCharCode(c);if(c==="\\"||c==="-"||c==="["||c==="]")c="\\"+c;return c}function o(c){var d=c.substring(1,c.length-1).match(RegExp("\\\\u[0-9A-Fa-f]{4}|\\\\x[0-9A-Fa-f]{2}|\\\\[0-3][0-7]{0,2}|\\\\[0-7]{1,2}|\\\\[\\s\\S]|-|[^-\\\\]","g"));c=[];for(var a=[],k=d[0]==="^",e=k?1:0,h=d.length;e<h;++e){var g=d[e];switch(g){case "\\B":case "\\b":case "\\D":case "\\d":case "\\S":case "\\s":case "\\W":case "\\w":c.push(g); | |||||
continue}g=f(g);var s;if(e+2<h&&"-"===d[e+1]){s=f(d[e+2]);e+=2}else s=g;a.push([g,s]);if(!(s<65||g>122)){s<65||g>90||a.push([Math.max(65,g)|32,Math.min(s,90)|32]);s<97||g>122||a.push([Math.max(97,g)&-33,Math.min(s,122)&-33])}}a.sort(function(v,w){return v[0]-w[0]||w[1]-v[1]});d=[];g=[NaN,NaN];for(e=0;e<a.length;++e){h=a[e];if(h[0]<=g[1]+1)g[1]=Math.max(g[1],h[1]);else d.push(g=h)}a=["["];k&&a.push("^");a.push.apply(a,c);for(e=0;e<d.length;++e){h=d[e];a.push(i(h[0]));if(h[1]>h[0]){h[1]+1>h[0]&&a.push("-"); | |||||
a.push(i(h[1]))}}a.push("]");return a.join("")}function l(c){for(var d=c.source.match(RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g")),a=d.length,k=[],e=0,h=0;e<a;++e){var g=d[e];if(g==="(")++h;else if("\\"===g.charAt(0))if((g=+g.substring(1))&&g<=h)k[g]=-1}for(e=1;e<k.length;++e)if(-1===k[e])k[e]=++n;for(h=e=0;e<a;++e){g=d[e];if(g==="("){++h;if(k[h]===undefined)d[e]="(?:"}else if("\\"=== | |||||
g.charAt(0))if((g=+g.substring(1))&&g<=h)d[e]="\\"+k[h]}for(h=e=0;e<a;++e)if("^"===d[e]&&"^"!==d[e+1])d[e]="";if(c.ignoreCase&&r)for(e=0;e<a;++e){g=d[e];c=g.charAt(0);if(g.length>=2&&c==="[")d[e]=o(g);else if(c!=="\\")d[e]=g.replace(/[a-zA-Z]/g,function(s){s=s.charCodeAt(0);return"["+String.fromCharCode(s&-33,s|32)+"]"})}return d.join("")}for(var n=0,r=false,j=false,q=0,m=b.length;q<m;++q){var t=b[q];if(t.ignoreCase)j=true;else if(/[a-z]/i.test(t.source.replace(/\\u[0-9a-f]{4}|\\x[0-9a-f]{2}|\\[^ux]/gi, | |||||
""))){r=true;j=false;break}}var p=[];q=0;for(m=b.length;q<m;++q){t=b[q];if(t.global||t.multiline)throw Error(""+t);p.push("(?:"+l(t)+")")}return RegExp(p.join("|"),j?"gi":"g")}function Y(b){var f=0;return function(i){for(var o=null,l=0,n=0,r=i.length;n<r;++n)switch(i.charAt(n)){case "\t":o||(o=[]);o.push(i.substring(l,n));l=b-f%b;for(f+=l;l>=0;l-=16)o.push(" ".substring(0,l));l=n+1;break;case "\n":f=0;break;default:++f}if(!o)return i;o.push(i.substring(l));return o.join("")}}function I(b, | |||||
f,i,o){if(f){b={source:f,c:b};i(b);o.push.apply(o,b.d)}}function B(b,f){var i={},o;(function(){for(var r=b.concat(f),j=[],q={},m=0,t=r.length;m<t;++m){var p=r[m],c=p[3];if(c)for(var d=c.length;--d>=0;)i[c.charAt(d)]=p;p=p[1];c=""+p;if(!q.hasOwnProperty(c)){j.push(p);q[c]=null}}j.push(/[\0-\uffff]/);o=O(j)})();var l=f.length;function n(r){for(var j=r.c,q=[j,z],m=0,t=r.source.match(o)||[],p={},c=0,d=t.length;c<d;++c){var a=t[c],k=p[a],e=void 0,h;if(typeof k==="string")h=false;else{var g=i[a.charAt(0)]; | |||||
if(g){e=a.match(g[1]);k=g[0]}else{for(h=0;h<l;++h){g=f[h];if(e=a.match(g[1])){k=g[0];break}}e||(k=z)}if((h=k.length>=5&&"lang-"===k.substring(0,5))&&!(e&&typeof e[1]==="string")){h=false;k=P}h||(p[a]=k)}g=m;m+=a.length;if(h){h=e[1];var s=a.indexOf(h),v=s+h.length;if(e[2]){v=a.length-e[2].length;s=v-h.length}k=k.substring(5);I(j+g,a.substring(0,s),n,q);I(j+g+s,h,Q(k,h),q);I(j+g+v,a.substring(v),n,q)}else q.push(j+g,k)}r.d=q}return n}function x(b){var f=[],i=[];if(b.tripleQuotedStrings)f.push([A,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/, | |||||
null,"'\""]);else b.multiLineStrings?f.push([A,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"]):f.push([A,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"]);b.verbatimStrings&&i.push([A,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null]);if(b.hashComments)if(b.cStyleComments){f.push([C,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"]);i.push([A,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/, | |||||
null])}else f.push([C,/^#[^\r\n]*/,null,"#"]);if(b.cStyleComments){i.push([C,/^\/\/[^\r\n]*/,null]);i.push([C,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}b.regexLiterals&&i.push(["lang-regex",RegExp("^"+Z+"(/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/)")]);b=b.keywords.replace(/^\s+|\s+$/g,"");b.length&&i.push([R,RegExp("^(?:"+b.replace(/\s+/g,"|")+")\\b"),null]);f.push([z,/^\s+/,null," \r\n\t\u00a0"]);i.push([J,/^@[a-z_$][a-z_$@0-9]*/i,null],[S,/^@?[A-Z]+[a-z][A-Za-z_$@0-9]*/, | |||||
null],[z,/^[a-z_$][a-z_$@0-9]*/i,null],[J,/^(?:0x[a-f0-9]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+\-]?\d+)?)[a-z]*/i,null,"0123456789"],[E,/^.[^\s\w\.$@\'\"\`\/\#]*/,null]);return B(f,i)}function $(b){function f(D){if(D>r){if(j&&j!==q){n.push("</span>");j=null}if(!j&&q){j=q;n.push('<span class="',j,'">')}var T=y(p(i.substring(r,D))).replace(e?d:c,"$1 ");e=k.test(T);n.push(T.replace(a,s));r=D}}var i=b.source,o=b.g,l=b.d,n=[],r=0,j=null,q=null,m=0,t=0,p=Y(window.PR_TAB_WIDTH),c=/([\r\n ]) /g, | |||||
d=/(^| ) /gm,a=/\r\n?|\n/g,k=/[ \r\n]$/,e=true,h=window._pr_isIE6();h=h?b.b.tagName==="PRE"?h===6?" \r\n":h===7?" <br>\r":" \r":" <br />":"<br />";var g=b.b.className.match(/\blinenums\b(?::(\d+))?/),s;if(g){for(var v=[],w=0;w<10;++w)v[w]=h+'</li><li class="L'+w+'">';var F=g[1]&&g[1].length?g[1]-1:0;n.push('<ol class="linenums"><li class="L',F%10,'"');F&&n.push(' value="',F+1,'"');n.push(">");s=function(){var D=v[++F%10];return j?"</span>"+D+'<span class="'+j+'">':D}}else s=h; | |||||
for(;;)if(m<o.length?t<l.length?o[m]<=l[t]:true:false){f(o[m]);if(j){n.push("</span>");j=null}n.push(o[m+1]);m+=2}else if(t<l.length){f(l[t]);q=l[t+1];t+=2}else break;f(i.length);j&&n.push("</span>");g&&n.push("</li></ol>");b.a=n.join("")}function u(b,f){for(var i=f.length;--i>=0;){var o=f[i];if(G.hasOwnProperty(o))"console"in window&&console.warn("cannot override language handler %s",o);else G[o]=b}}function Q(b,f){b&&G.hasOwnProperty(b)||(b=/^\s*</.test(f)?"default-markup":"default-code");return G[b]} | |||||
function U(b){var f=b.f,i=b.e;b.a=f;try{var o,l=f.match(aa);f=[];var n=0,r=[];if(l)for(var j=0,q=l.length;j<q;++j){var m=l[j];if(m.length>1&&m.charAt(0)==="<"){if(!ba.test(m))if(ca.test(m)){f.push(m.substring(9,m.length-3));n+=m.length-12}else if(da.test(m)){f.push("\n");++n}else if(m.indexOf(V)>=0&&m.replace(/\s(\w+)\s*=\s*(?:\"([^\"]*)\"|'([^\']*)'|(\S+))/g,' $1="$2$3$4"').match(/[cC][lL][aA][sS][sS]=\"[^\"]*\bnocode\b/)){var t=m.match(W)[2],p=1,c;c=j+1;a:for(;c<q;++c){var d=l[c].match(W);if(d&& | |||||
d[2]===t)if(d[1]==="/"){if(--p===0)break a}else++p}if(c<q){r.push(n,l.slice(j,c+1).join(""));j=c}else r.push(n,m)}else r.push(n,m)}else{var a;p=m;var k=p.indexOf("&");if(k<0)a=p;else{for(--k;(k=p.indexOf("&#",k+1))>=0;){var e=p.indexOf(";",k);if(e>=0){var h=p.substring(k+3,e),g=10;if(h&&h.charAt(0)==="x"){h=h.substring(1);g=16}var s=parseInt(h,g);isNaN(s)||(p=p.substring(0,k)+String.fromCharCode(s)+p.substring(e+1))}}a=p.replace(ea,"<").replace(fa,">").replace(ga,"'").replace(ha,'"').replace(ia," ").replace(ja, | |||||
"&")}f.push(a);n+=a.length}}o={source:f.join(""),h:r};var v=o.source;b.source=v;b.c=0;b.g=o.h;Q(i,v)(b);$(b)}catch(w){if("console"in window)console.log(w&&w.stack?w.stack:w)}}var A="str",R="kwd",C="com",S="typ",J="lit",E="pun",z="pln",P="src",V="nocode",Z=function(){for(var b=["!","!=","!==","#","%","%=","&","&&","&&=","&=","(","*","*=","+=",",","-=","->","/","/=",":","::",";","<","<<","<<=","<=","=","==","===",">",">=",">>",">>=",">>>",">>>=","?","@","[","^","^=","^^","^^=","{","|","|=","||","||=", | |||||
"~","break","case","continue","delete","do","else","finally","instanceof","return","throw","try","typeof"],f="(?:^^|[+-]",i=0;i<b.length;++i)f+="|"+b[i].replace(/([^=<>:&a-z])/g,"\\$1");f+=")\\s*";return f}(),L=/&/g,M=/</g,N=/>/g,X=/\"/g,ea=/</g,fa=/>/g,ga=/'/g,ha=/"/g,ja=/&/g,ia=/ /g,ka=/[\r\n]/g,K=null,aa=RegExp("[^<]+|<!--[\\s\\S]*?--\>|<!\\[CDATA\\[[\\s\\S]*?\\]\\]>|</?[a-zA-Z](?:[^>\"']|'[^']*'|\"[^\"]*\")*>|<","g"),ba=/^<\!--/,ca=/^<!\[CDATA\[/,da=/^<br\b/i,W=/^<(\/?)([a-zA-Z][a-zA-Z0-9]*)/, | |||||
la=x({keywords:"break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof alignof align_union asm axiom bool concept concept_map const_cast constexpr decltype dynamic_cast explicit export friend inline late_check mutable namespace nullptr reinterpret_cast static_assert static_cast template typeid typename using virtual wchar_t where break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof abstract boolean byte extends final finally implements import instanceof null native package strictfp super synchronized throws transient as base by checked decimal delegate descending event fixed foreach from group implicit in interface internal into is lock object out override orderby params partial readonly ref sbyte sealed stackalloc string select uint ulong unchecked unsafe ushort var break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof debugger eval export function get null set undefined var with Infinity NaN caller delete die do dump elsif eval exit foreach for goto if import last local my next no our print package redo require sub undef unless until use wantarray while BEGIN END break continue do else for if return while and as assert class def del elif except exec finally from global import in is lambda nonlocal not or pass print raise try with yield False True None break continue do else for if return while alias and begin case class def defined elsif end ensure false in module next nil not or redo rescue retry self super then true undef unless until when yield BEGIN END break continue do else for if return while case done elif esac eval fi function in local set then until ", | |||||
hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true}),G={};u(la,["default-code"]);u(B([],[[z,/^[^<?]+/],["dec",/^<!\w[^>]*(?:>|$)/],[C,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[E,/^(?:<[%?]|[%?]>)/],["lang-",/^<xmp\b[^>]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^<script\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^<style\b[^>]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup", | |||||
"htm","html","mxml","xhtml","xml","xsl"]);u(B([[z,/^[\s]+/,null," \t\r\n"],["atv",/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[E,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i], | |||||
["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);u(B([],[["atv",/^[\s\S]+/]]),["uq.val"]);u(x({keywords:"break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof alignof align_union asm axiom bool concept concept_map const_cast constexpr decltype dynamic_cast explicit export friend inline late_check mutable namespace nullptr reinterpret_cast static_assert static_cast template typeid typename using virtual wchar_t where ", | |||||
hashComments:true,cStyleComments:true}),["c","cc","cpp","cxx","cyc","m"]);u(x({keywords:"null true false"}),["json"]);u(x({keywords:"break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof abstract boolean byte extends final finally implements import instanceof null native package strictfp super synchronized throws transient as base by checked decimal delegate descending event fixed foreach from group implicit in interface internal into is lock object out override orderby params partial readonly ref sbyte sealed stackalloc string select uint ulong unchecked unsafe ushort var ", | |||||
hashComments:true,cStyleComments:true,verbatimStrings:true}),["cs"]);u(x({keywords:"break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof abstract boolean byte extends final finally implements import instanceof null native package strictfp super synchronized throws transient ", | |||||
cStyleComments:true}),["java"]);u(x({keywords:"break continue do else for if return while case done elif esac eval fi function in local set then until ",hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);u(x({keywords:"break continue do else for if return while and as assert class def del elif except exec finally from global import in is lambda nonlocal not or pass print raise try with yield False True None ",hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]); | |||||
u(x({keywords:"caller delete die do dump elsif eval exit foreach for goto if import last local my next no our print package redo require sub undef unless until use wantarray while BEGIN END ",hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);u(x({keywords:"break continue do else for if return while alias and begin case class def defined elsif end ensure false in module next nil not or redo rescue retry self super then true undef unless until when yield BEGIN END ",hashComments:true, | |||||
multiLineStrings:true,regexLiterals:true}),["rb"]);u(x({keywords:"break continue do else for if return while auto case char const default double enum extern float goto int long register short signed sizeof static struct switch typedef union unsigned void volatile catch class delete false import new operator private protected public this throw true try typeof debugger eval export function get null set undefined var with Infinity NaN ",cStyleComments:true,regexLiterals:true}),["js"]);u(B([],[[A,/^[\s\S]+/]]), | |||||
["regex"]);window.PR_normalizedHtml=H;window.prettyPrintOne=function(b,f){var i={f:b,e:f};U(i);return i.a};window.prettyPrint=function(b){function f(){for(var t=window.PR_SHOULD_USE_CONTINUATION?j.now()+250:Infinity;q<o.length&&j.now()<t;q++){var p=o[q];if(p.className&&p.className.indexOf("prettyprint")>=0){var c=p.className.match(/\blang-(\w+)\b/);if(c)c=c[1];for(var d=false,a=p.parentNode;a;a=a.parentNode)if((a.tagName==="pre"||a.tagName==="code"||a.tagName==="xmp")&&a.className&&a.className.indexOf("prettyprint")>= | |||||
0){d=true;break}if(!d){a=p;if(null===K){d=document.createElement("PRE");d.appendChild(document.createTextNode('<!DOCTYPE foo PUBLIC "foo bar">\n<foo />'));K=!/</.test(d.innerHTML)}if(K){d=a.innerHTML;if("XMP"===a.tagName)d=y(d);else{a=a;if("PRE"===a.tagName)a=true;else if(ka.test(d)){var k="";if(a.currentStyle)k=a.currentStyle.whiteSpace;else if(window.getComputedStyle)k=window.getComputedStyle(a,null).whiteSpace;a=!k||k==="pre"}else a=true;a||(d=d.replace(/(<br\s*\/?>)[\r\n]+/g,"$1").replace(/(?:[\r\n]+[ \t]*)+/g, | |||||
" "))}d=d}else{d=[];for(a=a.firstChild;a;a=a.nextSibling)H(a,d);d=d.join("")}d=d.replace(/(?:\r\n?|\n)$/,"");m={f:d,e:c,b:p};U(m);if(p=m.a){c=m.b;if("XMP"===c.tagName){d=document.createElement("PRE");for(a=0;a<c.attributes.length;++a){k=c.attributes[a];if(k.specified)if(k.name.toLowerCase()==="class")d.className=k.value;else d.setAttribute(k.name,k.value)}d.innerHTML=p;c.parentNode.replaceChild(d,c)}else c.innerHTML=p}}}}if(q<o.length)setTimeout(f,250);else b&&b()}for(var i=[document.getElementsByTagName("pre"), | |||||
document.getElementsByTagName("code"),document.getElementsByTagName("xmp")],o=[],l=0;l<i.length;++l)for(var n=0,r=i[l].length;n<r;++n)o.push(i[l][n]);i=null;var j=Date;j.now||(j={now:function(){return(new Date).getTime()}});var q=0,m;f()};window.PR={combinePrefixPatterns:O,createSimpleLexer:B,registerLangHandler:u,sourceDecorator:x,PR_ATTRIB_NAME:"atn",PR_ATTRIB_VALUE:"atv",PR_COMMENT:C,PR_DECLARATION:"dec",PR_KEYWORD:R,PR_LITERAL:J,PR_NOCODE:V,PR_PLAIN:z,PR_PUNCTUATION:E,PR_SOURCE:P,PR_STRING:A, | |||||
PR_TAG:"tag",PR_TYPE:S}})() |
@ -1,75 +0,0 @@ | |||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> | |||||
<html> | |||||
<head> | |||||
<title>Graph 3D demo</title> | |||||
<style> | |||||
body {font: 10pt arial;} | |||||
</style> | |||||
<script type="text/javascript" src="http://www.google.com/jsapi"></script> | |||||
<script type="text/javascript" src="../graph3d.js"></script> | |||||
<script type="text/javascript"> | |||||
var data = null; | |||||
var graph = null; | |||||
google.load("visualization", "1"); | |||||
// Set callback to run when API is loaded | |||||
google.setOnLoadCallback(drawVisualization); | |||||
function custom(x, y) { | |||||
return (Math.sin(x/50) * Math.cos(y/50) * 50 + 50); | |||||
} | |||||
// Called when the Visualization API is loaded. | |||||
function drawVisualization() { | |||||
// Create and populate a data table. | |||||
data = new google.visualization.DataTable(); | |||||
data.addColumn('number', 'x'); | |||||
data.addColumn('number', 'y'); | |||||
data.addColumn('number', 'z'); | |||||
// create some nice looking data with sin/cos | |||||
var steps = 50; // number of datapoints will be steps*steps | |||||
var axisMax = 314; | |||||
axisStep = axisMax / steps; | |||||
for (var x = 0; x < axisMax; x+=axisStep) { | |||||
for (var y = 0; y < axisMax; y+=axisStep) { | |||||
var value = custom(x,y); | |||||
data.addRow([x, y, value]); | |||||
} | |||||
} | |||||
// specify options | |||||
options = {width: "600px", | |||||
height: "600px", | |||||
style: "surface", | |||||
xStep: 20, | |||||
yStep: 20, | |||||
zStep: 10, | |||||
showPerspective: false, | |||||
showGrid: true, | |||||
showShadow: false, | |||||
keepAspectRatio: true, | |||||
verticalRatio: 0.5, | |||||
}; | |||||
// Instantiate our graph object. | |||||
graph = new links.Graph3d(document.getElementById('mygraph')); | |||||
// Draw our graph with the created data and options | |||||
graph.draw(data, options); | |||||
} | |||||
</script> | |||||
</head> | |||||
<body> | |||||
<div id="mygraph"></div> | |||||
<div id="info"></div> | |||||
</body> | |||||
</html> |
@ -1,77 +0,0 @@ | |||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> | |||||
<html> | |||||
<head> | |||||
<title>Graph 3D animation demo</title> | |||||
<style> | |||||
body {font: 10pt arial;} | |||||
</style> | |||||
<script type="text/javascript" src="http://www.google.com/jsapi"></script> | |||||
<script type="text/javascript" src="../graph3d.js"></script> | |||||
<script type="text/javascript"> | |||||
var data = null; | |||||
var graph = null; | |||||
google.load("visualization", "1"); | |||||
// Set callback to run when API is loaded | |||||
google.setOnLoadCallback(drawVisualization); | |||||
function custom(x, y, t) { | |||||
return Math.sin(x/50 + t/10) * Math.cos(y/50 + t/10) * 50 + 50; | |||||
} | |||||
// Called when the Visualization API is loaded. | |||||
function drawVisualization() { | |||||
// Create and populate a data table. | |||||
data = new google.visualization.DataTable(); | |||||
data.addColumn('number', 'x'); | |||||
data.addColumn('number', 'y'); | |||||
data.addColumn('number', 'value'); | |||||
data.addColumn('number', 'Time'); | |||||
// create some nice looking data with sin/cos | |||||
// number of datapoints will be steps*steps*tMax | |||||
var steps = 25; | |||||
var axisMax = 314; | |||||
var tMax = 31; | |||||
axisStep = axisMax / steps; | |||||
for (var t = 0; t < tMax; t++) { | |||||
for (var x = 0; x < axisMax; x+=axisStep) { | |||||
for (var y = 0; y < axisMax; y+=axisStep) { | |||||
var value = custom(x, y, t); | |||||
data.addRow([x, y, value, t]); | |||||
} | |||||
} | |||||
} | |||||
// specify options | |||||
options = {width: "600px", | |||||
height: "600px", | |||||
style: "dot-line", | |||||
showPerspective: true, | |||||
showGrid: true, | |||||
showShadow: false, | |||||
keepAspectRatio: true, | |||||
verticalRatio: 0.5, | |||||
animationInterval: 100, // milliseconds | |||||
animationPreload: true | |||||
}; | |||||
// Instantiate our graph object. | |||||
graph = new links.Graph3d(document.getElementById('mygraph')); | |||||
// Draw our graph with the created data and options | |||||
graph.draw(data, options); | |||||
} | |||||
</script> | |||||
</head> | |||||
<body> | |||||
<div id="mygraph"></div> | |||||
<div id="info"></div> | |||||
</body> | |||||
</html> |
@ -1,99 +0,0 @@ | |||||
<html><head> | |||||
<title>Simple 3D on HTML5 canvas</title> | |||||
<meta http-equiv="content-type" content="text/html; charset=UTF-8"> | |||||
<script type="text/javascript"> | |||||
function setup() | |||||
{ | |||||
var fov = 250; | |||||
var SCREEN_WIDTH = 600; | |||||
var SCREEN_HEIGHT = 300; | |||||
var HALF_WIDTH = SCREEN_WIDTH/2; | |||||
var HALF_HEIGHT = SCREEN_HEIGHT/2; | |||||
var numPoints = 1000; | |||||
function draw3Din2D(point3d) | |||||
{ | |||||
x3d = point3d[0]; | |||||
y3d = point3d[1]; | |||||
z3d = point3d[2]; | |||||
var scale = fov/(fov+z3d); | |||||
var x2d = (x3d * scale) + HALF_WIDTH; | |||||
var y2d = (y3d * scale) + HALF_HEIGHT; | |||||
c.lineWidth= scale; | |||||
c.strokeStyle = "rgb(255,255,255)"; | |||||
c.beginPath(); | |||||
c.moveTo(x2d,y2d); | |||||
c.lineTo(x2d+scale,y2d); | |||||
c.stroke(); | |||||
} | |||||
var canvas = document.getElementById('Canvas2D'); | |||||
var c = canvas.getContext('2d'); | |||||
var points = []; | |||||
function initPoints() | |||||
{ | |||||
for (i=0; i<numPoints; i++) | |||||
{ | |||||
point = [(Math.random()*400)-200, (Math.random()*400)-200 , (Math.random()*400)-200 ]; | |||||
points.push(point); | |||||
} | |||||
} | |||||
function render() | |||||
{ | |||||
c.fillStyle="rgb(0,0,0)"; | |||||
c.fillRect(0,0, SCREEN_WIDTH, SCREEN_HEIGHT); | |||||
for (i=0; i<numPoints; i++) | |||||
{ | |||||
point3d = points[i]; | |||||
z3d = point3d[2]; | |||||
z3d-=4; | |||||
if(z3d<-fov) z3d +=400; | |||||
point3d[2] = z3d; | |||||
draw3Din2D(point3d); | |||||
} | |||||
} | |||||
initPoints(); | |||||
var loop = setInterval(function(){render();}, 50); | |||||
} | |||||
</script> | |||||
<style type="text/css"> | |||||
body{background:#000;color:#fff;font-family:arial;font-size:90%;} | |||||
.wrap{width:640px; margin:0 auto;} | |||||
canvas{border: 1px solid #0f0;} | |||||
a{color:#0f0;} | |||||
</style> | |||||
</head><body onload="setup();"> | |||||
<div class="wrap"> | |||||
<canvas id="Canvas2D" width="600" height="300">Internet Explorer Not Supported :(</canvas> | |||||
<h1>Simple 3D HTML5 Canvas</h1> | |||||
<p>By <a href="http://sebleedelisle.com">Seb Lee-Delisle</a></p> | |||||
<p>Simple 3D on HTML5 Canvas, as demoed at BarCampBrighton4. More info at <a href="http://www.sebleedelisle.com/2009/09/simple-3d-in-html5-canvas">sebleedelisle.com</a>. </p> | |||||
</div> | |||||
</body></html> |
@ -1,111 +0,0 @@ | |||||
<html><head> | |||||
<title>Simple 3D on HTML5 canvas</title> | |||||
<meta http-equiv="content-type" content="text/html; charset=UTF-8"> | |||||
<script type="text/javascript"> | |||||
function setup() | |||||
{ | |||||
var fov = 250; | |||||
var SCREEN_WIDTH = 600; | |||||
var SCREEN_HEIGHT = 300; | |||||
var HALF_WIDTH = SCREEN_WIDTH/2; | |||||
var HALF_HEIGHT = SCREEN_HEIGHT/2; | |||||
var numPoints = 200; | |||||
function draw3Din2D(point3d) | |||||
{ | |||||
x3d = point3d[0]; | |||||
y3d = point3d[1]; | |||||
z3d = point3d[2]; | |||||
var scale = fov/(fov+z3d); | |||||
var x2d = (x3d * scale) + HALF_WIDTH; | |||||
var y2d = (y3d * scale) + HALF_HEIGHT; | |||||
c.lineWidth= scale; | |||||
c.strokeStyle = "rgb(255,255,255)"; | |||||
c.beginPath(); | |||||
c.moveTo(x2d,y2d); | |||||
c.lineTo(x2d+scale,y2d); | |||||
c.stroke(); | |||||
} | |||||
var canvas = document.getElementById('Canvas2D'); | |||||
var c = canvas.getContext('2d'); | |||||
var points = []; | |||||
function initPoints() | |||||
{ | |||||
for (i=0; i<numPoints; i++) | |||||
{ | |||||
point = [(Math.random()*400)-200, (Math.random()*400)-200 , (Math.random()*400)-200 ]; | |||||
points.push(point); | |||||
} | |||||
} | |||||
function render() | |||||
{ | |||||
c.fillStyle="rgb(0,0,0)"; | |||||
c.fillRect(0,0, SCREEN_WIDTH, SCREEN_HEIGHT); | |||||
for (i=0; i<numPoints; i++) | |||||
{ | |||||
point3d = points[i]; | |||||
rotatePointAroundY(point3d, 0.04); | |||||
draw3Din2D(point3d); | |||||
} | |||||
} | |||||
function rotatePointAroundY(point3d, angle) | |||||
{ | |||||
x = point3d[0]; | |||||
z = point3d[2]; | |||||
cosRY = Math.cos(angle); | |||||
sinRY = Math.sin(angle); | |||||
tempz = z; | |||||
tempx = x; | |||||
x= (tempx*cosRY)+(tempz*sinRY); | |||||
z= (tempx*-sinRY)+(tempz*cosRY); | |||||
point3d[0] = x; | |||||
point3d[2] = z; | |||||
} | |||||
initPoints(); | |||||
var loop = setInterval(function(){render();}, 50); | |||||
} | |||||
</script> | |||||
<style type="text/css"> | |||||
body{background:#000;color:#fff;font-family:arial;font-size:90%;} | |||||
.wrap{width:640px; margin:0 auto;} | |||||
canvas{border: 1px solid #0f0;} | |||||
a{color:#0f0;} | |||||
</style> | |||||
</head><body onload="setup();"> | |||||
<div class="wrap"> | |||||
<canvas id="Canvas2D" width="600" height="300">Internet Explorer Not Supported :(</canvas> | |||||
<h1>Simple 3D HTML5 Canvas</h1> | |||||
<p>By <a href="http://sebleedelisle.com">Seb Lee-Delisle</a></p> | |||||
<p>Simple 3D on HTML5 Canvas, as demoed at BarCampBrighton4. More info at <a href="http://www.sebleedelisle.com/2009/09/simple-3d-in-html5-canvas">sebleedelisle.com</a>. </p> | |||||
</div> | |||||
</body></html> |
@ -1,130 +0,0 @@ | |||||
<html><head> | |||||
<title>Simple 3D on HTML5 canvas</title> | |||||
<meta http-equiv="content-type" content="text/html; charset=UTF-8"> | |||||
<script type="text/javascript" src="processing.js"></script> | |||||
<script type="text/javascript"> | |||||
function setup() | |||||
{ | |||||
var fov = 250; | |||||
var SCREEN_WIDTH = 600; | |||||
var SCREEN_HEIGHT = 300; | |||||
var HALF_WIDTH = SCREEN_WIDTH/2; | |||||
var HALF_HEIGHT = SCREEN_HEIGHT/2; | |||||
var numPoints = 200; | |||||
var mouseX = 0; | |||||
var mouseY = -200; | |||||
function draw3Din2D(point3d) | |||||
{ | |||||
x3d = point3d[0]; | |||||
y3d = point3d[1]; | |||||
z3d = point3d[2]; | |||||
var scale = fov/(fov+z3d); | |||||
var x2d = (x3d * scale) + HALF_WIDTH; | |||||
var y2d = (y3d * scale) + HALF_HEIGHT; | |||||
c.lineWidth= scale; | |||||
c.strokeStyle = "rgb(255,255,255)"; | |||||
c.beginPath(); | |||||
c.moveTo(x2d,y2d); | |||||
c.lineTo(x2d+scale,y2d); | |||||
c.stroke(); | |||||
} | |||||
var canvas = document.getElementById('Canvas2D'); | |||||
var c = canvas.getContext('2d'); | |||||
document.onmousemove = updateMouse; | |||||
//canvas.addEventListener('mousemove', updateMouse, false); | |||||
var points = []; | |||||
function initPoints() | |||||
{ | |||||
for (i=0; i<numPoints; i++) | |||||
{ | |||||
point = [(Math.random()*400)-200, (Math.random()*400)-200 , (Math.random()*400)-200 ]; | |||||
points.push(point); | |||||
} | |||||
} | |||||
function render() | |||||
{ | |||||
c.fillStyle="rgb(0,0,0)"; | |||||
c.fillRect(0,0, SCREEN_WIDTH, SCREEN_HEIGHT); | |||||
for (i=0; i<numPoints; i++) | |||||
{ | |||||
point3d = points[i]; | |||||
rotatePointAroundY(point3d, mouseX*-0.0003); | |||||
point3d[2] += (mouseY*0.08); | |||||
if(point3d[0]<-300) point3d[0] = 300; | |||||
else if(point3d[0]>300) point3d[0] = -300; | |||||
if(point3d[2]<-fov) point3d[2] = fov; | |||||
else if(point3d[2]>249) point3d[2] = -249; | |||||
draw3Din2D(point3d); | |||||
} | |||||
} | |||||
function rotatePointAroundY(point3d, angle) | |||||
{ | |||||
x = point3d[0]; | |||||
z = point3d[2]+fov; | |||||
cosRY = Math.cos(angle); | |||||
sinRY = Math.sin(angle); | |||||
tempz = z; | |||||
tempx = x; | |||||
x= (tempx*cosRY)+(tempz*sinRY); | |||||
z= (tempx*-sinRY)+(tempz*cosRY); | |||||
point3d[0] = x; | |||||
point3d[2] = z-fov; | |||||
} | |||||
function updateMouse(e) | |||||
{ | |||||
//alert(c+" "+c.offsetLeft); | |||||
mouseX = e.pageX - canvas.offsetLeft - HALF_WIDTH; | |||||
mouseY = e.pageY - canvas.offsetTop - HALF_HEIGHT; ; | |||||
} | |||||
initPoints(); | |||||
var loop = setInterval(function(){render();}, 50); | |||||
} | |||||
</script> | |||||
<style type="text/css"> | |||||
body{background:#000;color:#fff;font-family:arial;font-size:90%;} | |||||
.wrap{width:640px; margin:0 auto;} | |||||
canvas{border: 1px solid #0f0;} | |||||
a{color:#0f0;} | |||||
</style> | |||||
</head><body onload="setup();"> | |||||
<div class="wrap"> | |||||
<canvas id="Canvas2D" width="600" height="300">Internet Explorer Not Supported :(</canvas> | |||||
<h1>Simple 3D HTML5 Canvas</h1> | |||||
<p>By <a href="http://sebleedelisle.com">Seb Lee-Delisle</a></p> | |||||
<p>Simple 3D on HTML5 Canvas, as demoed at BarCampBrighton4. Move the mouse to fly around! More info at <a href="http://www.sebleedelisle.com/2009/09/simple-3d-in-html5-canvas">sebleedelisle.com</a>. </p> | |||||
</div> | |||||
</body></html> |
@ -1 +0,0 @@ | |||||
http://sebleedelisle.com/2009/09/simple-3d-in-html5-canvas/ |
@ -1,83 +0,0 @@ | |||||
<!DOCTYPE HTML PUBLIC> | |||||
<html> | |||||
<head> | |||||
<title>Graph 3D animation demo</title> | |||||
<style> | |||||
body {font: 10pt arial;} | |||||
</style> | |||||
<!-- For running IE9 mode, define the meta X-UA-Compatible, and specify DOCTYPE --> | |||||
<meta http-equiv="X-UA-Compatible" content="IE=9" /> | |||||
<script type="text/javascript" src="http://www.google.com/jsapi"></script> | |||||
<script type="text/javascript" src="../graph3d.js"></script> | |||||
<link rel="stylesheet" type="text/css" href="../graph3d.css"> | |||||
<script type="text/javascript"> | |||||
var data = null; | |||||
var graph = null; | |||||
google.load("visualization", "1"); | |||||
// Set callback to run when API is loaded | |||||
google.setOnLoadCallback(drawVisualization); | |||||
function custom(x, y, t) { | |||||
return Math.sin(x/50 + t/10) * Math.cos(y/50 + t/10) * 50 + 50; | |||||
} | |||||
// Called when the Visualization API is loaded. | |||||
function drawVisualization() { | |||||
// Create and populate a data table. | |||||
data = new google.visualization.DataTable(); | |||||
data.addColumn('number', 'x'); | |||||
data.addColumn('number', 'y'); | |||||
data.addColumn('number', 'value'); | |||||
data.addColumn('number', 'Time'); | |||||
// create some nice looking data with sin/cos | |||||
// number of datapoints will be steps*steps*tMax | |||||
var steps = 25; | |||||
var axisMax = 314; | |||||
var tMax = 31; | |||||
axisStep = axisMax / steps; | |||||
for (var t = 0; t < tMax; t++) { | |||||
for (var x = 0; x < axisMax; x+=axisStep) { | |||||
for (var y = 0; y < axisMax; y+=axisStep) { | |||||
var value = custom(x, y, t); | |||||
data.addRow([x, y, value, t]); | |||||
} | |||||
} | |||||
} | |||||
// specify options | |||||
options = {width: "99%", | |||||
height: "99%", | |||||
style: "surface", | |||||
showPerspective: true, | |||||
showGrid: true, | |||||
showShadow: false, | |||||
keepAspectRatio: true, | |||||
yCenter: "45%", | |||||
xCenter: "55%", | |||||
verticalRatio: 0.5, | |||||
animationInterval: 100, // milliseconds | |||||
animationPreload: true | |||||
}; | |||||
// Instantiate our graph object. | |||||
graph = new links.Graph3d(document.getElementById('mygraph')); | |||||
// Draw our graph with the created data and options | |||||
graph.draw(data, options); | |||||
} | |||||
</script> | |||||
</head> | |||||
<body onresize="graph.redraw();"> | |||||
<div id="mygraph"></div> | |||||
<div id="info"></div> | |||||
</body> | |||||
</html> |
@ -1,78 +0,0 @@ | |||||
<!DOCTYPE HTML PUBLIC> | |||||
<html> | |||||
<head> | |||||
<title>Graph 3D demo</title> | |||||
<style> | |||||
body {font: 10pt arial;} | |||||
</style> | |||||
<!-- For running IE9 mode, define the meta X-UA-Compatible, and specify DOCTYPE --> | |||||
<meta http-equiv="X-UA-Compatible" content="IE=9" /> | |||||
<script type="text/javascript" src="http://www.google.com/jsapi"></script> | |||||
<script type="text/javascript" src="../graph3d.js"></script> | |||||
<link rel="stylesheet" type="text/css" href="../graph3d.css"> | |||||
<script type="text/javascript"> | |||||
var data = null; | |||||
var graph = null; | |||||
google.load("visualization", "1"); | |||||
// Set callback to run when API is loaded | |||||
google.setOnLoadCallback(drawVisualization); | |||||
function custom(x, y) { | |||||
return (Math.sin(x/50) * Math.cos(y/50) * 50 + 50); | |||||
} | |||||
// Called when the Visualization API is loaded. | |||||
function drawVisualization() { | |||||
// Create and populate a data table. | |||||
data = new google.visualization.DataTable(); | |||||
data.addColumn('number', 'x'); | |||||
data.addColumn('number', 'y'); | |||||
data.addColumn('number', 'value'); | |||||
// create some nice looking data with sin/cos | |||||
var steps = 20; // number of datapoints will be steps*steps | |||||
var axisMax = 314; | |||||
axisStep = axisMax / steps; | |||||
for (var x = 0; x < axisMax; x+=axisStep) { | |||||
for (var y = 0; y < axisMax; y+=axisStep) { | |||||
var value = 0; | |||||
if ((x+y) == axisStep * steps) | |||||
value = 1; | |||||
if (y == axisStep * steps/2) | |||||
value = -1; | |||||
data.addRow([x, y, value]); | |||||
} | |||||
} | |||||
// specify options | |||||
options = {width: "600px", | |||||
height: "600px", | |||||
style: "surface", | |||||
showPerspective: true, | |||||
showGrid: true, | |||||
showShadow: false, | |||||
keepAspectRatio: true, | |||||
verticalRatio: 1.0 | |||||
}; | |||||
// Instantiate our graph object. | |||||
graph = new links.Graph3d(document.getElementById('mygraph')); | |||||
// Draw our graph with the created data and options | |||||
graph.draw(data, options); | |||||
} | |||||
</script> | |||||
</head> | |||||
<body> | |||||
<div id="mygraph"></div> | |||||
<div id="info"></div> | |||||
</body> | |||||
</html> |
@ -1,43 +0,0 @@ | |||||
<html> | |||||
<head> | |||||
<title>Graph 3D demo</title> | |||||
<style> | |||||
body {font: 10pt arial;} | |||||
</style> | |||||
<script type="text/javascript" src="http://www.google.com/jsapi"></script> | |||||
<script type="text/javascript" src="../graph3d.js"></script> | |||||
<link rel="stylesheet" type="text/css" href="../graph3d.css"> | |||||
<!--[if IE]><script src="../excanvas.js"></script><![endif]--> | |||||
<script type="text/javascript"> | |||||
var filter; | |||||
var load = function () { | |||||
var filterDiv = document.getElementById("filter"); | |||||
filter = new links.Slider(filterDiv, "400px"); | |||||
var values = new Array(); | |||||
for (var i = 0; i < 100; i+=5) { | |||||
values.push(i); | |||||
} | |||||
filter.setValues(values); | |||||
function onchange () { | |||||
document.title = filter.get(); | |||||
} | |||||
filter.setOnChangeCallback(onchange); | |||||
filter.setPlayInterval(200); | |||||
} | |||||
</script> | |||||
</head> | |||||
<body onload="load();"> | |||||
<div id="filter"></div> | |||||
<div id="info"></div> | |||||
</body> | |||||
</html> |