Skip to content

Commit

Permalink
Rewrite رسم extension to work from a web worker
Browse files Browse the repository at this point in the history
  • Loading branch information
nasser committed Jan 16, 2013
1 parent ca819c2 commit 98a6d29
Show file tree
Hide file tree
Showing 3 changed files with 95 additions and 1 deletion.
58 changes: 58 additions & 0 deletions public/lib/tamdeed/rasm/rasm-main.js
@@ -0,0 +1,58 @@
var canvas = document.createElement("canvas")
document.body.appendChild(canvas);

var Rasm = null;

interpreter["رسم:ابدأ-رسم"] = function(args) {
Rasm = new Processing(canvas);
Rasm.size(args.w, args.h);
Rasm.background(255, 255, 255)
}

interpreter["رسم:خط"] = function(args) {
Rasm.line(args.x1, args.y1, args.x2, args.y2);
}

interpreter["رسم:نقطة"] = function(args) {
Rasm.point(args.x, args.y);
}

interpreter["رسم:إهليلج"] = function(args) {
Rasm.ellipse(args.x, args.y, args.w, args.h);
}

interpreter["رسم:دائرة"] = function(args) {
Rasm.ellipse(args.x, args.y, args.r, args.r);
}

interpreter["رسم:مستطيل"] = function(args) {
Rasm.rect(args.x, args.y, args.w, args.h);
}

interpreter["رسم:مربع"] = function(args) {
Rasm.rect(args.x, args.y, args.s, args.s);
}

interpreter["رسم:ضجة"] = function(args) {
Rasm.noise(args.r, args.g, args.b);
}

interpreter["رسم:تحجيم"] = function(args) {
Rasm.scale(args.x, args.y, args.z);
}

interpreter["رسم:انزلاق"] = function(args) {
Rasm.translate(args.x, args.y, args.z);
}

interpreter["رسم:دوران"] = function(args) {
Rasm.rotate(args.x, args.y, args.z);
}

interpreter["رسم:لون"] = function(args) {
Rasm.color(args.r, args.g, args.b);
}

interpreter["رسم:خلفية"] = function(args) {
Rasm.background(args.r, args.g, args.b);
}
32 changes: 32 additions & 0 deletions public/lib/tamdeed/rasm/rasm-worker.js
@@ -0,0 +1,32 @@
var stubs = [
{ name: "ابدأ-رسم", params: ['w', 'h'] },
{ name: "خط", params: ['x1', 'y1', 'x2', 'y2'] },
{ name: "نقطة", params: ["x", "y"] },
{ name: "إهليلج", params: ["x", "y", "w", "h"] },
{ name: "دائرة", params: ["x", "y", "r"] },
{ name: "مستطيل", params: ["x", "y", "w", "h"] },
{ name: "مربع", params: ["x", "y", "s"] },
{ name: "ضجة", params: ["r", "g", "b"] },
{ name: "تحجيم", params: ["x", "y", "z"] },
{ name: "انزلاق", params: ["x", "y", "z"] },
{ name: "دوران", params: ["x", "y", "z"] },
{ name: "لون", params: ["r", "g", "b"] },
{ name: "خلفية", params: ["r", "g", "b"] }
]

var workerMethods = {}

stubs.forEach(function(m) {
workerMethods[m.name] = function() {
var data = {}
for (var i = 0; i < m.params.length; i++)
data[m.params[i]] = arguments[i];
postMessage({type: "رسم:" + m.name, data: data})
}
});

workerMethods["ارسم"] = function(fn) {
setInterval(fn, 1000);
}

Qlb.globalEnvironment.merge(workerMethods);
6 changes: 5 additions & 1 deletion public/repl.html
Expand Up @@ -4,7 +4,10 @@
<title>قلب REPL</title>
<script src="js/rainbow.js"></script>
<script src="js/qlb-highlight.js"></script>
<link rel="stylesheet" href="css/byblos.css">

<link rel="stylesheet" type="text/css" href="lib/tamdeed/rasm/shakl.css">
<script src="lib/tamdeed/rasm/processing.js"></script>

<style type="text/css">
html,
form,
Expand Down Expand Up @@ -86,6 +89,7 @@
<body>
<div id="console"></div>
<script src="js/repl.js"></script>
<script src="lib/tamdeed/rasm/rasm-main.js"></script>
<script type="text/javascript">
var _gauges = _gauges || [];
(function() {
Expand Down

0 comments on commit 98a6d29

Please sign in to comment.