Skip to content

Instantly share code, notes, and snippets.

@drewlesueur
Created March 15, 2010 09:49
Show Gist options
  • Save drewlesueur/332672 to your computer and use it in GitHub Desktop.
Save drewlesueur/332672 to your computer and use it in GitHub Desktop.
<!doctype html>
<html>
<head>
<script>
if(!this.JSON)this.JSON={}; (function(){function k(a){return a<10?"0"+a:a}function n(a){o.lastIndex=0;return o.test(a)?'"'+a.replace(o,function(c){var d=q[c];return typeof d==="string"?d:"\\u"+("0000"+c.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+a+'"'}function l(a,c){var d,f,i=g,e,b=c[a];if(b&&typeof b==="object"&&typeof b.toJSON==="function")b=b.toJSON(a);if(typeof j==="function")b=j.call(c,a,b);switch(typeof b){case "string":return n(b);case "number":return isFinite(b)?String(b):"null";case "boolean":case "null":return String(b);case "object":if(!b)return"null"; g+=m;e=[];if(Object.prototype.toString.apply(b)==="[object Array]"){f=b.length;for(a=0;a<f;a+=1)e[a]=l(a,b)||"null";c=e.length===0?"[]":g?"[\n"+g+e.join(",\n"+g)+"\n"+i+"]":"["+e.join(",")+"]";g=i;return c}if(j&&typeof j==="object"){f=j.length;for(a=0;a<f;a+=1){d=j[a];if(typeof d==="string")if(c=l(d,b))e.push(n(d)+(g?": ":":")+c)}}else for(d in b)if(Object.hasOwnProperty.call(b,d))if(c=l(d,b))e.push(n(d)+(g?": ":":")+c);c=e.length===0?"{}":g?"{\n"+g+e.join(",\n"+g)+"\n"+i+"}":"{"+e.join(",")+"}"; g=i;return c}}if(typeof Date.prototype.toJSON!=="function"){Date.prototype.toJSON=function(){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+k(this.getUTCMonth()+1)+"-"+k(this.getUTCDate())+"T"+k(this.getUTCHours())+":"+k(this.getUTCMinutes())+":"+k(this.getUTCSeconds())+"Z":null};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(){return this.valueOf()}}var p=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, o=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,g,m,q={"\u0008":"\\b","\t":"\\t","\n":"\\n","\u000c":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},j;if(typeof JSON.stringify!=="function")JSON.stringify=function(a,c,d){var f;m=g="";if(typeof d==="number")for(f=0;f<d;f+=1)m+=" ";else if(typeof d==="string")m=d;if((j=c)&&typeof c!=="function"&&(typeof c!=="object"||typeof c.length!=="number"))throw new Error("JSON.stringify");return l("", {"":a})};if(typeof JSON.parse!=="function")JSON.parse=function(a,c){function d(f,i){var e,b,h=f[i];if(h&&typeof h==="object")for(e in h)if(Object.hasOwnProperty.call(h,e)){b=d(h,e);if(b!==undefined)h[e]=b;else delete h[e]}return c.call(f,i,h)}p.lastIndex=0;if(p.test(a))a=a.replace(p,function(f){return"\\u"+("0000"+f.charCodeAt(0).toString(16)).slice(-4)});if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]").replace(/(?:^|:|,)(?:\s*\[)+/g,""))){a=eval("("+a+")");return typeof c==="function"?d({"":a},""):a}throw new SyntaxError("JSON.parse");}})();
function css(a,b,c){if(c)a.style[b]=c;else return window.getComputedStyle(a,null).getPropertyValue(b)}function bind(a,b,c){a.addEventListener(b,c,false)}function unbind(a,b,c){a.removeEventListener(b,c,false)}function xpos(a){return css(a,"left").split("px")[0]}function ypos(a){return css(a,"top").split("px")[0]}function getid(a){return document.getElementById(a)}function hasClass(a,b){return(new RegExp(b)).test(a.className)};
</script>
<style>
* {
margin:0;
padding: 0;
}
#canvas {
border-right: 1px solid black;
border-bottom: 1px solid black;
}
</style>
</head>
<body>
<canvas width="64" height="64" id="canvas"></canvas>
<a href="JavaScript: clear();">clear</a>
<script>
var canvas = document.getElementById("canvas")
context = canvas.getContext("2d")
//context.fillText("hello world",0,0)
//context.fillRect(0,0,100,100)
function clear() {
context.clearRect(0,0,64,64)
}
bind(canvas, "touchstart", ts)
function ts(e) {
e.preventDefault()
var x = e.targetTouches[0].pageX
var y = e.targetTouches[0].pageY
console.log("start")
bind (canvas, "touchmove", tm)
bind (canvas, "touchend", te)
function tm(e) {
e.preventDefault()
var xx = e.targetTouches[0].pageX
var yy = e.targetTouches[0].pageY
context.beginPath()
context.moveTo(x,y)
context.lineTo(xx,yy)
context.closePath()
context.stroke()
x=xx
y=yy
}
function te(e) {
console.log("end")
e.preventDefault()
//var x = e.targetTouches[0].pageX
//var y = e.targetTouches[0].pagey
unbind(canvas,"touchmove",tm)
unbind(canvas,"touchend",te)
}
}
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment