mirror of
https://github.com/Hopiu/fabric.js.git
synced 2026-03-16 22:10:32 +00:00
Add a couple more dependencies to /lib. Remove unneeded code from 2D.js and unminify it.
This commit is contained in:
parent
c519c147aa
commit
770e47b115
6 changed files with 2162 additions and 1334 deletions
1763
lib/ape-ep-dom.js
Normal file
1763
lib/ape-ep-dom.js
Normal file
File diff suppressed because it is too large
Load diff
13
lib/ape-extensions.js
Normal file
13
lib/ape-extensions.js
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
(function(){
|
||||
|
||||
var doc = this.document;
|
||||
|
||||
APE.EventPublisher.remove = function(src, sEvent, fp, thisArg) {
|
||||
return APE.EventPublisher.get(src, sEvent).remove(fp, thisArg);
|
||||
};
|
||||
|
||||
APE.getElement = function(id) {
|
||||
return typeof id === 'string' ? doc.getElementById(id) : id;
|
||||
};
|
||||
|
||||
})();
|
||||
87
lib/prototype-extensions.js
vendored
Normal file
87
lib/prototype-extensions.js
vendored
Normal file
|
|
@ -0,0 +1,87 @@
|
|||
Prototype.falseFunction = function () { return false; };
|
||||
|
||||
Element.addMethods({
|
||||
makeUnselectable: (function () {
|
||||
var style = document.documentElement.style;
|
||||
|
||||
var selectProp = 'userSelect' in style
|
||||
? 'userSelect'
|
||||
: 'MozUserSelect' in style
|
||||
? 'MozUserSelect'
|
||||
: 'WebkitUserSelect' in style
|
||||
? 'WebkitUserSelect'
|
||||
: 'KhtmlUserSelect' in style
|
||||
? 'KhtmlUserSelect'
|
||||
: '';
|
||||
|
||||
function makeUnselectable(element) {
|
||||
if (typeof element.onselectstart !== 'undefined') {
|
||||
element.onselectstart = Prototype.falseFunction;
|
||||
}
|
||||
if (selectProp) {
|
||||
element.style[selectProp] = 'none';
|
||||
}
|
||||
else if (typeof element.unselectable == 'string') {
|
||||
element.unselectable = 'on';
|
||||
}
|
||||
// TODO (kangax): test return value
|
||||
return element;
|
||||
}
|
||||
return makeUnselectable;
|
||||
})()
|
||||
});
|
||||
|
||||
Element.addMethods('button', {
|
||||
enable: Field.enable,
|
||||
disable: Field.disable
|
||||
});
|
||||
|
||||
/* speed up toJSON on arrays by not using `each` */
|
||||
Array.prototype.toJSON = function() {
|
||||
var results = [];
|
||||
for (var i = 0, len = this.length; i < len; i++) {
|
||||
var value = Object.toJSON(this[i]);
|
||||
if (typeof value !== 'undefined') {
|
||||
results.push(value);
|
||||
}
|
||||
}
|
||||
return "[" + results.join(", ") + "]";
|
||||
};
|
||||
|
||||
(function(){
|
||||
|
||||
function getScript(url, callback) {
|
||||
var headEl = document.getElementsByTagName("head")[0],
|
||||
scriptEl = document.createElement('script'),
|
||||
loading = true;
|
||||
|
||||
scriptEl.type = 'text/javascript';
|
||||
scriptEl.setAttribute('runat', 'server');
|
||||
scriptEl.onload = scriptEl.onreadystatechange = function(e) {
|
||||
if (loading) {
|
||||
if (typeof this.readyState == 'string' &&
|
||||
this.readyState !== 'loaded' &&
|
||||
this.readyState !== 'complete') return;
|
||||
loading = false;
|
||||
callback(e || window.event);
|
||||
scriptEl = scriptEl.onload = scriptEl.onreadystatechange = null;
|
||||
}
|
||||
};
|
||||
scriptEl.src = url;
|
||||
headEl.appendChild(scriptEl);
|
||||
// causes issue in Opera
|
||||
// headEl.removeChild(scriptEl);
|
||||
}
|
||||
|
||||
function getScriptJaxer(url, callback) {
|
||||
Jaxer.load(url);
|
||||
callback();
|
||||
}
|
||||
|
||||
Prototype.getScript = getScript;
|
||||
|
||||
var Jaxer = this.Jaxer;
|
||||
if (Jaxer && Jaxer.load) {
|
||||
Prototype.getScript = getScriptJaxer;
|
||||
}
|
||||
})();
|
||||
273
src/2D.js
273
src/2D.js
File diff suppressed because one or more lines are too long
1265
src/sylvester.js
1265
src/sylvester.js
File diff suppressed because it is too large
Load diff
95
test/benchmark.html
Normal file
95
test/benchmark.html
Normal file
|
|
@ -0,0 +1,95 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
|
||||
"http://www.w3.org/TR/html4/strict.dtd">
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Unit test file :: Canvas.Text</title>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
|
||||
<link rel="stylesheet" href="lib/unittest.css" type="text/css">
|
||||
|
||||
<!--[if IE]>
|
||||
<script type="text/javascript" src="../lib/excanvas.js"></script>
|
||||
<![endif]-->
|
||||
|
||||
<script src="../lib/prototype.js" type="text/javascript"></script>
|
||||
<script src="../lib/ape-ep-dom.js" type="text/javascript"></script>
|
||||
<script src="../lib/ape-extensions.js" type="text/javascript"></script>
|
||||
<script src="../lib/prototype-extensions.js" type="text/javascript"></script>
|
||||
|
||||
<script src="../src/2D.js" type="text/javascript"></script>
|
||||
<script src="../src/canvas_element.class.js" type="text/javascript"></script>
|
||||
<script src="../src/canvas_parser.js" type="text/javascript"></script>
|
||||
<script src="../src/canvas_istub.mixin.js" type="text/javascript"></script>
|
||||
<script src="../src/canvas_object.class.js" type="text/javascript"></script>
|
||||
<script src="../src/canvas_circle.class.js" type="text/javascript"></script>
|
||||
<script src="../src/canvas_rect.class.js" type="text/javascript"></script>
|
||||
<script src="../src/canvas_polygon.class.js" type="text/javascript"></script>
|
||||
<script src="../src/canvas_polyline.class.js" type="text/javascript"></script>
|
||||
<script src="../src/canvas_ellipse.class.js" type="text/javascript"></script>
|
||||
<script src="../src/canvas_image.class.js" type="text/javascript"></script>
|
||||
<script src="../src/canvas_path.class.js" type="text/javascript"></script>
|
||||
<script src="../src/canvas_path_group.class.js" type="text/javascript"></script>
|
||||
<script src="../src/canvas_group.class.js" type="text/javascript"></script>
|
||||
|
||||
|
||||
<style type="text/css" media="screen">
|
||||
.canvas_container { position: relative; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h2>Canvas benchmark</h2>
|
||||
|
||||
<div id="results"></div>
|
||||
<canvas id="test" width="600" height="600"></canvas>
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
(function(){
|
||||
|
||||
function getRandomInt(min, max) {
|
||||
return Math.floor(Math.random() * (max - min + 1)) + min;
|
||||
}
|
||||
function getRandomColor() {
|
||||
return getRandomInt(0, 255).toString(16)
|
||||
+ getRandomInt(0, 255).toString(16)
|
||||
+ getRandomInt(0, 255).toString(16);
|
||||
}
|
||||
|
||||
function addResult(title, result) {
|
||||
$('results').insert('<h3>' + title + '</h3><p>' + result + '</p>');
|
||||
}
|
||||
|
||||
this.c = new Canvas.Element('test');
|
||||
|
||||
var t1, t2;
|
||||
|
||||
var t = new Date();
|
||||
for (var i=50; i--; ) {
|
||||
c.add(new Canvas.Rect({
|
||||
width: getRandomInt(10, 50),
|
||||
height: getRandomInt(10, 50),
|
||||
fill: '#' + getRandomColor(),
|
||||
opacity: Math.random(),
|
||||
angle: getRandomInt(0, 180),
|
||||
top: getRandomInt(0, c._oConfig.height),
|
||||
left: getRandomInt(0, c._oConfig.width)
|
||||
}));
|
||||
}
|
||||
addResult('Text initialization: ', (t1 = new Date() - t));
|
||||
|
||||
t = new Date();
|
||||
for (var i=50; i--; ) {
|
||||
c.renderAll();
|
||||
}
|
||||
|
||||
addResult('Text rendering: ', (t2 = new Date() - t));
|
||||
addResult('Total time: ', t1 + t2);
|
||||
|
||||
c.calcOffset();
|
||||
|
||||
})();
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
Loading…
Reference in a new issue