/* vim: set expandtab sw=4 ts=4 sts=4: */ /** * * @version $Id: iecanvas.js 10149 2007-03-20 15:11:15Z cybot_tm $ * @package phpMyAdmin-Designer */ /** * */ if (!window.all) // if IE { document.attachEvent("onreadystatechange", // document load function () { if (document.readyState == "complete") { var el = document.getElementById("canvas"); var outerHTML = el.outerHTML; var newEl = document.createElement(outerHTML); el.parentNode.replaceChild(newEl, el); el = newEl; el.getContext = function () { if (this.cont) return this.cont; return this.cont = new PMD_2D(this); }; el.style.width = el.attributes.width.nodeValue + "px"; el.style.height = el.attributes.height.nodeValue + "px"; } } ); //***************************************************************************************************** function convert_style(str) { var m = Array(); m = str.match(/.*\((\d*),(\d*),(\d*),(\d*)\)/); for(var i = 1; i<=3; i++ ) m[i] = (m[i]*1).toString(16).length < 2 ? '0' + (m[i]*1).toString(16) : (m[i]*1).toString(16); return ['#' + m[1] + m[2] + m[3], 1]; } //------------------------------------------------------------------------------ function PMD_2D(th) { this.element_ = th; this.pmd_arr = Array(); this.strokeStyle; this.fillStyle; this.lineWidth; this.closePath = function() { this.pmd_arr.push({type: "close"}); } this.clearRect = function() { this.element_.innerHTML = ""; this.pmd_arr = []; } this.beginPath = function() { this.pmd_arr = []; } this.moveTo = function(aX, aY) { this.pmd_arr.push({type: "moveTo", x: aX, y: aY}); } this.lineTo = function(aX, aY) { this.pmd_arr.push({type: "lineTo", x: aX, y: aY}); } this.arc = function(aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise) { if (!aClockwise) { var t = aStartAngle; aStartAngle = aEndAngle; aEndAngle = t; } var xStart = aX + (Math.cos(aStartAngle) * aRadius); var yStart = aY + (Math.sin(aStartAngle) * aRadius); var xEnd = aX + (Math.cos(aEndAngle) * aRadius); var yEnd = aY + (Math.sin(aEndAngle) * aRadius); this.pmd_arr.push({type: "arc", x: aX, y: aY, radius: aRadius, xStart: xStart, yStart: yStart, xEnd: xEnd, yEnd: yEnd}); } this.rect = function(aX, aY, aW, aH) { this.moveTo(aX, aY); this.lineTo(aX + aW, aY); this.lineTo(aX + aW, aY + aH); this.lineTo(aX, aY + aH); this.closePath(); } this.fillRect = function(aX, aY, aW, aH) { this.beginPath(); this.moveTo(aX, aY); this.lineTo(aX + aW, aY); this.lineTo(aX + aW, aY + aH); this.lineTo(aX, aY + aH); this.closePath(); this.stroke(true); } this.stroke = function(aFill) { var Str = Array(); var a = convert_style(aFill ? this.fillStyle : this.strokeStyle); var color = a[0]; Str.push(''); Str.push(""); this.element_.insertAdjacentHTML("beforeEnd", Str.join("")); this.pmd_arr = Array(); } }; }