mirror of
https://github.com/Hopiu/fabric.js.git
synced 2026-05-24 05:03:44 +00:00
fixed tests for browser
This commit is contained in:
parent
06a9f5e68a
commit
a1e5d518bf
9 changed files with 59 additions and 34 deletions
3
dist/fabric.js
vendored
3
dist/fabric.js
vendored
|
|
@ -21558,6 +21558,9 @@ fabric.Image.filters.BaseFilter = fabric.util.createClass(/** @lends fabric.Imag
|
|||
* @return {String} svg representation of an instance
|
||||
*/
|
||||
toSVG: function(reviver) {
|
||||
if (!this.ctx) {
|
||||
this.ctx = fabric.util.createCanvasElement().getContext('2d');
|
||||
}
|
||||
var markup = this._createBaseSVGMarkup(),
|
||||
offsets = this._getSVGLeftTopOffsets(this.ctx),
|
||||
textAndBg = this._getSVGTextAndBg(offsets.textTop, offsets.textLeft);
|
||||
|
|
|
|||
4
dist/fabric.min.js
vendored
4
dist/fabric.min.js
vendored
File diff suppressed because one or more lines are too long
BIN
dist/fabric.min.js.gz
vendored
BIN
dist/fabric.min.js.gz
vendored
Binary file not shown.
3
dist/fabric.require.js
vendored
3
dist/fabric.require.js
vendored
|
|
@ -10127,6 +10127,9 @@ fabric.Image.filters.BaseFilter = fabric.util.createClass({
|
|||
return object;
|
||||
},
|
||||
toSVG: function(reviver) {
|
||||
if (!this.ctx) {
|
||||
this.ctx = fabric.util.createCanvasElement().getContext("2d");
|
||||
}
|
||||
var markup = this._createBaseSVGMarkup(), offsets = this._getSVGLeftTopOffsets(this.ctx), textAndBg = this._getSVGTextAndBg(offsets.textTop, offsets.textLeft);
|
||||
this._wrapSVGTextAndBg(markup, textAndBg);
|
||||
return reviver ? reviver(markup.join("")) : markup.join("");
|
||||
|
|
|
|||
|
|
@ -918,6 +918,9 @@
|
|||
* @return {String} svg representation of an instance
|
||||
*/
|
||||
toSVG: function(reviver) {
|
||||
if (!this.ctx) {
|
||||
this.ctx = fabric.util.createCanvasElement().getContext('2d');
|
||||
}
|
||||
var markup = this._createBaseSVGMarkup(),
|
||||
offsets = this._getSVGLeftTopOffsets(this.ctx),
|
||||
textAndBg = this._getSVGTextAndBg(offsets.textTop, offsets.textLeft);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
var el = fabric.document.createElement('canvas');
|
||||
el.width = 600; el.height = 600;
|
||||
|
||||
var canvas = this.canvas = fabric.isLikelyNode ? fabric.createCanvasForNode(600, 600, {enableRetinaScaling: false}) : new fabric.Canvas(el);
|
||||
var canvas = this.canvas = fabric.isLikelyNode ? fabric.createCanvasForNode(600, 600, {enableRetinaScaling: false}) : new fabric.Canvas(el, {enableRetinaScaling: false});
|
||||
|
||||
// function _createImageElement() {
|
||||
// return fabric.isLikelyNode ? new (require('canvas').Image)() : fabric.document.createElement('img');
|
||||
|
|
@ -521,19 +521,19 @@ test('toObject without default values', function() {
|
|||
isTransparent = fabric.util.isTransparent,
|
||||
ctx = canvas.contextContainer;
|
||||
canvas.add(group);
|
||||
equal(canvas.enableRetinaScaling, false);
|
||||
equal(isTransparent(ctx, 0, 0, 0), true);
|
||||
equal(isTransparent(ctx, 1, 1, 0), false);
|
||||
equal(isTransparent(ctx, 2, 2, 0), false);
|
||||
equal(isTransparent(ctx, 3, 3, 0), true);
|
||||
equal(isTransparent(ctx, 4, 4, 0), false);
|
||||
equal(canvas.enableRetinaScaling, false, 'enable retina scaling is off');
|
||||
equal(isTransparent(ctx, 0, 0, 0), true, '0,0 is transparent');
|
||||
equal(isTransparent(ctx, 1, 1, 0), false, '1,1 is opaque');
|
||||
equal(isTransparent(ctx, 2, 2, 0), false, '2,2 is opaque');
|
||||
equal(isTransparent(ctx, 3, 3, 0), true, '3,3 is transparent');
|
||||
equal(isTransparent(ctx, 4, 4, 0), false, '4,4 is opaque');
|
||||
group.transformMatrix = [2, 0, 0, 2, 1, 1];
|
||||
canvas.renderAll();
|
||||
equal(isTransparent(ctx, 0, 0, 0), true);
|
||||
equal(isTransparent(ctx, 1, 1, 0), true);
|
||||
equal(isTransparent(ctx, 2, 2, 0), true);
|
||||
equal(isTransparent(ctx, 3, 3, 0), false);
|
||||
equal(isTransparent(ctx, 4, 4, 0), false);
|
||||
equal(isTransparent(ctx, 0, 0, 0), true, '0,0 is transparent');
|
||||
equal(isTransparent(ctx, 1, 1, 0), true, '1,1 is transparent');
|
||||
equal(isTransparent(ctx, 2, 2, 0), true, '2,2 is transparent');
|
||||
equal(isTransparent(ctx, 3, 3, 0), false, '3,3 is opaque');
|
||||
equal(isTransparent(ctx, 4, 4, 0), false, '4,4 is opaque');
|
||||
});
|
||||
// asyncTest('cloning group with image', function() {
|
||||
// var rect = new fabric.Rect({ top: 100, left: 100, width: 30, height: 10 }),
|
||||
|
|
|
|||
|
|
@ -12,8 +12,7 @@
|
|||
|
||||
var IMG_SRC = fabric.isLikelyNode ? (__dirname + '/../fixtures/test_image.gif') : getAbsolutePath('../fixtures/test_image.gif'),
|
||||
IMG_WIDTH = 276,
|
||||
IMG_HEIGHT = 110,
|
||||
Canvas = require('canvas');
|
||||
IMG_HEIGHT = 110;
|
||||
|
||||
var REFERENCE_IMG_OBJECT = {
|
||||
'type': 'image',
|
||||
|
|
@ -55,17 +54,24 @@
|
|||
};
|
||||
|
||||
function _createImageElement() {
|
||||
return fabric.isLikelyNode ? new Canvas.Image() : fabric.document.createElement('img');
|
||||
return fabric.isLikelyNode ? new (require('canvas').Image)() : fabric.document.createElement('img');
|
||||
}
|
||||
|
||||
function _createImageObject(width, height, callback, options) {
|
||||
var elImage = _createImageElement();
|
||||
setSrc(elImage, IMG_SRC, function() {
|
||||
if (width != elImage.width || height != elImage.height) {
|
||||
var canvas = new Canvas(width, height);
|
||||
canvas.getContext('2d').drawImage(elImage, 0, 0, width, height);
|
||||
elImage._src = canvas.toDataURL();
|
||||
elImage.src = elImage._src;
|
||||
if (fabric.isLikelyNode) {
|
||||
var Canvas = require('canvas');
|
||||
var canvas = new Canvas(width, height);
|
||||
canvas.getContext('2d').drawImage(elImage, 0, 0, width, height);
|
||||
elImage._src = canvas.toDataURL();
|
||||
elImage.src = elImage._src;
|
||||
}
|
||||
else {
|
||||
elImage.width = width;
|
||||
elImage.height = height;
|
||||
}
|
||||
return new fabric.Image(elImage, options, callback);
|
||||
}
|
||||
else {
|
||||
|
|
@ -275,9 +281,9 @@
|
|||
asyncTest('cloneWidthHeight', function() {
|
||||
createSmallImageObject(function(image) {
|
||||
image.clone(function(clone) {
|
||||
equal(clone.getElement().width, IMG_WIDTH / 2,
|
||||
equal(clone.width, IMG_WIDTH / 2,
|
||||
'clone\'s element should have width identical to that of original image');
|
||||
equal(clone.getElement().height, IMG_HEIGHT / 2,
|
||||
equal(clone.height, IMG_HEIGHT / 2,
|
||||
'clone\'s element should have height identical to that of original image');
|
||||
start();
|
||||
});
|
||||
|
|
|
|||
|
|
@ -713,7 +713,7 @@
|
|||
});
|
||||
|
||||
test('toSVG', function() {
|
||||
var iText = new fabric.IText('test foo bar-baz\nqux', {
|
||||
var iText = new fabric.IText('test', {
|
||||
styles: {
|
||||
0: {
|
||||
0: { fill: '#112233' },
|
||||
|
|
@ -724,10 +724,8 @@
|
|||
|
||||
equal(typeof iText.toSVG, 'function');
|
||||
|
||||
// because translate values differ
|
||||
if (!fabric.isLikelyNode) {
|
||||
equal(iText.toSVG(), '\t<g transform=\"translate(124.88 52.93)\">\n\t\t<text font-family=\"Times New Roman\" font-size=\"40\" font-weight=\"normal\" style=\"stroke: none; stroke-width: 1; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 10; fill: rgb(0,0,0); fill-rule: nonzero; opacity: 1;\" ><tspan x=\"-124.384765625\" y=\"-17.232\" style=\"stroke: none; stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; fill: #112233; fill-rule: ; opacity: 1;\">t</tspan><tspan x=\"-113.271484375\" y=\"-17.232\" style=\"stroke: none; stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(0,0,0); fill-rule: ; opacity: 1;\">e</tspan><tspan x=\"-95.517578125\" y=\"-17.232\" style=\"stroke: #223344; stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(0,0,0); fill-rule: ; opacity: 1;\">s</tspan><tspan x=\"-79.951171875\" y=\"-17.232\" style=\"stroke: none; stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(0,0,0); fill-rule: ; opacity: 1;\">t</tspan><tspan x=\"-68.837890625\" y=\"-17.232\" style=\"stroke: none; stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(0,0,0); fill-rule: ; opacity: 1;\"> </tspan><tspan x=\"-58.837890625\" y=\"-17.232\" style=\"stroke: none; stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(0,0,0); fill-rule: ; opacity: 1;\">f</tspan><tspan x=\"-45.517578125\" y=\"-17.232\" style=\"stroke: none; stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(0,0,0); fill-rule: ; opacity: 1;\">o</tspan><tspan x=\"-25.517578125\" y=\"-17.232\" style=\"stroke: none; stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(0,0,0); fill-rule: ; opacity: 1;\">o</tspan><tspan x=\"-5.517578125\" y=\"-17.232\" style=\"stroke: none; stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(0,0,0); fill-rule: ; opacity: 1;\"> </tspan><tspan x=\"4.482421875\" y=\"-17.232\" style=\"stroke: none; stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(0,0,0); fill-rule: ; opacity: 1;\">b</tspan><tspan x=\"24.482421875\" y=\"-17.232\" style=\"stroke: none; stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(0,0,0); fill-rule: ; opacity: 1;\">a</tspan><tspan x=\"42.236328125\" y=\"-17.232\" style=\"stroke: none; stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(0,0,0); fill-rule: ; opacity: 1;\">r</tspan><tspan x=\"55.556640625\" y=\"-17.232\" style=\"stroke: none; stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(0,0,0); fill-rule: ; opacity: 1;\">-</tspan><tspan x=\"68.876953125\" y=\"-17.232\" style=\"stroke: none; stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(0,0,0); fill-rule: ; opacity: 1;\">b</tspan><tspan x=\"88.876953125\" y=\"-17.232\" style=\"stroke: none; stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(0,0,0); fill-rule: ; opacity: 1;\">a</tspan><tspan x=\"106.630859375\" y=\"-17.232\" style=\"stroke: none; stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(0,0,0); fill-rule: ; opacity: 1;\">z</tspan><tspan x=\"-124.38\" y=\"35.2\" fill=\"rgb(0,0,0)\">qux</tspan></text>\n\t</g>\n');
|
||||
}
|
||||
equal(iText.toSVG(), '\t<g transform=\"translate(27.77 22.6)\">\n\t\t<text font-family=\"Times New Roman\" font-size=\"40\" font-weight=\"normal\" style=\"stroke: none; stroke-width: 1; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 10; fill: rgb(0,0,0); fill-rule: nonzero; opacity: 1;\" >\n\t\t\t<tspan x=\"-27.77\" y=\"12.6\" style=\"stroke: none; stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(17,34,51); fill-rule: ; opacity: 1;\">t</tspan>\n\t\t\t<tspan x=\"-16.66\" y=\"12.6\" style=\"stroke: none; stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(0,0,0); fill-rule: ; opacity: 1;\">e</tspan>\n\t\t\t<tspan x=\"1.09\" y=\"12.6\" style=\"stroke: rgb(34,51,68); stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(0,0,0); fill-rule: ; opacity: 1;\">s</tspan>\n\t\t\t<tspan x=\"16.66\" y=\"12.6\" style=\"stroke: none; stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(0,0,0); fill-rule: ; opacity: 1;\">t</tspan>\n\t\t</text>\n\t</g>\n');
|
||||
|
||||
|
||||
// TODO: more SVG tests here?
|
||||
});
|
||||
|
|
@ -749,11 +747,17 @@
|
|||
};
|
||||
canvas.add(iText);
|
||||
equal(typeof iText.toSVG, 'function');
|
||||
|
||||
// because translate values differ
|
||||
if (!fabric.isLikelyNode) {
|
||||
equal(canvas.toSVG(), '\t<g transform=\"translate(124.88 52.93)\">\n\t\t<text font-family=\"Times New Roman\" font-size=\"40\" font-weight=\"normal\" style=\"stroke: none; stroke-width: 1; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 10; fill: rgb(0,0,0); fill-rule: nonzero; opacity: 1;\" ><tspan x=\"-124.384765625\" y=\"-17.232\" style=\"stroke: none; stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; fill: #112233; fill-rule: ; opacity: 1;\">t</tspan><tspan x=\"-113.271484375\" y=\"-17.232\" style=\"stroke: none; stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(0,0,0); fill-rule: ; opacity: 1;\">e</tspan><tspan x=\"-95.517578125\" y=\"-17.232\" style=\"stroke: #223344; stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(0,0,0); fill-rule: ; opacity: 1;\">s</tspan><tspan x=\"-79.951171875\" y=\"-17.232\" style=\"stroke: none; stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(0,0,0); fill-rule: ; opacity: 1;\">t</tspan><tspan x=\"-68.837890625\" y=\"-17.232\" style=\"stroke: none; stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(0,0,0); fill-rule: ; opacity: 1;\"> </tspan><tspan x=\"-58.837890625\" y=\"-17.232\" style=\"stroke: none; stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(0,0,0); fill-rule: ; opacity: 1;\">f</tspan><tspan x=\"-45.517578125\" y=\"-17.232\" style=\"stroke: none; stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(0,0,0); fill-rule: ; opacity: 1;\">o</tspan><tspan x=\"-25.517578125\" y=\"-17.232\" style=\"stroke: none; stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(0,0,0); fill-rule: ; opacity: 1;\">o</tspan><tspan x=\"-5.517578125\" y=\"-17.232\" style=\"stroke: none; stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(0,0,0); fill-rule: ; opacity: 1;\"> </tspan><tspan x=\"4.482421875\" y=\"-17.232\" style=\"stroke: none; stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(0,0,0); fill-rule: ; opacity: 1;\">b</tspan><tspan x=\"24.482421875\" y=\"-17.232\" style=\"stroke: none; stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(0,0,0); fill-rule: ; opacity: 1;\">a</tspan><tspan x=\"42.236328125\" y=\"-17.232\" style=\"stroke: none; stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(0,0,0); fill-rule: ; opacity: 1;\">r</tspan><tspan x=\"55.556640625\" y=\"-17.232\" style=\"stroke: none; stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(0,0,0); fill-rule: ; opacity: 1;\">-</tspan><tspan x=\"68.876953125\" y=\"-17.232\" style=\"stroke: none; stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(0,0,0); fill-rule: ; opacity: 1;\">b</tspan><tspan x=\"88.876953125\" y=\"-17.232\" style=\"stroke: none; stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(0,0,0); fill-rule: ; opacity: 1;\">a</tspan><tspan x=\"106.630859375\" y=\"-17.232\" style=\"stroke: none; stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(0,0,0); fill-rule: ; opacity: 1;\">z</tspan><tspan x=\"-124.38\" y=\"35.2\" fill=\"rgb(0,0,0)\">qux</tspan></text>\n\t</g>\n');
|
||||
var parser;
|
||||
if (fabric.isLikelyNode) {
|
||||
var XmlDomParser = require('xmldom').DOMParser;
|
||||
parser = new XmlDomParser();
|
||||
}
|
||||
else {
|
||||
parser = new DOMParser();
|
||||
}
|
||||
var svgString = canvas.toSVG(),
|
||||
doc = parser.parseFromString(svgString, "image/svg+xml"),
|
||||
style = doc.getElementsByTagName('style')[0].firstChild.data;
|
||||
equal(style, '\n\t\t@font-face {\n\t\t\tfont-family: \'Plaster\';\n\t\t\tsrc: url(\'path-to-plaster-font-file\');\n\t\t}\n\t\t@font-face {\n\t\t\tfont-family: \'Engagement\';\n\t\t\tsrc: url(\'path-to-engagement-font-file\');\n\t\t}\n');
|
||||
});
|
||||
|
||||
})();
|
||||
|
|
|
|||
|
|
@ -76,7 +76,13 @@
|
|||
ok(typeof text._getFontDeclaration == 'function', 'has a private method _getFontDeclaration');
|
||||
var fontDecl = text._getFontDeclaration();
|
||||
ok(typeof fontDecl == 'string', 'it returns a string');
|
||||
equal(fontDecl, 'normal 40px "Times New Roman"');
|
||||
if (fabric.isLikelyNode) {
|
||||
equal(fontDecl, 'normal 40px "Times New Roman"');
|
||||
}
|
||||
else {
|
||||
equal(fontDecl, ' normal 40px "Times New Roman"');
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
test('toObject', function() {
|
||||
|
|
|
|||
Loading…
Reference in a new issue