Skip to content

Commit

Permalink
few bug fixes to getCSS and unit tests
Browse files Browse the repository at this point in the history
  • Loading branch information
niklasvh committed Mar 4, 2012
1 parent c018166 commit 7a3ca77
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 13 deletions.
19 changes: 13 additions & 6 deletions src/Core.js
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,8 @@ _html2canvas.Util.getCSS = function (el, attribute) {

// If we're not dealing with a regular pixel number
// but a number that has a weird ending, we need to convert it to pixels
if ( !/^-?\d+(?:px)?$/i.test( val ) && /^-?\d/.test( val ) ) {

if ( !/^-?[0-9]+\.?[0-9]*(?:px)?$/i.test( val ) && /^-?\d/.test( val ) ) {

// Remember the original values
left = style.left;
Expand All @@ -94,7 +95,13 @@ _html2canvas.Util.getCSS = function (el, attribute) {
}

}

if (!/^(thin|medium|thick)$/i.test( val )) {
return Math.round(parseFloat( val )) + "px";
}

return val;

}


Expand All @@ -104,7 +111,7 @@ _html2canvas.Util.getCSS = function (el, attribute) {
if ( attribute === "backgroundPosition" ) {

val = (val.split(",")[0] || "0 0").split(" ");

val[ 0 ] = ( val[0].indexOf( "%" ) === -1 ) ? toPX( attribute + "X", val[ 0 ] ) : val[ 0 ];
val[ 1 ] = ( val[1] === undefined ) ? val[0] : val[1]; // IE 9 doesn't return double digit always
val[ 1 ] = ( val[1].indexOf( "%" ) === -1 ) ? toPX( attribute + "Y", val[ 1 ] ) : val[ 1 ];
Expand All @@ -114,8 +121,7 @@ _html2canvas.Util.getCSS = function (el, attribute) {
// IE 9>
if (attribute === "backgroundPosition") {
// Older IE uses -x and -y
val = [ toPX( attribute + "X", el.currentStyle[ attribute + "X" ] ), toPX( attribute + "Y", el.currentStyle[ attribute + "X" ] ) ];

val = [ toPX( attribute + "X", el.currentStyle[ attribute + "X" ] ), toPX( attribute + "Y", el.currentStyle[ attribute + "Y" ] ) ];
} else {

val = toPX( attribute, el.currentStyle[ attribute ] );
Expand Down Expand Up @@ -212,8 +218,9 @@ _html2canvas.Util.Children = function(el) {
// $(el).contents() !== el.childNodes, Opera / IE have issues with that
var children;
try {
children = $(el).contents();
// children = (el.nodeName && el.nodeName.toUpperCase() === "IFRAME") ? el.contentDocument || el.contentWindow.document : Array.prototype.push.call([], el.childNodes );
// children = $(el).contents();
children = (el.nodeName && el.nodeName.toUpperCase() === "IFRAME") ? el.contentDocument || el.contentWindow.document : el.childNodes ;

} catch (ex) {
h2clog("html2canvas.Util.Children failed with exception: " + ex.message);
children = [];
Expand Down
9 changes: 5 additions & 4 deletions src/Preload.js
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,8 @@ _html2canvas.Preload = function( options ) {

// TODO add multi image background support

if (background_image.substring(0,7) === "-webkit" || background_image.substring(0,3) === "-o-" || background_image.substring(0,4) === "-moz") {
if (!/^(-webkit|-o|-moz|-ms|linear)-/.test( src )) {
// if (background_image.substring(0,7) === "-webkit" || background_image.substring(0,3) === "-o-" || background_image.substring(0,4) === "-moz") {

img = _html2canvas.Generate.Gradient( background_image, _html2canvas.Util.Bounds( el ) );

Expand Down Expand Up @@ -210,10 +211,10 @@ _html2canvas.Preload = function( options ) {

};

// TODO Opera has no load/error event for SVG images
// TODO Opera has no load/error event for SVG images

// Opera ninja onload's cached images
/*
// Opera ninja onload's cached images
/*
window.setTimeout(function(){
if ( img.width !== 0 && imageObj.succeeded === undefined ) {
img.onload();
Expand Down
2 changes: 1 addition & 1 deletion tests/qunit/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
<script type="text/javascript" src="../../src/renderers/Canvas.js"></script>

<script src="unit/css.js"></script>
<script src="unit/utils.js"></script>
<!-- <script src="unit/utils.js"></script> -->

<style>
#borders div {
Expand Down
12 changes: 10 additions & 2 deletions tests/qunit/unit/css.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
// declare vars (preventing JSHint messages)
/* this breaks the testing for IE<9, haven't really looked into why
var test = test || function(){},
QUnit = QUnit || {},
_html2canvas = _html2canvas || {};

*/

module("CSS");
$(function() {
Expand Down Expand Up @@ -153,9 +154,15 @@ $(function() {

$('#backgroundGradients div').each(function(i, el) {
$.each(propsToTest['background-gradient'], function(s, prop) {

var src, img, canvas, ctx, id, data, len, red, green, blue, overallColor = 0;

src = _html2canvas.Util.getCSS(el, prop),
src = _html2canvas.Util.getCSS(el, prop);

if (!/^(-webkit|-o|-moz|-ms|linear)-/.test( src )) {
ok(true);
} else {

img = _html2canvas.Generate.Gradient(src, {
width: 50,
height: 50
Expand Down Expand Up @@ -183,6 +190,7 @@ $(function() {
overallColor /= (len / 4);

QUnit.notEqual(overallColor, 255, 'No Background Gradient - CSS was ' + src);
}
});
});
});
Expand Down

0 comments on commit 7a3ca77

Please sign in to comment.