3.3
This commit is contained in:
151
pmd/scripts/iecanvas.js
Normal file
151
pmd/scripts/iecanvas.js
Normal file
@@ -0,0 +1,151 @@
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
*
|
||||
* @version $Id$
|
||||
* @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('<v:shape',
|
||||
' fillcolor="', color, '"',
|
||||
' filled="', Boolean(aFill), '"',
|
||||
' style="position:absolute;width:10;height:10;"',
|
||||
' coordorigin="0 0" coordsize="10 10"',
|
||||
' stroked="', !aFill, '"',
|
||||
' strokeweight="', this.lineWidth, '"',
|
||||
' strokecolor="', color, '"',
|
||||
' path="');
|
||||
|
||||
for (var i = 0; i < this.pmd_arr.length; i++) {
|
||||
var p = this.pmd_arr[i];
|
||||
|
||||
if (p.type == "moveTo") {
|
||||
Str.push(" m ");
|
||||
Str.push(Math.floor(p.x), ",",Math.floor(p.y));
|
||||
} else if (p.type == "lineTo") {
|
||||
Str.push(" l ");
|
||||
Str.push(Math.floor(p.x), ",",Math.floor(p.y));
|
||||
} else if (p.type == "close") {
|
||||
Str.push(" x ");
|
||||
} else if (p.type == "arc") {
|
||||
Str.push(" ar ");
|
||||
Str.push(Math.floor(p.x - p.radius), ",",
|
||||
Math.floor(p.y - p.radius), " ",
|
||||
Math.floor(p.x + p.radius), ",",
|
||||
Math.floor(p.y + p.radius), " ",
|
||||
Math.floor(p.xStart), ",", Math.floor(p.yStart), " ",
|
||||
Math.floor(p.xEnd), ",", Math.floor(p.yEnd));
|
||||
}
|
||||
}
|
||||
|
||||
Str.push(' ">');
|
||||
Str.push("</v:shape>");
|
||||
|
||||
this.element_.insertAdjacentHTML("beforeEnd", Str.join(""));
|
||||
this.pmd_arr = Array();
|
||||
}
|
||||
};
|
||||
}
|
Reference in New Issue
Block a user