mirror of
https://github.com/niklasvh/html2canvas.git
synced 2023-08-10 21:13:10 +03:00
Switched build process to use grunt
This commit is contained in:
parent
6675a219f3
commit
c5d82acdf6
61
grunt.js
Normal file
61
grunt.js
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
/*global module:false*/
|
||||||
|
module.exports = function(grunt) {
|
||||||
|
|
||||||
|
// Project configuration.
|
||||||
|
grunt.initConfig({
|
||||||
|
pkg: '<json:package.json>',
|
||||||
|
meta: {
|
||||||
|
banner: '/*\n <%= pkg.title || pkg.name %> <%= pkg.version %>' +
|
||||||
|
'<%= pkg.homepage ? " <" + pkg.homepage + ">\n" : "" %>' +
|
||||||
|
' Copyright (c) <%= grunt.template.today("yyyy") %> <%= pkg.author.name %>' +
|
||||||
|
'\n\n Released under <%= _.pluck(pkg.licenses, "type").join(", ") %> License\n*/',
|
||||||
|
pre: '(function(window, document, undefined){',
|
||||||
|
post: '})(window,document);'
|
||||||
|
},
|
||||||
|
lint: {
|
||||||
|
files: ['grunt.js', 'build/<%= pkg.name %>.js']
|
||||||
|
},
|
||||||
|
qunit: {
|
||||||
|
files: ['tests/qunit/index.html']
|
||||||
|
},
|
||||||
|
concat: {
|
||||||
|
dist: {
|
||||||
|
src: ['<banner:meta.banner>', '<banner:meta.pre>','src/*.js', 'src/renderers/Canvas.js', '<banner:meta.post>'],
|
||||||
|
dest: 'build/<%= pkg.name %>.js'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
min: {
|
||||||
|
dist: {
|
||||||
|
src: ['<banner:meta.banner>', '<config:concat.dist.dest>'],
|
||||||
|
dest: 'build/<%= pkg.name %>.min.js'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
files: '<config:lint.files>',
|
||||||
|
tasks: 'lint qunit'
|
||||||
|
},
|
||||||
|
jshint: {
|
||||||
|
options: {
|
||||||
|
curly: true,
|
||||||
|
eqeqeq: true,
|
||||||
|
immed: true,
|
||||||
|
latedef: true,
|
||||||
|
newcap: true,
|
||||||
|
noarg: true,
|
||||||
|
sub: true,
|
||||||
|
undef: true,
|
||||||
|
boss: true,
|
||||||
|
eqnull: true,
|
||||||
|
browser: true
|
||||||
|
},
|
||||||
|
globals: {
|
||||||
|
jQuery: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
uglify: {}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Default task.
|
||||||
|
grunt.registerTask('default', 'concat lint qunit min');
|
||||||
|
|
||||||
|
};
|
12
package.json
Normal file
12
package.json
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"title": "html2canvas",
|
||||||
|
"name": "html2canvas",
|
||||||
|
"description": "File archive management library in JavaScript",
|
||||||
|
"version": "0.4.0",
|
||||||
|
"author": {
|
||||||
|
"name":"Niklas von Hertzen (@niklasvh)"
|
||||||
|
},
|
||||||
|
"homepage": "http://html2canvas.hertzen.com",
|
||||||
|
"licenses": [{"type": "MIT"}]
|
||||||
|
|
||||||
|
}
|
@ -1,10 +1,3 @@
|
|||||||
/*
|
|
||||||
html2canvas @VERSION@ <http://html2canvas.hertzen.com>
|
|
||||||
Copyright (c) 2011 Niklas von Hertzen. All rights reserved.
|
|
||||||
http://www.twitter.com/niklasvh
|
|
||||||
|
|
||||||
Released under MIT License
|
|
||||||
*/
|
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
var _html2canvas = {},
|
var _html2canvas = {},
|
||||||
|
@ -1,41 +1,31 @@
|
|||||||
/*
|
|
||||||
html2canvas @VERSION@ <http://html2canvas.hertzen.com>
|
|
||||||
Copyright (c) 2011 Niklas von Hertzen. All rights reserved.
|
|
||||||
http://www.twitter.com/niklasvh
|
|
||||||
|
|
||||||
Contributor(s):
|
|
||||||
Niklas von Hertzen <http://www.twitter.com/niklasvh>
|
|
||||||
André Fiedler <http://www.twitter.com/sonnenkiste>
|
|
||||||
|
|
||||||
Released under MIT License
|
|
||||||
*/
|
|
||||||
|
|
||||||
(function(){
|
(function(){
|
||||||
|
|
||||||
_html2canvas.Generate = {};
|
_html2canvas.Generate = {};
|
||||||
|
|
||||||
var reGradients = [
|
var reGradients = [
|
||||||
/^(-webkit-linear-gradient)\(([a-z\s]+)([\w\d\.\s,%\(\)]+)\)$/,
|
/^(-webkit-linear-gradient)\(([a-z\s]+)([\w\d\.\s,%\(\)]+)\)$/,
|
||||||
/^(-o-linear-gradient)\(([a-z\s]+)([\w\d\.\s,%\(\)]+)\)$/,
|
/^(-o-linear-gradient)\(([a-z\s]+)([\w\d\.\s,%\(\)]+)\)$/,
|
||||||
/^(-webkit-gradient)\((linear|radial),\s((?:\d{1,3}%?)\s(?:\d{1,3}%?),\s(?:\d{1,3}%?)\s(?:\d{1,3}%?))([\w\d\.\s,%\(\)-]+)\)$/,
|
/^(-webkit-gradient)\((linear|radial),\s((?:\d{1,3}%?)\s(?:\d{1,3}%?),\s(?:\d{1,3}%?)\s(?:\d{1,3}%?))([\w\d\.\s,%\(\)\-]+)\)$/,
|
||||||
/^(-moz-linear-gradient)\(((?:\d{1,3}%?)\s(?:\d{1,3}%?))([\w\d\.\s,%\(\)]+)\)$/,
|
/^(-moz-linear-gradient)\(((?:\d{1,3}%?)\s(?:\d{1,3}%?))([\w\d\.\s,%\(\)]+)\)$/,
|
||||||
/^(-webkit-radial-gradient)\(((?:\d{1,3}%?)\s(?:\d{1,3}%?)),\s(\w+)\s([a-z-]+)([\w\d\.\s,%\(\)]+)\)$/,
|
/^(-webkit-radial-gradient)\(((?:\d{1,3}%?)\s(?:\d{1,3}%?)),\s(\w+)\s([a-z\-]+)([\w\d\.\s,%\(\)]+)\)$/,
|
||||||
/^(-moz-radial-gradient)\(((?:\d{1,3}%?)\s(?:\d{1,3}%?)),\s(\w+)\s?([a-z-]*)([\w\d\.\s,%\(\)]+)\)$/,
|
/^(-moz-radial-gradient)\(((?:\d{1,3}%?)\s(?:\d{1,3}%?)),\s(\w+)\s?([a-z\-]*)([\w\d\.\s,%\(\)]+)\)$/,
|
||||||
/^(-o-radial-gradient)\(((?:\d{1,3}%?)\s(?:\d{1,3}%?)),\s(\w+)\s([a-z-]+)([\w\d\.\s,%\(\)]+)\)$/
|
/^(-o-radial-gradient)\(((?:\d{1,3}%?)\s(?:\d{1,3}%?)),\s(\w+)\s([a-z\-]+)([\w\d\.\s,%\(\)]+)\)$/
|
||||||
];
|
];
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* TODO: Add IE10 vendor prefix (-ms) support
|
* TODO: Add IE10 vendor prefix (-ms) support
|
||||||
* TODO: Add W3C gradient (linear-gradient) support
|
* TODO: Add W3C gradient (linear-gradient) support
|
||||||
* TODO: Add old Webkit -webkit-gradient(radial, ...) support
|
* TODO: Add old Webkit -webkit-gradient(radial, ...) support
|
||||||
* TODO: Maybe some RegExp optimizations are possible ;o)
|
* TODO: Maybe some RegExp optimizations are possible ;o)
|
||||||
*/
|
*/
|
||||||
_html2canvas.Generate.parseGradient = function(css, bounds) {
|
_html2canvas.Generate.parseGradient = function(css, bounds) {
|
||||||
var gradient, i, len = reGradients.length, m1, stop, m2, m2Len, step, m3;
|
var gradient, i, len = reGradients.length, m1, stop, m2, m2Len, step, m3, tl,tr,br,bl;
|
||||||
|
|
||||||
for(i = 0; i < len; i+=1){
|
for(i = 0; i < len; i+=1){
|
||||||
m1 = css.match(reGradients[i]);
|
m1 = css.match(reGradients[i]);
|
||||||
if(m1) break;
|
if(m1) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(m1) {
|
if(m1) {
|
||||||
@ -139,8 +129,12 @@ _html2canvas.Generate.parseGradient = function(css, bounds) {
|
|||||||
for(i = 0; i < m2Len; i+=1){
|
for(i = 0; i < m2Len; i+=1){
|
||||||
m3 = m2[i].match(/(from|to|color-stop)\(([0-9\.]+)?(?:,\s)?((?:rgb|rgba)\(\d{1,3},\s\d{1,3},\s\d{1,3}(?:,\s[0-9\.]+)?\))\)/);
|
m3 = m2[i].match(/(from|to|color-stop)\(([0-9\.]+)?(?:,\s)?((?:rgb|rgba)\(\d{1,3},\s\d{1,3},\s\d{1,3}(?:,\s[0-9\.]+)?\))\)/);
|
||||||
stop = parseFloat(m3[2]);
|
stop = parseFloat(m3[2]);
|
||||||
if(m3[1] === 'from') stop = 0.0;
|
if(m3[1] === 'from') {
|
||||||
if(m3[1] === 'to') stop = 1.0;
|
stop = 0.0;
|
||||||
|
}
|
||||||
|
if(m3[1] === 'to') {
|
||||||
|
stop = 1.0;
|
||||||
|
}
|
||||||
gradient.colorStops.push({
|
gradient.colorStops.push({
|
||||||
color: m3[3],
|
color: m3[3],
|
||||||
stop: stop
|
stop: stop
|
||||||
@ -227,23 +221,23 @@ _html2canvas.Generate.parseGradient = function(css, bounds) {
|
|||||||
|
|
||||||
// size
|
// size
|
||||||
m2 = m1[3].match(/\w+/);
|
m2 = m1[3].match(/\w+/);
|
||||||
m3 = m1[4].match(/[a-z-]*/);
|
m3 = m1[4].match(/[a-z\-]*/);
|
||||||
if(m2 && m3){
|
if(m2 && m3){
|
||||||
switch(m3[0]){
|
switch(m3[0]){
|
||||||
case 'farthest-corner':
|
case 'farthest-corner':
|
||||||
case 'cover': // is equivalent to farthest-corner
|
case 'cover': // is equivalent to farthest-corner
|
||||||
case '': // mozilla removes "cover" from definition :(
|
case '': // mozilla removes "cover" from definition :(
|
||||||
var tl = Math.sqrt(Math.pow(gradient.cx, 2) + Math.pow(gradient.cy, 2));
|
tl = Math.sqrt(Math.pow(gradient.cx, 2) + Math.pow(gradient.cy, 2));
|
||||||
var tr = Math.sqrt(Math.pow(gradient.cx, 2) + Math.pow(gradient.y1 - gradient.cy, 2));
|
tr = Math.sqrt(Math.pow(gradient.cx, 2) + Math.pow(gradient.y1 - gradient.cy, 2));
|
||||||
var br = Math.sqrt(Math.pow(gradient.x1 - gradient.cx, 2) + Math.pow(gradient.y1 - gradient.cy, 2));
|
br = Math.sqrt(Math.pow(gradient.x1 - gradient.cx, 2) + Math.pow(gradient.y1 - gradient.cy, 2));
|
||||||
var bl = Math.sqrt(Math.pow(gradient.x1 - gradient.cx, 2) + Math.pow(gradient.cy, 2));
|
bl = Math.sqrt(Math.pow(gradient.x1 - gradient.cx, 2) + Math.pow(gradient.cy, 2));
|
||||||
gradient.rx = gradient.ry = Math.max(tl, tr, br, bl);
|
gradient.rx = gradient.ry = Math.max(tl, tr, br, bl);
|
||||||
break;
|
break;
|
||||||
case 'closest-corner':
|
case 'closest-corner':
|
||||||
var tl = Math.sqrt(Math.pow(gradient.cx, 2) + Math.pow(gradient.cy, 2));
|
tl = Math.sqrt(Math.pow(gradient.cx, 2) + Math.pow(gradient.cy, 2));
|
||||||
var tr = Math.sqrt(Math.pow(gradient.cx, 2) + Math.pow(gradient.y1 - gradient.cy, 2));
|
tr = Math.sqrt(Math.pow(gradient.cx, 2) + Math.pow(gradient.y1 - gradient.cy, 2));
|
||||||
var br = Math.sqrt(Math.pow(gradient.x1 - gradient.cx, 2) + Math.pow(gradient.y1 - gradient.cy, 2));
|
br = Math.sqrt(Math.pow(gradient.x1 - gradient.cx, 2) + Math.pow(gradient.y1 - gradient.cy, 2));
|
||||||
var bl = Math.sqrt(Math.pow(gradient.x1 - gradient.cx, 2) + Math.pow(gradient.cy, 2));
|
bl = Math.sqrt(Math.pow(gradient.x1 - gradient.cx, 2) + Math.pow(gradient.cy, 2));
|
||||||
gradient.rx = gradient.ry = Math.min(tl, tr, br, bl);
|
gradient.rx = gradient.ry = Math.min(tl, tr, br, bl);
|
||||||
break;
|
break;
|
||||||
case 'farthest-side':
|
case 'farthest-side':
|
||||||
@ -324,9 +318,9 @@ _html2canvas.Generate.parseGradient = function(css, bounds) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return gradient;
|
return gradient;
|
||||||
};
|
};
|
||||||
|
|
||||||
_html2canvas.Generate.Gradient = function(src, bounds) {
|
_html2canvas.Generate.Gradient = function(src, bounds) {
|
||||||
var canvas = document.createElement('canvas'),
|
var canvas = document.createElement('canvas'),
|
||||||
ctx = canvas.getContext('2d'),
|
ctx = canvas.getContext('2d'),
|
||||||
gradient, grad, i, len, img;
|
gradient, grad, i, len, img;
|
||||||
@ -408,15 +402,15 @@ _html2canvas.Generate.Gradient = function(src, bounds) {
|
|||||||
|
|
||||||
img.src = canvas.toDataURL();
|
img.src = canvas.toDataURL();
|
||||||
|
|
||||||
}
|
};
|
||||||
imgRadial.src = canvasRadial.toDataURL();
|
imgRadial.src = canvasRadial.toDataURL();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return img;
|
return img;
|
||||||
};
|
};
|
||||||
|
|
||||||
_html2canvas.Generate.ListAlpha = function(number) {
|
_html2canvas.Generate.ListAlpha = function(number) {
|
||||||
var tmp = "",
|
var tmp = "",
|
||||||
modulus;
|
modulus;
|
||||||
|
|
||||||
@ -427,9 +421,9 @@ _html2canvas.Generate.ListAlpha = function(number) {
|
|||||||
}while((number*26) > 26);
|
}while((number*26) > 26);
|
||||||
|
|
||||||
return tmp;
|
return tmp;
|
||||||
};
|
};
|
||||||
|
|
||||||
_html2canvas.Generate.ListRoman = function(number) {
|
_html2canvas.Generate.ListRoman = function(number) {
|
||||||
var romanArray = ["M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"],
|
var romanArray = ["M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"],
|
||||||
decimal = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1],
|
decimal = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1],
|
||||||
roman = "",
|
roman = "",
|
||||||
@ -449,6 +443,6 @@ _html2canvas.Generate.ListRoman = function(number) {
|
|||||||
|
|
||||||
return roman;
|
return roman;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
})();
|
})();
|
10
src/Parse.js
10
src/Parse.js
@ -343,7 +343,7 @@ _html2canvas.Parse = function ( images, options ) {
|
|||||||
|
|
||||||
range.setStart(textNode, textOffset);
|
range.setStart(textNode, textOffset);
|
||||||
range.setEnd(textNode, textOffset + textValue.length);
|
range.setEnd(textNode, textOffset + textValue.length);
|
||||||
}else{
|
} else {
|
||||||
// TODO add IE support
|
// TODO add IE support
|
||||||
range = body.createTextRange();
|
range = body.createTextRange();
|
||||||
}
|
}
|
||||||
@ -363,10 +363,7 @@ _html2canvas.Parse = function ( images, options ) {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (i < listLen-1)
|
newTextNode = (i < listLen-1) ? oldTextNode.splitText(renderList[c].length) : null;
|
||||||
newTextNode = oldTextNode.splitText(renderList[c].length);
|
|
||||||
else
|
|
||||||
newTextNode = null;
|
|
||||||
|
|
||||||
parent = oldTextNode.parentNode;
|
parent = oldTextNode.parentNode;
|
||||||
wrapElement = doc.createElement('wrapper');
|
wrapElement = doc.createElement('wrapper');
|
||||||
@ -1324,8 +1321,7 @@ _html2canvas.Parse = function ( images, options ) {
|
|||||||
elm = children[ i ];
|
elm = children[ i ];
|
||||||
if ( elm.nodeType === 3 ) {
|
if ( elm.nodeType === 3 ) {
|
||||||
// Text node
|
// Text node
|
||||||
|
html += elm.nodeValue.replace(/</g,"<").replace(/>/g,">");
|
||||||
html += elm.nodeValue.replace(/\</g,"<").replace(/\>/g,">");
|
|
||||||
} else if ( elm.nodeType === 1 ) {
|
} else if ( elm.nodeType === 1 ) {
|
||||||
// Element
|
// Element
|
||||||
if ( !/^(script|meta|title)$/.test(elm.nodeName.toLowerCase()) ) {
|
if ( !/^(script|meta|title)$/.test(elm.nodeName.toLowerCase()) ) {
|
||||||
|
@ -1,11 +1,3 @@
|
|||||||
/*
|
|
||||||
html2canvas @VERSION@ <http://html2canvas.hertzen.com>
|
|
||||||
Copyright (c) 2011 Niklas von Hertzen. All rights reserved.
|
|
||||||
http://www.twitter.com/niklasvh
|
|
||||||
|
|
||||||
Released under MIT License
|
|
||||||
*/
|
|
||||||
|
|
||||||
_html2canvas.Preload = function( options ) {
|
_html2canvas.Preload = function( options ) {
|
||||||
|
|
||||||
var images = {
|
var images = {
|
||||||
@ -31,11 +23,6 @@ _html2canvas.Preload = function( options ) {
|
|||||||
link.href = window.location.href;
|
link.href = window.location.href;
|
||||||
pageOrigin = link.protocol + link.host;
|
pageOrigin = link.protocol + link.host;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function isSameOrigin(url){
|
function isSameOrigin(url){
|
||||||
link.href = url;
|
link.href = url;
|
||||||
link.href = link.href; // YES, BELIEVE IT OR NOT, that is required for IE9 - http://jsfiddle.net/niklasvh/2e48b/
|
link.href = link.href; // YES, BELIEVE IT OR NOT, that is required for IE9 - http://jsfiddle.net/niklasvh/2e48b/
|
||||||
@ -104,11 +91,6 @@ _html2canvas.Preload = function( options ) {
|
|||||||
|
|
||||||
function getImages (el) {
|
function getImages (el) {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// if (!this.ignoreRe.test(el.nodeName)){
|
|
||||||
//
|
|
||||||
|
|
||||||
var contents = _html2canvas.Util.Children(el),
|
var contents = _html2canvas.Util.Children(el),
|
||||||
i,
|
i,
|
||||||
background_image,
|
background_image,
|
||||||
@ -120,16 +102,11 @@ _html2canvas.Preload = function( options ) {
|
|||||||
try {
|
try {
|
||||||
var contentsLen = contents.length;
|
var contentsLen = contents.length;
|
||||||
for (i = 0; i < contentsLen; i+=1 ){
|
for (i = 0; i < contentsLen; i+=1 ){
|
||||||
// var ignRe = new RegExp("("+this.ignoreElements+")");
|
|
||||||
// if (!ignRe.test(element.nodeName)){
|
|
||||||
getImages(contents[i]);
|
getImages(contents[i]);
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch( e ) {}
|
catch( e ) {}
|
||||||
|
|
||||||
|
|
||||||
// }
|
|
||||||
try {
|
try {
|
||||||
elNodeType = el.nodeType;
|
elNodeType = el.nodeType;
|
||||||
} catch (ex) {
|
} catch (ex) {
|
||||||
@ -169,11 +146,6 @@ _html2canvas.Preload = function( options ) {
|
|||||||
methods.loadImage(src);
|
methods.loadImage(src);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
if (background_image && background_image !== "1" && background_image !== "none" && background_image.substring(0,7) !== "-webkit" && background_image.substring(0,3)!== "-o-" && background_image.substring(0,4) !== "-moz"){
|
|
||||||
// TODO add multi image background support
|
|
||||||
src = _html2canvas.Util.backgroundImage(background_image.split(",")[0]);
|
|
||||||
methods.loadImage(src); */
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -355,6 +327,3 @@ _html2canvas.Preload = function( options ) {
|
|||||||
return methods;
|
return methods;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,10 +1,3 @@
|
|||||||
/*
|
|
||||||
html2canvas @VERSION@ <http://html2canvas.hertzen.com>
|
|
||||||
Copyright (c) 2011 Niklas von Hertzen. All rights reserved.
|
|
||||||
http://www.twitter.com/niklasvh
|
|
||||||
|
|
||||||
Released under MIT License
|
|
||||||
*/
|
|
||||||
function h2cRenderContext(width, height) {
|
function h2cRenderContext(width, height) {
|
||||||
var storage = [];
|
var storage = [];
|
||||||
return {
|
return {
|
||||||
|
@ -1,13 +1,4 @@
|
|||||||
/*
|
|
||||||
html2canvas @VERSION@ <http://html2canvas.hertzen.com>
|
|
||||||
Copyright (c) 2011 Niklas von Hertzen. All rights reserved.
|
|
||||||
http://www.twitter.com/niklasvh
|
|
||||||
|
|
||||||
Released under MIT License
|
|
||||||
*/
|
|
||||||
_html2canvas.Renderer = function(parseQueue, options){
|
_html2canvas.Renderer = function(parseQueue, options){
|
||||||
|
|
||||||
|
|
||||||
var queue = [];
|
var queue = [];
|
||||||
|
|
||||||
function sortZ(zStack){
|
function sortZ(zStack){
|
||||||
|
@ -1,12 +1,3 @@
|
|||||||
/*
|
|
||||||
html2canvas @VERSION@ <http://html2canvas.hertzen.com>
|
|
||||||
Copyright (c) 2011 Niklas von Hertzen. All rights reserved.
|
|
||||||
http://www.twitter.com/niklasvh
|
|
||||||
|
|
||||||
Released under MIT License
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
html2canvas = function( elements, opts ) {
|
html2canvas = function( elements, opts ) {
|
||||||
|
|
||||||
var queue,
|
var queue,
|
||||||
|
@ -1,2 +0,0 @@
|
|||||||
window.html2canvas = html2canvas;
|
|
||||||
}(window, document));
|
|
@ -1 +0,0 @@
|
|||||||
(function(window, document, undefined){
|
|
@ -1,12 +1,3 @@
|
|||||||
/*
|
|
||||||
html2canvas @VERSION@ <http://html2canvas.hertzen.com>
|
|
||||||
Copyright (c) 2011 Niklas von Hertzen. All rights reserved.
|
|
||||||
http://www.twitter.com/niklasvh
|
|
||||||
|
|
||||||
Released under MIT License
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
_html2canvas.Renderer.Canvas = function( options ) {
|
_html2canvas.Renderer.Canvas = function( options ) {
|
||||||
|
|
||||||
options = options || {};
|
options = options || {};
|
||||||
@ -107,6 +98,18 @@ _html2canvas.Renderer.Canvas = function( options ) {
|
|||||||
ctx.fillRect(0, 0, canvas.width, canvas.height);
|
ctx.fillRect(0, 0, canvas.width, canvas.height);
|
||||||
ctx.fillStyle = fstyle;
|
ctx.fillStyle = fstyle;
|
||||||
|
|
||||||
|
var drawShape = function(args) {
|
||||||
|
|
||||||
|
var i, len = args.length;
|
||||||
|
ctx.beginPath();
|
||||||
|
for ( i = 0; i < len; i++ ) {
|
||||||
|
ctx[ args[ i ].name ].apply( ctx, args[ i ]['arguments'] );
|
||||||
|
}
|
||||||
|
ctx.closePath();
|
||||||
|
ctx.fill();
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
if ( options.svgRendering && zStack.svgRender !== undefined ) {
|
if ( options.svgRendering && zStack.svgRender !== undefined ) {
|
||||||
// TODO: enable async rendering to support this
|
// TODO: enable async rendering to support this
|
||||||
ctx.drawImage( zStack.svgRender, 0, 0 );
|
ctx.drawImage( zStack.svgRender, 0, 0 );
|
||||||
@ -143,23 +146,11 @@ _html2canvas.Renderer.Canvas = function( options ) {
|
|||||||
break;
|
break;
|
||||||
case "function":
|
case "function":
|
||||||
if (renderItem.name === "fillRect") {
|
if (renderItem.name === "fillRect") {
|
||||||
|
|
||||||
if (!usingFlashcanvas || renderItem['arguments'][0] + renderItem['arguments'][2] < flashMaxSize && renderItem['arguments'][1] + renderItem['arguments'][3] < flashMaxSize) {
|
if (!usingFlashcanvas || renderItem['arguments'][0] + renderItem['arguments'][2] < flashMaxSize && renderItem['arguments'][1] + renderItem['arguments'][3] < flashMaxSize) {
|
||||||
ctx.fillRect.apply( ctx, renderItem['arguments'] );
|
ctx.fillRect.apply( ctx, renderItem['arguments'] );
|
||||||
}
|
}
|
||||||
} else if (renderItem.name === "drawShape") {
|
} else if (renderItem.name === "drawShape") {
|
||||||
|
drawShape(renderItem['arguments']);
|
||||||
( function( args ) {
|
|
||||||
|
|
||||||
var i, len = args.length;
|
|
||||||
ctx.beginPath();
|
|
||||||
for ( i = 0; i < len; i++ ) {
|
|
||||||
ctx[ args[ i ].name ].apply( ctx, args[ i ]['arguments'] );
|
|
||||||
}
|
|
||||||
ctx.closePath();
|
|
||||||
ctx.fill();
|
|
||||||
})( renderItem['arguments'] );
|
|
||||||
|
|
||||||
} else if (renderItem.name === "fillText") {
|
} else if (renderItem.name === "fillText") {
|
||||||
if (!usingFlashcanvas || renderItem['arguments'][1] < flashMaxSize && renderItem['arguments'][2] < flashMaxSize) {
|
if (!usingFlashcanvas || renderItem['arguments'][1] < flashMaxSize && renderItem['arguments'][2] < flashMaxSize) {
|
||||||
ctx.fillText.apply( ctx, renderItem['arguments'] );
|
ctx.fillText.apply( ctx, renderItem['arguments'] );
|
||||||
|
Loading…
x
Reference in New Issue
Block a user