Merge pull request #427 from SVG-Edit/new-build

New build
This commit is contained in:
JFH
2020-09-23 22:58:53 +02:00
committed by GitHub
865 changed files with 39244 additions and 238185 deletions

View File

@@ -1,5 +0,0 @@
{
"presets": [
["@babel/preset-env"]
]
}

View File

@@ -7,10 +7,16 @@ dist
docs/jsdoc
archive
src/svgedit-config-es.js
src/svgedit-config-iife.js
jsconfig.json
mochawesome-report
releases
!.eslintrc.js
!.ncurc.js
es-dev-server.config.js
nyc.config.js
svgedit-custom.css
src/xdomain-svgedit-config-iife.js
# Vendor/minified files
src/editor/jquery.min.js
@@ -22,17 +28,5 @@ src/editor/js-hotkeys
src/editor/jspdf/jspdf.min.js
src/editor/jspdf/underscore-min.js
src/editor/extensions/mathjax
src/editor/extensions/ext-mathjax/mathjax
# Todo: We should at least check `compat/compat` in our other files, however
## Two "external" items are modified locally, so we undo their ignoring
src/external/**/*
!src/external/dom-polyfill
src/external/dom-polyfill/*
!src/external/dom-polyfill/dom-polyfill.js
!src/external/dynamic-import-polyfill
mochawesome-report
releases
!.eslintrc.js
!.ncurc.js

View File

@@ -122,14 +122,15 @@ module.exports = {
'consistent-this': 'off',
'import/no-anonymous-default-export': 'off',
'node/no-unsupported-features/node-builtins': 'warn',
'prefer-exponentiation-operator': 'warn'
'prefer-exponentiation-operator': 'warn',
'node/no-unsupported-features/es-syntax': 'off'
},
overrides: [
// Locales have no need for importing outside of SVG-Edit
// and translations may need a longer line length
{
files: [
'src/editor/locale/lang.*.js', 'src/editor/extensions/ext-locale/**',
'src/editor/locale/lang.*.js', 'src/editor/extensions/*/locale/**',
'docs/tutorials/ExtensionDocs.md'
],
rules: {
@@ -140,12 +141,10 @@ module.exports = {
// These browser files don't do importing or requiring
{
files: [
'src/editor/svgpathseg.js',
'src/editor/touch.js',
'src/editor/typedefs.js',
'src/editor/redirect-on-no-module-support.js',
'src/editor/extensions/imagelib/index.js',
'src/external/dom-polyfill/dom-polyfill.js',
'src/editor/extensions/ext-imagelib/index.js',
'screencasts/svgopen2010/script.js'
],
rules: {

1
.gitignore vendored
View File

@@ -18,3 +18,4 @@ mochawesome.json
.vscode
.eslintcache
.DS_Store

84
.gitmodules vendored
View File

@@ -1,84 +0,0 @@
[submodule "releases/svg-edit-2.8"]
path = releases/svg-edit-2.8
url = https://github.com/SVG-Edit/svgedit.git
branch = release-v2.8
[submodule "releases/svg-edit-2.8.1"]
path = releases/svg-edit-2.8.1
url = https://github.com/SVG-Edit/svgedit.git
branch = release-v2.8.1
[submodule "releases/svg-edit-3.0.0-alpha.1"]
path = releases/svg-edit-3.0.0-alpha.1
url = https://github.com/SVG-Edit/svgedit.git
branch = release-v3.0.0-alpha.1
[submodule "releases/svg-edit-3.0.0-alpha.2"]
path = releases/svg-edit-3.0.0-alpha.2
url = https://github.com/SVG-Edit/svgedit.git
branch = release-v3.0.0-alpha.2
[submodule "releases/svg-edit-3.0.0-alpha.3"]
path = releases/svg-edit-3.0.0-alpha.3
url = https://github.com/SVG-Edit/svgedit.git
branch = release-v3.0.0-alpha.3
[submodule "releases/svg-edit-3.0.0-alpha.4"]
path = releases/svg-edit-3.0.0-alpha.4
url = https://github.com/SVG-Edit/svgedit.git
branch = release-v3.0.0-alpha.4
[submodule "releases/svg-edit-3.0.0-rc.1"]
path = releases/svg-edit-3.0.0-rc.1
url = https://github.com/SVG-Edit/svgedit.git
branch = release-v3.0.0-rc.1
[submodule "releases/svg-edit-3.0.0-rc.2"]
path = releases/svg-edit-3.0.0-rc.2
url = https://github.com/SVG-Edit/svgedit.git
branch = release-v3.0.0-rc.2
[submodule "releases/svg-edit-3.0.0-rc.3"]
path = releases/svg-edit-3.0.0-rc.3
url = https://github.com/SVG-Edit/svgedit.git
branch = release-v3.0.0-rc.3
[submodule "releases/svg-edit-3.0.0"]
path = releases/svg-edit-3.0.0
url = https://github.com/SVG-Edit/svgedit.git
branch = release-v3.0.0
[submodule "releases/svg-edit-3.0.1"]
path = releases/svg-edit-3.0.1
url = https://github.com/SVG-Edit/svgedit.git
branch = release-v3.0.1
[submodule "releases/svg-edit-3.1.0"]
path = releases/svg-edit-3.1.0
url = https://github.com/SVG-Edit/svgedit.git
branch = release-v3.1.0
[submodule "releases/svg-edit-3.1.1"]
path = releases/svg-edit-3.1.1
url = https://github.com/SVG-Edit/svgedit.git
branch = release-v3.1.1
[submodule "releases/svg-edit-3.2.0"]
path = releases/svg-edit-3.2.0
url = https://github.com/SVG-Edit/svgedit.git
branch = release-v3.2.0
[submodule "releases/svg-edit-4.0.0"]
path = releases/svg-edit-4.0.0
url = https://github.com/SVG-Edit/svgedit.git
branch = release-v4.0.0
[submodule "releases/svg-edit-4.0.1"]
path = releases/svg-edit-4.0.1
url = https://github.com/SVG-Edit/svgedit.git
branch = release-v4.0.1
[submodule "releases/svg-edit-4.1.0"]
path = releases/svg-edit-4.1.0
url = https://github.com/SVG-Edit/svgedit.git
branch = release-v4.1.0
[submodule "releases/svg-edit-4.2.0"]
path = releases/svg-edit-4.2.0
url = https://github.com/SVG-Edit/svgedit.git
branch = release-v4.2.0
[submodule "releases/svg-edit-4.3.0"]
path = releases/svg-edit-4.3.0
url = https://github.com/SVG-Edit/svgedit.git
branch = release-v4.3.0
[submodule "releases/svg-edit-5.0.0"]
path = releases/svg-edit-5.0.0
url = https://github.com/SVG-Edit/svgedit.git
branch = release-v5.0.0
[submodule "releases/svg-edit-5.1.0"]
path = releases/svg-edit-5.1.0
url = https://github.com/SVG-Edit/svgedit.git
branch = release-v5.1.0

View File

@@ -1,3 +0,0 @@
{
"title-require": false
}

View File

@@ -1,8 +0,0 @@
'use strict';
module.exports = {
reject: [
// Todo: Old copy with jspdf which needs updating: https://github.com/SVG-Edit/svgedit/issues/51
'underscore'
]
};

View File

@@ -5,7 +5,6 @@ screencasts
gh-disabled-workflows
build
lgtm.yml
.travis.yml
cypress/**
cypress.env.json

View File

@@ -1,25 +0,0 @@
os: linux
dist: xenial
language: node_js
notifications:
email: false
git:
submodules: false
jobs:
include:
- language: ruby
rvm:
- 2.3
script:
- bundle exec jekyll build
- language: node_js
node_js:
- 14
# Reenable later if doing more than linting (i.e., testing)
# - 12
# - 10
script:
- npm run eslint

76
CODE_OF_CONDUCT.md Normal file
View File

@@ -0,0 +1,76 @@
# Contributor Covenant Code of Conduct
## Our Pledge
In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to making participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, sex characteristics, gender identity and expression,
level of experience, education, socio-economic status, nationality, personal
appearance, race, religion, or sexual identity and orientation.
## Our Standards
Examples of behavior that contributes to creating a positive environment
include:
* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
* The use of sexualized language or imagery and unwelcome sexual attention or
advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic
address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
## Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or
reject comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct, or to ban temporarily or
permanently any contributor for other behaviors that they deem inappropriate,
threatening, offensive, or harmful.
## Scope
This Code of Conduct applies both within project spaces and in public spaces
when an individual is representing the project or its community. Examples of
representing a project or community include using an official project e-mail
address, posting via an official social media account, or acting as an appointed
representative at an online or offline event. Representation of a project may be
further defined and clarified by project maintainers.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team. All complaints will be reviewed and
investigated and will result in a response that is deemed necessary and
appropriate to the circumstances. The project team is obligated to maintain
confidentiality with regard to the reporter of an incident.
Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good
faith may face temporary or permanent repercussions as determined by other
members of the project's leadership.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
[homepage]: https://www.contributor-covenant.org
For answers to common questions about this code of conduct, see
https://www.contributor-covenant.org/faq

View File

@@ -1,6 +1,6 @@
# These are supported funding model platforms
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
github: [brettz9] # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
patreon: # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username

View File

@@ -44,24 +44,19 @@ to join the project.
## Demo
### [Try SVG-edit here](https://svg-edit.github.io/svgedit/src/editor/svg-editor.html)
### [Try SVG-edit here](https://svg-edit.github.io/svgedit/dist/editor/index.html)
<!-- See the [latest release](https://svg-edit.github.io/svgedit/releases/latest/editor/svg-editor.html)
(or its [ES6-Module](https://svg-edit.github.io/svgedit/releases/latest/editor/svg-editor-es.html)
version, which requires a modern browser).
-->
See a working editor on [`master`](https://svg-edit.github.io/svgedit/src/editor/svg-editor.html) (or its [ES6-Module](https://svg-edit.github.io/svgedit/src/editor/svg-editor-es.html)
See a working editor on [`master`](https://svg-edit.github.io/svgedit/src/editor/index.html)
version, which requires a modern browser).
You may also try it at <https://unpkg.com/svgedit/editor/svg-editor.html>
(which redirects to a versioned URL).
We also build a systemJS version at [`master`](https://svg-edit.github.io/svgedit/dist/editor/system/index.html)
You may also obtain URLs for specific [releases](https://github.com/SVG-Edit/svgedit/releases).
You may test the [latest version in `master`](https://svg-edit.github.io/svgedit/src/editor/svg-editor-es.html)
which is the ESM version. (The [non-ESM version](https://svg-edit.github.io/svgedit/src/editor/svg-editor.html)
on `master` may be updated less frequently.)
## Installation
### Quick install
@@ -203,14 +198,15 @@ incorporating SVGEdit. You will need to have Node.js/npm installed.
## Supported browsers
The following browsers had been tested for 2.6 or earlier and will
probably continue to work with 3.0.
- Opera 59+,
- IE 12+,
- Chrome 75+,
- FireFox 68+,
- Safari 10+
- Firefox 1.5+
- Opera 9.50+
- Safari 4+
- Chrome 1+
- IE 9+ and Edge
Support for old browsers may require to use an older version of the package. However,
please open an issue if you need support for a specific version of your browser so
the project team can decide if we should support with the latest version.
## Further reading and more information
@@ -223,3 +219,7 @@ probably continue to work with 3.0.
* Join the [svg-edit mailing list](https://groups.google.com/forum/#!forum/svg-edit).
* Join us on `#svg-edit` on `freenode.net` (or use the
[web client](https://webchat.freenode.net/?channels=svg-edit)).
# Hosting
SVGedit versions are deployed to:
[![Deploys by Netlify](https://www.netlify.com)](https://www.netlify.com/img/global/badges/netlify-color-accent.svg)

View File

@@ -1,3 +1,4 @@
@@ -1,156 +0,0 @@
# To-do: Change to a sample service-worker
CACHE MANIFEST
@@ -153,4 +154,4 @@ extensions/ext-shapes.js
extensions/ext-star.js
extensions/ext-storage.js
extensions/ext-webappfind.js
extensions/ext-xdomain-messaging.js
extensions/ext-xdomain-messaging.js

11
babel.config.json Normal file
View File

@@ -0,0 +1,11 @@
{
"presets": [
[
"@babel/env",
{
"useBuiltIns": "usage",
"corejs": "3.6.5"
}
]
]
}

View File

@@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="428" height="20"><defs><style>text{font-size:11px;font-family:Verdana,DejaVu Sans,Geneva,sans-serif}text.shadow{fill:#010101;fill-opacity:.3}text.high{fill:#fff}</style><linearGradient id="smooth" x2="0" y2="100%"><stop offset="0" stop-color="#aaa" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><mask id="round"><rect width="100%" height="100%" rx="3" fill="#fff"/></mask></defs><g id="bg" mask="url(#round)"><path fill="green" stroke="#000" d="M0 0h120v20H0zM120 0h109v20H120zM229 0h87v20h-87zM316 0h112v20H316z"/><path fill="url(#smooth)" d="M0 0h428v20H0z"/></g><g id="fg"><text class="shadow" x="5.5" y="15">Statements 45.57%</text><text class="high" x="5" y="14">Statements 45.57%</text><text class="shadow" x="125.5" y="15">Branches 34.06%</text><text class="high" x="125" y="14">Branches 34.06%</text><text class="shadow" x="234.5" y="15">Lines 46.73%</text><text class="high" x="234" y="14">Lines 46.73%</text><text class="shadow" x="321.5" y="15">Functions 51.69%</text><text class="high" x="321" y="14">Functions 51.69%</text></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="428" height="20"><defs><style>text{font-size:11px;font-family:Verdana,DejaVu Sans,Geneva,sans-serif}text.shadow{fill:#010101;fill-opacity:.3}text.high{fill:#fff}</style><linearGradient id="smooth" x2="0" y2="100%"><stop offset="0" stop-color="#aaa" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><mask id="round"><rect width="100%" height="100%" rx="3" fill="#fff"/></mask></defs><g id="bg" mask="url(#round)"><path fill="green" stroke="#000" d="M0 0h120v20H0zM120 0h109v20H120zM229 0h87v20h-87zM316 0h112v20H316z"/><path fill="url(#smooth)" d="M0 0h428v20H0z"/></g><g id="fg"><text class="shadow" x="5.5" y="15">Statements 51.13%</text><text class="high" x="5" y="14">Statements 51.13%</text><text class="shadow" x="125.5" y="15">Branches 40.85%</text><text class="high" x="125" y="14">Branches 40.85%</text><text class="shadow" x="234.5" y="15">Lines 51.84%</text><text class="high" x="234" y="14">Lines 51.84%</text><text class="shadow" x="321.5" y="15">Functions 58.67%</text><text class="high" x="321" y="14">Functions 58.67%</text></g></svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="161" height="56"><defs><style>text{font-size:11px;font-family:Verdana,DejaVu Sans,Geneva,sans-serif}text.shadow{fill:#010101;fill-opacity:.3}text.high{fill:#fff}</style><linearGradient id="smooth" x2="0" y2="100%"><stop offset="0" stop-color="#aaa" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><mask id="round"><rect width="100%" height="100%" rx="3" fill="#fff"/></mask></defs><g id="bg" mask="url(#round)"><path fill="navy" d="M0 0h88v56H0z"/><path fill="green" d="M88 0h73v56H88z"/><path fill="url(#smooth)" d="M0 0h161v56H0z"/></g><g id="fg"><text class="shadow" x="5.5" y="15">License types</text><text class="high" x="5" y="14">License types</text><text class="shadow" x="5.5" y="27">(all devDeps)</text><text class="high" x="5" y="26">(all devDeps)</text><text class="shadow" x="93.5" y="15">Permissive</text><text class="high" x="93" y="14">Permissive</text><text class="shadow" x="93.5" y="39">1. ISC</text><text class="high" x="93" y="38">1. ISC</text><text class="shadow" x="93.5" y="51">2. MIT</text><text class="high" x="93" y="50">2. MIT</text></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="581" height="188"><defs><style>text{font-size:11px;font-family:Verdana,DejaVu Sans,Geneva,sans-serif}text.shadow{fill:#010101;fill-opacity:.3}text.high{fill:#fff}</style><linearGradient id="smooth" x2="0" y2="100%"><stop offset="0" stop-color="#aaa" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><mask id="round"><rect width="100%" height="100%" rx="3" fill="#fff"/></mask></defs><g id="bg" mask="url(#round)"><path fill="navy" d="M0 0h88v188H0z"/><path fill="#006400" d="M88 0h131v188H88z"/><path fill="green" d="M219 0h189v188H219z"/><path fill="#d3d3d3" d="M408 0h173v188H408z"/><path fill="url(#smooth)" d="M0 0h581v188H0z"/></g><g id="fg"><text class="shadow" x="5.5" y="15">License types</text><text class="high" x="5" y="14">License types</text><text class="shadow" x="5.5" y="27">(all devDeps)</text><text class="high" x="5" y="26">(all devDeps)</text><text class="shadow" x="93.5" y="15">Public</text><text class="high" x="93" y="14">Public</text><text class="shadow" x="93.5" y="27">domain</text><text class="high" x="93" y="26">domain</text><text class="shadow" x="93.5" y="51">1. (MIT OR CC0-1.0)</text><text class="high" x="93" y="50">1. (MIT OR CC0-1.0)</text><text class="shadow" x="93.5" y="63">2. CC0-1.0</text><text class="high" x="93" y="62">2. CC0-1.0</text><text class="shadow" x="93.5" y="75">3. Unlicense</text><text class="high" x="93" y="74">3. Unlicense</text><text class="shadow" x="224.5" y="15">Permissive</text><text class="high" x="224" y="14">Permissive</text><text class="shadow" x="224.5" y="39">1. (AFL-2.1 OR BSD-3-Clause)</text><text class="high" x="224" y="38">1. (AFL-2.1 OR BSD-3-Clause)</text><text class="shadow" x="224.5" y="51">2. (WTFPL OR ISC)</text><text class="high" x="224" y="50">2. (WTFPL OR ISC)</text><text class="shadow" x="224.5" y="63">3. 0BSD</text><text class="high" x="224" y="62">3. 0BSD</text><text class="shadow" x="224.5" y="75">4. Apache-2.0</text><text class="high" x="224" y="74">4. Apache-2.0</text><text class="shadow" x="224.5" y="87">5. BSD</text><text class="high" x="224" y="86">5. BSD</text><text class="shadow" x="224.5" y="99">6. BSD-2-Clause</text><text class="high" x="224" y="98">6. BSD-2-Clause</text><text class="shadow" x="224.5" y="111">7. BSD-3-Clause</text><text class="high" x="224" y="110">7. BSD-3-Clause</text><text class="shadow" x="224.5" y="123">8. CC-BY-3.0</text><text class="high" x="224" y="122">8. CC-BY-3.0</text><text class="shadow" x="224.5" y="135">9. CC-BY-4.0</text><text class="high" x="224" y="134">9. CC-BY-4.0</text><text class="shadow" x="224.5" y="147">10. ISC</text><text class="high" x="224" y="146">10. ISC</text><text class="shadow" x="224.5" y="159">11. MIT</text><text class="high" x="224" y="158">11. MIT</text><text class="shadow" x="224.5" y="171">12. WTFPL</text><text class="high" x="224" y="170">12. WTFPL</text><text class="shadow" x="224.5" y="183">13. Zlib</text><text class="high" x="224" y="182">13. Zlib</text><text class="shadow" x="413.5" y="15">Missing</text><text class="high" x="413" y="14">Missing</text><text class="shadow" x="413.5" y="39">1. better-assert (1.0.2)</text><text class="high" x="413" y="38">1. better-assert (1.0.2)</text><text class="shadow" x="413.5" y="51">2. callsite (1.0.0)</text><text class="high" x="413" y="50">2. callsite (1.0.0)</text><text class="shadow" x="413.5" y="63">3. component-bind (1.0.0)</text><text class="high" x="413" y="62">3. component-bind (1.0.0)</text><text class="shadow" x="413.5" y="75">4. component-inherit (0.0.3)</text><text class="high" x="413" y="74">4. component-inherit (0.0.3)</text><text class="shadow" x="413.5" y="87">5. exif-parser (0.1.12)</text><text class="high" x="413" y="86">5. exif-parser (0.1.12)</text><text class="shadow" x="413.5" y="99">6. indexof (0.0.1)</text><text class="high" x="413" y="98">6. indexof (0.0.1)</text><text class="shadow" x="413.5" y="111">7. object-component (0.0.3)</text><text class="high" x="413" y="110">7. object-component (0.0.3)</text><text class="shadow" x="413.5" y="123">8. process (0.5.2)</text><text class="high" x="413" y="122">8. process (0.5.2)</text></g></svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

View File

@@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="445" height="80"><defs><style>text{font-size:11px;font-family:Verdana,DejaVu Sans,Geneva,sans-serif}text.shadow{fill:#010101;fill-opacity:.3}text.high{fill:#fff}</style><linearGradient id="smooth" x2="0" y2="100%"><stop offset="0" stop-color="#aaa" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><mask id="round"><rect width="100%" height="100%" rx="3" fill="#fff"/></mask></defs><g id="bg" mask="url(#round)"><path fill="navy" d="M0 0h227v80H0z"/><path fill="green" d="M227 0h90v80h-90z"/><path fill="#cc0" d="M317 0h128v80H317z"/><path fill="url(#smooth)" d="M0 0h445v80H0z"/></g><g id="fg"><text class="shadow" x="5.5" y="15">License types</text><text class="high" x="5" y="14">License types</text><text class="shadow" x="5.5" y="27">(project, deps, and bundled devDeps)</text><text class="high" x="5" y="26">(project, deps, and bundled devDeps)</text><text class="shadow" x="232.5" y="15">Permissive</text><text class="high" x="232" y="14">Permissive</text><text class="shadow" x="232.5" y="39">1. Apache-2.0</text><text class="high" x="232" y="38">1. Apache-2.0</text><text class="shadow" x="232.5" y="51">2. ISC</text><text class="high" x="232" y="50">2. ISC</text><text class="shadow" x="232.5" y="63">3. MIT</text><text class="high" x="232" y="62">3. MIT</text><text class="shadow" x="232.5" y="75">4. X11</text><text class="high" x="232" y="74">4. X11</text><text class="shadow" x="322.5" y="15">Weakly</text><text class="high" x="322" y="14">Weakly</text><text class="shadow" x="322.5" y="27">protective</text><text class="high" x="322" y="26">protective</text><text class="shadow" x="322.5" y="51">1. LGPL-3.0-or-later</text><text class="high" x="322" y="50">1. LGPL-3.0-or-later</text></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="1077" height="116"><defs><style>text{font-size:11px;font-family:Verdana,DejaVu Sans,Geneva,sans-serif}text.shadow{fill:#010101;fill-opacity:.3}text.high{fill:#fff}</style><linearGradient id="smooth" x2="0" y2="100%"><stop offset="0" stop-color="#aaa" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><mask id="round"><rect width="100%" height="100%" rx="3" fill="#fff"/></mask></defs><g id="bg" mask="url(#round)"><path fill="navy" d="M0 0h227v116H0z"/><path fill="green" d="M227 0h265v116H227z"/><path fill="#cc0" d="M492 0h128v116H492z"/><path fill="#a9a9a9" d="M620 0h243v116H620z"/><path fill="#d3d3d3" d="M863 0h214v116H863z"/><path fill="url(#smooth)" d="M0 0h1077v116H0z"/></g><g id="fg"><text class="shadow" x="5.5" y="15">License types</text><text class="high" x="5" y="14">License types</text><text class="shadow" x="5.5" y="27">(project, deps, and bundled devDeps)</text><text class="high" x="5" y="26">(project, deps, and bundled devDeps)</text><text class="shadow" x="232.5" y="15">Permissive</text><text class="high" x="232" y="14">Permissive</text><text class="shadow" x="232.5" y="39">1. (MIT OR Apache-2.0)</text><text class="high" x="232" y="38">1. (MIT OR Apache-2.0)</text><text class="shadow" x="232.5" y="51">2. (MPL-2.0 OR Apache-2.0)</text><text class="high" x="232" y="50">2. (MPL-2.0 OR Apache-2.0)</text><text class="shadow" x="232.5" y="63">3. Apache-2.0</text><text class="high" x="232" y="62">3. Apache-2.0</text><text class="shadow" x="232.5" y="75">4. ISC</text><text class="high" x="232" y="74">4. ISC</text><text class="shadow" x="232.5" y="87">5. MIT</text><text class="high" x="232" y="86">5. MIT</text><text class="shadow" x="232.5" y="99">6. MIT OR SEE LICENSE IN FEEL-FREE.md</text><text class="high" x="232" y="98">6. MIT OR SEE LICENSE IN FEEL-FREE.md</text><text class="shadow" x="232.5" y="111">7. X11</text><text class="high" x="232" y="110">7. X11</text><text class="shadow" x="497.5" y="15">Weakly</text><text class="high" x="497" y="14">Weakly</text><text class="shadow" x="497.5" y="27">protective</text><text class="high" x="497" y="26">protective</text><text class="shadow" x="497.5" y="51">1. LGPL-3.0-or-later</text><text class="high" x="497" y="50">1. LGPL-3.0-or-later</text><text class="shadow" x="625.5" y="15">Uncategorized</text><text class="high" x="625" y="14">Uncategorized</text><text class="shadow" x="625.5" y="39">1. Chromium&apos;s License (pathseg (1.2.0))</text><text class="high" x="625" y="38">1. Chromium&apos;s License (pathseg (1.2.0))</text><text class="shadow" x="868.5" y="15">Missing</text><text class="high" x="868" y="14">Missing</text><text class="shadow" x="868.5" y="39">1. null (base64-arraybuffer (0.2.0))</text><text class="high" x="868" y="38">1. null (base64-arraybuffer (0.2.0))</text></g></svg>

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="97" height="20"><defs><style>text{font-size:11px;font-family:Verdana,DejaVu Sans,Geneva,sans-serif}text.shadow{fill:#010101;fill-opacity:.3}text.high{fill:#fff}</style><linearGradient id="smooth" x2="0" y2="100%"><stop offset="0" stop-color="#aaa" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><mask id="round"><rect width="100%" height="100%" rx="3" fill="#fff"/></mask></defs><g id="bg" mask="url(#round)"><path fill="#696969" d="M0 0h41v20H0z"/><path fill="#4c1" d="M41 0h56v20H41z"/><path fill="url(#smooth)" d="M0 0h97v20H0z"/></g><g id="fg"><text class="shadow" x="5.5" y="15">Tests</text><text class="high" x="5" y="14">Tests</text><text class="shadow" x="46.5" y="15">132/132</text><text class="high" x="46" y="14">132/132</text></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="97" height="20"><defs><style>text{font-size:11px;font-family:Verdana,DejaVu Sans,Geneva,sans-serif}text.shadow{fill:#010101;fill-opacity:.3}text.high{fill:#fff}</style><linearGradient id="smooth" x2="0" y2="100%"><stop offset="0" stop-color="#aaa" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><mask id="round"><rect width="100%" height="100%" rx="3" fill="#fff"/></mask></defs><g id="bg" mask="url(#round)"><path fill="#696969" d="M0 0h41v20H0z"/><path fill="#4c1" d="M41 0h56v20H41z"/><path fill="url(#smooth)" d="M0 0h97v20H0z"/></g><g id="fg"><text class="shadow" x="5.5" y="15">Tests</text><text class="high" x="5" y="14">Tests</text><text class="shadow" x="46.5" y="15">139/139</text><text class="high" x="46" y="14">139/139</text></g></svg>

Before

Width:  |  Height:  |  Size: 820 B

After

Width:  |  Height:  |  Size: 820 B

View File

@@ -1,148 +0,0 @@
/* eslint-env node */
import fs from 'promise-fs';
const filesAndReplacements = [
{
input: 'src/editor/svg-editor-es.html',
output: 'src/editor/xdomain-svg-editor-es.html',
replacements: [
[
'<script type="module" src="../svgedit-config-es.js"></script>',
'<script type="module" src="xdomain-svgedit-config-es.js"></script>'
]
]
},
{
input: 'src/editor/xdomain-svg-editor-es.html',
output: 'src/editor/xdomain-svg-editor.html',
replacements: [
[
'<!DOCTYPE html>',
`<!DOCTYPE html>
<!-- AUTO-GENERATED FROM xdomain-svg-editor-es.html; DO NOT EDIT; use build/build-html.js to build -->`
],
[
'<script type="module" src="redirect-on-lacking-support.js"></script>',
'<script defer="defer" src="../../dist/redirect-on-lacking-support.js"></script>'
],
[
'<script type="module" src="xdomain-svgedit-config-es.js"></script>',
'<script defer="defer" src="xdomain-svgedit-config-iife.js"></script>'
],
[
'<script src="../external/dom-polyfill/dom-polyfill.js"></script>',
'<script src="../../dist/dom-polyfill.js"></script>'
],
[
'<script nomodule="" src="redirect-on-no-module-support.js"></script>',
''
]
]
},
// Now that file has copied, we can replace the DOCTYPE in xdomain
{
input: 'src/editor/xdomain-svg-editor-es.html',
output: 'src/editor/xdomain-svg-editor-es.html',
replacements: [
[
'<!DOCTYPE html>',
`<!DOCTYPE html>
<!-- AUTO-GENERATED FROM svg-editor-es.html; DO NOT EDIT; use build/build-html.js to build -->`
]
]
},
{
input: 'src/editor/svg-editor-es.html',
output: 'src/editor/svg-editor.html',
replacements: [
[
'<!DOCTYPE html>',
`<!DOCTYPE html>
<!-- AUTO-GENERATED FROM svg-editor-es.html; DO NOT EDIT; use build/build-html.js to build -->`
],
[
'<script type="module" src="redirect-on-lacking-support.js"></script>',
'<script defer="defer" src="../../dist/redirect-on-lacking-support.js"></script>'
],
[
'<script type="module" src="../svgedit-config-es.js"></script>',
'<script defer="defer" src="../svgedit-config-iife.js"></script>'
],
[
'<script src="../external/dom-polyfill/dom-polyfill.js"></script>',
'<script src="../../dist/dom-polyfill.js"></script>'
],
[
'<script nomodule="" src="redirect-on-no-module-support.js"></script>',
''
]
]
},
{
input: 'src/editor/extensions/imagelib/openclipart-es.html',
output: 'src/editor/extensions/imagelib/openclipart.html',
replacements: [
[
'<!DOCTYPE html>',
`<!DOCTYPE html>
<!-- AUTO-GENERATED FROM imagelib/openclipart-es.html; DO NOT EDIT; use build/build-html.js to build -->`
],
[
'<script src="../../external/dom-polyfill/dom-polyfill.js"></script>',
'<script src="../../../../dist/dom-polyfill.js"></script>'
],
[
'<script type="module" src="openclipart.js"></script>',
'<script defer="defer" src="../../../../dist/extensions/imagelib/openclipart.js"></script>'
],
[
'<script nomodule="" src="redirect-on-no-module-support.js"></script>',
''
]
]
},
{
input: 'src/editor/extensions/imagelib/index-es.html',
output: 'src/editor/extensions/imagelib/index.html',
replacements: [
[
'<!DOCTYPE html>',
`<!DOCTYPE html>
<!-- AUTO-GENERATED FROM imagelib/index-es.html; DO NOT EDIT; use build/build-html.js to build -->`
],
[
'<script type="module" src="index.js"></script>',
'<script defer="defer" src="../../../../dist/extensions/imagelib/index.js"></script>'
],
[
'<script nomodule="" src="redirect-on-no-module-support.js"></script>',
''
]
]
}
];
(async () => {
await filesAndReplacements.reduce(async (p, {input, output, replacements}) => {
await p;
let data;
try {
data = await fs.readFile(input, 'utf8');
} catch (err) {
console.log(`Error reading ${input} file`, err); // eslint-disable-line no-console
}
data = replacements.reduce((s, [fnd, replacement]) => {
return s.replace(fnd, replacement);
}, data);
try {
await fs.writeFile(output, data);
} catch (err) {
console.log(`Error writing file: ${err}`, err); // eslint-disable-line no-console
return;
}
console.log(`Completed file ${input} rewriting!`); // eslint-disable-line no-console
}, Promise.resolve());
console.log('Finished!'); // eslint-disable-line no-console
})();

View File

@@ -4,5 +4,14 @@
"video": false,
"reporterOptions": {
"configFile": "mocha-multi-reporters.json"
},
"ignoreTestFiles": ["**/__snapshots__/*", "**/__image_snapshots__/*"],
"defaultCommandTimeout": 10000,
"pageLoadTimeout": 120000,
"cypress-plugin-snapshots": {
"autoCleanUp": true,
"prettier": true,
"updateSnapshots": false,
"diffLines": 5
}
}

View File

@@ -0,0 +1,364 @@
exports[`use various parts of svg-edit > check tool_source #0`] = `
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
width="640"
height="480"
id="svgcontent"
overflow="visible"
x="640"
y="480"
viewBox="0 0 640 480"
>
<g class="layer" style="pointer-events:all">
<title style="pointer-events:inherit">Layer 1</title>
<rect
id="rect"
fill="#FF0000"
height="70"
stroke="#000000"
stroke-width="5"
width="94"
x="69.5"
y="51.5"
style="pointer-events:inherit"
></rect>
</g>
</svg>
`;
exports[`use various parts of svg-edit > check tool_fhpath #0`] = `
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
width="640"
height="480"
id="svgcontent"
overflow="visible"
x="640"
y="480"
viewBox="0 0 640 480"
>
<g class="layer" style="pointer-events:all">
<title style="pointer-events:inherit">Layer 1</title>
<rect
id="rect"
fill="#FF0000"
height="70"
stroke="#000000"
stroke-width="5"
width="94"
x="69.5"
y="51.5"
style="pointer-events:inherit"
fill-opacity="1"
stroke-opacity="1"
></rect>
</g>
</svg>
`;
exports[`use various parts of svg-edit > check tool_text #0`] = `
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
width="640"
height="480"
id="svgcontent"
overflow="visible"
x="640"
y="480"
viewBox="0 0 640 480"
>
<g class="layer" style="pointer-events:all">
<title style="pointer-events:inherit">Layer 1</title>
<rect
id="rect"
fill="#FF0000"
height="70"
stroke="#000000"
stroke-width="5"
width="94"
x="69.5"
y="51.5"
style="pointer-events:inherit"
fill-opacity="1"
stroke-opacity="1"
></rect>
<text
fill="#000000"
stroke="#000000"
stroke-width="0"
style="pointer-events: inherit; cursor: text;"
x="116"
y="87"
id="svg_1"
font-size="24"
font-family="serif"
text-anchor="middle"
xml:space="preserve"
fill-opacity="1"
stroke-opacity="1"
>
B
</text>
</g>
</svg>
`;
exports[`use various parts of svg-edit > check tool_clone #0`] = `
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
width="640"
height="480"
id="svgcontent"
overflow="visible"
x="640"
y="480"
viewBox="0 0 640 480"
>
<g class="layer" style="pointer-events:all">
<title style="pointer-events:inherit">Layer 1</title>
<rect
id="rect"
fill="#FF0000"
height="70"
stroke="#000000"
stroke-width="5"
width="94"
x="69.5"
y="51.5"
style="pointer-events:inherit"
fill-opacity="1"
stroke-opacity="1"
></rect>
<text
fill="#000000"
stroke="#000000"
stroke-width="0"
x="116"
y="87"
id="svg_1"
font-size="24"
font-family="serif"
text-anchor="middle"
xml:space="preserve"
fill-opacity="1"
stroke-opacity="1"
>
B
</text>
<text
fill="#000000"
stroke="#000000"
stroke-width="0"
x="136"
y="107"
font-size="24"
font-family="serif"
text-anchor="middle"
xml:space="preserve"
fill-opacity="1"
stroke-opacity="1"
id="svg_2"
>
B
</text>
</g>
</svg>
`;
exports[`use various parts of svg-edit > check tool_italic #0`] = `
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
width="640"
height="480"
id="svgcontent"
overflow="visible"
x="640"
y="480"
viewBox="0 0 640 480"
>
<g class="layer" style="pointer-events:all">
<title style="pointer-events:inherit">Layer 1</title>
<rect
id="rect"
fill="#FF0000"
height="70"
stroke="#000000"
stroke-width="5"
width="94"
x="69.5"
y="51.5"
style="pointer-events:inherit"
fill-opacity="1"
stroke-opacity="1"
></rect>
<text
fill="#000000"
stroke="#000000"
stroke-width="0"
x="116"
y="87"
id="svg_1"
font-size="24"
font-family="serif"
text-anchor="middle"
xml:space="preserve"
fill-opacity="1"
stroke-opacity="1"
font-style="italic"
>
B
</text>
<text
fill="#000000"
stroke="#000000"
stroke-width="0"
x="136"
y="107"
font-size="24"
font-family="serif"
text-anchor="middle"
xml:space="preserve"
fill-opacity="1"
stroke-opacity="1"
id="svg_2"
>
B
</text>
</g>
</svg>
`;
exports[`use various parts of svg-edit > check tool_bold #0`] = `
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
width="640"
height="480"
id="svgcontent"
overflow="visible"
x="640"
y="480"
viewBox="0 0 640 480"
>
<g class="layer" style="pointer-events:all">
<title style="pointer-events:inherit">Layer 1</title>
<rect
id="rect"
fill="#FF0000"
height="70"
stroke="#000000"
stroke-width="5"
width="94"
x="69.5"
y="51.5"
style="pointer-events:inherit"
fill-opacity="1"
stroke-opacity="1"
></rect>
<text
fill="#000000"
stroke="#000000"
stroke-width="0"
x="116"
y="87"
id="svg_1"
font-size="24"
font-family="serif"
text-anchor="middle"
xml:space="preserve"
fill-opacity="1"
stroke-opacity="1"
font-style="italic"
font-weight="bold"
>
B
</text>
<text
fill="#000000"
stroke="#000000"
stroke-width="0"
x="136"
y="107"
font-size="24"
font-family="serif"
text-anchor="middle"
xml:space="preserve"
fill-opacity="1"
stroke-opacity="1"
id="svg_2"
>
B
</text>
</g>
</svg>
`;
exports[`use various parts of svg-edit > check change color #0`] = `
<svg
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
width="640"
height="480"
id="svgcontent"
overflow="visible"
x="640"
y="480"
viewBox="0 0 640 480"
>
<g class="layer" style="pointer-events:all">
<title style="pointer-events:inherit">Layer 1</title>
<rect
id="rect"
fill="#FF0000"
height="70"
stroke="#000000"
stroke-width="5"
width="94"
x="69.5"
y="51.5"
style="pointer-events:inherit"
fill-opacity="1"
stroke-opacity="1"
></rect>
<text
fill="#ffff00"
stroke="#000000"
stroke-width="0"
x="116"
y="87"
id="svg_1"
font-size="24"
font-family="serif"
text-anchor="middle"
xml:space="preserve"
fill-opacity="1"
stroke-opacity="1"
font-style="italic"
font-weight="bold"
>
B
</text>
<text
fill="#000000"
stroke="#000000"
stroke-width="0"
x="136"
y="107"
font-size="24"
font-family="serif"
text-anchor="middle"
xml:space="preserve"
fill-opacity="1"
stroke-opacity="1"
id="svg_2"
>
B
</text>
</g>
</svg>
`;

View File

@@ -1,6 +1,6 @@
describe('UI - Accessibility', function () {
beforeEach(() => {
cy.visit('/instrumented/editor/svg-editor-es.html');
cy.visit('/instrumented/editor/index.html');
cy.injectAxe();
});

View File

@@ -22,10 +22,10 @@ describe('UI - Control Points', function () {
cy.get('#tool_source_save').click();
cy.get('#svg_1').click().click();
cy.get('#pathpointgrip_0').trigger('mousedown', {which: 1})
cy.get('#pathpointgrip_0').trigger('mousedown', {which: 1, force: true})
.trigger('mousemove', randomOffset(), randomOffset(), {force: true})
.trigger('mouseup', {force: true});
cy.get('#pathpointgrip_1').trigger('mousedown', {which: 1})
cy.get('#pathpointgrip_1').trigger('mousedown', {which: 1, force: true})
.trigger('mousemove', randomOffset(), randomOffset(), {force: true})
.trigger('mouseup', {force: true});

View File

@@ -14,7 +14,7 @@ describe('UI - Export tests', function () {
it('Editor - No parameters: Export button clicking; dialog opens', () => {
openMainMenu();
cy.get('#tool_export').click();
cy.get('#tool_export').click({force: true});
cy.get('#dialog_content select');
});
});

View File

@@ -11,13 +11,13 @@ describe('Fix issue 359', function () {
it('can undo without throwing', function () {
cy.get('#tool_source').click();
cy.get('#svg_source_textarea')
.type('{selectall}')
.type('{selectall}', {force: true})
.type(`<svg width="640" height="480" xmlns="http://www.w3.org/2000/svg">
<g class="layer">
<title>Layer 1</title>
<rect fill="#ffff00" height="70" width="165" x="179.5" y="146.5"/>
</g>
</svg>`, {parseSpecialCharSequences: false});
</svg>`, {parseSpecialCharSequences: false, force: true});
cy.get('#tool_source_save').click();
cy.get('#tool_undo').click();
cy.get('#tool_redo').click(); // test also redo to make the test more comprehensive

View File

@@ -9,8 +9,10 @@ describe('Issue 364; IE errorwith rectangle selection by click', function () {
});
it('should set rectangle selection after click', function () {
// eslint-disable-next-line cypress/no-unnecessary-waiting
cy.get('#tools_rect_show')
.trigger('mousedown', {force: true})
.wait(100) // this delay seems necessary
.trigger('mouseup', {force: true})
.should((button) => {
expect(button).to.have.class('tool_button_current');

View File

@@ -11,7 +11,7 @@ describe('Fix issue 407', function () {
it('can enter edit on text child', function () {
cy.get('#tool_source').click();
cy.get('#svg_source_textarea')
.type('{selectall}')
.type('{selectall}', {force: true})
.type(`<svg width="640" height="480" xmlns="http://www.w3.org/2000/svg">
<g class="layer">
<title>Layer 1</title>
@@ -24,7 +24,12 @@ describe('Fix issue 407', function () {
cy.get('#tool_source_save').click();
cy.get('#svg_1').click().dblclick();
cy.get('#a_text').should('exist');
cy.get('#a_text').trigger('mousedown', {which: 1}).trigger('mouseup').dblclick().type('1234');
cy.get('#a_text')
.trigger('mousedown', {which: 1, force: true})
.trigger('mouseup', {force: true})
.dblclick({force: true});
// svgedit use the #text text field to capture the text
cy.get('#text').type('1234', {force: true});
cy.get('#a_text').should('have.text', 'he1234llo');
});
});

View File

@@ -11,7 +11,7 @@ describe('Fix issue 423', function () {
it('should not throw when undoing the move', function () {
cy.get('#tool_source').click();
cy.get('#svg_source_textarea')
.type('{selectall}')
.type('{selectall}', {force: true})
.type(`<svg width="300" height="300" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg">
<g class="layer">
<title>Layer 1</title>
@@ -22,12 +22,12 @@ describe('Fix issue 423', function () {
<rect clip-path="url(#svg_2)" fill="#0033b5" height="174.9" id="TANK1" width="78" x="77.5" y="29"/>
</g>
</g>
</svg>`, {parseSpecialCharSequences: false});
cy.get('#tool_source_save').click();
</svg>`, {parseSpecialCharSequences: false, force: true});
cy.get('#tool_source_save').click({force: true});
cy.get('#TANK1')
.trigger('mousedown', {force: true})
.trigger('mousemove', 50, 0, {force: true})
.trigger('mouseup', {force: true});
cy.get('#tool_undo').click();
cy.get('#tool_undo').click({force: true});
});
});

View File

@@ -0,0 +1,76 @@
import {
visitAndApproveStorage
} from '../../support/ui-test-helper.js';
const testSnapshot = () => {
// cy.get('#tool_source').click({force: true});
// cy.get('#svg_source_textarea').invoke('val').toMatchSnapshot();
// cy.get('#tool_source_save').click({force: true});
cy.get('#svgcontent').toMatchSnapshot();
};
describe('use various parts of svg-edit', function () {
before(() => {
visitAndApproveStorage();
});
it('check tool_source', function () {
cy.get('#tool_source').click({force: true});
cy.get('#svg_source_textarea')
.type('{selectall}', {force: true})
.type(`<svg width="640" height="480" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg">
<g class="layer">
<title>Layer 1</title>
<rect id="rect" fill="#FF0000" height="70" stroke="#000000" stroke-width="5" width="94" x="69.5" y="51.5"/>
</g>
</svg>`, {parseSpecialCharSequences: false});
cy.get('#tool_source_save').click({force: true});
testSnapshot();
});
it('check tool_fhpath', function () {
cy.get('#tool_fhpath')
.click({force: true});
cy.get('#rect')
.trigger('mousemove', 200, 200, {force: true})
.trigger('mousedown', 200, 200, {force: true})
.trigger('mousemove', 20, 20, {force: true})
.trigger('mouseup', {force: true});
cy.get('#svgcontent').toMatchSnapshot();
});
it('check tool_text', function () {
cy.get('#tool_text')
.click({force: true});
cy.get('#rect')
.trigger('mousedown', 'center', {force: true})
.trigger('mouseup', {force: true});
// svgedit use the #text text field to capture the text
// cy.get('#text').type('1234', {force: true});
cy.get('#text').type('B', {force: true});
testSnapshot();
});
it('check tool_clone', function () {
cy.get('#svg_1').click({force: true});
cy.get('#tool_clone')
.click({force: true});
testSnapshot();
});
it('check tool_italic', function () {
cy.get('#svg_1').click({force: true});
cy.get('#tool_italic')
.click({force: true});
testSnapshot();
});
it('check tool_bold', function () {
cy.get('#svg_1').click({force: true});
cy.get('#tool_bold')
.click({force: true});
testSnapshot();
});
it('check change color', function () {
cy.get('#svg_1').click({force: true});
cy.get('[data-rgb="#ffff00"]')
.click({force: true});
testSnapshot();
});
});

View File

@@ -1,7 +1,8 @@
/* globals SVGPathSeg */
import 'pathseg';
import '../../../instrumented/editor/jquery.min.js';
import '../../../instrumented/common/svgpathseg.js';
import {NS} from '../../../instrumented/common/namespaces.js';
import * as utilities from '../../../instrumented/common/utilities.js';
import * as pathModule from '../../../instrumented/svgcanvas/path.js';

View File

@@ -2,9 +2,10 @@
import '../../../instrumented/editor/jquery.min.js';
import '../../../instrumented/editor/jquery-ui/jquery-ui-1.8.17.custom.min.js';
import '../../../instrumented/common/svgpathseg.js';
import SvgCanvas from '../../../instrumented/svgcanvas/svgcanvas.js';
// import '../../../instrumented/'
describe('Basic Module', function () {
// helper functions
/*

View File

@@ -1,7 +1,8 @@
/* eslint-disable max-len */
import 'pathseg';
import '../../../instrumented/editor/jquery.min.js';
import '../../../instrumented/common/svgpathseg.js';
import {NS} from '../../../instrumented/common/namespaces.js';
import * as utilities from '../../../instrumented/common/utilities.js';
import * as transformlist from '../../../instrumented/common/svgtransformlist.js';

View File

@@ -1,7 +1,7 @@
/* eslint-disable max-len */
import 'pathseg';
import '../../../instrumented/editor/jquery.min.js';
import '../../../instrumented/common/svgpathseg.js';
import {NS} from '../../../instrumented/common/namespaces.js';
import * as utilities from '../../../instrumented/common/utilities.js';
import * as transformlist from '../../../instrumented/common/svgtransformlist.js';

View File

@@ -2,6 +2,7 @@
// the project's config changing)
import codeCoverageTask from '@cypress/code-coverage/task.js';
import {initPlugin} from 'cypress-plugin-snapshots/plugin.js';
export default (on, config) => {
// `on` is used to hook into various events Cypress emits
@@ -12,5 +13,6 @@ export default (on, config) => {
// https://docs.cypress.io/guides/tooling/code-coverage.html#Install-the-plugin
codeCoverageTask(on, config);
initPlugin(on, config);
return config;
};

View File

@@ -42,3 +42,10 @@ import '@cypress/code-coverage/support.js';
* @see https://www.npmjs.com/package/cypress-axe
*/
import 'cypress-axe';
/*****
* SNAPSHOTS
* @see https://www.npmjs.com/package/cypress-plugin-snapshots
*/
import 'cypress-plugin-snapshots/commands.js';

View File

@@ -4,7 +4,7 @@ export const approveStorage = () => {
};
export const visitAndApproveStorage = () => {
cy.visit('/instrumented/editor/svg-editor-es.html');
cy.visit('/instrumented/editor/index.html');
approveStorage();
};

4915
dist/canvg.js vendored

File diff suppressed because it is too large Load Diff

165
dist/dom-polyfill.js vendored
View File

@@ -1,165 +0,0 @@
(function () {
'use strict';
function _typeof(obj) {
"@babel/helpers - typeof";
if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
_typeof = function (obj) {
return typeof obj;
};
} else {
_typeof = function (obj) {
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
};
}
return _typeof(obj);
}
// From https://github.com/inexorabletash/polyfill/blob/master/dom.js
/**
* @module DOMPolyfill
*/
/**
*
* @param {Node} o
* @param {module:DOMPolyfill~ParentNode|module:DOMPolyfill~ChildNode} ps
* @returns {void}
*/
function mixin(o, ps) {
if (!o) return;
Object.keys(ps).forEach(function (p) {
if (p in o || p in o.prototype) {
return;
}
try {
Object.defineProperty(o.prototype, p, Object.getOwnPropertyDescriptor(ps, p));
} catch (ex) {
// Throws in IE8; just copy it
o[p] = ps[p];
}
});
}
/**
*
* @param {Node[]} nodes
* @returns {Node}
*/
function convertNodesIntoANode(nodes) {
nodes = nodes.map(function (node) {
var isNode = node && _typeof(node) === 'object' && 'nodeType' in node;
return isNode ? node : document.createTextNode(node);
});
if (nodes.length === 1) {
return nodes[0];
}
var node = document.createDocumentFragment();
nodes.forEach(function (n) {
// // eslint-disable-next-line unicorn/prefer-node-append
node.appendChild(n);
});
return node;
}
var ParentNode = {
prepend: function prepend() {
for (var _len = arguments.length, nodes = new Array(_len), _key = 0; _key < _len; _key++) {
nodes[_key] = arguments[_key];
}
nodes = convertNodesIntoANode(nodes);
this.insertBefore(nodes, this.firstChild);
},
append: function append() {
for (var _len2 = arguments.length, nodes = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
nodes[_key2] = arguments[_key2];
}
nodes = convertNodesIntoANode(nodes); // // eslint-disable-next-line unicorn/prefer-node-append
this.appendChild(nodes);
}
};
mixin(Document || HTMLDocument, ParentNode); // HTMLDocument for IE8
mixin(DocumentFragment, ParentNode);
mixin(Element, ParentNode); // Mixin ChildNode
// https://dom.spec.whatwg.org/#interface-childnode
var ChildNode = {
before: function before() {
var parent = this.parentNode;
if (!parent) return;
var viablePreviousSibling = this.previousSibling;
for (var _len3 = arguments.length, nodes = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
nodes[_key3] = arguments[_key3];
}
while (nodes.includes(viablePreviousSibling)) {
viablePreviousSibling = viablePreviousSibling.previousSibling;
}
var node = convertNodesIntoANode(nodes);
parent.insertBefore(node, viablePreviousSibling ? viablePreviousSibling.nextSibling : parent.firstChild);
},
after: function after() {
var parent = this.parentNode;
if (!parent) return;
var viableNextSibling = this.nextSibling;
for (var _len4 = arguments.length, nodes = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
nodes[_key4] = arguments[_key4];
}
while (nodes.includes(viableNextSibling)) {
viableNextSibling = viableNextSibling.nextSibling;
}
var node = convertNodesIntoANode(nodes); // eslint-disable-next-line unicorn/prefer-modern-dom-apis
parent.insertBefore(node, viableNextSibling);
},
replaceWith: function replaceWith() {
var parent = this.parentNode;
if (!parent) return;
var viableNextSibling = this.nextSibling;
for (var _len5 = arguments.length, nodes = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
nodes[_key5] = arguments[_key5];
}
while (nodes.includes(viableNextSibling)) {
viableNextSibling = viableNextSibling.nextSibling;
}
var node = convertNodesIntoANode(nodes);
if (this.parentNode === parent) {
parent.replaceChild(node, this);
} else {
// eslint-disable-next-line unicorn/prefer-modern-dom-apis
parent.insertBefore(node, viableNextSibling);
}
},
remove: function remove() {
if (!this.parentNode) {
return;
}
this.parentNode.removeChild(this); // eslint-disable-line unicorn/prefer-node-remove
}
};
mixin(DocumentType, ChildNode);
mixin(Element, ChildNode);
mixin(CharacterData, ChildNode);
}());

54
dist/editor/browser-not-supported.html vendored Normal file
View File

@@ -0,0 +1,54 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="chrome=1"/>
<link rel="icon" type="image/png" href="images/logo.png"/>
<link rel="stylesheet" href="svgedit.css"/>
<title>Browser does not support SVG | SVG-edit</title>
<style>
body {
margin: 0;
overflow: hidden;
}
p {
font-size: 0.8em;
font-family: Verdana, Helvetica, Arial;
color: #000;
padding: 8px;
margin: 0;
}
#logo {
float: left;
padding: 10px;
}
#caniuse {
position: absolute;
top: 7em;
bottom: 0;
width: 100%;
}
#caniuse > iframe {
height: 100%;
width: 100%;
}
</style>
</head>
<body>
<img id="logo" src="images/logo.png" width="48" height="48" alt="SVG-edit logo" />
<p>Sorry, but your browser does not support SVG. Below is a list of
alternate browsers and versions that support SVG and SVG-edit
(from <a href="https://caniuse.com/#cats=SVG">caniuse.com</a>).
</p>
<p>Try the latest version of
<a href="https://www.getfirefox.com">Firefox</a>,
<a href="https://www.google.com/chrome/">Chrome</a>,
<a href="https://www.apple.com/safari/">Safari</a>,
<a href="https://www.opera.com/download">Opera</a> or
<a href="https://support.microsoft.com/en-us/help/17621/internet-explorer-downloads">Internet Explorer</a>.
</p>
<div id="caniuse">
<iframe src="https://caniuse.com/#cats=SVG"></iframe>
</div>
</body>
</html>

17
dist/editor/embedapi.html vendored Normal file
View File

@@ -0,0 +1,17 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Embed API</title>
<link rel="icon" type="image/png" href="images/logo.png"/>
<script src="jquery.min.js"></script>
<script type="module" src="embedapi-dom.js"></script>
</head>
<body>
<button id="load">Load example</button>
<button id="save">Save data</button>
<button id="exportPNG">Export data to PNG</button>
<button id="exportPDF">Export data to PDF</button>
<br/>
</body>
</html>

395
dist/editor/embedapi.js vendored Normal file
View File

@@ -0,0 +1,395 @@
/**
* Handles underlying communication between the embedding window and the
* editor frame.
* @module EmbeddedSVGEdit
*/
let cbid = 0;
/**
* @callback module:EmbeddedSVGEdit.CallbackSetter
* @param {GenericCallback} newCallback Callback to be stored (signature dependent on function)
* @returns {void}
*/
/**
* @callback module:EmbeddedSVGEdit.CallbackSetGetter
* @param {...any} args Signature dependent on the function
* @returns {module:EmbeddedSVGEdit.CallbackSetter}
*/
/**
* @param {string} funcName
* @returns {module:EmbeddedSVGEdit.CallbackSetGetter}
*/
function getCallbackSetter (funcName) {
return function (...args) {
const that = this, // New callback
callbackID = this.send(funcName, args, function () { /* */ }); // The callback (currently it's nothing, but will be set later)
return function (newCallback) {
that.callbacks[callbackID] = newCallback; // Set callback
};
};
}
/**
* Having this separate from messageListener allows us to
* avoid using JSON parsing (and its limitations) in the case
* of same domain control.
* @param {module:EmbeddedSVGEdit.EmbeddedSVGEdit} t The `this` value
* @param {PlainObject} data
* @param {JSON} data.result
* @param {string} data.error
* @param {Integer} data.id
* @returns {void}
*/
function addCallback (t, {result, error, id: callbackID}) {
if (typeof callbackID === 'number' && t.callbacks[callbackID]) {
// These should be safe both because we check `cbid` is numeric and
// because the calls are from trusted origins
if (result) {
t.callbacks[callbackID](result); // lgtm [js/unvalidated-dynamic-method-call]
} else {
t.callbacks[callbackID](error, 'error'); // lgtm [js/unvalidated-dynamic-method-call]
}
}
}
/**
* @param {Event} e
* @returns {void}
*/
function messageListener (e) {
// We accept and post strings as opposed to objects for the sake of IE9 support; this
// will most likely be changed in the future
if (!e.data || !['string', 'object'].includes(typeof e.data)) {
return;
}
const {allowedOrigins} = this,
data = typeof e.data === 'object' ? e.data : JSON.parse(e.data);
if (!data || typeof data !== 'object' || data.namespace !== 'svg-edit' ||
e.source !== this.frame.contentWindow ||
(!allowedOrigins.includes('*') && !allowedOrigins.includes(e.origin))
) {
// eslint-disable-next-line no-console -- Info for developers
console.error(
`The origin ${e.origin} was not whitelisted as an origin from ` +
`which responses may be received by this ${window.origin} script.`
);
return;
}
addCallback(this, data);
}
/**
* @callback module:EmbeddedSVGEdit.MessageListener
* @param {MessageEvent} e
* @returns {void}
*/
/**
* @param {module:EmbeddedSVGEdit.EmbeddedSVGEdit} t The `this` value
* @returns {module:EmbeddedSVGEdit.MessageListener} Event listener
*/
function getMessageListener (t) {
return function (e) {
messageListener.call(t, e);
};
}
/**
* Embedded SVG-edit API.
* General usage:
* - Have an iframe somewhere pointing to a version of svg-edit > r1000.
* @example
// Initialize the magic with:
const svgCanvas = new EmbeddedSVGEdit(window.frames.svgedit);
// Pass functions in this format:
svgCanvas.setSvgString('string');
// Or if a callback is needed:
svgCanvas.setSvgString('string')(function (data, error) {
if (error) {
// There was an error
} else {
// Handle data
}
});
// Everything is done with the same API as the real svg-edit,
// and all documentation is unchanged.
// However, this file depends on the postMessage API which
// can only support JSON-serializable arguments and
// return values, so, for example, arguments whose value is
// 'undefined', a function, a non-finite number, or a built-in
// object like Date(), RegExp(), etc. will most likely not behave
// as expected. In such a case one may need to host
// the SVG editor on the same domain and reference the
// JavaScript methods on the frame itself.
// The only other difference is when handling returns:
// the callback notation is used instead.
const blah = new EmbeddedSVGEdit(window.frames.svgedit);
blah.clearSelection('woot', 'blah', 1337, [1, 2, 3, 4, 5, 'moo'], -42, {
a: 'tree', b: 6, c: 9
})(function () { console.log('GET DATA', args); });
*
* @memberof module:EmbeddedSVGEdit
*/
class EmbeddedSVGEdit {
/**
* @param {HTMLIFrameElement} frame
* @param {string[]} [allowedOrigins=[]] Array of origins from which incoming
* messages will be allowed when same origin is not used; defaults to none.
* If supplied, it should probably be the same as svgEditor's allowedOrigins
*/
constructor (frame, allowedOrigins) {
const that = this;
this.allowedOrigins = allowedOrigins || [];
// Initialize communication
this.frame = frame;
this.callbacks = {};
// List of functions extracted with this:
// Run in firebug on http://svg-edit.googlecode.com/svn/trunk/docs/files/svgcanvas-js.html
// for (const i=0,q=[],f = document.querySelectorAll('div.CFunction h3.CTitle a'); i < f.length; i++) { q.push(f[i].name); }; q
// const functions = ['clearSelection', 'addToSelection', 'removeFromSelection', 'open', 'save', 'getSvgString', 'setSvgString',
// 'createLayer', 'deleteCurrentLayer', 'setCurrentLayer', 'renameCurrentLayer', 'setCurrentLayerPosition', 'setLayerVisibility',
// 'moveSelectedToLayer', 'clear'];
// Newer, well, it extracts things that aren't documented as well. All functions accessible through the normal thingy can now be accessed though the API
// const {svgCanvas} = frame.contentWindow;
// const l = [];
// for (const i in svgCanvas) { if (typeof svgCanvas[i] === 'function') { l.push(i);} };
// alert("['" + l.join("', '") + "']");
// Run in svgedit itself
const functions = [
'addExtension',
'addSVGElementFromJson',
'addToSelection',
'alignSelectedElements',
'assignAttributes',
'bind',
'call',
'changeSelectedAttribute',
'cleanupElement',
'clear',
'clearSelection',
'clearSvgContentElement',
'cloneLayer',
'cloneSelectedElements',
'convertGradients',
'convertToGroup',
'convertToNum',
'convertToPath',
'copySelectedElements',
'createLayer',
'cutSelectedElements',
'cycleElement',
'deleteCurrentLayer',
'deleteSelectedElements',
'embedImage',
'exportPDF',
'findDefs',
'getBBox',
'getBlur',
'getBold',
'getColor',
'getContentElem',
'getCurrentDrawing',
'getDocumentTitle',
'getEditorNS',
'getElem',
'getFillOpacity',
'getFontColor',
'getFontFamily',
'getFontSize',
'getHref',
'getId',
'getIntersectionList',
'getItalic',
'getMode',
'getMouseTarget',
'getNextId',
'getOffset',
'getOpacity',
'getPaintOpacity',
'getPrivateMethods',
'getRefElem',
'getResolution',
'getRootElem',
'getRotationAngle',
'getSelectedElems',
'getStrokeOpacity',
'getStrokeWidth',
'getStrokedBBox',
'getStyle',
'getSvgString',
'getText',
'getTitle',
'getTransformList',
'getUIStrings',
'getUrlFromAttr',
'getVersion',
'getVisibleElements',
'getVisibleElementsAndBBoxes',
'getZoom',
'groupSelectedElements',
'groupSvgElem',
'hasMatrixTransform',
'identifyLayers',
'importSvgString',
'leaveContext',
'linkControlPoints',
'makeHyperlink',
'matrixMultiply',
'mergeAllLayers',
'mergeLayer',
'moveSelectedElements',
'moveSelectedToLayer',
'moveToBottomSelectedElement',
'moveToTopSelectedElement',
'moveUpDownSelected',
'open',
'pasteElements',
'prepareSvg',
'pushGroupProperties',
'randomizeIds',
'rasterExport',
'ready',
'recalculateAllSelectedDimensions',
'recalculateDimensions',
'remapElement',
'removeFromSelection',
'removeHyperlink',
'removeUnusedDefElems',
'renameCurrentLayer',
'round',
'runExtensions',
'sanitizeSvg',
'save',
'selectAllInCurrentLayer',
'selectOnly',
'setBBoxZoom',
'setBackground',
'setBlur',
'setBlurNoUndo',
'setBlurOffsets',
'setBold',
'setColor',
'setConfig',
'setContext',
'setCurrentLayer',
'setCurrentLayerPosition',
'setDocumentTitle',
'setFillPaint',
'setFontColor',
'setFontFamily',
'setFontSize',
'setGoodImage',
'setGradient',
'setGroupTitle',
'setHref',
'setIdPrefix',
'setImageURL',
'setItalic',
'setLayerVisibility',
'setLinkURL',
'setMode',
'setOpacity',
'setPaint',
'setPaintOpacity',
'setRectRadius',
'setResolution',
'setRotationAngle',
'setSegType',
'setStrokeAttr',
'setStrokePaint',
'setStrokeWidth',
'setSvgString',
'setTextContent',
'setUiStrings',
'setUseData',
'setZoom',
'svgCanvasToString',
'svgToString',
'transformListToTransform',
'ungroupSelectedElement',
'uniquifyElems',
'updateCanvas',
'zoomChanged'
];
// TODO: rewrite the following, it's pretty scary.
for (const func of functions) {
this[func] = getCallbackSetter(func);
}
// Older IE may need a polyfill for addEventListener, but so it would for SVG
window.addEventListener('message', getMessageListener(this));
window.addEventListener('keydown', (e) => {
const {type, key} = e;
if (key === 'Backspace') {
e.preventDefault();
const keyboardEvent = new KeyboardEvent(type, {key});
that.frame.contentDocument.dispatchEvent(keyboardEvent);
}
});
}
/**
* @param {string} name
* @param {ArgumentsArray} args Signature dependent on function
* @param {GenericCallback} callback (This may be better than a promise in case adding an event.)
* @returns {Integer}
*/
send (name, args, callback) { // eslint-disable-line promise/prefer-await-to-callbacks
const that = this;
cbid++;
this.callbacks[cbid] = callback;
setTimeout((function (callbackID) {
return function () { // Delay for the callback to be set in case its synchronous
/*
* Todo: Handle non-JSON arguments and return values (undefined,
* nonfinite numbers, functions, and built-in objects like Date,
* RegExp), etc.? Allow promises instead of callbacks? Review
* SVG-Edit functions for whether JSON-able parameters can be
* made compatile with all API functionality
*/
// We accept and post strings for the sake of IE9 support
let sameOriginWithGlobal = false;
try {
sameOriginWithGlobal = window.location.origin === that.frame.contentWindow.location.origin &&
that.frame.contentWindow.svgEditor.canvas;
} catch (err) {}
if (sameOriginWithGlobal) {
// Although we do not really need this API if we are working same
// domain, it could allow us to write in a way that would work
// cross-domain as well, assuming we stick to the argument limitations
// of the current JSON-based communication API (e.g., not passing
// callbacks). We might be able to address these shortcomings; see
// the todo elsewhere in this file.
const message = {id: callbackID},
{svgEditor: {canvas: svgCanvas}} = that.frame.contentWindow;
try {
message.result = svgCanvas[name](...args);
} catch (err) {
message.error = err.message;
}
addCallback(that, message);
} else { // Requires the ext-xdomain-messaging.js extension
that.frame.contentWindow.postMessage(JSON.stringify({
namespace: 'svgCanvas', id: callbackID, name, args
}), '*');
}
};
}(cbid)), 0);
return cbid;
}
}
export default EmbeddedSVGEdit;

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

60
dist/editor/images/README.txt vendored Normal file
View File

@@ -0,0 +1,60 @@
filename origin
align-bottom.png http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/actions/align-vertical-bottom.png
align-bottom.svg http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/actions/align-vertical-bottom.svg
align-center.png http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/actions/align-horizontal-center.png
align-center.svg http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/actions/align-horizontal-center.svg
align-left.png http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/actions/align-horizontal-left.png
align-left.svg http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/actions/align-horizontal-left.svg
align-middle.png http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/actions/align-vertical-center.png
align-middle.svg http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/actions/align-vertical-center.svg
align-right.png http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/actions/align-horizontal-right.png
align-right.svg http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/actions/align-horizontal-right.svg
align-top.png http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/actions/align-vertical-top.png
align-top.svg http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/actions/align-vertical-top.svg
bold.png
cancel.png
circle.png
clear.png
clone.png
copy.png
cut.png
delete.png
document-properties.png
dropdown.gif
ellipse.png
eye.png
flyouth.png
flyup.gif
freehand-circle.png
freehand-square.png
go-down.png
go-up.png
image.png
italic.png
line.png
logo.png
logo.svg
move_bottom.png
move_top.png
none.png
open.png
paste.png
path.png
polygon.png https://github.com/SVG-Edit/svgedit/issues/377
polygon.svg https://github.com/SVG-Edit/svgedit/issues/377
rect.png
redo.png
rotate.png
save.png
select.png
sep.png
shape_group_elements.png
shape_ungroup.png
source.png
square.png
text.png http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/tools/draw-text.png
text.svg http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/tools/draw-text.svg
undo.png
view-refresh.png
zoom.png http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/tools/page-magnifier.png

BIN
dist/editor/images/add_subpath.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

BIN
dist/editor/images/align-bottom.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 161 B

277
dist/editor/images/align-bottom.svg vendored Normal file
View File

@@ -0,0 +1,277 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://web.resource.org/cc/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="22"
height="22"
id="svg5741"
sodipodi:version="0.32"
inkscape:version="0.44+devel"
version="1.0"
sodipodi:docbase="/home/andreas/project/inkscape/22x22/actions"
sodipodi:docname="align-bottom-vertical.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
inkscape:export-filename="/home/andreas/project/inkscape/22x22/actions/align-bottom-vertical.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"
sodipodi:modified="true">
<defs
id="defs5743">
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2968"
id="linearGradient6938"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-1,0,0,-1,395.9999,981)"
x1="187.60938"
y1="489.35938"
x2="186.93732"
y2="489.35938" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2974"
id="linearGradient6936"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-1,0,0,-1,395.9999,981)"
x1="187.81554"
y1="489.54688"
x2="187.1716"
y2="489.54688" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2986"
id="linearGradient6934"
gradientUnits="userSpaceOnUse"
x1="187.60938"
y1="489.35938"
x2="186.93732"
y2="489.35938" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2980"
id="linearGradient6932"
gradientUnits="userSpaceOnUse"
x1="187.81554"
y1="489.54688"
x2="187.1716"
y2="489.54688" />
<linearGradient
id="linearGradient2968"
inkscape:collect="always">
<stop
id="stop2970"
offset="0"
style="stop-color:#ce5c00;stop-opacity:1" />
<stop
id="stop2972"
offset="1"
style="stop-color:#ce5c00;stop-opacity:0" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2968"
id="linearGradient6930"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-1,0,0,-1,395.9999,981)"
x1="187.60938"
y1="489.35938"
x2="186.93732"
y2="489.35938" />
<linearGradient
id="linearGradient2974"
inkscape:collect="always">
<stop
id="stop2976"
offset="0"
style="stop-color:#fcaf3e;stop-opacity:1" />
<stop
id="stop2978"
offset="1"
style="stop-color:#fcaf3e;stop-opacity:0" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2974"
id="linearGradient6928"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-1,0,0,-1,395.9999,981)"
x1="187.81554"
y1="489.54688"
x2="187.1716"
y2="489.54688" />
<linearGradient
id="linearGradient2986"
inkscape:collect="always">
<stop
id="stop2988"
offset="0"
style="stop-color:#ce5c00;stop-opacity:1" />
<stop
id="stop2990"
offset="1"
style="stop-color:#ce5c00;stop-opacity:0" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2986"
id="linearGradient6926"
gradientUnits="userSpaceOnUse"
x1="187.60938"
y1="489.35938"
x2="186.93732"
y2="489.35938" />
<linearGradient
id="linearGradient2980"
inkscape:collect="always">
<stop
id="stop2982"
offset="0"
style="stop-color:#fcaf3e;stop-opacity:1" />
<stop
id="stop2984"
offset="1"
style="stop-color:#fcaf3e;stop-opacity:0" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2980"
id="linearGradient6924"
gradientUnits="userSpaceOnUse"
x1="187.81554"
y1="489.54688"
x2="187.1716"
y2="489.54688" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="22.197802"
inkscape:cx="8"
inkscape:cy="9.8019802"
inkscape:current-layer="g6828"
showgrid="false"
inkscape:grid-bbox="true"
inkscape:document-units="px"
width="22px"
height="22px"
inkscape:window-width="1078"
inkscape:window-height="786"
inkscape:window-x="243"
inkscape:window-y="71" />
<metadata
id="metadata5746">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer">
<g
style="display:inline"
id="g6828"
transform="translate(30.00011,90.000366)"
inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90">
<g
style="display:inline"
id="g6838"
transform="translate(-30.00009,-1.0002798)"
inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90">
<rect
style="fill:#d3d7cf;fill-opacity:1;stroke:#888a85;stroke-width:0.99999994;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3052"
width="12"
height="7"
x="69.500122"
y="12.5"
transform="matrix(0,-1,1,0,0,0)"
inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<rect
style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.99999994;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3054"
width="10"
height="5.0000305"
x="70.500122"
y="13.5"
transform="matrix(0,-1,1,0,0,0)"
rx="0"
ry="0"
inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<g
id="g3056"
transform="translate(-127,-559)"
inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90">
<rect
transform="matrix(0,-1,1,0,0,0)"
y="129.49626"
x="-489.49979"
height="7.0035982"
width="17.999748"
id="rect3058"
style="color:#000000;fill:#d3d7cf;fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1.00024867;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" />
<rect
transform="matrix(0,-1,1,0,0,0)"
y="130.50006"
x="-488.50009"
height="4.9998937"
width="15.999757"
id="rect3060"
style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.00024891;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline"
rx="0"
ry="0" />
</g>
<g
id="g3294"
transform="translate(-187,-560)"
inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90">
<rect
y="489.5"
x="196.49989"
height="1.9999999"
width="3.0000916"
id="rect3296"
style="fill:#fcaf3e;fill-opacity:1;stroke:#ce5c00;stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<path
style="fill:url(#linearGradient6932);fill-opacity:1;stroke:url(#linearGradient6934);stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dashoffset:0;stroke-opacity:1"
d="M 197.49998,491.5 L 186.49989,491.5 L 186.49989,489.5 L 197.49998,489.5"
id="path3298"
sodipodi:nodetypes="cccc" />
<path
style="fill:url(#linearGradient6936);fill-opacity:1;stroke:url(#linearGradient6938);stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dashoffset:0;stroke-opacity:1"
d="M 198.49989,489.5 L 209.49998,489.5 L 209.49998,491.5 L 198.49989,491.5"
id="path3300"
sodipodi:nodetypes="cccc" />
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 9.8 KiB

BIN
dist/editor/images/align-center.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 221 B

252
dist/editor/images/align-center.svg vendored Normal file
View File

@@ -0,0 +1,252 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://web.resource.org/cc/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="22"
height="22"
id="svg10958"
sodipodi:version="0.32"
inkscape:version="0.44+devel"
version="1.0"
sodipodi:docbase="/home/andreas/project/inkscape/22x22/actions"
sodipodi:docname="align-horisontal-center.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
inkscape:export-filename="/home/andreas/project/inkscape/22x22/actions/align-horisontal-center.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"
sodipodi:modified="true">
<defs
id="defs10960">
<linearGradient
id="linearGradient2968"
inkscape:collect="always">
<stop
id="stop2970"
offset="0"
style="stop-color:#ce5c00;stop-opacity:1" />
<stop
id="stop2972"
offset="1"
style="stop-color:#ce5c00;stop-opacity:0" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2968"
id="linearGradient4708"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-395.9999,-981)"
x1="187.60938"
y1="489.35938"
x2="186.93732"
y2="489.35938" />
<linearGradient
id="linearGradient2974"
inkscape:collect="always">
<stop
id="stop2976"
offset="0"
style="stop-color:#fcaf3e;stop-opacity:1" />
<stop
id="stop2978"
offset="1"
style="stop-color:#fcaf3e;stop-opacity:0" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2974"
id="linearGradient4706"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-395.9999,-981)"
x1="187.81554"
y1="489.54688"
x2="187.1716"
y2="489.54688" />
<linearGradient
id="linearGradient2986"
inkscape:collect="always">
<stop
id="stop2988"
offset="0"
style="stop-color:#ce5c00;stop-opacity:1" />
<stop
id="stop2990"
offset="1"
style="stop-color:#ce5c00;stop-opacity:0" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2986"
id="linearGradient4704"
gradientUnits="userSpaceOnUse"
x1="187.60938"
y1="489.35938"
x2="186.93732"
y2="489.35938" />
<linearGradient
id="linearGradient2980"
inkscape:collect="always">
<stop
id="stop2982"
offset="0"
style="stop-color:#fcaf3e;stop-opacity:1" />
<stop
id="stop2984"
offset="1"
style="stop-color:#fcaf3e;stop-opacity:0" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2980"
id="linearGradient4702"
gradientUnits="userSpaceOnUse"
x1="187.81554"
y1="489.54688"
x2="187.1716"
y2="489.54688" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="11.197802"
inkscape:cx="16"
inkscape:cy="11.460711"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:grid-bbox="true"
inkscape:document-units="px"
width="22px"
height="22px"
inkscape:window-width="797"
inkscape:window-height="628"
inkscape:window-x="0"
inkscape:window-y="47" />
<metadata
id="metadata10963">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer">
<g
style="display:inline"
id="g4044"
transform="matrix(0,-1,1,0,-59.999911,-168.00002)"
inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90">
<rect
style="fill:#d3d7cf;fill-opacity:1;stroke:#888a85;stroke-width:0.99999994;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline"
id="rect3851"
width="12"
height="7"
x="-76.499878"
y="-177.5"
transform="matrix(0,-1,1,0,0,0)"
inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<g
transform="translate(-317,-410)"
id="g3853"
inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"
style="display:inline">
<rect
transform="matrix(0,-1,1,0,0,0)"
y="129.49626"
x="-489.49979"
height="7.0035982"
width="17.999748"
id="rect3855"
style="color:#000000;fill:#d3d7cf;fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1.00024867;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" />
<rect
transform="matrix(0,-1,1,0,0,0)"
y="130.50006"
x="-488.50009"
height="4.9998937"
width="15.999757"
id="rect3857"
style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.00024891;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline"
rx="0"
ry="0" />
</g>
<rect
style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.99999994;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline"
id="rect3859"
width="10"
height="5.0000305"
x="-75.499878"
y="-176.5"
transform="matrix(0,-1,1,0,0,0)"
rx="0"
ry="0"
inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<g
id="g3861"
transform="translate(-377,-420)"
inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"
style="display:inline">
<rect
y="489.5"
x="186.49989"
height="1.9999999"
width="3.0000916"
id="rect3863"
style="fill:url(#linearGradient4702);fill-opacity:1;stroke:url(#linearGradient4704);stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="489.5"
x="191.49989"
height="1.9999999"
width="3.0000916"
id="rect3865"
style="fill:#fcaf3e;fill-opacity:1;stroke:#ce5c00;stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="489.5"
x="196.49989"
height="1.9999999"
width="3.0000916"
id="rect3867"
style="fill:#fcaf3e;fill-opacity:1;stroke:#ce5c00;stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="489.5"
x="201.49989"
height="1.9999999"
width="3.0000916"
id="rect3869"
style="fill:#fcaf3e;fill-opacity:1;stroke:#ce5c00;stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
transform="scale(-1,-1)"
y="-491.5"
x="-209.49998"
height="1.9999999"
width="3.0000916"
id="rect3871"
style="fill:url(#linearGradient4706);fill-opacity:1;stroke:url(#linearGradient4708);stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 9.1 KiB

BIN
dist/editor/images/align-left.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 175 B

235
dist/editor/images/align-left.svg vendored Normal file
View File

@@ -0,0 +1,235 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://web.resource.org/cc/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="22"
height="22"
id="svg11272"
sodipodi:version="0.32"
inkscape:version="0.44+devel"
version="1.0"
sodipodi:docbase="/home/andreas/project/inkscape/22x22/actions"
sodipodi:docname="align-horisontal-left.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
inkscape:export-filename="/home/andreas/project/inkscape/22x22/actions/align-horisontal-left.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"
sodipodi:modified="true">
<defs
id="defs11274">
<linearGradient
id="linearGradient2968"
inkscape:collect="always">
<stop
id="stop2970"
offset="0"
style="stop-color:#ce5c00;stop-opacity:1" />
<stop
id="stop2972"
offset="1"
style="stop-color:#ce5c00;stop-opacity:0" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2968"
id="linearGradient4716"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-1,0,0,-1,395.9999,981)"
x1="187.60938"
y1="489.35938"
x2="186.93732"
y2="489.35938" />
<linearGradient
id="linearGradient2974"
inkscape:collect="always">
<stop
id="stop2976"
offset="0"
style="stop-color:#fcaf3e;stop-opacity:1" />
<stop
id="stop2978"
offset="1"
style="stop-color:#fcaf3e;stop-opacity:0" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2974"
id="linearGradient4714"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-1,0,0,-1,395.9999,981)"
x1="187.81554"
y1="489.54688"
x2="187.1716"
y2="489.54688" />
<linearGradient
id="linearGradient2986"
inkscape:collect="always">
<stop
id="stop2988"
offset="0"
style="stop-color:#ce5c00;stop-opacity:1" />
<stop
id="stop2990"
offset="1"
style="stop-color:#ce5c00;stop-opacity:0" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2986"
id="linearGradient4712"
gradientUnits="userSpaceOnUse"
x1="187.60938"
y1="489.35938"
x2="186.93732"
y2="489.35938" />
<linearGradient
id="linearGradient2980"
inkscape:collect="always">
<stop
id="stop2982"
offset="0"
style="stop-color:#fcaf3e;stop-opacity:1" />
<stop
id="stop2984"
offset="1"
style="stop-color:#fcaf3e;stop-opacity:0" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2980"
id="linearGradient4710"
gradientUnits="userSpaceOnUse"
x1="187.81554"
y1="489.54688"
x2="187.1716"
y2="489.54688" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="11.197802"
inkscape:cx="16"
inkscape:cy="14.269093"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:grid-bbox="true"
inkscape:document-units="px"
width="22px"
height="22px"
inkscape:window-width="797"
inkscape:window-height="628"
inkscape:window-x="0"
inkscape:window-y="47" />
<metadata
id="metadata11277">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer">
<g
style="display:inline"
id="g4065"
transform="matrix(0,-1,1,0,8.9287758e-5,51.99998)"
inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90">
<g
id="g3883"
transform="translate(-127,-473)"
style="fill:#d3d7cf;stroke:#888a85;display:inline"
inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90">
<rect
transform="matrix(0,1,1,0,0,0)"
y="169.5"
x="475.50012"
height="7"
width="12"
id="rect3885"
style="fill:#d3d7cf;fill-opacity:1;stroke:#888a85;stroke-width:0.99999994;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
ry="0"
rx="0"
transform="matrix(0,1,1,0,0,0)"
y="170.5"
x="476.50012"
height="5.0000305"
width="10"
id="rect3887"
style="opacity:1;fill:#d3d7cf;fill-opacity:1;stroke:#ffffff;stroke-width:0.99999994;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
</g>
<g
id="g3889"
transform="translate(-97,-469)"
inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"
style="display:inline">
<rect
transform="matrix(0,-1,1,0,0,0)"
y="129.49626"
x="-489.49979"
height="7.0035982"
width="17.999748"
id="rect3891"
style="color:#000000;fill:#d3d7cf;fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1.00024867;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" />
<rect
transform="matrix(0,-1,1,0,0,0)"
y="130.50006"
x="-488.50009"
height="4.9998937"
width="15.999757"
id="rect3893"
style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.00024891;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline"
rx="0"
ry="0" />
</g>
<g
id="g3903"
transform="translate(-157,-488)"
inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"
style="display:inline">
<rect
y="489.5"
x="196.49989"
height="1.9999999"
width="3.0000916"
id="rect3905"
style="fill:#fcaf3e;fill-opacity:1;stroke:#ce5c00;stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<path
style="fill:url(#linearGradient4710);fill-opacity:1;stroke:url(#linearGradient4712);stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dashoffset:0;stroke-opacity:1"
d="M 197.49998,491.5 L 186.49989,491.5 L 186.49989,489.5 L 197.49998,489.5"
id="path3907"
sodipodi:nodetypes="cccc" />
<path
style="fill:url(#linearGradient4714);fill-opacity:1;stroke:url(#linearGradient4716);stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dashoffset:0;stroke-opacity:1"
d="M 198.49989,489.5 L 209.49998,489.5 L 209.49998,491.5 L 198.49989,491.5"
id="path3909"
sodipodi:nodetypes="cccc" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 8.4 KiB

BIN
dist/editor/images/align-middle.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 194 B

250
dist/editor/images/align-middle.svg vendored Normal file
View File

@@ -0,0 +1,250 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://web.resource.org/cc/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="22"
height="22"
id="svg10625"
sodipodi:version="0.32"
inkscape:version="0.44+devel"
version="1.0"
sodipodi:docbase="/home/andreas/project/inkscape/22x22/actions"
sodipodi:docname="align-vertical-center.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
inkscape:export-filename="/home/andreas/project/inkscape/22x22/actions/align-vertical-center.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"
sodipodi:modified="true">
<defs
id="defs10627">
<linearGradient
id="linearGradient2968"
inkscape:collect="always">
<stop
id="stop2970"
offset="0"
style="stop-color:#ce5c00;stop-opacity:1" />
<stop
id="stop2972"
offset="1"
style="stop-color:#ce5c00;stop-opacity:0" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2968"
id="linearGradient6962"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-395.9999,-981)"
x1="187.60938"
y1="489.35938"
x2="186.93732"
y2="489.35938" />
<linearGradient
id="linearGradient2974"
inkscape:collect="always">
<stop
id="stop2976"
offset="0"
style="stop-color:#fcaf3e;stop-opacity:1" />
<stop
id="stop2978"
offset="1"
style="stop-color:#fcaf3e;stop-opacity:0" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2974"
id="linearGradient6960"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-395.9999,-981)"
x1="187.81554"
y1="489.54688"
x2="187.1716"
y2="489.54688" />
<linearGradient
id="linearGradient2986"
inkscape:collect="always">
<stop
id="stop2988"
offset="0"
style="stop-color:#ce5c00;stop-opacity:1" />
<stop
id="stop2990"
offset="1"
style="stop-color:#ce5c00;stop-opacity:0" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2986"
id="linearGradient6958"
gradientUnits="userSpaceOnUse"
x1="187.60938"
y1="489.35938"
x2="186.93732"
y2="489.35938" />
<linearGradient
id="linearGradient2980"
inkscape:collect="always">
<stop
id="stop2982"
offset="0"
style="stop-color:#fcaf3e;stop-opacity:1" />
<stop
id="stop2984"
offset="1"
style="stop-color:#fcaf3e;stop-opacity:0" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2980"
id="linearGradient6956"
gradientUnits="userSpaceOnUse"
x1="187.81554"
y1="489.54688"
x2="187.1716"
y2="489.54688" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="11.197802"
inkscape:cx="16"
inkscape:cy="16"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:grid-bbox="true"
inkscape:document-units="px"
width="22px"
height="22px"
inkscape:window-width="797"
inkscape:window-height="628"
inkscape:window-x="0"
inkscape:window-y="47" />
<metadata
id="metadata10630">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer">
<g
style="display:inline"
id="g6849"
transform="translate(-29.999893,91.000089)"
inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90">
<rect
style="fill:#d3d7cf;fill-opacity:1;stroke:#888a85;stroke-width:0.99999994;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect1933"
width="12"
height="7"
x="73.500122"
y="42.5"
transform="matrix(0,-1,1,0,0,0)"
inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<g
transform="translate(-97,-560)"
id="g2063"
inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90">
<rect
transform="matrix(0,-1,1,0,0,0)"
y="129.49626"
x="-489.49979"
height="7.0035982"
width="17.999748"
id="rect1935"
style="color:#000000;fill:#d3d7cf;fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1.00024867;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" />
<rect
transform="matrix(0,-1,1,0,0,0)"
y="130.50006"
x="-488.50009"
height="4.9998937"
width="15.999757"
id="rect1937"
style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.00024891;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline"
rx="0"
ry="0" />
</g>
<rect
style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.99999994;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect1939"
width="10"
height="5.0000305"
x="74.500122"
y="43.5"
transform="matrix(0,-1,1,0,0,0)"
rx="0"
ry="0"
inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<g
id="g2992"
transform="translate(-157,-570)"
inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90">
<rect
y="489.5"
x="186.49989"
height="1.9999999"
width="3.0000916"
id="rect2994"
style="fill:url(#linearGradient6956);fill-opacity:1;stroke:url(#linearGradient6958);stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="489.5"
x="191.49989"
height="1.9999999"
width="3.0000916"
id="rect2996"
style="fill:#fcaf3e;fill-opacity:1;stroke:#ce5c00;stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="489.5"
x="196.49989"
height="1.9999999"
width="3.0000916"
id="rect2998"
style="fill:#fcaf3e;fill-opacity:1;stroke:#ce5c00;stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="489.5"
x="201.49989"
height="1.9999999"
width="3.0000916"
id="rect3000"
style="fill:#fcaf3e;fill-opacity:1;stroke:#ce5c00;stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
transform="scale(-1,-1)"
y="-491.5"
x="-209.49998"
height="1.9999999"
width="3.0000916"
id="rect3002"
style="fill:url(#linearGradient6960);fill-opacity:1;stroke:url(#linearGradient6962);stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 9.0 KiB

BIN
dist/editor/images/align-right.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 173 B

233
dist/editor/images/align-right.svg vendored Normal file
View File

@@ -0,0 +1,233 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://web.resource.org/cc/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="22"
height="22"
id="svg11187"
sodipodi:version="0.32"
inkscape:version="0.44+devel"
version="1.0"
sodipodi:docbase="/home/andreas/project/inkscape/22x22/actions"
sodipodi:docname="align-horisontal-right.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
sodipodi:modified="TRUE"
inkscape:export-filename="/home/andreas/project/inkscape/22x22/actions/align-horisontal-right.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90">
<defs
id="defs11189">
<linearGradient
id="linearGradient2968"
inkscape:collect="always">
<stop
id="stop2970"
offset="0"
style="stop-color:#ce5c00;stop-opacity:1" />
<stop
id="stop2972"
offset="1"
style="stop-color:#ce5c00;stop-opacity:0" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2968"
id="linearGradient4732"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-1,0,0,-1,395.9999,981)"
x1="187.60938"
y1="489.35938"
x2="186.93732"
y2="489.35938" />
<linearGradient
id="linearGradient2974"
inkscape:collect="always">
<stop
id="stop2976"
offset="0"
style="stop-color:#fcaf3e;stop-opacity:1" />
<stop
id="stop2978"
offset="1"
style="stop-color:#fcaf3e;stop-opacity:0" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2974"
id="linearGradient4730"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-1,0,0,-1,395.9999,981)"
x1="187.81554"
y1="489.54688"
x2="187.1716"
y2="489.54688" />
<linearGradient
id="linearGradient2986"
inkscape:collect="always">
<stop
id="stop2988"
offset="0"
style="stop-color:#ce5c00;stop-opacity:1" />
<stop
id="stop2990"
offset="1"
style="stop-color:#ce5c00;stop-opacity:0" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2986"
id="linearGradient4728"
gradientUnits="userSpaceOnUse"
x1="187.60938"
y1="489.35938"
x2="186.93732"
y2="489.35938" />
<linearGradient
id="linearGradient2980"
inkscape:collect="always">
<stop
id="stop2982"
offset="0"
style="stop-color:#fcaf3e;stop-opacity:1" />
<stop
id="stop2984"
offset="1"
style="stop-color:#fcaf3e;stop-opacity:0" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2980"
id="linearGradient4726"
gradientUnits="userSpaceOnUse"
x1="187.81554"
y1="489.54688"
x2="187.1716"
y2="489.54688" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="11.197802"
inkscape:cx="16"
inkscape:cy="16"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:grid-bbox="true"
inkscape:document-units="px"
width="22px"
height="22px"
inkscape:window-width="797"
inkscape:window-height="628"
inkscape:window-x="0"
inkscape:window-y="47" />
<metadata
id="metadata11192">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer">
<g
style="display:inline"
id="g4025"
transform="matrix(0,-1,1,0,-60.999914,-198.00011)"
inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90">
<rect
style="fill:#d3d7cf;fill-opacity:1;stroke:#888a85;stroke-width:0.99999994;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline"
id="rect3873"
width="12"
height="7"
x="-80.499878"
y="-207.5"
transform="matrix(0,-1,1,0,0,0)"
inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<rect
style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.99999994;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline"
id="rect3875"
width="10"
height="5.0000305"
x="-79.499878"
y="-206.5"
transform="matrix(0,-1,1,0,0,0)"
rx="0"
ry="0"
inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
<g
id="g3877"
transform="translate(-347,-409)"
inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"
style="display:inline">
<rect
transform="matrix(0,-1,1,0,0,0)"
y="129.49626"
x="-489.49979"
height="7.0035982"
width="17.999748"
id="rect3879"
style="color:#000000;fill:#d3d7cf;fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1.00024867;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" />
<rect
transform="matrix(0,-1,1,0,0,0)"
y="130.50006"
x="-488.50009"
height="4.9998937"
width="15.999757"
id="rect3881"
style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.00024891;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline"
rx="0"
ry="0" />
</g>
<g
id="g3919"
transform="translate(-407,-410)"
inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"
style="display:inline">
<rect
y="489.5"
x="196.49989"
height="1.9999999"
width="3.0000916"
id="rect3921"
style="fill:#fcaf3e;fill-opacity:1;stroke:#ce5c00;stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<path
style="fill:url(#linearGradient4726);fill-opacity:1;stroke:url(#linearGradient4728);stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dashoffset:0;stroke-opacity:1"
d="M 197.49998,491.5 L 186.49989,491.5 L 186.49989,489.5 L 197.49998,489.5"
id="path3923"
sodipodi:nodetypes="cccc" />
<path
style="fill:url(#linearGradient4730);fill-opacity:1;stroke:url(#linearGradient4732);stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dashoffset:0;stroke-opacity:1"
d="M 198.49989,489.5 L 209.49998,489.5 L 209.49998,491.5 L 198.49989,491.5"
id="path3925"
sodipodi:nodetypes="cccc" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 8.4 KiB

BIN
dist/editor/images/align-top.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 165 B

233
dist/editor/images/align-top.svg vendored Normal file
View File

@@ -0,0 +1,233 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://web.resource.org/cc/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="22"
height="22"
id="svg10699"
sodipodi:version="0.32"
inkscape:version="0.44+devel"
version="1.0"
sodipodi:docbase="/home/andreas/project/inkscape/22x22/actions"
sodipodi:docname="align-vertical-bottom.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
inkscape:export-filename="/home/andreas/project/inkscape/22x22/actions/align-vertical-bottom.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90"
sodipodi:modified="true">
<defs
id="defs10701">
<linearGradient
id="linearGradient2968"
inkscape:collect="always">
<stop
id="stop2970"
offset="0"
style="stop-color:#ce5c00;stop-opacity:1" />
<stop
id="stop2972"
offset="1"
style="stop-color:#ce5c00;stop-opacity:0" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2968"
id="linearGradient6954"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-1,0,0,-1,395.9999,981)"
x1="187.60938"
y1="489.35938"
x2="186.93732"
y2="489.35938" />
<linearGradient
id="linearGradient2974"
inkscape:collect="always">
<stop
id="stop2976"
offset="0"
style="stop-color:#fcaf3e;stop-opacity:1" />
<stop
id="stop2978"
offset="1"
style="stop-color:#fcaf3e;stop-opacity:0" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2974"
id="linearGradient6952"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-1,0,0,-1,395.9999,981)"
x1="187.81554"
y1="489.54688"
x2="187.1716"
y2="489.54688" />
<linearGradient
id="linearGradient2986"
inkscape:collect="always">
<stop
id="stop2988"
offset="0"
style="stop-color:#ce5c00;stop-opacity:1" />
<stop
id="stop2990"
offset="1"
style="stop-color:#ce5c00;stop-opacity:0" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2986"
id="linearGradient6950"
gradientUnits="userSpaceOnUse"
x1="187.60938"
y1="489.35938"
x2="186.93732"
y2="489.35938" />
<linearGradient
id="linearGradient2980"
inkscape:collect="always">
<stop
id="stop2982"
offset="0"
style="stop-color:#fcaf3e;stop-opacity:1" />
<stop
id="stop2984"
offset="1"
style="stop-color:#fcaf3e;stop-opacity:0" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2980"
id="linearGradient6948"
gradientUnits="userSpaceOnUse"
x1="187.81554"
y1="489.54688"
x2="187.1716"
y2="489.54688" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="11.197802"
inkscape:cx="16"
inkscape:cy="16"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:grid-bbox="true"
inkscape:document-units="px"
width="22px"
height="22px"
inkscape:window-width="797"
inkscape:window-height="628"
inkscape:window-x="0"
inkscape:window-y="47" />
<metadata
id="metadata10704">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:label="Layer 1"
inkscape:groupmode="layer">
<g
style="display:inline"
id="g6862"
transform="translate(-59.99998,90)"
inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90">
<g
id="g3084"
transform="translate(-97,-563)"
style="fill:#d3d7cf;stroke:#888a85"
inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90">
<rect
transform="matrix(0,1,1,0,0,0)"
y="169.5"
x="475.50012"
height="7"
width="12"
id="rect3086"
style="fill:#d3d7cf;fill-opacity:1;stroke:#888a85;stroke-width:0.99999994;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
ry="0"
rx="0"
transform="matrix(0,1,1,0,0,0)"
y="170.5"
x="476.50012"
height="5.0000305"
width="10"
id="rect3088"
style="opacity:1;fill:#d3d7cf;fill-opacity:1;stroke:#ffffff;stroke-width:0.99999994;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
</g>
<g
id="g3090"
transform="translate(-67,-559)"
inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90">
<rect
transform="matrix(0,-1,1,0,0,0)"
y="129.49626"
x="-489.49979"
height="7.0035982"
width="17.999748"
id="rect3092"
style="color:#000000;fill:#d3d7cf;fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1.00024867;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" />
<rect
transform="matrix(0,-1,1,0,0,0)"
y="130.50006"
x="-488.50009"
height="4.9998937"
width="15.999757"
id="rect3094"
style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.00024891;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline"
rx="0"
ry="0" />
</g>
<g
id="g3262"
transform="translate(-127,-578)"
inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90">
<rect
y="489.5"
x="196.49989"
height="1.9999999"
width="3.0000916"
id="rect3264"
style="fill:#fcaf3e;fill-opacity:1;stroke:#ce5c00;stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<path
style="fill:url(#linearGradient6948);fill-opacity:1;stroke:url(#linearGradient6950);stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dashoffset:0;stroke-opacity:1"
d="M 197.49998,491.5 L 186.49989,491.5 L 186.49989,489.5 L 197.49998,489.5"
id="path3266"
sodipodi:nodetypes="cccc" />
<path
style="fill:url(#linearGradient6952);fill-opacity:1;stroke:url(#linearGradient6954);stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dashoffset:0;stroke-opacity:1"
d="M 198.49989,489.5 L 209.49998,489.5 L 209.49998,491.5 L 198.49989,491.5"
id="path3268"
sodipodi:nodetypes="cccc" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 8.3 KiB

BIN
dist/editor/images/align.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 149 B

BIN
dist/editor/images/angle.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 487 B

BIN
dist/editor/images/arrow_right.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Some files were not shown because too many files have changed in this diff Show More