diff --git a/htdocs/sql/pmd/scripts/iecanvas.js b/htdocs/sql/pmd/scripts/iecanvas.js new file mode 100755 --- /dev/null +++ b/htdocs/sql/pmd/scripts/iecanvas.js @@ -0,0 +1,151 @@ +/* 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(); + } + }; +}