Scratch SVG renderer
Find a file
2024-11-06 08:25:52 +00:00
.github chore: updated versions of setup-node action and scratch-webpack-configuration 2024-07-29 10:24:42 +03:00
.husky chore: add husky hook for commitlint 2023-12-20 11:34:32 -08:00
src feat: use isomorphic wrapper for dompurify 2024-02-27 14:52:41 -08:00
test feat: use isomorphic wrapper for dompurify 2024-02-27 14:52:41 -08:00
.editorconfig use scratch-renovate-config:conservative 2021-07-26 16:29:43 -07:00
.eslintignore add end-of-file newline 2019-08-17 17:52:33 -04:00
.eslintrc.js update eslint and babel-eslint versions, one change to obey new rule 2021-05-11 15:42:30 -04:00
.gitattributes use scratch-renovate-config:conservative 2021-07-26 16:29:43 -07:00
.gitignore CCI to GHA migration 2023-10-13 11:32:50 -04:00
.npmignore Add .npmignore to fix deploy 2018-01-16 10:25:03 -05:00
.nvmrc refactor: [UEPR-31] Added new line at end of file 2024-07-19 13:56:20 +03:00
CHANGELOG.md chore(release): 2.5.29 [skip ci] 2024-11-05 14:09:31 +00:00
commitlint.config.js chore: add commitlint 2023-12-20 11:34:29 -08:00
LICENSE package for svg renderer 2017-09-05 11:57:48 -04:00
package-lock.json Merge pull request #681 from scratchfoundation/renovate/lock-file-maintenance 2024-11-06 08:25:52 +00:00
package.json chore(release): 2.5.29 [skip ci] 2024-11-05 14:09:31 +00:00
README.md fix(docs): reformat README, fix build badge, trigger release 2024-03-08 18:38:01 -08:00
release.config.js ci: use semantic-release 2023-12-20 11:34:56 -08:00
renovate.json5 chore(deps): use js-lib-bundled Renovate config 2024-02-21 09:31:12 -08:00
TRADEMARK Update TRADEMARK 2018-06-18 13:16:35 -04:00
webpack.config.js refactor: [UEPR-17] Changed entry point name 2024-06-26 16:42:19 +03:00

scratch-svg-renderer

CI/CD

A class built for importing SVGs into Scratch. Imports an SVG string to a DOM element or an HTML canvas. Handles some of the quirks with Scratch 2.0 SVGs, which sometimes misreport their width, height and view box.

Installation

This requires you to have Git and Node.js installed.

To install as a dependency for your own application:

npm install scratch-svg-renderer

To set up a development environment to edit scratch-svg-renderer yourself:

git clone https://github.com/scratchfoundation/scratch-svg-renderer.git
cd scratch-svg-renderer
npm install

How to include in a Node.js App

import SvgRenderer from 'scratch-svg-renderer';

const svgRenderer = new SvgRenderer();

const svgData = "<svg>...</svg>";
const scale = 1;
const quirksMode = false; // If true, emulate Scratch 2.0 SVG rendering "quirks"
function doSomethingWith(canvas) {...};

svgRenderer.loadSVG(svgData, quirksMode, () => {
    svgRenderer.draw(scale);
    doSomethingWith(svgRenderer.canvas);
});

How to run locally as part of scratch-gui

To run scratch-svg-renderer locally as part of scratch-gui, for development:

  1. Set up local repositories (or pull updated code):
    1. scratch-svg-renderer (this repo)
    2. scratch-render
    3. scratch-paint
    4. scratch-gui
  2. In each of the local repos above, run npm install
  3. Run npm link in each of these local repos:
    1. scratch-svg-renderer
    2. scratch-render
    3. scratch-paint
  4. Run npm link scratch-svg-renderer in each of these local repos:
    1. scratch-render
    2. scratch-paint
    3. scratch-gui
  5. In your local scratch-gui repo:
    1. run npm link scratch-render
    2. run npm link scratch-paint
  6. In scratch-gui, follow its instructions to run it or build its code

Donate

We provide Scratch free of charge, and want to keep it that way! Please consider making a donation to support our continued engineering, design, community, and resource development efforts. Donations of any size are appreciated. Thank you!

Committing

This project uses semantic release to ensure version bumps follow semver so that projects depending on it don't break unexpectedly.

In order to automatically determine version updates, semantic release expects commit messages to follow the conventional-changelog specification.

You can use the commitizen CLI to make commits formatted in this way:

npm install -g commitizen@latest cz-conventional-changelog@latest

Now you're ready to make commits using git cz.