Skip to content

Commit

Permalink
Upgrade to fabric 6 (#29334)
Browse files Browse the repository at this point in the history
Upgrade fabric to latest v6 beta. It works for our use case, even
thought it does not fix the upstream issue
fabricjs/fabric.js#9679 that
#29326 relates to.
  • Loading branch information
silverwind authored Feb 22, 2024
1 parent 532da5e commit c4b0cb4
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 21 deletions.
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -969,7 +969,7 @@ generate-gitignore:

.PHONY: generate-images
generate-images: | node_modules
npm install --no-save --no-package-lock fabric@5 imagemin-zopfli@7
npm install --no-save fabric@6.0.0-beta19 imagemin-zopfli@7
node build/generate-images.js $(TAGS)

.PHONY: generate-manpage
Expand Down
29 changes: 11 additions & 18 deletions build/generate-images.js
Original file line number Diff line number Diff line change
@@ -1,20 +1,13 @@
#!/usr/bin/env node
import imageminZopfli from 'imagemin-zopfli';
import {optimize} from 'svgo';
import {fabric} from 'fabric';
import {loadSVGFromString, Canvas, Rect, util} from 'fabric/node';
import {readFile, writeFile} from 'node:fs/promises';
import {argv, exit} from 'node:process';

function exit(err) {
function doExit(err) {
if (err) console.error(err);
process.exit(err ? 1 : 0);
}

function loadSvg(svg) {
return new Promise((resolve) => {
fabric.loadSVGFromString(svg, (objects, options) => {
resolve({objects, options});
});
});
exit(err ? 1 : 0);
}

async function generate(svg, path, {size, bg}) {
Expand All @@ -35,14 +28,14 @@ async function generate(svg, path, {size, bg}) {
return;
}

const {objects, options} = await loadSvg(svg);
const canvas = new fabric.Canvas();
const {objects, options} = await loadSVGFromString(svg);
const canvas = new Canvas();
canvas.setDimensions({width: size, height: size});
const ctx = canvas.getContext('2d');
ctx.scale(options.width ? (size / options.width) : 1, options.height ? (size / options.height) : 1);

if (bg) {
canvas.add(new fabric.Rect({
canvas.add(new Rect({
left: 0,
top: 0,
height: size * (1 / (size / options.height)),
Expand All @@ -51,7 +44,7 @@ async function generate(svg, path, {size, bg}) {
}));
}

canvas.add(fabric.util.groupSVGElements(objects, options));
canvas.add(util.groupSVGElements(objects, options));
canvas.renderAll();

let png = Buffer.from([]);
Expand All @@ -64,7 +57,7 @@ async function generate(svg, path, {size, bg}) {
}

async function main() {
const gitea = process.argv.slice(2).includes('gitea');
const gitea = argv.slice(2).includes('gitea');
const logoSvg = await readFile(new URL('../assets/logo.svg', import.meta.url), 'utf8');
const faviconSvg = await readFile(new URL('../assets/favicon.svg', import.meta.url), 'utf8');

Expand All @@ -80,7 +73,7 @@ async function main() {
}

try {
exit(await main());
doExit(await main());
} catch (err) {
exit(err);
doExit(err);
}
2 changes: 1 addition & 1 deletion public/assets/img/favicon.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion public/assets/img/logo.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit c4b0cb4

Please sign in to comment.