Compare commits
294 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4f4ca0c96c | ||
|
|
6d0b95e50c | ||
|
|
c48593190f | ||
|
|
054d89cccd | ||
|
|
d32e925125 | ||
|
|
352a231973 | ||
|
|
e38f1040c0 | ||
|
|
faf9a2afc4 | ||
|
|
c47dcbf6e5 | ||
|
|
96d9e12017 | ||
|
|
9e57e09371 | ||
|
|
2ba14fe4ef | ||
|
|
df0f259172 | ||
|
|
f4aba673d4 | ||
|
|
7c2c056642 | ||
|
|
f22cb46515 | ||
|
|
1fce319dc9 | ||
|
|
1fed01dde0 | ||
|
|
1e11f8d590 | ||
|
|
b34b031f3d | ||
|
|
85e850b40d | ||
|
|
cf894ac34a | ||
|
|
79c79ca4a5 | ||
|
|
95b496c480 | ||
|
|
1032804da4 | ||
|
|
8189d9c4a6 | ||
|
|
153134809b | ||
|
|
b3cb94e7bd | ||
|
|
dcc3d08d33 | ||
|
|
8f255597e4 | ||
|
|
eff3ce5894 | ||
|
|
cef7e6f79c | ||
|
|
48bda1d41f | ||
|
|
53d3ef7f83 | ||
|
|
7ca23d9e07 | ||
|
|
d36fbadd86 | ||
|
|
9522fd4343 | ||
|
|
7b8ad8b6ac | ||
|
|
9dd908c390 | ||
|
|
e5af391390 | ||
|
|
39f8d5ed52 | ||
|
|
b71c64b227 | ||
|
|
e5022921e2 | ||
|
|
f5f79d055f | ||
|
|
69b08a1326 | ||
|
|
bf0b62e6c5 | ||
|
|
f9015fe58d | ||
|
|
736aea47e2 | ||
|
|
b424482e4d | ||
|
|
35acc344a8 | ||
|
|
fe020842b0 | ||
|
|
0bc28fcbc4 | ||
|
|
abc3704c9a | ||
|
|
ee7d8325cd | ||
|
|
790c1e100e | ||
|
|
f1eb954087 | ||
|
|
b9693d21db | ||
|
|
ddf97ca4c4 | ||
|
|
62ca359776 | ||
|
|
bbb17d5dc3 | ||
|
|
fc0ccf3fa7 | ||
|
|
3df83776c7 | ||
|
|
5350803089 | ||
|
|
b3ca4dbd49 | ||
|
|
92975b2dca | ||
|
|
59f80c16bc | ||
|
|
342086f3f0 | ||
|
|
a72e3f12a3 | ||
|
|
ce570658f7 | ||
|
|
1a9ea280e4 | ||
|
|
b249e2b70b | ||
|
|
ec27681450 | ||
|
|
caf9f03f1a | ||
|
|
9556235502 | ||
|
|
797f946aa8 | ||
|
|
885a162558 | ||
|
|
7e75b4c353 | ||
|
|
f1be2f3145 | ||
|
|
81afb22a39 | ||
|
|
0855adb797 | ||
|
|
7c5b8101e6 | ||
|
|
dae340d0ea | ||
|
|
7d54a2d73e | ||
|
|
a596d2e59b | ||
|
|
e37651a4d9 | ||
|
|
35adb236ad | ||
|
|
b9ab37497a | ||
|
|
7b1fac9fb5 | ||
|
|
170124f041 | ||
|
|
e8c784e2bd | ||
|
|
ff82f90435 | ||
|
|
db8d0af14f | ||
|
|
2fa0c079e9 | ||
|
|
5f32f3797e | ||
|
|
e2a7446725 | ||
|
|
82f641631b | ||
|
|
70938e3452 | ||
|
|
7cc20aaaa6 | ||
|
|
72647e4d0a | ||
|
|
46928a2b18 | ||
|
|
877d35ebfb | ||
|
|
0ea34e8997 | ||
|
|
5658ae0684 | ||
|
|
45103ef618 | ||
|
|
4c6204224d | ||
|
|
d71629e49a | ||
|
|
c2aa4594e3 | ||
|
|
f1e512ae2f | ||
|
|
d23b5e83fb | ||
|
|
ee53f86e83 | ||
|
|
c07d9f8c9f | ||
|
|
2c4717a9f9 | ||
|
|
68b6835c54 | ||
|
|
1951006cf9 | ||
|
|
e32e7d6a6e | ||
|
|
076ceae74e | ||
|
|
aa48644325 | ||
|
|
c9f93538df | ||
|
|
47dbbea3bc | ||
|
|
ae900ac17e | ||
|
|
dde4ab4f26 | ||
|
|
e062b421da | ||
|
|
5d489738f6 | ||
|
|
e6923445dc | ||
|
|
497b0054a5 | ||
|
|
a6e52102d2 | ||
|
|
6b22b1f80b | ||
|
|
c720c768bc | ||
|
|
8b8aa3cd38 | ||
|
|
b528b5d9d2 | ||
|
|
12e2e37a8a | ||
|
|
cd2bd75804 | ||
|
|
997089d506 | ||
|
|
fa6d7b69c7 | ||
|
|
b7a8e5eb9a | ||
|
|
28671d130c | ||
|
|
baba50ab7c | ||
|
|
1c67672af5 | ||
|
|
2fe3781be0 | ||
|
|
6008e723fc | ||
|
|
50b5c29e0e | ||
|
|
f8689b180f | ||
|
|
3ba9005fbb | ||
|
|
8884e13a9b | ||
|
|
43088b19c2 | ||
|
|
1c3568079d | ||
|
|
0fa15bd180 | ||
|
|
16f19baf47 | ||
|
|
e52df1c649 | ||
|
|
8a27ce1656 | ||
|
|
1dab3914a2 | ||
|
|
7c4455f3d9 | ||
|
|
7e0d519e3c | ||
|
|
1699063904 | ||
|
|
6bb57b1590 | ||
|
|
433d702b0b | ||
|
|
dc0c5de453 | ||
|
|
87bc43970c | ||
|
|
d680289719 | ||
|
|
4dcdb0fcbc | ||
|
|
928dcc218a | ||
|
|
13c8912343 | ||
|
|
4241260361 | ||
|
|
98730c226d | ||
|
|
b47682c93a | ||
|
|
6f56d1ba35 | ||
|
|
4567f00493 | ||
|
|
28dd0ffa6a | ||
|
|
91d2b8e9d0 | ||
|
|
d9364248ef | ||
|
|
6b7fd928f3 | ||
|
|
a4e4d3aef5 | ||
|
|
5f83a58ef8 | ||
|
|
c02f662932 | ||
|
|
450c4db2e8 | ||
|
|
9e2cdac358 | ||
|
|
d4a48230d7 | ||
|
|
08aa91d82b | ||
|
|
cdc51cbfce | ||
|
|
0e5bc1219c | ||
|
|
ad0558f71d | ||
|
|
994552c387 | ||
|
|
97872d230e | ||
|
|
d471fc41fc | ||
|
|
67aae07781 | ||
|
|
e6901014c6 | ||
|
|
b346e60e90 | ||
|
|
f0d3d06f7b | ||
|
|
ae39fd5f0b | ||
|
|
f2cf1b6737 | ||
|
|
ef6e45caa3 | ||
|
|
481fd5ae4c | ||
|
|
7e7454087a | ||
|
|
02bcee0e6a | ||
|
|
17b410fe44 | ||
|
|
5ba3fbe4aa | ||
|
|
2cd9227e4d | ||
|
|
7507599d72 | ||
|
|
80ad57f7a8 | ||
|
|
c64af51d1c | ||
|
|
ea86375ed4 | ||
|
|
7f545c5ed1 | ||
|
|
4eb75b3b26 | ||
|
|
4b0bf4a781 | ||
|
|
3b16567be5 | ||
|
|
c77ce6aa54 | ||
|
|
6c80a30e51 | ||
|
|
5ee74e261f | ||
|
|
07c03377e5 | ||
|
|
b79bf2b020 | ||
|
|
fdaac09784 | ||
|
|
23c9f40bda | ||
|
|
d398cd7117 | ||
|
|
5948e6bb8a | ||
|
|
59b19f69a8 | ||
|
|
3f8b4f4058 | ||
|
|
0dfd4b8db3 | ||
|
|
fa14d98d58 | ||
|
|
5831aac2ef | ||
|
|
8034826180 | ||
|
|
c2c21f4d54 | ||
|
|
f837b0c40c | ||
|
|
7f1e7e6242 | ||
|
|
10dd17363e | ||
|
|
6f7829ceb1 | ||
|
|
6867e4edca | ||
|
|
bee177d4aa | ||
|
|
f737c2779d | ||
|
|
4a150c7d53 | ||
|
|
203185f0ef | ||
|
|
f30040f359 | ||
|
|
052f1ac301 | ||
|
|
14813e1993 | ||
|
|
38d334251a | ||
|
|
5f518d19f3 | ||
|
|
1a2995d184 | ||
|
|
408d9ae62f | ||
|
|
11624bfbc5 | ||
|
|
a80d2a617f | ||
|
|
8a8790ec76 | ||
|
|
7d9ddf4dea | ||
|
|
601ac6a2e1 | ||
|
|
f4f391fb13 | ||
|
|
5ccd056cde | ||
|
|
33503a28fc | ||
|
|
5a8bc496f3 | ||
|
|
85ba03dc59 | ||
|
|
2873aab522 | ||
|
|
1a8114fe68 | ||
|
|
9b62f90efb | ||
|
|
a15464d431 | ||
|
|
459e0e8b86 | ||
|
|
01ecec9731 | ||
|
|
461f98a8ed | ||
|
|
067f0ea208 | ||
|
|
ed059604ef | ||
|
|
a29cb75a8e | ||
|
|
276e15d889 | ||
|
|
8abbe2dfc0 | ||
|
|
aeb84f69fc | ||
|
|
4d42a83912 | ||
|
|
f4dd2d68ee | ||
|
|
374695c6ae | ||
|
|
4cfcd228ad | ||
|
|
a2234c0bee | ||
|
|
d187d2073d | ||
|
|
00ab65e12a | ||
|
|
8faf6625e7 | ||
|
|
0fa9934f93 | ||
|
|
8ea6cdcf34 | ||
|
|
c084eea157 | ||
|
|
2180f6a60e | ||
|
|
e5f3b34d18 | ||
|
|
52cfef2afd | ||
|
|
4d14e5edb1 | ||
|
|
50742a761e | ||
|
|
97998cf761 | ||
|
|
a7a3820298 | ||
|
|
0b39902ed5 | ||
|
|
2344dee5d2 | ||
|
|
50c6951b37 | ||
|
|
84b2e1da25 | ||
|
|
778ecd4d97 | ||
|
|
31058a0661 | ||
|
|
19be76e590 | ||
|
|
26b979efc9 | ||
|
|
99a6d33c3e | ||
|
|
3b21ebb72e | ||
|
|
61cf584a93 | ||
|
|
3f27fea41f | ||
|
|
209524648c | ||
|
|
478906e9ba | ||
|
|
2a67ea7782 | ||
|
|
0a6d3fe874 |
8
.babelrc
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"presets": ["@babel/preset-env"],
|
||||
"plugins": [
|
||||
["@babel/plugin-transform-runtime", {
|
||||
"regenerator": true
|
||||
}]
|
||||
]
|
||||
}
|
||||
2
.gitignore
vendored
@ -13,3 +13,5 @@ nbproject/
|
||||
*.log
|
||||
|
||||
/node_modules/
|
||||
*.js.ignore
|
||||
|
||||
|
||||
46
README.md
@ -1,12 +1,8 @@
|
||||
# miniPaint
|
||||
|
||||
Online image editor lets you create, edit images using HTML5 technologies.
|
||||
No need to buy, download, install or have obsolete flash. No ads.
|
||||
Key features: layers, filters, HTML5, open source, Photoshop alternative.
|
||||
Online image editor lets you create and edit images using HTML5 technologies. No need to buy, download, install, or have outdated flash. No ads. Key features: layers, filters, open source Photoshop alternative.
|
||||
|
||||
miniPaint operates directly in the browser. You can create images, paste from the clipboard (ctrl+v)
|
||||
or upload from the computer (using menu or drag & drop). Nothing will be sent to any server. Everything stays in your
|
||||
browser.
|
||||
miniPaint operates directly in the browser. You can create images by pasting from the clipboard (ctrl+v) or uploading from the computer (_using menu or drag & drop_). Nothing will be sent to any server. Everything stays in your browser.
|
||||
|
||||
## URL:
|
||||
**https://viliusle.github.io/miniPaint/**
|
||||
@ -23,27 +19,28 @@ browser.
|
||||
- Opera
|
||||
- Edge
|
||||
- Safari
|
||||
- Yandex
|
||||
|
||||
## Features
|
||||
|
||||
- **Files**: open images, directories, URL, data URL, drag and drop, save (PNG, JPG, BMP, WEBP, animated GIF, JSON
|
||||
(layers data), print.
|
||||
- **Edit**: Undo, cut, copy, paste, selection, paste from clipboard.
|
||||
- **Image**: information, EXIF, trim, zoom, resize (Hermite resample, default resize), rotate, flip,
|
||||
color corrections (brightness, contrast, hue, saturation, luminance), auto adjust colors, grid, histogram, negative.
|
||||
- **Layers**: multiple layers system, differences, merge, flatten, Transparency support.
|
||||
- **Effects**: Black and White, Blur (box, Gaussian, stack, zoom), Bulge/Pinch, Denoise, Desaturate, Dither, Dot Screen,
|
||||
Edge, Emboss, Enrich, Gamma, Grains, GrayScale, Heatmap, JPG Compression, Mosaic, Oil, Sepia, Sharpen, Solarize,
|
||||
Tilt Shift, Vignette, Vibrance, Vintage, Blueprint, Night Vision, Pencil, also Instagram Filters: 1977, Aden, Clarendon,
|
||||
Gingham, Inkwell, Lo-fi, Toaster, Valencia, X-Pro II.
|
||||
- **Tools**: pencil, brush, magic wand, erase, fill, color picker, letters, crop, blur, sharpen, desaturate, clone,
|
||||
borders, sprites, key-points, color zoom, replace color, restore alpha, content fill.
|
||||
- **Help**: keyboard shortcuts, translations.
|
||||
**Files**: open images, directories, URLs, data URLs, drag and drop, save (PNG, JPG, BMP, WEBP, animated GIF, TIFF, JSON (layers data), print.
|
||||
|
||||
**Edit**: undo, cut, copy, paste, selection, paste from the clipboard.
|
||||
|
||||
**Image**: information, EXIF, trim, zoom, resize (Hermite resample, default resize), rotate, flip, color corrections (brightness, contrast, hue, saturation, luminance), automatic color adjustment, grid, histogram, negative.
|
||||
|
||||
**Layers**: multi-layer system, differences, merging, flattening, transparency support.
|
||||
|
||||
**Effects**: black and white, blur (box, gaussian, stack, zoom), bulge/pinch, denoise, desaturation, dither, dot screen, edge, emboss, enrich, gamma, grains, grayscale, heatmap, jpg compression, mosaic, oil, sepia, sharpen, solarize, tilt shift, vignette, vibrance, vintage, blueprint, night vision, pencil, also instagram filters: 1977, aden, clarendon, gingham, inkwell, lo-fi, toaster, valencia, x-pro ii.
|
||||
|
||||
**Tools**: pencil, brush, magic wand, eraser, fill, color picker, letter, crop, blur, sharpener, desaturation, clone, borders, sprites, keypoints, color zoom, change color, restore transparency, content fill.
|
||||
|
||||
**Help**: keyboard shortcuts, translation.
|
||||
|
||||
## Embed
|
||||
To embed this app in the other page, use this HTML code:
|
||||
To embed this app on another page, use the following HTML code:
|
||||
|
||||
<iframe style="width:100%; height:1000px;" id="miniPaint" src="https://viliusle.github.io/miniPaint/"></iframe>
|
||||
<iframe style="box-sizing:border-box; width:100%; height:100vh;" id="miniPaint" src="https://viliusle.github.io/miniPaint/" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
|
||||
|
||||
## Build instructions
|
||||
See [Wiki > Build instructions](https://github.com/viliusle/miniPaint/wiki/Build-instructions)
|
||||
@ -51,8 +48,13 @@ See [Wiki > Build instructions](https://github.com/viliusle/miniPaint/wiki/Build
|
||||
## Wiki
|
||||
See [Wiki](https://github.com/viliusle/miniPaint/wiki)
|
||||
|
||||
## Contributors
|
||||
<a align="center" href="https://github.com/viliusle/miniPaint/graphs/contributors">
|
||||
<img src="https://contrib.rocks/image?repo=viliusle/miniPaint" />
|
||||
</a>
|
||||
|
||||
## License
|
||||
MIT License
|
||||
|
||||
## Support
|
||||
Please use the GitHub issues for support, features, issues or use mail www.viliusl@gmail.com for contacts.
|
||||
Please use the GitHub issues for support, feature requests and bug reports, or contact us by sending an email to www.viliusl@gmail.com.
|
||||
|
||||
15
SECURITY.md
Normal file
@ -0,0 +1,15 @@
|
||||
# Security Policy
|
||||
|
||||
## Supported Versions
|
||||
|
||||
Use this section to tell people about which versions of your project are
|
||||
currently being supported with security updates.
|
||||
|
||||
| Version | Supported |
|
||||
| ------- | ------------------ |
|
||||
| latest | :white_check_mark: |
|
||||
| < latest | :x: |
|
||||
|
||||
## Reporting a Vulnerability
|
||||
|
||||
Please send details to www.viliusl@gmail.com
|
||||
72
dist/bundle.js
vendored
47
dist/bundle.js.LICENSE.txt
vendored
Normal file
@ -0,0 +1,47 @@
|
||||
/*
|
||||
object-assign
|
||||
(c) Sindre Sorhus
|
||||
@license MIT
|
||||
*/
|
||||
|
||||
/*!
|
||||
|
||||
pica
|
||||
https://github.com/nodeca/pica
|
||||
|
||||
*/
|
||||
|
||||
/*!
|
||||
* Block below copied from Protovis: http://mbostock.github.com/protovis/
|
||||
* Copyright 2010 Stanford Visualization Group
|
||||
* Licensed under the BSD License: http://www.opensource.org/licenses/bsd-license.php
|
||||
* @license
|
||||
*/
|
||||
|
||||
/*!
|
||||
* jQuery JavaScript Library v3.7.1
|
||||
* https://jquery.com/
|
||||
*
|
||||
* Copyright OpenJS Foundation and other contributors
|
||||
* Released under the MIT license
|
||||
* https://jquery.org/license
|
||||
*
|
||||
* Date: 2023-08-28T13:37Z
|
||||
*/
|
||||
|
||||
/*!
|
||||
* quantize.js Copyright 2008 Nick Rabinowitz.
|
||||
* Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php
|
||||
* @license
|
||||
*/
|
||||
|
||||
/*! alertifyjs - v1.13.1 - Mohammad Younes <Mohammad@alertifyjs.com> (http://alertifyjs.com) */
|
||||
|
||||
/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */
|
||||
|
||||
/**
|
||||
* hermite-resize - Canvas image resize/resample using Hermite filter with JavaScript.
|
||||
* @version v2.2.10
|
||||
* @link https://github.com/viliusle/miniPaint
|
||||
* @license MIT
|
||||
*/
|
||||
2
dist/bundle.js.map
vendored
@ -1 +1 @@
|
||||
{"version":3,"file":"bundle.js","sources":["webpack:///bundle.js"],"mappings":"AAAA;;;;;;;;;;;;;AAmvLA;;;;;;;;;;;AAogBA;;;;;;;;;;;;;;;;;;;AA+q0CA;;;;;;;;;;;;AAyKA;;;;;;;AA8zBA;;;;;;AAm8CA","sourceRoot":""}
|
||||
{"version":3,"file":"bundle.js","sources":["webpack://miniPaint/bundle.js"],"mappings":";AAAA","sourceRoot":""}
|
||||
@ -1,7 +1,7 @@
|
||||
<html>
|
||||
<body style="margin:0;">
|
||||
|
||||
<iframe id="myFrame" style="width:100%;height:100vh;border:0;" src="../"></iframe>
|
||||
<iframe id="myFrame" style="width:100%;height:100vh;border:0;" src="../" allow="camera"></iframe>
|
||||
|
||||
<script>
|
||||
window.addEventListener('load', function (e) {
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<html>
|
||||
<body style="margin:0;">
|
||||
|
||||
<iframe id="myFrame" style="width:100%;height:70vh;border:0;" src="../"></iframe>
|
||||
<iframe id="myFrame" style="width:100%;height:70vh;border:0;" src="../" allow="camera"></iframe>
|
||||
|
||||
<div style="height:20vh;margin:10px;">
|
||||
Click on image to edit.
|
||||
@ -78,8 +78,8 @@ function save_image(){
|
||||
else{
|
||||
//slow way for IE, Edge
|
||||
var data = tempCanvas.toDataURL();
|
||||
console.log(data);
|
||||
alert('Data length: ' + data.length);
|
||||
console.log(data);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1,56 +1,70 @@
|
||||
<html>
|
||||
<body style="margin:0;">
|
||||
|
||||
<iframe id="myFrame" style="width:100%;height:100vh;border:0;" src="../"></iframe>
|
||||
|
||||
<iframe id="myFrame" style="width:100%;height:100vh;border:0;" src="../" allow="camera"></iframe>
|
||||
|
||||
<script>
|
||||
window.addEventListener('load', function (e) {
|
||||
main();
|
||||
}, false);
|
||||
|
||||
function main() {
|
||||
|
||||
async function main() {
|
||||
var Layers = document.getElementById('myFrame').contentWindow.Layers;
|
||||
var config = document.getElementById('myFrame').contentWindow.AppConfig;
|
||||
|
||||
|
||||
var canvas_width = 800;
|
||||
var canvas_height = 600;
|
||||
|
||||
//set size
|
||||
Layers.Base_gui.set_size(1000, 1000);
|
||||
|
||||
Layers.Base_gui.set_size(canvas_width, canvas_height);
|
||||
|
||||
//add rectangle
|
||||
this.layer = {
|
||||
name: 'layer1',
|
||||
type: 'rectangle',
|
||||
params: {fill: true, size: 2 },
|
||||
params: {
|
||||
fill: true,
|
||||
square: false,
|
||||
border_size: 2,
|
||||
border: false,
|
||||
border_color: "#1b1bd8",
|
||||
fill_color: "#1b1bd8"
|
||||
},
|
||||
color: '#ff0000',
|
||||
render_function: ['rectangle', 'render'],
|
||||
x: 500,
|
||||
y: 500,
|
||||
x: canvas_width/2 - 25,
|
||||
y: canvas_height/2 - 25,
|
||||
width: 50,
|
||||
height: 50,
|
||||
};
|
||||
Layers.insert(this.layer);
|
||||
|
||||
await Layers.insert(this.layer);
|
||||
|
||||
//zoom to 500%
|
||||
Layers.Base_gui.GUI_preview.zoom(500); //change zoom power
|
||||
|
||||
setTimeout(function () {
|
||||
Layers.Base_gui.GUI_preview.zoom_to_position(0, 0);
|
||||
Layers.Base_gui.GUI_preview.zoom(500);
|
||||
}, 100);
|
||||
|
||||
//do this after system changed zoom position
|
||||
setTimeout(function () {
|
||||
//move visible area to begin of rectangle
|
||||
Layers.Base_gui.GUI_preview.zoom_to_position(500, 500); //change zoom position
|
||||
}, 200);
|
||||
|
||||
}, 500);
|
||||
|
||||
//action after 1 s - for preview purpose
|
||||
setTimeout(function () {
|
||||
//move visible area so rect is in center
|
||||
|
||||
|
||||
var visible_area = Layers.Base_gui.get_visible_area_size();
|
||||
|
||||
|
||||
//center of rect
|
||||
var cx = 500 + 50/2;
|
||||
var cy = 500 + 50/2;
|
||||
|
||||
var cx = canvas_width/2;
|
||||
var cy = canvas_height/2;
|
||||
|
||||
//calc needed coords
|
||||
var x = cx - visible_area.width / 2;
|
||||
var y = cy - visible_area.height / 2;
|
||||
|
||||
|
||||
Layers.Base_gui.GUI_preview.zoom_to_position(x, y); //change zoom position
|
||||
}, 1000);
|
||||
}
|
||||
|
||||
|
Before Width: | Height: | Size: 398 B After Width: | Height: | Size: 4.5 KiB |
13
images/favicon.svg
Normal file
@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- Generator: Adobe Illustrator 18.1.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 298.73 298.73" style="enable-background:new 0 0 298.73 298.73;" xml:space="preserve">
|
||||
<g>
|
||||
<path style="fill:#010002;" d="M264.959,9.35H33.787C15.153,9.35,0,24.498,0,43.154v212.461c0,18.634,15.153,33.766,33.787,33.766
|
||||
h231.171c18.634,0,33.771-15.132,33.771-33.766V43.154C298.73,24.498,283.593,9.35,264.959,9.35z M193.174,59.623
|
||||
c18.02,0,32.634,14.615,32.634,32.634s-14.615,32.634-32.634,32.634c-18.025,0-32.634-14.615-32.634-32.634
|
||||
S175.149,59.623,193.174,59.623z M254.363,258.149H149.362H49.039c-9.013,0-13.027-6.521-8.964-14.566l56.006-110.93
|
||||
c4.058-8.044,11.792-8.762,17.269-1.605l56.316,73.596c5.477,7.158,15.05,7.767,21.386,1.354l13.777-13.951
|
||||
c6.331-6.413,15.659-5.619,20.826,1.762l35.675,50.959C266.487,252.16,263.376,258.149,254.363,258.149z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.0 KiB |
5
images/icons/arrow-down.svg
Normal file
@ -0,0 +1,5 @@
|
||||
<svg width="124" height="150" viewBox="0 0 124 150" xmlns="http://www.w3.org/2000/svg">
|
||||
<rect x="55" y="14" width="14" height="63"/>
|
||||
<rect x="116" width="14" height="61" transform="rotate(90 116 0)"/>
|
||||
<path d="M62 150L8.30643 75L115.694 75L62 150Z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 258 B |
@ -1,15 +0,0 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
|
||||
<g>
|
||||
<g>
|
||||
<path d="M435.204,126.967C387.398,94.1,324.11,76,257,76c-67.206,0-130.824,18.084-179.138,50.922C27.652,161.048,0,206.889,0,256
|
||||
c0,49.111,27.652,94.952,77.862,129.078C126.176,417.916,189.794,436,257,436c67.11,0,130.398-18.1,178.204-50.967
|
||||
C484.727,350.986,512,305.161,512,256S484.727,161.014,435.204,126.967z M418.208,360.312C375.354,389.774,318.103,406,257,406
|
||||
c-61.254,0-118.884-16.242-162.273-45.733C52.986,331.898,30,294.868,30,256s22.986-75.898,64.727-104.267
|
||||
C138.116,122.242,195.746,106,257,106c61.103,0,118.354,16.226,161.208,45.688C459.345,179.97,482,217.015,482,256
|
||||
S459.345,332.03,418.208,360.312z"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 1008 B |
@ -1,9 +0,0 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 512.001 512.001" style="enable-background:new 0 0 512.001 512.001;" xml:space="preserve">
|
||||
<g>
|
||||
<path d="M506.143,5.859c-7.811-7.811-20.475-7.811-28.285,0l-472,472c-7.811,7.811-7.811,20.474,0,28.284
|
||||
c3.905,3.906,9.024,5.858,14.142,5.858s10.237-1.953,14.143-5.858l472-472C513.954,26.333,513.954,13.67,506.143,5.859z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 610 B |
@ -1,13 +0,0 @@
|
||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="409.042px" height="409.043px" viewBox="0 0 409.042 409.043" style="enable-background:new 0 0 409.042 409.043;"
|
||||
xml:space="preserve">
|
||||
<g>
|
||||
<path d="M389.433,72.762H19.611C8.797,72.762,0,81.558,0,92.374V316.67c0,10.818,8.797,19.611,19.611,19.611h369.822
|
||||
c10.812,0,19.609-8.793,19.609-19.611V92.374C409.042,81.558,400.246,72.762,389.433,72.762z M392.234,316.67
|
||||
c0,1.555-1.26,2.802-2.801,2.802H19.611c-1.546,0-2.802-1.247-2.802-2.802V92.374c0-1.546,1.256-2.802,2.802-2.802h369.822
|
||||
c1.541,0,2.801,1.255,2.801,2.802V316.67z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 913 B |
6
images/icons/shape.svg
Normal file
@ -0,0 +1,6 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="1 2 31 27" x="0px" y="0px">
|
||||
<title>shapes</title>
|
||||
<g>
|
||||
<path d="M30.87,16.33l-7.5-13a1,1,0,0,0-1.73,0l-5,8.69a8.15,8.15,0,0,0-1.61,0V7a1,1,0,0,0-1-1H2A1,1,0,0,0,1,7V19a1,1,0,0,0,1,1H8a8,8,0,1,0,15.69-2.17H30a1,1,0,0,0,.87-1.5ZM3,18V8H13v4.58l0,0A8,8,0,0,0,8.28,18H3Zm13,8a6,6,0,0,1-6-6,4.62,4.62,0,0,1,.07-.86,6,6,0,0,1,4.22-4.89A5.92,5.92,0,0,1,16,14a5.29,5.29,0,0,1,1,.09A6,6,0,0,1,16,26Zm6.83-10.17h0a8,8,0,0,0-4.12-3.34l0,0L22.5,5.84l5.77,10Z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 514 B |
1
images/icons/undo.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M18.885 3.515c-4.617-4.618-12.056-4.676-16.756-.195l-2.129-2.258v7.938h7.484l-2.066-2.191c2.82-2.706 7.297-2.676 10.073.1 4.341 4.341 1.737 12.291-5.491 12.291v4.8c3.708 0 6.614-1.244 8.885-3.515 4.686-4.686 4.686-12.284 0-16.97z"/></svg>
|
||||
|
After Width: | Height: | Size: 330 B |
BIN
images/manifest/144x144.png
Normal file
|
After Width: | Height: | Size: 6.6 KiB |
BIN
images/manifest/168x168.png
Normal file
|
After Width: | Height: | Size: 7.6 KiB |
BIN
images/manifest/192x192.png
Normal file
|
After Width: | Height: | Size: 9.1 KiB |
BIN
images/manifest/48x48.png
Normal file
|
After Width: | Height: | Size: 2.2 KiB |
BIN
images/manifest/72x72.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
images/manifest/96x96.png
Normal file
|
After Width: | Height: | Size: 4.2 KiB |
40
index.html
@ -7,7 +7,8 @@
|
||||
<meta name="description" content="miniPaint is free online image editor using HTML5. Edit, adjust your images, add effects online in your browser, without installing anything..." />
|
||||
<meta name="keywords" content="photo, image, picture, transparent, layers, free, edit, html5, canvas, javascript, online, photoshop, gimp, effects, sharpen, blur, magic eraser tool, clone tool, rotate, resize, photoshop online, online tools, tilt shift, sprites, keypoints" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=0" />
|
||||
<link rel="shortcut icon" href="images/favicon.png?v2" />
|
||||
<link rel="icon" sizes="192x192" href="images/favicon.png">
|
||||
<!-- <link rel="manifest" href="dist/manifest.json"> -->
|
||||
<!-- Google -->
|
||||
<meta itemprop="name" content="miniPaint" />
|
||||
<meta itemprop="description" content="miniPaint is free online image editor using HTML5. Edit, adjust your images, add effects online in your browser, without installing anything..." />
|
||||
@ -36,19 +37,29 @@
|
||||
<div class="submenu">
|
||||
<a class="logo" href="#">miniPaint</a>
|
||||
<div class="block attributes" id="action_attributes"></div>
|
||||
<button class="undo_button" id="undo_button" type="button">
|
||||
<span class="sr_only">Undo</span>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="sidebar_left" id="tools_container"></div>
|
||||
|
||||
<div class="main_wrapper" id="main_wrapper">
|
||||
<div class="canvas_wrapper" id="canvas_wrapper">
|
||||
<div id="mouse"></div>
|
||||
<div class="transparent-grid" id="canvas_minipaint_background"></div>
|
||||
<canvas id="canvas_minipaint">
|
||||
<div class="trn error">
|
||||
Your browser does not support canvas or JavaScript is not enabled.
|
||||
</div>
|
||||
</canvas>
|
||||
|
||||
|
||||
<div class="middle_area" id="middle_area">
|
||||
|
||||
<canvas class="ruler_left" id="ruler_left"></canvas>
|
||||
<canvas class="ruler_top" id="ruler_top"></canvas>
|
||||
|
||||
<div class="main_wrapper" id="main_wrapper">
|
||||
<div class="canvas_wrapper" id="canvas_wrapper">
|
||||
<div id="mouse"></div>
|
||||
<div class="transparent-grid" id="canvas_minipaint_background"></div>
|
||||
<canvas id="canvas_minipaint">
|
||||
<div class="trn error">
|
||||
Your browser does not support canvas or JavaScript is not enabled.
|
||||
</div>
|
||||
</canvas>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -70,7 +81,7 @@
|
||||
|
||||
<div class="details block" id="details_base">
|
||||
<h2 class="trn toggle toggle-full" data-target="toggle_details">Layer details</h2>
|
||||
<div class="content" id="toggle_details"></div>
|
||||
<div class="content details-content" id="toggle_details"></div>
|
||||
</div>
|
||||
|
||||
<div class="layers block">
|
||||
@ -80,11 +91,14 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="mobile_menu">
|
||||
<button class="left_mobile_menu" id="left_mobile_menu_button" type="button">
|
||||
<span class="sr_only">Toggle Menu</span>
|
||||
</button>
|
||||
<button class="right_mobile_menu" id="mobile_menu_button" type="button">
|
||||
<span class="sr_only">Toggle Menu</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="hidden" id="tmp"></div>
|
||||
<div id="popup"></div>
|
||||
<div id="popups"></div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
41
manifest-disabled.json
Normal file
@ -0,0 +1,41 @@
|
||||
{
|
||||
"name": "miniPaint",
|
||||
"short_name": "miniPaint",
|
||||
"start_url": "/",
|
||||
"display": "standalone",
|
||||
"orientation": "landscape",
|
||||
"background_color": "#666d6f",
|
||||
"description": "miniPaint is free online image editor using HTML5.",
|
||||
"icons": [
|
||||
{
|
||||
"src": "images/manifest/48x48.png",
|
||||
"sizes": "48x48",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "images/manifest/72x72.png",
|
||||
"sizes": "72x72",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "images/manifest/96x96.png",
|
||||
"sizes": "96x96",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "images/manifest/144x144.png",
|
||||
"sizes": "144x144",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "images/manifest/168x168.png",
|
||||
"sizes": "168x168",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "images/manifest/192x192.png",
|
||||
"sizes": "192x192",
|
||||
"type": "image/png"
|
||||
}
|
||||
]
|
||||
}
|
||||
14655
package-lock.json
generated
35
package.json
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "miniPaint",
|
||||
"version": "4.4.0",
|
||||
"version": "4.14.2",
|
||||
"author": "Vilius L.",
|
||||
"description": "Online graphics editing tool lets create, edit images using HTML5 technologies.",
|
||||
"keywords": [
|
||||
@ -11,7 +11,7 @@
|
||||
"effects"
|
||||
],
|
||||
"scripts": {
|
||||
"server": "webpack-dev-server --mode development --open",
|
||||
"server": "webpack serve --mode development --env development --open",
|
||||
"dev": "webpack --mode development",
|
||||
"build": "webpack --mode production"
|
||||
},
|
||||
@ -22,27 +22,30 @@
|
||||
"homepage": "https://github.com/viliusle/miniPaint",
|
||||
"license": "MIT",
|
||||
"devDependencies": {
|
||||
"babel-core": "^6.26.3",
|
||||
"babel-loader": "^7.1.5",
|
||||
"babel-preset-env": "^1.7.0",
|
||||
"css-loader": "^3.6.0",
|
||||
"source-map-loader": "^0.2.4",
|
||||
"style-loader": "^0.21.0",
|
||||
"webpack": "^4.43.0",
|
||||
"webpack-cli": "^3.3.12",
|
||||
"webpack-dev-server": "^3.11.0"
|
||||
"@babel/core": "^7.14.5",
|
||||
"@babel/plugin-transform-runtime": "^7.14.5",
|
||||
"@babel/preset-env": "^7.14.5",
|
||||
"babel-loader": "^8.2.2",
|
||||
"css-loader": "^5.2.6",
|
||||
"source-map-loader": "^3.0.0",
|
||||
"style-loader": "^2.0.0",
|
||||
"webpack": "^5.76.0",
|
||||
"webpack-cli": "^4.7.2",
|
||||
"webpack-dev-server": "^4.3.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.14.5",
|
||||
"alertifyjs": "^1.13.1",
|
||||
"babel-polyfill": "^6.26.0",
|
||||
"blueimp-canvas-to-blob": "^3.27.0",
|
||||
"blueimp-canvas-to-blob": "^3.28.0",
|
||||
"exif-js": "^2.3.0",
|
||||
"file-saver": "^1.3.3",
|
||||
"file-saver": "^2.0.5",
|
||||
"fuzzysort": "^1.1.4",
|
||||
"gif.js.optimized": "^1.0.1",
|
||||
"hermite-resize": "git+https://github.com/viliusle/Hermite-resize.git",
|
||||
"jquery": "^3.5.1",
|
||||
"pica": "^5.3.0",
|
||||
"terser": "^3.17.0",
|
||||
"pica": "^7.0.0",
|
||||
"semver-compare": "^1.0.0",
|
||||
"uuid": "^8.3.2",
|
||||
"webfontloader": "^1.6.28"
|
||||
}
|
||||
}
|
||||
|
||||
68
service-worker.js
Normal file
@ -0,0 +1,68 @@
|
||||
|
||||
//IMPORTANT - this file is not used !!!
|
||||
|
||||
|
||||
// use a cacheName for cache versioning
|
||||
var cacheName = 'v1:static';
|
||||
|
||||
// during the install phase you usually want to cache static assets
|
||||
self.addEventListener('install', function(e) {
|
||||
// once the SW is installed, go ahead and fetch the resources to make this work offline
|
||||
e.waitUntil(
|
||||
caches.open(cacheName).then(function(cache) {
|
||||
return cache.addAll([
|
||||
'./',
|
||||
'./dist/bundle.js',
|
||||
'./images/favicon.png',
|
||||
'./images/logo.svg',
|
||||
'./images/logo-colors.png',
|
||||
'./images/icons/animation.svg',
|
||||
'./images/icons/blur.svg',
|
||||
'./images/icons/bold.svg',
|
||||
'./images/icons/brush.svg',
|
||||
'./images/icons/bulge_pinch.svg',
|
||||
'./images/icons/clone.svg',
|
||||
'./images/icons/crop.svg',
|
||||
'./images/icons/delete.svg',
|
||||
'./images/icons/desaturate.svg',
|
||||
'./images/icons/erase.svg',
|
||||
'./images/icons/external.png',
|
||||
'./images/icons/fill.svg',
|
||||
'./images/icons/gradient.png',
|
||||
'./images/icons/grid.png',
|
||||
'./images/icons/italic.svg',
|
||||
'./images/icons/magic_erase.svg',
|
||||
'./images/icons/media.svg',
|
||||
'./images/icons/menu.svg',
|
||||
'./images/icons/pencil.svg',
|
||||
'./images/icons/pick_color.svg',
|
||||
'./images/icons/refresh.svg',
|
||||
'./images/icons/select.svg',
|
||||
'./images/icons/selection.svg',
|
||||
'./images/icons/shape.svg',
|
||||
'./images/icons/sharpen.svg',
|
||||
'./images/icons/strikethrough.svg',
|
||||
'./images/icons/text.svg',
|
||||
'./images/icons/underline.svg',
|
||||
'./images/icons/view.svg'
|
||||
]).then(function() {
|
||||
self.skipWaiting();
|
||||
});
|
||||
})
|
||||
);
|
||||
});
|
||||
|
||||
// when the browser fetches a url
|
||||
self.addEventListener('fetch', function(event) {
|
||||
// either respond with the cached object or go ahead and fetch the actual url
|
||||
event.respondWith(
|
||||
caches.match(event.request).then(function(response) {
|
||||
if (response) {
|
||||
// retrieve from cache
|
||||
return response;
|
||||
}
|
||||
// fetch as normal
|
||||
return fetch(event.request);
|
||||
})
|
||||
);
|
||||
});
|
||||
@ -692,4 +692,41 @@ button img{
|
||||
.ui_toggle_button[aria-pressed="true"]:before {
|
||||
background-color: var(--button-text-color-active);
|
||||
background-image: url('data:image/svg+xml;utf8,<svg width="0.7em" height="1em" viewBox="0 0 16 16" class="bi bi-check2" fill="currentColor" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M13.854 3.646a.5.5 0 0 1 0 .708l-7 7a.5.5 0 0 1-.708 0l-3.5-3.5a.5.5 0 1 1 .708-.708L6.5 10.293l6.646-6.647a.5.5 0 0 1 .708 0z"/></svg>');
|
||||
}
|
||||
|
||||
/* media */
|
||||
|
||||
.media-paging{
|
||||
width: 100%;
|
||||
margin: 10px 0;
|
||||
text-align: center;
|
||||
}
|
||||
.media-paging button{
|
||||
background-color: var(--button-background-color);
|
||||
color: var(--text-color);
|
||||
}
|
||||
.media-paging button.selected{
|
||||
background-color: var(--background-color-active);
|
||||
color: var(--text-color-active);
|
||||
}
|
||||
|
||||
/* global search */
|
||||
#global_search_results{
|
||||
padding-top: 10px;
|
||||
font-size: 14px;
|
||||
}
|
||||
#global_search_results .search-result {
|
||||
padding: 3px 5px;
|
||||
}
|
||||
#global_search_results .search-result.active{
|
||||
background-color: var(--background-color-active);
|
||||
color: var(--text-color-active);
|
||||
border-radius: 2px;
|
||||
}
|
||||
#global_search_results b{
|
||||
color: var(--text-color-red);
|
||||
}
|
||||
|
||||
.popup.shortcuts table{
|
||||
line-height: 1;
|
||||
}
|
||||
@ -174,6 +174,27 @@ body .sp-preview{
|
||||
font-size:15px;
|
||||
font-weight:bold;
|
||||
}
|
||||
.undo_button {
|
||||
display: none;
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
top: 0;
|
||||
border: 0;
|
||||
outline: none;
|
||||
cursor: pointer;
|
||||
filter: var(--mobile-menu-toggle-filter);
|
||||
background: url(images/icons/undo.svg) no-repeat center center;
|
||||
background-size: auto 25px;
|
||||
margin-left: 10px;
|
||||
}
|
||||
.undo_button:hover {
|
||||
background-color: transparent;
|
||||
}
|
||||
@media screen and (max-width: 700px){
|
||||
.undo_button {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
/* ========== sub-header ==================================================== */
|
||||
|
||||
@ -278,27 +299,21 @@ body .sp-preview{
|
||||
filter: var(--menu-icons-filter-active);
|
||||
}
|
||||
|
||||
/*
|
||||
IMPORTANT: any new icon should also must be added on /service-worker.js + its version should be updated - FEATURE DISABLED
|
||||
*/
|
||||
.sidebar_left .select:after{ background-image: url('images/icons/select.svg'); }
|
||||
.sidebar_left .selection:after{ background-image: url('images/icons/selection.svg'); }
|
||||
.sidebar_left .brush:after{ background-image: url('images/icons/brush.svg'); }
|
||||
.sidebar_left .pencil:after{ background-image: url('images/icons/pencil.svg'); }
|
||||
.sidebar_left .pick_color:after{ background-image: url('images/icons/pick_color.svg'); }
|
||||
.sidebar_left .erase:after{ background-image: url('images/icons/erase.svg'); }
|
||||
.sidebar_left .magic_erase:after{ background-image: url('../../images/icons/magic_erase.svg'); }
|
||||
.sidebar_left .magic_erase:after{ background-image: url('images/icons/magic_erase.svg'); }
|
||||
.sidebar_left .fill:after{ background-image: url('images/icons/fill.svg'); }
|
||||
.sidebar_left .line:after{ background-image: url('images/icons/line.svg'); }
|
||||
.sidebar_left .rectangle:after{ background-image: url('images/icons/rectangle.svg'); }
|
||||
.sidebar_left .circle:after{ background-image: url('images/icons/circle.svg'); }
|
||||
.sidebar_left .media:after{ background-image: url('images/icons/media.svg'); }
|
||||
.sidebar_left .text:after{
|
||||
background-image: url('images/icons/text.svg');
|
||||
background-size: 16px auto;
|
||||
}
|
||||
.sidebar_left .gradient:after{
|
||||
background-image: url('images/icons/gradient.png');
|
||||
background-size: 18px 12px;
|
||||
filter: none;
|
||||
}
|
||||
.sidebar_left .shape:after{ background-image: url('images/icons/shape.svg'); }
|
||||
.sidebar_left .text:after{ background-image: url('images/icons/text.svg'); background-size: 16px auto; }
|
||||
.sidebar_left .gradient:after{ background-image: url('images/icons/gradient.png'); background-size: 18px 12px; filter: none; }
|
||||
.sidebar_left .clone:after{ background-image: url('images/icons/clone.svg'); }
|
||||
.sidebar_left .crop:after{ background-image: url('images/icons/crop.svg'); }
|
||||
.sidebar_left .blur:after{ background-image: url('images/icons/blur.svg'); }
|
||||
@ -322,8 +337,6 @@ body .sp-preview{
|
||||
z-index: 2;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
background-color: #424F5A;
|
||||
background-color: var(--background-color);
|
||||
transition: 0.2s;
|
||||
overflow-x: hidden;
|
||||
overflow-y: scroll;
|
||||
@ -349,6 +362,9 @@ body .sp-preview{
|
||||
.canvas_preview_details{
|
||||
padding: 0 5px;
|
||||
}
|
||||
.canvas_preview_details button{
|
||||
margin: 0;
|
||||
}
|
||||
.preview canvas{
|
||||
cursor: pointer;
|
||||
}
|
||||
@ -383,6 +399,7 @@ body .sp-preview{
|
||||
.layer_add{
|
||||
display:inline-block;
|
||||
padding:1px 8px;
|
||||
margin-right: 10px;
|
||||
background-color: #419147;
|
||||
background-color: var(--background-color-active);
|
||||
border:1px solid #444;
|
||||
@ -398,6 +415,8 @@ body .sp-preview{
|
||||
display:block;
|
||||
padding:1px 5px 3px 5px;
|
||||
height:19px;
|
||||
width: calc(100% - 44px);
|
||||
text-align: left;
|
||||
overflow:hidden;
|
||||
background-color:#989898;
|
||||
background-color: var(--area-background-color);
|
||||
@ -410,10 +429,32 @@ body .sp-preview{
|
||||
color:var(--text-color);
|
||||
white-space: nowrap;
|
||||
}
|
||||
.layers_list .item.shorter .layer_name{
|
||||
width: calc(100% - 63px);
|
||||
}
|
||||
.layers_list .item.active .layer_name{
|
||||
background-color: var(--background-color-active);
|
||||
color: var(--text-color-active);
|
||||
}
|
||||
.layers_list .arrow_down{
|
||||
position: relative;
|
||||
float:left;
|
||||
margin-right: 5px;
|
||||
width:10px;
|
||||
height:19px;
|
||||
opacity: 0.4;
|
||||
}
|
||||
.layers_list .arrow_down:after{
|
||||
position: absolute;
|
||||
content: '';
|
||||
left:0;
|
||||
top:0;
|
||||
bottom:0;
|
||||
right:0;
|
||||
filter: var(--menu-icons-filter);
|
||||
background: url('images/icons/arrow-down.svg') no-repeat center center;
|
||||
background-size: 12px auto;
|
||||
}
|
||||
.layers_list .visibility{
|
||||
position: relative;
|
||||
float:left;
|
||||
@ -423,6 +464,9 @@ body .sp-preview{
|
||||
width:20px;
|
||||
height:19px;
|
||||
opacity:0.1;
|
||||
border: none;
|
||||
background: transparent;
|
||||
box-shadow: none;
|
||||
}
|
||||
.layers_list .visibility:after{
|
||||
position: absolute;
|
||||
@ -443,8 +487,10 @@ body .sp-preview{
|
||||
width:12px;
|
||||
height:19px;
|
||||
margin-left: 5px;
|
||||
background: url(images/icons/delete.svg) no-repeat center center;
|
||||
background: transparent url(images/icons/delete.svg) no-repeat center center;
|
||||
background-size: 10px 10px;
|
||||
border: none;
|
||||
box-shadow: none;
|
||||
}
|
||||
/* filters */
|
||||
.layers_list .filters{
|
||||
@ -468,22 +514,36 @@ body .sp-preview{
|
||||
}
|
||||
.sidebar_right .label{
|
||||
display: inline-block;
|
||||
width: 60px;
|
||||
}
|
||||
.info .toggle.toggled{
|
||||
margin-bottom: -3px;
|
||||
}
|
||||
.block.details .row{
|
||||
clear:both;
|
||||
margin-bottom: 2px;
|
||||
margin-bottom: 4px;
|
||||
min-height: 23px;
|
||||
}
|
||||
.block.details input[type="number"]{
|
||||
width: 70px;
|
||||
padding: 3px 5px;
|
||||
float: right;
|
||||
}
|
||||
.block.details .ui_color_input{
|
||||
width: 70px;
|
||||
float: right;
|
||||
}
|
||||
.block.details .ui_color_input input{
|
||||
width: 100%;
|
||||
height: 23px;
|
||||
}
|
||||
.block.details button.ui_toggle_button{
|
||||
width: 90px;
|
||||
float: right;
|
||||
}
|
||||
.block.details select{
|
||||
width: calc(100% - 70px);
|
||||
height: 23px;
|
||||
float: right;
|
||||
}
|
||||
.block.details button{
|
||||
width: calc(100% - 70px);
|
||||
@ -493,6 +553,8 @@ body .sp-preview{
|
||||
.block.details button.reset{
|
||||
position: relative;
|
||||
width: 25px;
|
||||
float: right;
|
||||
margin-right: 3px;
|
||||
overflow: hidden;
|
||||
opacity: 0.5;
|
||||
color: transparent;
|
||||
@ -512,8 +574,28 @@ body .sp-preview{
|
||||
background-color: var(--background-color-active);
|
||||
color: var(--text-color-active);
|
||||
}
|
||||
.details-content{
|
||||
height: 206px;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
@media screen and (max-width:700px){
|
||||
body{
|
||||
padding-top:50px;
|
||||
}
|
||||
.wrapper{
|
||||
top: 50px;
|
||||
}
|
||||
.sidebar_left{
|
||||
position: absolute;
|
||||
left: -90px;
|
||||
background: var(--background);
|
||||
}
|
||||
.sidebar_left.active{
|
||||
box-shadow: -5px 0px 10px 0px rgba(0,0,0,0.75);
|
||||
left: 0;
|
||||
z-index: 3;
|
||||
}
|
||||
.sidebar_right{
|
||||
position: absolute;
|
||||
height: 100%;
|
||||
@ -529,15 +611,41 @@ body .sp-preview{
|
||||
|
||||
/* ========== content ======================================================= */
|
||||
|
||||
.main_wrapper{
|
||||
.ruler_left{
|
||||
display: none;
|
||||
position: absolute;
|
||||
left:0;
|
||||
top: 20px;
|
||||
background-color: #ccc;
|
||||
}
|
||||
.ruler_top{
|
||||
display: none;
|
||||
position: absolute;
|
||||
left: 20px;
|
||||
top:0;
|
||||
background-color: #ccc;
|
||||
}
|
||||
.middle_area{
|
||||
position: relative;
|
||||
-ms-grid-row: 2;
|
||||
-ms-grid-column: 2;
|
||||
grid-area: main;
|
||||
}
|
||||
.main_wrapper{
|
||||
position:absolute;
|
||||
top:0;
|
||||
right:0;
|
||||
bottom:0;
|
||||
left:0;
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
.middle_area.has-ruler .main_wrapper{
|
||||
top: 20px;
|
||||
left: 20px;
|
||||
}
|
||||
.canvas_wrapper{
|
||||
position:relative;
|
||||
}
|
||||
@ -571,13 +679,7 @@ body .sp-preview{
|
||||
/*background: url(images/icons/grid.png) repeat top left;*/
|
||||
background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAQElEQVQ4T2N89+7dfwYigKCgIBGqGBgYRw3EGU6jYYgzaIZAsvn//z9ROeX9+/fE5ZRRA3GG02gY4s4pgz7ZAAAnSWvHPkHXaAAAAABJRU5ErkJggg==') repeat top left;
|
||||
z-index:1;
|
||||
/* disable antialiasing */
|
||||
image-rendering: optimizeSpeed;
|
||||
image-rendering: -moz-crisp-edges;
|
||||
image-rendering: -webkit-optimize-contrast;
|
||||
image-rendering: -o-crisp-edges;
|
||||
image-rendering: pixelated;
|
||||
-ms-interpolation-mode: nearest-neighbor;
|
||||
image-rendering: pixelated; /* disable antialiasing */
|
||||
}
|
||||
.transparent-grid.white{
|
||||
background:white;
|
||||
@ -626,20 +728,12 @@ canvas{
|
||||
background-color: #ddd;
|
||||
}
|
||||
|
||||
@media screen and (max-width:700px){
|
||||
body{
|
||||
padding-top:50px;
|
||||
}
|
||||
.wrapper{
|
||||
top: 50px;
|
||||
}
|
||||
}
|
||||
@media screen and (max-width:550px){
|
||||
.canvas_wrapper{
|
||||
margin-left: 0px;
|
||||
}
|
||||
}
|
||||
@media screen and (max-height: 740px){
|
||||
@media screen and (max-height: 690px){
|
||||
.sidebar_left{
|
||||
width: 75px;
|
||||
}
|
||||
|
||||
@ -194,12 +194,9 @@
|
||||
.mobile_menu {
|
||||
display: block;
|
||||
}
|
||||
.left_mobile_menu {
|
||||
display: none;
|
||||
}
|
||||
.main_menu > ul.menu_bar {
|
||||
height: 50px;
|
||||
padding-left: 0;
|
||||
padding-left: 50px;
|
||||
padding-right: 50px;
|
||||
}
|
||||
}
|
||||
@ -1,4 +1,11 @@
|
||||
#popup {
|
||||
#popups:not(:empty) {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
}
|
||||
#popups .popup {
|
||||
position:fixed;
|
||||
display:none;
|
||||
top: 15vh;
|
||||
@ -18,13 +25,13 @@
|
||||
font-size: 13px;
|
||||
overflow: hidden;
|
||||
}
|
||||
#popup.wide{
|
||||
#popups .popup.wide{
|
||||
max-width: 840px;
|
||||
}
|
||||
#popup a{
|
||||
#popups .popup a{
|
||||
color: var(--link-color);
|
||||
}
|
||||
#popup h2{
|
||||
#popups .popup h2{
|
||||
display: block;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
@ -40,12 +47,12 @@
|
||||
z-index: 0;
|
||||
cursor:move;
|
||||
}
|
||||
#popup #dialog_content {
|
||||
#popups .popup .dialog_content {
|
||||
overflow-y: auto;
|
||||
max-height: calc(80vh - 9rem);
|
||||
max-height: calc(80vh - 11rem);
|
||||
padding: 1rem;
|
||||
}
|
||||
#popup .buttons{
|
||||
#popups .popup .buttons{
|
||||
position: absolute;
|
||||
background-color: var(--block-background-color);
|
||||
bottom: 0;
|
||||
@ -57,8 +64,9 @@
|
||||
padding: .5rem 0;
|
||||
text-align: center;
|
||||
border-top: 1px solid var(--header-background-color);
|
||||
z-index: 3;
|
||||
}
|
||||
#popup .close{
|
||||
#popups .popup .close{
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
@ -72,32 +80,32 @@
|
||||
background: none;
|
||||
z-index: 1;
|
||||
}
|
||||
#popup input[type="range"]{
|
||||
#popups .popup input[type="range"]{
|
||||
margin:0;
|
||||
width: 100%;
|
||||
}
|
||||
#popup table{
|
||||
#popups .popup table{
|
||||
box-sizing: border-box;
|
||||
width: 100%;
|
||||
}
|
||||
#popup td, #popup th{
|
||||
#popups .popup td, #popups .popup th{
|
||||
height: 25px;
|
||||
}
|
||||
#popup td{
|
||||
#popups .popup td{
|
||||
vertical-align: middle;
|
||||
}
|
||||
#popup th{
|
||||
#popups .popup th{
|
||||
text-align:left;
|
||||
padding: 5px 5px 5px 0;
|
||||
width: 130px;
|
||||
}
|
||||
#popup textarea{
|
||||
#popups .popup textarea{
|
||||
color: var(--input-text-color);
|
||||
width:100%;
|
||||
border:1px solid #393939;
|
||||
padding-left:5px;
|
||||
}
|
||||
#popup .button{
|
||||
#popups .popup .button{
|
||||
margin: 0 3px;
|
||||
background-color: rgba(255, 255, 255, 0.2);
|
||||
background-color: var(--button-background-color);
|
||||
@ -106,81 +114,158 @@
|
||||
border:1px solid var(--border-color);
|
||||
padding: 5px 10px;
|
||||
}
|
||||
#popup input[type="text"], #popup input[type="number"], #popup textarea{
|
||||
#popups .popup input[type="text"], #popups .popup input[type="number"], #popups .popup textarea{
|
||||
width:100%;
|
||||
}
|
||||
#popup input[type="number"]{
|
||||
#popups .popup input[type="number"]{
|
||||
width:100px;
|
||||
}
|
||||
#popup input[type="radio"], #popup input[type="checkbox"]{
|
||||
#popups .popup input[type="radio"], #popups .popup input[type="checkbox"]{
|
||||
margin-left: 0;
|
||||
}
|
||||
#popup label span{
|
||||
#popups .popup label span{
|
||||
color:var(--text-color-muted);
|
||||
}
|
||||
#popup .checkbox label{
|
||||
#popups .popup .checkbox label{
|
||||
margin-top: 5px;
|
||||
color:var(--text-color-muted);
|
||||
}
|
||||
#popup .preview_container{
|
||||
#popups .popup .preview_container{
|
||||
margin-top:10px;
|
||||
margin-bottom:15px;
|
||||
text-align: center;
|
||||
}
|
||||
#popup .preview_canvas_left{
|
||||
#popups .popup .preview_canvas_left{
|
||||
position:relative;
|
||||
margin:0 5px 5px 0;
|
||||
border:1px solid #393939;
|
||||
display: inline-block;
|
||||
vertical-align: top;
|
||||
}
|
||||
#popup .preview_canvas_post_back{
|
||||
#popups .popup .preview_canvas_post_back{
|
||||
position:absolute;
|
||||
border:1px solid #393939;
|
||||
background-color:#ffffff;
|
||||
}
|
||||
#popup .preview_canvas_post{
|
||||
#popups .popup .preview_canvas_post{
|
||||
position:relative;
|
||||
border:1px solid #393939;
|
||||
}
|
||||
#popup .canvas_preview_container{
|
||||
#popups .popup .canvas_preview_container{
|
||||
position:relative;
|
||||
display: inline-block;
|
||||
vertical-align: top;
|
||||
}
|
||||
#popup .radios label{
|
||||
#popups .popup .radios label{
|
||||
display: inline-block;
|
||||
margin-right: 10px;
|
||||
}
|
||||
#popup .range_value{
|
||||
#popups .popup .range_value{
|
||||
padding-left:10px;
|
||||
width:50px;
|
||||
}
|
||||
#popup .long_text_value{
|
||||
#popups .popup .long_text_value{
|
||||
font-size: 12px;
|
||||
}
|
||||
#popups .popup .preview-item-title{
|
||||
text-align: center;
|
||||
max-width: 150px;
|
||||
}
|
||||
#popups .popup .field_comment{
|
||||
display: inline-block;
|
||||
margin-left: 10px;
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
#popups .popup .selection_card {
|
||||
background: var(--input-background-color);
|
||||
display: block;
|
||||
width: 100%;
|
||||
padding: 0;
|
||||
border-bottom: 0.1rem solid var(--input-border-color);
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
}
|
||||
#popups .popup .selection_card:first-child {
|
||||
margin-top: 1rem;
|
||||
border-radius: var(--input-border-radius) var(--input-border-radius) 0 0;
|
||||
}
|
||||
#popups .popup .selection_card:last-child {
|
||||
border-radius: 0 0 var(--input-border-radius) var(--input-border-radius);
|
||||
border-bottom: none;
|
||||
}
|
||||
#popups .popup .selection_card > input[type="checkbox"] {
|
||||
flex-grow: 0;
|
||||
flex-shrink: 0;
|
||||
margin: 0;
|
||||
cursor: pointer;
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 1.5rem;
|
||||
transform: translateY(-50%) scale(1.5);
|
||||
}
|
||||
#popups .popup .selection_card > input[type="checkbox"] + label {
|
||||
display: block;
|
||||
width: 100%;
|
||||
flex-grow: 1;
|
||||
flex-shrink: 1;
|
||||
margin: 0;
|
||||
padding: 1rem 0.5rem 1rem 5.5rem;
|
||||
cursor: pointer;
|
||||
}
|
||||
#popups .popup .selection_card > input[type="checkbox"] + label:hover {
|
||||
background: var(--input-background-color-hover);
|
||||
}
|
||||
#popups .popup .selection_card .font_preview {
|
||||
font-size: 1.6rem;
|
||||
height: 2.5rem;
|
||||
line-height: 2.5rem;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
#popups .popup .pagination {
|
||||
display: flex;
|
||||
text-align: center;
|
||||
margin: 1rem 0 0 0;
|
||||
}
|
||||
#popups .popup .pagination button {
|
||||
flex-grow: 0;
|
||||
height: 2.8rem;
|
||||
line-height: 2.8rem;
|
||||
border-radius: 0;
|
||||
margin-left: -1px;
|
||||
min-width: 3.3rem;
|
||||
}
|
||||
#popups .popup .pagination button:first-child {
|
||||
border-radius: var(--button-border-radius) 0 0 var(--button-border-radius);
|
||||
margin-left: auto;
|
||||
}
|
||||
#popups .popup .pagination button:last-child {
|
||||
border-radius: 0 var(--button-border-radius) var(--button-border-radius) 0;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
@media screen and (max-width:500px){
|
||||
#popup {
|
||||
#popups .popup {
|
||||
max-height: calc(80vh - 20px); /* mobile phones has bottom menu */
|
||||
}
|
||||
#popup tr{
|
||||
#popups .popup tr{
|
||||
display: block;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
#popup td, #popup th{
|
||||
#popups .popup td, #popups .popup th{
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: auto;
|
||||
padding: 5px;
|
||||
}
|
||||
#popup th{
|
||||
#popups .popup th{
|
||||
padding: 5px 5px 0px 5px;
|
||||
}
|
||||
#popup td{
|
||||
#popups .popup td{
|
||||
padding: 5px 5px 5px 5px;
|
||||
}
|
||||
#popup .range_value{
|
||||
#popups .popup .range_value{
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
:root {
|
||||
/* original - default */
|
||||
--background: #575e60;
|
||||
--background: #666d6f;
|
||||
--text-color: #f4f3f3;
|
||||
--text-color-muted: #c1c1c1;
|
||||
--text-color-red: #e38282;
|
||||
@ -12,13 +12,15 @@
|
||||
--block-background-color: #464d4f;
|
||||
--header-background-color: #373d3f;
|
||||
--button-background-color: #2f3739;
|
||||
--button-background-color-hover: #575f62;
|
||||
--button-background-color-hover: #75df72;
|
||||
--button-background-color-active: #4d5153;
|
||||
--button-shadow-color: rgba(0, 0, 0, 0.3);
|
||||
--button-text-color-active: #adecab;
|
||||
--button-border-radius: .4rem;
|
||||
--button-toggle-background-color: #575f62;
|
||||
--button-toggle-background-color-hover: #575f62;
|
||||
--input-background-color: #2f3739;
|
||||
--input-background-color-hover: #383f44;
|
||||
--input-text-color: #f4f3f3;
|
||||
--input-border-color: #0f0f0f;
|
||||
--input-border-color-active: #70996e;
|
||||
@ -56,7 +58,9 @@ body.theme-light{
|
||||
--button-text-color-active: #59aed8;
|
||||
--button-shadow-color: rgba(0, 0, 0, 0.1);
|
||||
--button-toggle-background-color: #b7b7b7;
|
||||
--button-toggle-background-color-hover: #b7b7b7;
|
||||
--input-background-color: #ffffff;
|
||||
--input-background-color-hover: #ddd;
|
||||
--input-text-color: #0c0c0d;
|
||||
--input-border-color: #ccc;
|
||||
--input-border-color-active: #59aed8;
|
||||
@ -90,7 +94,9 @@ body.theme-green{
|
||||
--button-background-color-active:#2b460f;
|
||||
--button-text-color-active: #ccc;
|
||||
--button-toggle-background-color: #243e05;
|
||||
--button-toggle-background-color-hover: #243e05;
|
||||
--input-background-color: #ffffff;
|
||||
--input-background-color-hover: #ddd;
|
||||
--input-text-color: #0c0c0d;
|
||||
--input-border-color: #ccc;
|
||||
--menu-background-color: #1c2e04;
|
||||
@ -114,14 +120,12 @@ html {
|
||||
font-size: 10px; /* Base is 10px for easy REM calculation */
|
||||
}
|
||||
body{
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
padding-top: 30px;
|
||||
margin: 0;
|
||||
padding: 30px 0 0 0;
|
||||
background-color: #424F5A;
|
||||
background: var(--background);
|
||||
font-size: 1.3rem;
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
color: #000000;
|
||||
color: var(--text-color);
|
||||
line-height: 1.4;
|
||||
font-weight: normal;
|
||||
@ -131,19 +135,9 @@ canvas{
|
||||
outline: none;
|
||||
/* disable select canvas */
|
||||
-webkit-touch-callout: none;
|
||||
-webkit-user-select: none;
|
||||
-khtml-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
-webkit-user-select: none;
|
||||
user-select: none;
|
||||
-webkit-tap-highlight-color: rgba(255, 255, 255, 0);
|
||||
/* disable antialiasing */
|
||||
image-rendering: optimizeSpeed;
|
||||
image-rendering: -moz-crisp-edges;
|
||||
image-rendering: -webkit-optimize-contrast;
|
||||
image-rendering: -o-crisp-edges;
|
||||
image-rendering: pixelated;
|
||||
-ms-interpolation-mode: nearest-neighbor;
|
||||
}
|
||||
img{
|
||||
border: none;
|
||||
@ -179,7 +173,7 @@ select{
|
||||
padding: 2px 4px;
|
||||
}
|
||||
input[type="range"]{
|
||||
margin-left:0px;
|
||||
margin-left: 0;
|
||||
width:100%;
|
||||
}
|
||||
button, input[type="button"]{
|
||||
@ -188,7 +182,7 @@ button, input[type="button"]{
|
||||
cursor: pointer;
|
||||
border: 1px solid var(--border-color);
|
||||
background-color: var(--button-background-color);
|
||||
color: var(--color-text);
|
||||
color: var(--text-color);
|
||||
}
|
||||
button:hover, input[type="button"]:hover{
|
||||
background-color: var(--button-background-color-hover);
|
||||
@ -204,6 +198,9 @@ button[aria-pressed="true"], input[type="button"][aria-pressed="true"]{
|
||||
button[aria-pressed="true"]:hover, input[type="button"][aria-pressed="true"]:hover{
|
||||
background-color: var(--button-background-color-hover);
|
||||
}
|
||||
button.ui_toggle_button:hover{
|
||||
background-color: var(--button-toggle-background-color-hover);
|
||||
}
|
||||
label{
|
||||
display: inline-block;
|
||||
vertical-align: top;
|
||||
@ -227,6 +224,7 @@ label{
|
||||
@supports not (zoom:2) {
|
||||
input[type="radio"], input[type=checkbox]{
|
||||
transform: scale(1.5);
|
||||
margin: 8px;
|
||||
transform-origin: left center;
|
||||
margin: 8px 12px 8px 0;
|
||||
}
|
||||
}
|
||||
|
||||
5
src/js/actions/_README.md
Normal file
@ -0,0 +1,5 @@
|
||||
# Managing Undo History with Actions
|
||||
|
||||
More information on wiki page:
|
||||
|
||||
https://github.com/viliusle/miniPaint/wiki/Undo-Redo-system
|
||||
145
src/js/actions/activate-tool.js
Normal file
@ -0,0 +1,145 @@
|
||||
import app from './../app.js';
|
||||
import config from './../config.js';
|
||||
import { Base_action } from './base.js';
|
||||
import alertify from './../../../node_modules/alertifyjs/build/alertify.min.js';
|
||||
|
||||
export class Activate_tool_action extends Base_action {
|
||||
/**
|
||||
* Groups multiple actions together in the undo/redo history, runs them all at once.
|
||||
*/
|
||||
constructor(key, ignore_same_tool) {
|
||||
super('activate_tool', 'Activate Tool');
|
||||
this.ignore_same_tool = !!ignore_same_tool;
|
||||
this.key = key;
|
||||
this.old_key = null;
|
||||
this.tool_leave_actions = null;
|
||||
this.tool_activate_actions = null;
|
||||
}
|
||||
|
||||
async do() {
|
||||
super.do();
|
||||
const key = this.key;
|
||||
this.old_key = app.GUI.GUI_tools.active_tool;
|
||||
|
||||
if (this.key !== this.old_key || this.ignore_same_tool) {
|
||||
|
||||
//reset last
|
||||
document.querySelector('#tools_container .' + this.old_key).classList.remove("active");
|
||||
|
||||
//send exit event to old previous tool
|
||||
if (config.TOOL.on_leave != undefined) {
|
||||
var moduleKey = config.TOOL.name;
|
||||
var functionName = config.TOOL.on_leave;
|
||||
this.tool_leave_actions = app.GUI.GUI_tools.tools_modules[moduleKey].object[functionName]();
|
||||
if (this.tool_leave_actions) {
|
||||
for (let action of this.tool_leave_actions) {
|
||||
await action.do();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//change active
|
||||
app.GUI.GUI_tools.active_tool = key;
|
||||
document.querySelector('#tools_container .' + app.GUI.GUI_tools.active_tool)
|
||||
.classList.add("active");
|
||||
for (let i in config.TOOLS) {
|
||||
if (config.TOOLS[i].name == app.GUI.GUI_tools.active_tool) {
|
||||
config.TOOL = config.TOOLS[i];
|
||||
}
|
||||
}
|
||||
|
||||
//check module
|
||||
if (app.GUI.GUI_tools.tools_modules[key] == undefined) {
|
||||
alertify.error('Tools class not found: ' + key);
|
||||
return;
|
||||
}
|
||||
|
||||
//set default cursor
|
||||
const mainWrapper = document.getElementById('main_wrapper');
|
||||
const defaultCursor = config.TOOL && config.TOOL.name === 'text' ? 'text' : 'default';
|
||||
if (mainWrapper.style.cursor != defaultCursor) {
|
||||
mainWrapper.style.cursor = defaultCursor;
|
||||
}
|
||||
|
||||
app.GUI.GUI_tools.show_action_attributes();
|
||||
app.GUI.GUI_tools.Helper.setCookie('active_tool', app.GUI.GUI_tools.active_tool);
|
||||
}
|
||||
|
||||
//send activate event to new tool
|
||||
if (config.TOOL.on_activate != undefined) {
|
||||
var moduleKey = config.TOOL.name;
|
||||
var functionName = config.TOOL.on_activate;
|
||||
this.tool_activate_actions = app.GUI.GUI_tools.tools_modules[moduleKey].object[functionName]();
|
||||
if (this.tool_activate_actions) {
|
||||
for (let action of this.tool_activate_actions) {
|
||||
await action.do();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
config.need_render = true;
|
||||
}
|
||||
|
||||
async undo() {
|
||||
super.undo();
|
||||
|
||||
// Undo activate actions
|
||||
if (this.tool_activate_actions) {
|
||||
for (let action of this.tool_activate_actions) {
|
||||
await action.undo();
|
||||
action.free();
|
||||
}
|
||||
this.tool_activate_actions = null;
|
||||
}
|
||||
|
||||
//reset last
|
||||
document.querySelector('#tools_container .' + this.key)
|
||||
.classList.remove("active");
|
||||
|
||||
//change active
|
||||
app.GUI.GUI_tools.active_tool = this.old_key;
|
||||
document.querySelector('#tools_container .' + app.GUI.GUI_tools.active_tool)
|
||||
.classList.add("active");
|
||||
for (let i in config.TOOLS) {
|
||||
if (config.TOOLS[i].name == app.GUI.GUI_tools.active_tool) {
|
||||
config.TOOL = config.TOOLS[i];
|
||||
}
|
||||
}
|
||||
|
||||
app.GUI.GUI_tools.show_action_attributes();
|
||||
app.GUI.GUI_tools.Helper.setCookie('active_tool', app.GUI.GUI_tools.active_tool);
|
||||
|
||||
//set default cursor
|
||||
const mainWrapper = document.getElementById('main_wrapper');
|
||||
const defaultCursor = config.TOOL && config.TOOL.name === 'text' ? 'text' : 'default';
|
||||
if (mainWrapper.style.cursor != defaultCursor) {
|
||||
mainWrapper.style.cursor = defaultCursor;
|
||||
}
|
||||
|
||||
// Undo leave actions
|
||||
if (this.tool_leave_actions) {
|
||||
for (let action of this.tool_leave_actions) {
|
||||
await action.undo();
|
||||
action.free();
|
||||
}
|
||||
this.tool_leave_actions = null;
|
||||
}
|
||||
|
||||
config.need_render = true;
|
||||
}
|
||||
|
||||
free() {
|
||||
if (this.tool_activate_actions) {
|
||||
for (let action of this.tool_activate_actions) {
|
||||
action.free();
|
||||
}
|
||||
this.tool_activate_actions = null;
|
||||
}
|
||||
if (this.tool_leave_actions) {
|
||||
for (let action of this.tool_leave_actions) {
|
||||
action.free();
|
||||
}
|
||||
this.tool_leave_actions = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
67
src/js/actions/add-layer-filter.js
Normal file
@ -0,0 +1,67 @@
|
||||
import app from './../app.js';
|
||||
import config from './../config.js';
|
||||
import { Base_action } from './base.js';
|
||||
|
||||
export class Add_layer_filter_action extends Base_action {
|
||||
/**
|
||||
* register new live filter
|
||||
*
|
||||
* @param {int} layer_id
|
||||
* @param {string} name
|
||||
* @param {object} params
|
||||
*/
|
||||
constructor(layer_id, name, params, filter_id) {
|
||||
super('add_layer_filter', 'Add Layer Filter');
|
||||
if (layer_id == null)
|
||||
layer_id = config.layer.id;
|
||||
this.layer_id = parseInt(layer_id);
|
||||
this.name = name;
|
||||
this.params = params;
|
||||
this.filter_id = filter_id;
|
||||
this.reference_layer = null;
|
||||
}
|
||||
|
||||
async do() {
|
||||
super.do();
|
||||
this.reference_layer = app.Layers.get_layer(this.layer_id);
|
||||
if (!this.reference_layer) {
|
||||
throw new Error('Aborted - layer with specified id doesn\'t exist');
|
||||
}
|
||||
var filter = {
|
||||
id: this.filter_id,
|
||||
name: this.name,
|
||||
params: this.params,
|
||||
};
|
||||
if(this.filter_id) {
|
||||
//update
|
||||
for(var i in this.reference_layer.filters) {
|
||||
if(this.reference_layer.filters[i].id == this.filter_id){
|
||||
this.reference_layer.filters[i] = filter;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else{
|
||||
//insert
|
||||
filter.id = Math.floor(Math.random() * 999999999) + 1; // A good UUID library would
|
||||
this.reference_layer.filters.push(filter);
|
||||
}
|
||||
config.need_render = true;
|
||||
app.GUI.GUI_layers.render_layers();
|
||||
}
|
||||
|
||||
async undo() {
|
||||
super.undo();
|
||||
if (this.reference_layer) {
|
||||
this.reference_layer.filters.pop();
|
||||
this.reference_layer = null;
|
||||
}
|
||||
config.need_render = true;
|
||||
app.GUI.GUI_layers.render_layers();
|
||||
}
|
||||
|
||||
free() {
|
||||
this.reference_layer = null;
|
||||
this.params = null;
|
||||
}
|
||||
}
|
||||
100
src/js/actions/autoresize-canvas.js
Normal file
@ -0,0 +1,100 @@
|
||||
import app from '../app.js';
|
||||
import config from '../config.js';
|
||||
import { Base_action } from './base.js';
|
||||
import Tools_settings_class from './../modules/tools/settings.js';
|
||||
|
||||
export class Autoresize_canvas_action extends Base_action {
|
||||
/**
|
||||
* autoresize canvas to layer size, based on dimensions, up - always, if 1 layer - down.
|
||||
*
|
||||
* @param {int} width
|
||||
* @param {int} height
|
||||
* @param {int} layer_id
|
||||
* @param {boolean} can_automate
|
||||
*/
|
||||
constructor(width, height, layer_id, can_automate = true, ignore_same_size = false) {
|
||||
super('autoresize_canvas', 'Auto-resize Canvas');
|
||||
this.Tools_settings = new Tools_settings_class();
|
||||
this.width = width;
|
||||
this.height = height;
|
||||
this.layer_id = layer_id;
|
||||
this.can_automate = can_automate;
|
||||
this.ignore_same_size = ignore_same_size;
|
||||
this.old_config_width = null;
|
||||
this.old_config_height = null;
|
||||
}
|
||||
|
||||
async do() {
|
||||
super.do();
|
||||
const width = this.width;
|
||||
const height = this.height;
|
||||
const can_automate = this.can_automate;
|
||||
let need_fit = false;
|
||||
let new_config_width = config.WIDTH;
|
||||
let new_config_height = config.HEIGHT;
|
||||
var enable_autoresize = this.Tools_settings.get_setting('enable_autoresize');
|
||||
|
||||
if(enable_autoresize == false){
|
||||
return;
|
||||
}
|
||||
|
||||
// Resize up
|
||||
if (width > new_config_width || height > new_config_height) {
|
||||
const wrapper = document.getElementById('main_wrapper');
|
||||
const page_w = wrapper.clientWidth;
|
||||
const page_h = wrapper.clientHeight;
|
||||
|
||||
if (width > page_w || height > page_h) {
|
||||
need_fit = true;
|
||||
}
|
||||
if (width > new_config_width)
|
||||
new_config_width = parseInt(width);
|
||||
if (height > new_config_height)
|
||||
new_config_height = parseInt(height);
|
||||
}
|
||||
|
||||
// Resize down
|
||||
if (config.layers.length == 1 && can_automate !== false) {
|
||||
if (width < new_config_width)
|
||||
new_config_width = parseInt(width);
|
||||
if (height < new_config_height)
|
||||
new_config_height = parseInt(height);
|
||||
}
|
||||
|
||||
if (new_config_width !== config.WIDTH || new_config_height !== height) {
|
||||
this.old_config_width = config.WIDTH;
|
||||
this.old_config_height = config.HEIGHT;
|
||||
config.WIDTH = new_config_width;
|
||||
config.HEIGHT = new_config_height;
|
||||
app.GUI.prepare_canvas();
|
||||
} else if (!this.ignore_same_size) {
|
||||
throw new Error('Aborted - Resize not necessary')
|
||||
}
|
||||
|
||||
// Fit zoom when after short pause
|
||||
// @todo - remove setTimeout
|
||||
if (need_fit == true) {
|
||||
await new Promise((resolve) => {
|
||||
window.setTimeout(() => {
|
||||
app.GUI.GUI_preview.zoom_auto();
|
||||
resolve();
|
||||
}, 100);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
async undo() {
|
||||
super.undo();
|
||||
if (this.old_config_width != null) {
|
||||
config.WIDTH = this.old_config_width;
|
||||
}
|
||||
if (this.old_config_height != null) {
|
||||
config.HEIGHT = this.old_config_height;
|
||||
}
|
||||
if (this.old_config_width != null || this.old_config_height != null) {
|
||||
app.GUI.prepare_canvas();
|
||||
}
|
||||
this.old_config_width = null;
|
||||
this.old_config_height = null;
|
||||
}
|
||||
}
|
||||
19
src/js/actions/base.js
Normal file
@ -0,0 +1,19 @@
|
||||
|
||||
export class Base_action {
|
||||
constructor(action_id, action_description) {
|
||||
this.action_id = action_id;
|
||||
this.action_description = action_description;
|
||||
this.is_done = false;
|
||||
this.memory_estimate = 0; // Estimate of how much memory will be freed when the free() method is called (in bytes)
|
||||
this.database_estimate = 0; // Estimate of how much database space will be freed when the free() method is called (in bytes)
|
||||
}
|
||||
do() {
|
||||
this.is_done = true;
|
||||
}
|
||||
undo() {
|
||||
this.is_done = false;
|
||||
}
|
||||
free() {
|
||||
// Override if need to run tasks to free memory when action is discarded from history
|
||||
}
|
||||
}
|
||||
59
src/js/actions/bundle.js
Normal file
@ -0,0 +1,59 @@
|
||||
import config from '../config.js';
|
||||
import { Base_action } from './base.js';
|
||||
|
||||
export class Bundle_action extends Base_action {
|
||||
/**
|
||||
* Groups multiple actions together in the undo/redo history, runs them all at once.
|
||||
*/
|
||||
constructor(bundle_id, bundle_name, actions_to_do) {
|
||||
super(bundle_id, bundle_name);
|
||||
this.actions_to_do = actions_to_do;
|
||||
}
|
||||
|
||||
async do() {
|
||||
super.do();
|
||||
let error = null;
|
||||
let i = 0;
|
||||
this.memory_estimate = 0;
|
||||
this.database_estimate = 0;
|
||||
for (i = 0; i < this.actions_to_do.length; i++) {
|
||||
try {
|
||||
await this.actions_to_do[i].do();
|
||||
this.memory_estimate += this.actions_to_do[i].memory_estimate;
|
||||
this.database_estimate += this.actions_to_do[i].database_estimate;
|
||||
} catch (e) {
|
||||
error = e;
|
||||
break;
|
||||
}
|
||||
}
|
||||
// One of the actions aborted, undo all previous actions.
|
||||
if (error) {
|
||||
for (i--; i >= 0; i--) {
|
||||
await this.actions_to_do[i].undo();
|
||||
}
|
||||
throw error;
|
||||
}
|
||||
config.need_render = true;
|
||||
}
|
||||
|
||||
async undo() {
|
||||
super.undo();
|
||||
this.memory_estimate = 0;
|
||||
this.database_estimate = 0;
|
||||
for (let i = this.actions_to_do.length - 1; i >= 0; i--) {
|
||||
await this.actions_to_do[i].undo();
|
||||
this.memory_estimate += this.actions_to_do[i].memory_estimate;
|
||||
this.database_estimate += this.actions_to_do[i].database_estimate;
|
||||
}
|
||||
config.need_render = true;
|
||||
}
|
||||
|
||||
free() {
|
||||
if (this.actions_to_do) {
|
||||
for (let action of this.actions_to_do) {
|
||||
action.free();
|
||||
}
|
||||
this.actions_to_do = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
82
src/js/actions/clear-layer.js
Normal file
@ -0,0 +1,82 @@
|
||||
import app from './../app.js';
|
||||
import config from './../config.js';
|
||||
import { Base_action } from './base.js';
|
||||
|
||||
export class Clear_layer_action extends Base_action {
|
||||
/**
|
||||
* clear layer data
|
||||
*
|
||||
* @param {int} layer_id
|
||||
*/
|
||||
constructor(layer_id) {
|
||||
super('clear_layer', 'Clear Layer');
|
||||
this.layer_id = parseInt(layer_id);
|
||||
this.update_layer_action = null;
|
||||
this.delete_layer_settings_action = null;
|
||||
}
|
||||
|
||||
async do() {
|
||||
super.do();
|
||||
let layer = app.Layers.get_layer(this.layer_id);
|
||||
if (!layer) {
|
||||
throw new Error('Aborted - layer with specified id doesn\'t exist');
|
||||
}
|
||||
let new_settings = {
|
||||
x: 0,
|
||||
y: 0,
|
||||
width: 0,
|
||||
height: 0,
|
||||
visible: true,
|
||||
opacity: 100,
|
||||
composition: null,
|
||||
rotate: 0,
|
||||
data: null,
|
||||
params: {},
|
||||
status: null,
|
||||
render_function: null,
|
||||
type: null
|
||||
};
|
||||
if (layer.type == 'image') {
|
||||
//clean image
|
||||
new_settings.link = null;
|
||||
}
|
||||
this.update_layer_action = new app.Actions.Update_layer_action(this.layer_id, new_settings);
|
||||
await this.update_layer_action.do();
|
||||
let delete_setting_names = [];
|
||||
for (let prop_name in layer) {
|
||||
//remove private attributes
|
||||
if (prop_name[0] == '_') {
|
||||
delete_setting_names.push(prop_name);
|
||||
}
|
||||
}
|
||||
if (delete_setting_names.length > 0) {
|
||||
this.delete_layer_settings_action = new app.Actions.Delete_layer_settings_action(this.layer_id, delete_setting_names);
|
||||
await this.delete_layer_settings_action.do();
|
||||
}
|
||||
}
|
||||
|
||||
async undo() {
|
||||
super.undo();
|
||||
if (this.delete_layer_settings_action) {
|
||||
await this.delete_layer_settings_action.undo();
|
||||
this.delete_layer_settings_action.free();
|
||||
this.delete_layer_settings_action = null;
|
||||
}
|
||||
if (this.update_layer_action) {
|
||||
await this.update_layer_action.undo();
|
||||
this.update_layer_action.free();
|
||||
this.update_layer_action = null;
|
||||
}
|
||||
}
|
||||
|
||||
free() {
|
||||
if (this.update_layer_action) {
|
||||
this.update_layer_action.free();
|
||||
this.update_layer_action = null;
|
||||
}
|
||||
if (this.delete_layer_settings_action) {
|
||||
this.delete_layer_settings_action.free();
|
||||
this.delete_layer_settings_action = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
60
src/js/actions/delete-layer-filter.js
Normal file
@ -0,0 +1,60 @@
|
||||
import app from './../app.js';
|
||||
import config from './../config.js';
|
||||
import { Base_action } from './base.js';
|
||||
|
||||
export class Delete_layer_filter_action extends Base_action {
|
||||
/**
|
||||
* delete live filter
|
||||
*
|
||||
* @param {int} layer_id
|
||||
* @param {string} filter_id
|
||||
*/
|
||||
constructor(layer_id, filter_id) {
|
||||
super('delete_layer_filter', 'Delete Layer Filter');
|
||||
if (layer_id == null)
|
||||
layer_id = config.layer.id;
|
||||
this.layer_id = parseInt(layer_id);
|
||||
this.filter_id = filter_id;
|
||||
this.reference_layer = null;
|
||||
this.filter_remove_index = null;
|
||||
this.old_filter = null;
|
||||
}
|
||||
|
||||
async do() {
|
||||
super.do();
|
||||
this.reference_layer = app.Layers.get_layer(this.layer_id);
|
||||
if (!this.reference_layer) {
|
||||
throw new Error('Aborted - layer with specified id doesn\'t exist');
|
||||
}
|
||||
this.old_filter = null;
|
||||
for (let i in this.reference_layer.filters) {
|
||||
if (this.reference_layer.filters[i].id == this.filter_id) {
|
||||
this.filter_remove_index = i;
|
||||
this.old_filter = this.reference_layer.filters.splice(i, 1)[0];
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!this.old_filter) {
|
||||
throw new Error('Aborted - filter with specified id doesn\'t exist in layer');
|
||||
}
|
||||
config.need_render = true;
|
||||
app.GUI.GUI_layers.render_layers();
|
||||
}
|
||||
|
||||
async undo() {
|
||||
super.undo();
|
||||
if (this.reference_layer && this.old_filter) {
|
||||
this.reference_layer.filters.splice(this.filter_remove_index, 0, this.old_filter);
|
||||
}
|
||||
this.reference_layer = null;
|
||||
this.old_filter = null;
|
||||
this.filter_remove_index = null;
|
||||
config.need_render = true;
|
||||
app.GUI.GUI_layers.render_layers();
|
||||
}
|
||||
|
||||
free() {
|
||||
this.reference_layer = null;
|
||||
this.old_filter = null;
|
||||
}
|
||||
}
|
||||
50
src/js/actions/delete-layer-settings.js
Normal file
@ -0,0 +1,50 @@
|
||||
import app from './../app.js';
|
||||
import config from './../config.js';
|
||||
import { Base_action } from './base.js';
|
||||
|
||||
export class Delete_layer_settings_action extends Base_action {
|
||||
/**
|
||||
* Deletes the specified settings in a layer
|
||||
*
|
||||
* @param {int} layer_id
|
||||
* @param {array} setting_names
|
||||
*/
|
||||
constructor(layer_id, setting_names) {
|
||||
super('delete_layer_settings', 'Delete Layer Settings');
|
||||
this.layer_id = parseInt(layer_id);
|
||||
this.setting_names = setting_names;
|
||||
this.reference_layer = null;
|
||||
this.old_settings = {};
|
||||
}
|
||||
|
||||
async do() {
|
||||
super.do();
|
||||
this.reference_layer = app.Layers.get_layer(this.layer_id);
|
||||
if (!this.reference_layer) {
|
||||
throw new Error('Aborted - layer with specified id doesn\'t exist');
|
||||
}
|
||||
for (let name in this.setting_names) {
|
||||
this.old_settings[name] = this.reference_layer[name];
|
||||
delete this.reference_layer[name];
|
||||
}
|
||||
config.need_render = true;
|
||||
}
|
||||
|
||||
async undo() {
|
||||
super.undo();
|
||||
if (this.reference_layer) {
|
||||
for (let i in this.old_settings) {
|
||||
this.reference_layer[i] = this.old_settings[i];
|
||||
}
|
||||
this.old_settings = {};
|
||||
}
|
||||
this.reference_layer = null;
|
||||
config.need_render = true;
|
||||
}
|
||||
|
||||
free() {
|
||||
this.setting_names = null;
|
||||
this.reference_layer = null;
|
||||
this.old_settings = null;
|
||||
}
|
||||
}
|
||||
115
src/js/actions/delete-layer.js
Normal file
@ -0,0 +1,115 @@
|
||||
import config from '../config.js';
|
||||
import app from './../app.js';
|
||||
import { Base_action } from './base.js';
|
||||
|
||||
export class Delete_layer_action extends Base_action {
|
||||
/**
|
||||
* removes layer
|
||||
*
|
||||
* @param {int} id
|
||||
* @param {boolean} force - Force to delete first layer?
|
||||
*/
|
||||
constructor(layer_id, force) {
|
||||
super('delete_layer', 'Delete Layer');
|
||||
this.layer_id = parseInt(layer_id);
|
||||
this.force = force || false;
|
||||
this.insert_layer_action = null;
|
||||
this.select_layer_action = null;
|
||||
this.delete_index = null;
|
||||
this.deleted_layer = null;
|
||||
}
|
||||
|
||||
async do() {
|
||||
super.do();
|
||||
const id = this.layer_id;
|
||||
const force = this.force;
|
||||
|
||||
// Determine if there is a layer to delete, abort if not
|
||||
for (var i in config.layers) {
|
||||
if (config.layers[i].id == id) {
|
||||
this.delete_index = i;
|
||||
}
|
||||
}
|
||||
if (this.delete_index === null) {
|
||||
throw new Error('Aborted - Layer to delete not found');
|
||||
}
|
||||
|
||||
if (config.layers.length == 1 && (force == undefined || force == false)) {
|
||||
// Only 1 layer left
|
||||
if (config.layer.type == null) {
|
||||
//STOP
|
||||
throw new Error('Aborted - Will not delete last layer');
|
||||
}
|
||||
else {
|
||||
// Delete it, but before that - create new empty layer
|
||||
this.insert_layer_action = new app.Actions.Insert_layer_action();
|
||||
this.insert_layer_action.do();
|
||||
}
|
||||
}
|
||||
|
||||
if (config.layers.length > 1 && config.layer.id == id) {
|
||||
// Select next or previous layer
|
||||
try {
|
||||
const select_action = new app.Actions.Select_next_layer_action(id);
|
||||
await select_action.do();
|
||||
this.select_layer_action = select_action;
|
||||
} catch (error) {
|
||||
const select_action = new app.Actions.Select_previous_layer_action(id);
|
||||
await select_action.do();
|
||||
this.select_layer_action = select_action;
|
||||
}
|
||||
}
|
||||
|
||||
// Remove layer from list
|
||||
this.deleted_layer = config.layers.splice(this.delete_index, 1)[0];
|
||||
|
||||
// Estimate memory
|
||||
if (this.deleted_layer.link && this.deleted_layer.link.src && typeof this.deleted_layer.link.src === 'string') {
|
||||
this.memory_estimate = new Blob([this.deleted_layer.link.src]).size;
|
||||
}
|
||||
|
||||
app.Layers.render();
|
||||
app.GUI.GUI_layers.render_layers();
|
||||
}
|
||||
|
||||
async undo() {
|
||||
super.undo();
|
||||
if (this.deleted_layer) {
|
||||
config.layers.splice(this.delete_index, 0, this.deleted_layer);
|
||||
this.delete_index = null;
|
||||
this.deleted_layer = null;
|
||||
}
|
||||
if (this.select_layer_action) {
|
||||
await this.select_layer_action.undo();
|
||||
this.select_layer_action.free();
|
||||
this.select_layer_action = null;
|
||||
}
|
||||
if (this.insert_layer_action) {
|
||||
await this.insert_layer_action.undo();
|
||||
this.insert_layer_action.free();
|
||||
this.insert_layer_action = null;
|
||||
}
|
||||
|
||||
// Estimate memory
|
||||
this.memory_estimate = 0;
|
||||
|
||||
app.Layers.render();
|
||||
app.GUI.GUI_layers.render_layers();
|
||||
}
|
||||
|
||||
free() {
|
||||
if (this.deleted_layer) {
|
||||
delete this.deleted_layer.link;
|
||||
delete this.deleted_layer.data;
|
||||
}
|
||||
if (this.insert_layer_action) {
|
||||
this.insert_layer_action.free();
|
||||
this.insert_layer_action = null;
|
||||
}
|
||||
if (this.select_layer_action) {
|
||||
this.select_layer_action.free();
|
||||
this.select_layer_action = null;
|
||||
}
|
||||
this.deleted_layer = null;
|
||||
}
|
||||
}
|
||||
26
src/js/actions/index.js
Normal file
@ -0,0 +1,26 @@
|
||||
export { Activate_tool_action } from './activate-tool.js';
|
||||
export { Add_layer_filter_action } from './add-layer-filter.js';
|
||||
export { Autoresize_canvas_action } from './autoresize-canvas.js';
|
||||
export { Bundle_action } from './bundle.js';
|
||||
export { Clear_layer_action } from './clear-layer.js';
|
||||
export { Delete_layer_action } from './delete-layer.js';
|
||||
export { Delete_layer_filter_action } from './delete-layer-filter.js';
|
||||
export { Delete_layer_settings_action } from './delete-layer-settings.js';
|
||||
export { Init_canvas_zoom_action } from './init-canvas-zoom.js';
|
||||
export { Insert_layer_action } from './insert-layer.js';
|
||||
export { Prepare_canvas_action } from './prepare-canvas.js';
|
||||
export { Reorder_layer_action } from './reorder-layer.js';
|
||||
export { Reset_layers_action } from './reset-layers.js';
|
||||
export { Refresh_action_attributes_action } from './refresh-action-attributes.js';
|
||||
export { Refresh_layers_gui_action } from './refresh-layers-gui.js';
|
||||
export { Reset_selection_action } from './reset-selection.js';
|
||||
export { Select_layer_action } from './select-layer.js';
|
||||
export { Select_next_layer_action } from './select-next-layer.js';
|
||||
export { Select_previous_layer_action } from './select-previous-layer.js';
|
||||
export { Set_object_property_action } from './set-object-property.js';
|
||||
export { Set_selection_action } from './set-selection.js';
|
||||
export { Stop_animation_action } from './stop-animation.js';
|
||||
export { Toggle_layer_visibility_action } from './toggle-layer-visibility.js';
|
||||
export { Update_config_action } from './update-config.js';
|
||||
export { Update_layer_image_action } from './update-layer-image.js';
|
||||
export { Update_layer_action } from './update-layer.js';
|
||||
45
src/js/actions/init-canvas-zoom.js
Normal file
@ -0,0 +1,45 @@
|
||||
import app from '../app.js';
|
||||
import config from '../config.js';
|
||||
import zoomView from '../libs/zoomView.js';
|
||||
import { Base_action } from './base.js';
|
||||
|
||||
export class Init_canvas_zoom_action extends Base_action {
|
||||
/**
|
||||
* Resets the canvas
|
||||
*/
|
||||
constructor() {
|
||||
super('init_canvas_zoom', 'Initialize Canvas Zoom');
|
||||
this.old_bounds = null;
|
||||
this.old_context = null;
|
||||
this.old_stable_dimensions = null;
|
||||
}
|
||||
|
||||
async do() {
|
||||
super.do();
|
||||
this.old_bounds = zoomView.getBounds();
|
||||
this.old_context = zoomView.getContext();
|
||||
this.old_stable_dimensions = app.Layers.stable_dimensions;
|
||||
zoomView.setBounds(0, 0, config.WIDTH, config.HEIGHT);
|
||||
zoomView.setContext(app.Layers.ctx);
|
||||
app.Layers.stable_dimensions = [
|
||||
config.WIDTH,
|
||||
config.HEIGHT
|
||||
];
|
||||
}
|
||||
|
||||
async undo() {
|
||||
super.undo();
|
||||
zoomView.setBounds(this.old_bounds.top, this.old_bounds.left, this.old_bounds.right, this.old_bounds.bottom);
|
||||
zoomView.setContext(this.old_context);
|
||||
app.Layers.stable_dimensions = this.old_stable_dimensions;
|
||||
this.old_bounds = null;
|
||||
this.old_context = null;
|
||||
this.old_stable_dimensions = null;
|
||||
}
|
||||
|
||||
free() {
|
||||
this.old_bounds = null;
|
||||
this.old_context = null;
|
||||
this.old_stable_dimensions = null;
|
||||
}
|
||||
}
|
||||
214
src/js/actions/insert-layer.js
Normal file
@ -0,0 +1,214 @@
|
||||
import app from './../app.js';
|
||||
import config from './../config.js';
|
||||
import { Base_action } from './base.js';
|
||||
import alertify from './../../../node_modules/alertifyjs/build/alertify.min.js';
|
||||
|
||||
export class Insert_layer_action extends Base_action {
|
||||
/**
|
||||
* Creates new layer
|
||||
*
|
||||
* @param {object} settings
|
||||
* @param {boolean} can_automate
|
||||
*/
|
||||
constructor(settings, can_automate = true) {
|
||||
super('insert_layer', 'Insert Layer');
|
||||
this.settings = settings;
|
||||
this.can_automate = can_automate;
|
||||
this.previous_auto_increment = null;
|
||||
this.previous_selected_layer = null;
|
||||
this.inserted_layer_id = null;
|
||||
this.update_layer_action = null;
|
||||
this.delete_layer_action = null;
|
||||
this.autoresize_canvas_action = null;
|
||||
}
|
||||
|
||||
async do() {
|
||||
super.do();
|
||||
|
||||
this.previous_auto_increment = app.Layers.auto_increment;
|
||||
this.previous_selected_layer = config.layer;
|
||||
let autoresize_as = null;
|
||||
|
||||
// Default data
|
||||
const layer = {
|
||||
id: app.Layers.auto_increment,
|
||||
parent_id: 0,
|
||||
name: config.TOOL.name.charAt(0).toUpperCase() + config.TOOL.name.slice(1) + ' #' + app.Layers.auto_increment,
|
||||
type: null,
|
||||
link: null,
|
||||
x: 0,
|
||||
y: 0,
|
||||
width: null,
|
||||
width_original: null,
|
||||
height: null,
|
||||
height_original: null,
|
||||
visible: true,
|
||||
is_vector: false,
|
||||
hide_selection_if_active: false,
|
||||
opacity: 100,
|
||||
order: app.Layers.auto_increment,
|
||||
composition: 'source-over',
|
||||
rotate: 0,
|
||||
data: null,
|
||||
params: {},
|
||||
status: null,
|
||||
color: config.COLOR,
|
||||
filters: [],
|
||||
render_function: null,
|
||||
};
|
||||
|
||||
// Build data
|
||||
for (let i in this.settings) {
|
||||
if (typeof layer[i] == "undefined" && !i.startsWith('_')) {
|
||||
alertify.error('Error: wrong key: ' + i);
|
||||
continue;
|
||||
}
|
||||
layer[i] = this.settings[i];
|
||||
}
|
||||
|
||||
// Prepare image
|
||||
let image_load_promise;
|
||||
if (layer.type == 'image') {
|
||||
|
||||
if(layer.name.toLowerCase().indexOf('.svg') == layer.name.length - 4){
|
||||
// We have svg
|
||||
layer.is_vector = true;
|
||||
}
|
||||
|
||||
if (config.layers.length == 1 && (config.layer.width == 0 || config.layer.width === null)
|
||||
&& (config.layer.height == 0 || config.layer.height === null) && config.layer.data == null) {
|
||||
// Remove first empty layer
|
||||
|
||||
this.delete_layer_action = new app.Actions.Delete_layer_action(config.layer.id, true);
|
||||
await this.delete_layer_action.do();
|
||||
}
|
||||
|
||||
if (layer.link == null) {
|
||||
if (typeof layer.data == 'object') {
|
||||
// Load actual image
|
||||
if (layer.width == 0 || layer.width === null)
|
||||
layer.width = layer.data.width;
|
||||
if (layer.height == 0 || layer.height === null)
|
||||
layer.height = layer.data.height;
|
||||
layer.link = layer.data.cloneNode(true);
|
||||
layer.link.onload = function () {
|
||||
config.need_render = true;
|
||||
};
|
||||
layer.data = null;
|
||||
autoresize_as = [layer.width, layer.height, null, true, true];
|
||||
//need_autoresize = true;
|
||||
}
|
||||
else if (typeof layer.data == 'string') {
|
||||
image_load_promise = new Promise((resolve, reject) => {
|
||||
// Try loading as imageData
|
||||
layer.link = new Image();
|
||||
layer.link.onload = () => {
|
||||
// Update dimensions
|
||||
if (layer.width == 0 || layer.width === null)
|
||||
layer.width = layer.link.width;
|
||||
if (layer.height == 0 || layer.height === null)
|
||||
layer.height = layer.link.height;
|
||||
if (layer.width_original == null)
|
||||
layer.width_original = layer.width;
|
||||
if (layer.height_original == null)
|
||||
layer.height_original = layer.height;
|
||||
// Free data
|
||||
layer.data = null;
|
||||
autoresize_as = [layer.width, layer.height, layer.id, this.can_automate, true];
|
||||
config.need_render = true;
|
||||
resolve();
|
||||
};
|
||||
layer.link.onerror = (error) => {
|
||||
resolve(error);
|
||||
alertify.error('Sorry, image could not be loaded.');
|
||||
};
|
||||
layer.link.src = layer.data;
|
||||
layer.link.crossOrigin = "Anonymous";
|
||||
});
|
||||
}
|
||||
else {
|
||||
alertify.error('Error: can not load image.');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (this.settings != undefined && config.layers.length > 0
|
||||
&& (config.layer.width == 0 || config.layer.width === null) && (config.layer.height == 0 || config.layer.height === null)
|
||||
&& config.layer.data == null && layer.type != 'image' && this.can_automate !== false) {
|
||||
// Update existing layer, because it's empty
|
||||
this.update_layer_action = new app.Actions.Update_layer_action(config.layer.id, layer);
|
||||
await this.update_layer_action.do();
|
||||
}
|
||||
else {
|
||||
// Create new layer
|
||||
config.layers.push(layer);
|
||||
config.layer = app.Layers.get_layer(layer.id);
|
||||
app.Layers.auto_increment++;
|
||||
|
||||
if (config.layer == null) {
|
||||
config.layer = config.layers[0];
|
||||
}
|
||||
|
||||
this.inserted_layer_id = layer.id;
|
||||
}
|
||||
|
||||
if (layer.id >= app.Layers.auto_increment)
|
||||
app.Layers.auto_increment = layer.id + 1;
|
||||
|
||||
if (image_load_promise) {
|
||||
await image_load_promise;
|
||||
}
|
||||
|
||||
if (autoresize_as) {
|
||||
this.autoresize_canvas_action = new app.Actions.Autoresize_canvas_action(...autoresize_as);
|
||||
try {
|
||||
await this.autoresize_canvas_action.do();
|
||||
} catch(error) {
|
||||
this.autoresize_canvas_action = null;
|
||||
}
|
||||
}
|
||||
|
||||
app.Layers.render();
|
||||
app.GUI.GUI_layers.render_layers();
|
||||
}
|
||||
|
||||
async undo() {
|
||||
super.undo();
|
||||
app.Layers.auto_increment = this.previous_auto_increment;
|
||||
if (this.autoresize_canvas_action) {
|
||||
await this.autoresize_canvas_action.undo();
|
||||
this.autoresize_canvas_action = null;
|
||||
}
|
||||
if (this.inserted_layer_id) {
|
||||
config.layers.pop();
|
||||
this.inserted_layer_id = null;
|
||||
}
|
||||
if (this.update_layer_action) {
|
||||
await this.update_layer_action.undo();
|
||||
this.update_layer_action.free();
|
||||
this.update_layer_action = null;
|
||||
}
|
||||
if (this.delete_layer_action) {
|
||||
await this.delete_layer_action.undo();
|
||||
this.delete_layer_action.free();
|
||||
this.delete_layer_action = null;
|
||||
}
|
||||
config.layer = this.previous_selected_layer;
|
||||
this.previous_selected_layer = null;
|
||||
|
||||
app.Layers.render();
|
||||
app.GUI.GUI_layers.render_layers();
|
||||
}
|
||||
|
||||
free() {
|
||||
if (this.delete_layer_action) {
|
||||
this.delete_layer_action.free();
|
||||
this.delete_layer_action = null;
|
||||
}
|
||||
if (this.update_layer_action) {
|
||||
this.update_layer_action.free();
|
||||
this.update_layer_action = null;
|
||||
}
|
||||
this.previous_selected_layer = null;
|
||||
}
|
||||
}
|
||||
29
src/js/actions/prepare-canvas.js
Normal file
@ -0,0 +1,29 @@
|
||||
import app from '../app.js';
|
||||
import config from '../config.js';
|
||||
import { Base_action } from './base.js';
|
||||
|
||||
export class Prepare_canvas_action extends Base_action {
|
||||
/**
|
||||
* Resizes/renders the canvas at the specified step. Usually used on both sides of a config update action.
|
||||
*
|
||||
* @param {boolean} call_when
|
||||
*/
|
||||
constructor(call_when = 'undo') {
|
||||
super('prepare_canvas', 'Prepare Canvas');
|
||||
this.call_when = call_when;
|
||||
}
|
||||
|
||||
async do() {
|
||||
super.do();
|
||||
if (this.call_when === 'do') {
|
||||
app.GUI.prepare_canvas();
|
||||
}
|
||||
}
|
||||
|
||||
async undo() {
|
||||
super.undo();
|
||||
if (this.call_when === 'undo') {
|
||||
app.GUI.prepare_canvas();
|
||||
}
|
||||
}
|
||||
}
|
||||
29
src/js/actions/refresh-action-attributes.js
Normal file
@ -0,0 +1,29 @@
|
||||
import app from '../app.js';
|
||||
import config from '../config.js';
|
||||
import { Base_action } from './base.js';
|
||||
|
||||
export class Refresh_action_attributes_action extends Base_action {
|
||||
/**
|
||||
* Resizes/renders the canvas at the specified step. Usually used on both sides of a config update action.
|
||||
*
|
||||
* @param {boolean} call_when
|
||||
*/
|
||||
constructor(call_when = 'undo') {
|
||||
super('refresh_action_attributes', 'Refresh Action Attributes');
|
||||
this.call_when = call_when;
|
||||
}
|
||||
|
||||
async do() {
|
||||
super.do();
|
||||
if (this.call_when === 'do') {
|
||||
app.GUI.GUI_tools.show_action_attributes();
|
||||
}
|
||||
}
|
||||
|
||||
async undo() {
|
||||
super.undo();
|
||||
if (this.call_when === 'undo') {
|
||||
app.GUI.GUI_tools.show_action_attributes();
|
||||
}
|
||||
}
|
||||
}
|
||||
29
src/js/actions/refresh-layers-gui.js
Normal file
@ -0,0 +1,29 @@
|
||||
import app from '../app.js';
|
||||
import config from '../config.js';
|
||||
import { Base_action } from './base.js';
|
||||
|
||||
export class Refresh_layers_gui_action extends Base_action {
|
||||
/**
|
||||
* Resizes/renders the canvas at the specified step. Usually used on both sides of a config update action.
|
||||
*
|
||||
* @param {boolean} call_when
|
||||
*/
|
||||
constructor(call_when = 'undo') {
|
||||
super('refresh_gui', 'Refresh GUI');
|
||||
this.call_when = call_when;
|
||||
}
|
||||
|
||||
async do() {
|
||||
super.do();
|
||||
if (this.call_when === 'do') {
|
||||
app.Layers.refresh_gui();
|
||||
}
|
||||
}
|
||||
|
||||
async undo() {
|
||||
super.undo();
|
||||
if (this.call_when === 'undo') {
|
||||
app.Layers.refresh_gui();
|
||||
}
|
||||
}
|
||||
}
|
||||
64
src/js/actions/reorder-layer.js
Normal file
@ -0,0 +1,64 @@
|
||||
import app from '../app.js';
|
||||
import config from '../config.js';
|
||||
import { Base_action } from './base.js';
|
||||
|
||||
export class Reorder_layer_action extends Base_action {
|
||||
/**
|
||||
* Reorder layer up or down in the layer stack
|
||||
*
|
||||
* @param {int} layer_id
|
||||
* @param {int} direction
|
||||
*/
|
||||
constructor(layer_id, direction) {
|
||||
super('reorder_layer', 'Reorder Layer');
|
||||
this.layer_id = parseInt(layer_id);
|
||||
this.direction = direction;
|
||||
this.reference_layer = null;
|
||||
this.reference_target = null;
|
||||
this.old_layer_order = null;
|
||||
this.old_target_order = null;
|
||||
}
|
||||
|
||||
async do() {
|
||||
super.do();
|
||||
this.reference_layer = app.Layers.get_layer(this.layer_id);
|
||||
if (!this.reference_layer) {
|
||||
throw new Error('Aborted - layer with specified id doesn\'t exist');
|
||||
}
|
||||
if (this.direction < 0) {
|
||||
this.reference_target = app.Layers.find_previous(this.layer_id);
|
||||
}
|
||||
else {
|
||||
this.reference_target = app.Layers.find_next(this.layer_id);
|
||||
}
|
||||
if (!this.reference_target) {
|
||||
throw new Error('Aborted - layer has nowhere to move');
|
||||
}
|
||||
this.old_layer_order = this.reference_layer.order;
|
||||
this.old_target_order = this.reference_target.order;
|
||||
this.reference_layer.order = this.old_target_order;
|
||||
this.reference_target.order = this.old_layer_order;
|
||||
|
||||
app.Layers.render();
|
||||
app.GUI.GUI_layers.render_layers();
|
||||
}
|
||||
|
||||
async undo() {
|
||||
super.undo();
|
||||
if (this.reference_layer) {
|
||||
this.reference_layer.order = this.old_layer_order;
|
||||
this.reference_layer = null;
|
||||
}
|
||||
if (this.reference_target) {
|
||||
this.reference_target.order = this.old_target_order;
|
||||
this.reference_target = null;
|
||||
}
|
||||
app.Layers.render();
|
||||
app.GUI.GUI_layers.render_layers();
|
||||
}
|
||||
|
||||
free() {
|
||||
this.reference_layer = null;
|
||||
this.reference_target = null;
|
||||
}
|
||||
}
|
||||
66
src/js/actions/reset-layers.js
Normal file
@ -0,0 +1,66 @@
|
||||
import app from '../app.js';
|
||||
import config from '../config.js';
|
||||
import { Base_action } from './base.js';
|
||||
|
||||
export class Reset_layers_action extends Base_action {
|
||||
/*
|
||||
* removes all layers
|
||||
*/
|
||||
constructor(auto_insert) {
|
||||
super('reset_layers', 'Reset Layers');
|
||||
this.auto_insert = auto_insert;
|
||||
this.previous_auto_increment = null;
|
||||
this.delete_actions = null;
|
||||
this.insert_action = null;
|
||||
}
|
||||
async do() {
|
||||
super.do();
|
||||
const auto_insert = this.auto_insert;
|
||||
this.previous_auto_increment = app.Layers.auto_increment;
|
||||
|
||||
this.delete_actions = [];
|
||||
for (let i = config.layers.length - 1; i >= 0; i--) {
|
||||
const delete_action = new app.Actions.Delete_layer_action(config.layers[i].id, true);
|
||||
await delete_action.do();
|
||||
this.delete_actions.push(delete_action);
|
||||
}
|
||||
app.Layers.auto_increment = 1;
|
||||
|
||||
if (auto_insert != undefined && auto_insert === true) {
|
||||
const settings = {};
|
||||
this.insert_action = new app.Actions.Insert_layer_action(settings);
|
||||
await this.insert_action.do();
|
||||
}
|
||||
|
||||
app.Layers.render();
|
||||
app.GUI.GUI_layers.render_layers();
|
||||
}
|
||||
async undo() {
|
||||
super.undo();
|
||||
if (this.insert_action) {
|
||||
await this.insert_action.undo();
|
||||
this.insert_action.free();
|
||||
this.insert_action = null;
|
||||
}
|
||||
for (let i = this.delete_actions.length - 1; i >= 0; i--) {
|
||||
await this.delete_actions[i].undo();
|
||||
this.delete_actions[i].free();
|
||||
}
|
||||
app.Layers.auto_increment = this.previous_auto_increment;
|
||||
|
||||
app.Layers.render();
|
||||
app.GUI.GUI_layers.render_layers();
|
||||
}
|
||||
free() {
|
||||
if (this.insert_action) {
|
||||
this.insert_action.free();
|
||||
this.insert_action = null;
|
||||
}
|
||||
if (this.delete_actions) {
|
||||
for (let action of this.delete_actions) {
|
||||
action.free();
|
||||
}
|
||||
this.delete_actions = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
57
src/js/actions/reset-selection.js
Normal file
@ -0,0 +1,57 @@
|
||||
import app from '../app.js';
|
||||
import config from '../config.js';
|
||||
import { Base_action } from './base.js';
|
||||
|
||||
export class Reset_selection_action extends Base_action {
|
||||
/**
|
||||
* Sets the selection to empty
|
||||
*
|
||||
* @prop {object} [mirror_selection_settings] - Optional object to also set to an empty selection object
|
||||
*/
|
||||
constructor(mirror_selection_settings) {
|
||||
super('reset_selection', 'Reset Selection');
|
||||
this.mirror_selection_settings = mirror_selection_settings;
|
||||
this.settings_reference = null;
|
||||
this.old_settings_data = null;
|
||||
}
|
||||
|
||||
async do() {
|
||||
super.do();
|
||||
this.settings_reference = app.Layers.Base_selection.find_settings();
|
||||
this.old_settings_data = JSON.parse(JSON.stringify(this.settings_reference.data));
|
||||
this.settings_reference.data = {
|
||||
x: null,
|
||||
y: null,
|
||||
width: null,
|
||||
height: null
|
||||
}
|
||||
if (this.mirror_selection_settings) {
|
||||
this.mirror_selection_settings.x = null;
|
||||
this.mirror_selection_settings.y = null;
|
||||
this.mirror_selection_settings.width = null;
|
||||
this.mirror_selection_settings.height = null;
|
||||
}
|
||||
config.need_render = true;
|
||||
}
|
||||
|
||||
async undo() {
|
||||
super.undo();
|
||||
if (this.old_settings_data) {
|
||||
for (let prop of ['x', 'y', 'width', 'height']) {
|
||||
this.settings_reference.data[prop] = this.old_settings_data[prop];
|
||||
if (this.mirror_selection_settings) {
|
||||
this.mirror_selection_settings[prop] = this.old_settings_data[prop];
|
||||
}
|
||||
}
|
||||
}
|
||||
this.settings_reference = null;
|
||||
this.old_settings_data = null;
|
||||
config.need_render = true;
|
||||
}
|
||||
|
||||
free() {
|
||||
this.settings_reference = null;
|
||||
this.old_settings_data = null;
|
||||
this.mirror_selection_settings = null;
|
||||
}
|
||||
}
|
||||
57
src/js/actions/select-layer.js
Normal file
@ -0,0 +1,57 @@
|
||||
import app from '../app.js';
|
||||
import config from '../config.js';
|
||||
import { Base_action } from './base.js';
|
||||
|
||||
export class Select_layer_action extends Base_action {
|
||||
/**
|
||||
* marks layer as selected, active
|
||||
*
|
||||
* @param {int} layer_id
|
||||
*/
|
||||
constructor(layer_id, ignore_same_selection = false) {
|
||||
super('select_layer', 'Select Layer');
|
||||
this.reset_selection_action = null;
|
||||
this.layer_id = parseInt(layer_id);
|
||||
this.ignore_same_selection = ignore_same_selection;
|
||||
this.old_layer = null;
|
||||
}
|
||||
|
||||
async do() {
|
||||
super.do();
|
||||
|
||||
let old_layer = config.layer;
|
||||
let new_layer = app.Layers.get_layer(this.layer_id);
|
||||
|
||||
if (old_layer !== new_layer) {
|
||||
this.old_layer = old_layer;
|
||||
config.layer = new_layer;
|
||||
} else if (!this.ignore_same_selection) {
|
||||
throw new Error('Aborted - Layer already selected');
|
||||
}
|
||||
|
||||
this.reset_selection_action = new app.Actions.Reset_selection_action();
|
||||
await this.reset_selection_action.do();
|
||||
|
||||
app.Layers.render();
|
||||
app.GUI.GUI_layers.render_layers();
|
||||
}
|
||||
|
||||
async undo() {
|
||||
super.undo();
|
||||
|
||||
if (this.reset_selection_action) {
|
||||
await this.reset_selection_action.undo();
|
||||
this.reset_selection_action = null;
|
||||
}
|
||||
|
||||
config.layer = this.old_layer;
|
||||
this.old_layer = null;
|
||||
|
||||
app.Layers.render();
|
||||
app.GUI.GUI_layers.render_layers();
|
||||
}
|
||||
|
||||
free() {
|
||||
this.old_layer = null;
|
||||
}
|
||||
}
|
||||
33
src/js/actions/select-next-layer.js
Normal file
@ -0,0 +1,33 @@
|
||||
import app from './../app.js';
|
||||
import config from './../config.js';
|
||||
import { Base_action } from './base.js';
|
||||
|
||||
export class Select_next_layer_action extends Base_action {
|
||||
constructor(reference_layer_id) {
|
||||
super('select_next_layer', 'Select Next Layer');
|
||||
this.reference_layer_id = reference_layer_id;
|
||||
this.old_config_layer = null;
|
||||
}
|
||||
|
||||
async do() {
|
||||
super.do();
|
||||
const next_layer = app.Layers.find_next(this.reference_layer_id);
|
||||
if (!next_layer) {
|
||||
throw new Error('Aborted - Next layer to select not found');
|
||||
}
|
||||
this.old_config_layer = config.layer;
|
||||
config.layer = next_layer;
|
||||
|
||||
app.Layers.render();
|
||||
app.GUI.GUI_layers.render_layers();
|
||||
}
|
||||
|
||||
async undo() {
|
||||
super.undo();
|
||||
config.layer = this.old_config_layer;
|
||||
this.old_config_layer = null;
|
||||
|
||||
app.Layers.render();
|
||||
app.GUI.GUI_layers.render_layers();
|
||||
}
|
||||
}
|
||||
33
src/js/actions/select-previous-layer.js
Normal file
@ -0,0 +1,33 @@
|
||||
import app from './../app.js';
|
||||
import config from './../config.js';
|
||||
import { Base_action } from './base.js';
|
||||
|
||||
export class Select_previous_layer_action extends Base_action {
|
||||
constructor(reference_layer_id) {
|
||||
super('select_previous_layer', 'Select Previous Layer');
|
||||
this.reference_layer_id = reference_layer_id;
|
||||
this.old_config_layer = null;
|
||||
}
|
||||
|
||||
async do() {
|
||||
super.do();
|
||||
const previous_layer = app.Layers.find_previous(this.reference_layer_id);
|
||||
if (!previous_layer) {
|
||||
throw new Error('Aborted - Previous layer to select not found');
|
||||
}
|
||||
this.old_config_layer = config.layer;
|
||||
config.layer = previous_layer;
|
||||
|
||||
app.Layers.render();
|
||||
app.GUI.GUI_layers.render_layers();
|
||||
}
|
||||
|
||||
async undo() {
|
||||
super.undo();
|
||||
config.layer = this.old_config_layer;
|
||||
this.old_config_layer = null;
|
||||
|
||||
app.Layers.render();
|
||||
app.GUI.GUI_layers.render_layers();
|
||||
}
|
||||
}
|
||||
35
src/js/actions/set-object-property.js
Normal file
@ -0,0 +1,35 @@
|
||||
import app from './../app.js';
|
||||
import config from './../config.js';
|
||||
import { Base_action } from './base.js';
|
||||
|
||||
export class Set_object_property_action extends Base_action {
|
||||
/**
|
||||
* Sets a generic object property. I recommend against using this as it's generally a hack for edge cases.
|
||||
*
|
||||
* @param {string} layer_id
|
||||
* @param {object} settings
|
||||
*/
|
||||
constructor(object, property_name, value) {
|
||||
super('set_object_property', 'Set Object Property');
|
||||
this.object = object;
|
||||
this.property_name = property_name;
|
||||
this.value = value;
|
||||
this.old_value = null;
|
||||
}
|
||||
|
||||
async do() {
|
||||
super.do();
|
||||
this.old_value = this.object[this.property_name];
|
||||
this.object[this.property_name] = this.value;
|
||||
}
|
||||
|
||||
async undo() {
|
||||
super.undo();
|
||||
this.object[this.property_name] = this.old_value;
|
||||
this.old_value = null;
|
||||
}
|
||||
|
||||
free() {
|
||||
this.object = null;
|
||||
}
|
||||
}
|
||||
57
src/js/actions/set-selection.js
Normal file
@ -0,0 +1,57 @@
|
||||
import app from '../app.js';
|
||||
import config from '../config.js';
|
||||
import { Base_action } from './base.js';
|
||||
|
||||
export class Set_selection_action extends Base_action {
|
||||
/**
|
||||
* Sets the selection to the specified position and dimensions
|
||||
*/
|
||||
constructor(x, y, width, height, old_settings_override) {
|
||||
super('set_selection', 'Set Selection');
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
this.width = width;
|
||||
this.height = height;
|
||||
this.settings_reference = null;
|
||||
this.old_settings_data = null;
|
||||
this.old_settings_override = old_settings_override ? JSON.parse(JSON.stringify(old_settings_override)) || null : null;
|
||||
}
|
||||
|
||||
async do() {
|
||||
super.do();
|
||||
this.settings_reference = app.Layers.Base_selection.find_settings();
|
||||
this.old_settings_data = JSON.parse(JSON.stringify(this.settings_reference.data));
|
||||
if (this.x != null)
|
||||
this.settings_reference.data.x = this.x;
|
||||
if (this.y != null)
|
||||
this.settings_reference.data.y = this.y;
|
||||
if (this.width != null)
|
||||
this.settings_reference.data.width = this.width;
|
||||
if (this.height != null)
|
||||
this.settings_reference.data.height = this.height;
|
||||
|
||||
config.need_render = true;
|
||||
}
|
||||
|
||||
async undo() {
|
||||
super.undo()
|
||||
if (this.old_settings_override) {
|
||||
for (let prop in this.old_settings_override) {
|
||||
this.settings_reference.data[prop] = this.old_settings_override[prop];
|
||||
}
|
||||
} else {
|
||||
for (let prop in this.old_settings_data) {
|
||||
this.settings_reference.data[prop] = this.old_settings_data[prop];
|
||||
}
|
||||
}
|
||||
this.settings_reference = null;
|
||||
this.old_settings_data = null;
|
||||
config.need_render = true;
|
||||
}
|
||||
|
||||
free() {
|
||||
this.settings_reference = null;
|
||||
this.old_settings_override = null;
|
||||
this.old_settings_data = null;
|
||||
}
|
||||
}
|
||||
59
src/js/actions/stop-animation.js
Normal file
@ -0,0 +1,59 @@
|
||||
import app from './../app.js';
|
||||
import config from './../config.js';
|
||||
import { Base_action } from './base.js';
|
||||
|
||||
export class Stop_animation_action extends Base_action {
|
||||
/**
|
||||
* Stops the currently playing animation, both do and undo states will stop animation
|
||||
*/
|
||||
constructor(reset_layer_visibility) {
|
||||
super('stop_animation', 'Stop Animation');
|
||||
this.reset_layer_visibility = !!reset_layer_visibility;
|
||||
}
|
||||
|
||||
async do() {
|
||||
super.do();
|
||||
const animation_tool = app.GUI.GUI_tools.tools_modules.animation.object;
|
||||
var params = animation_tool.getParams();
|
||||
if (animation_tool.intervalID == null)
|
||||
return;
|
||||
|
||||
clearInterval(animation_tool.intervalID);
|
||||
params.play = false;
|
||||
animation_tool.index = 0;
|
||||
animation_tool.GUI_tools.show_action_attributes();
|
||||
|
||||
// make all visible
|
||||
if (this.reset_layer_visibility) {
|
||||
for (let i in config.layers) {
|
||||
config.layers[i].visible = true;
|
||||
}
|
||||
}
|
||||
|
||||
animation_tool.Base_gui.GUI_layers.render_layers();
|
||||
config.need_render = true;
|
||||
}
|
||||
|
||||
async undo() {
|
||||
super.undo();
|
||||
const animation_tool = app.GUI.GUI_tools.tools_modules.animation.object;
|
||||
var params = animation_tool.getParams();
|
||||
if (animation_tool.intervalID == null)
|
||||
return;
|
||||
|
||||
clearInterval(animation_tool.intervalID);
|
||||
params.play = false;
|
||||
animation_tool.index = 0;
|
||||
animation_tool.GUI_tools.show_action_attributes();
|
||||
|
||||
// make all visible
|
||||
if (this.reset_layer_visibility) {
|
||||
for (let i in config.layers) {
|
||||
config.layers[i].visible = true;
|
||||
}
|
||||
}
|
||||
|
||||
animation_tool.Base_gui.GUI_layers.render_layers();
|
||||
config.need_render = true;
|
||||
}
|
||||
}
|
||||
222
src/js/actions/store/image-store.js
Normal file
@ -0,0 +1,222 @@
|
||||
import { v4 as uuidv4 } from 'uuid';
|
||||
|
||||
// Get a unique id to identify this tab's history in the database
|
||||
let tabUuid;
|
||||
try {
|
||||
tabUuid = sessionStorage.getItem('history_tab_uuid');
|
||||
} catch (error) {}
|
||||
if (!tabUuid) {
|
||||
tabUuid = uuidv4();
|
||||
try {
|
||||
sessionStorage.setItem('history_tab_uuid', tabUuid);
|
||||
} catch (error) {}
|
||||
}
|
||||
|
||||
let imageIdCounter = 0;
|
||||
let database = null;
|
||||
let databaseInitPromise = null;
|
||||
const tabPingInterval = 60000;
|
||||
const assumeTabIsClosedTimeout = 300000; // Inactive tabs setInterval is slowed down in most browsers, this should be significantly higher than tabPingInterval
|
||||
|
||||
export default {
|
||||
/**
|
||||
* Initializes the database
|
||||
*/
|
||||
async init() {
|
||||
if (!databaseInitPromise) {
|
||||
databaseInitPromise = new Promise(async (resolveInit) => {
|
||||
try {
|
||||
if (window.indexedDB) {
|
||||
// Delete database from a previous page load, if no other tabs have notified that they're open in a while
|
||||
let shouldDeleteDatabase = true;
|
||||
try {
|
||||
let lastDatabaseTabPing = localStorage.getItem('history_usage_ping');
|
||||
shouldDeleteDatabase = (!lastDatabaseTabPing || parseInt(lastDatabaseTabPing, 10) < new Date().getTime() - assumeTabIsClosedTimeout);
|
||||
} catch (error) {}
|
||||
if (shouldDeleteDatabase) {
|
||||
await new Promise((resolve, reject) => {
|
||||
let deleteRequest = window.indexedDB.deleteDatabase('undoHistoryImageStore');
|
||||
deleteRequest.onerror = () => {
|
||||
reject(deleteRequest.error);
|
||||
};
|
||||
deleteRequest.onsuccess = () => {
|
||||
resolve();
|
||||
};
|
||||
});
|
||||
}
|
||||
// Initialize database
|
||||
await new Promise((resolve, reject) => {
|
||||
let openRequest = window.indexedDB.open('undoHistoryImageStore', 1);
|
||||
openRequest.onupgradeneeded = function(event) {
|
||||
database = openRequest.result;
|
||||
switch (event.oldVersion) {
|
||||
case 0:
|
||||
database.createObjectStore('images', { keyPath: 'id' });
|
||||
break;
|
||||
}
|
||||
};
|
||||
openRequest.onerror = () => {
|
||||
reject(openRequest.error);
|
||||
}
|
||||
openRequest.onsuccess = () => {
|
||||
resolve();
|
||||
database = openRequest.result;
|
||||
}
|
||||
});
|
||||
if (!database) {
|
||||
throw new Error('indexedDB not initialized');
|
||||
}
|
||||
// Delete history from previous session
|
||||
try {
|
||||
await this.delete_all();
|
||||
} catch (error) {}
|
||||
// Ping localStorage for as long as this browser tab is open
|
||||
localStorage.setItem('history_usage_ping', new Date().getTime() + '');
|
||||
setInterval(() => {
|
||||
localStorage.setItem('history_usage_ping', new Date().getTime() + '');
|
||||
}, tabPingInterval);
|
||||
}
|
||||
} catch (error) {
|
||||
database = {
|
||||
isMemory: true,
|
||||
images: {}
|
||||
};
|
||||
}
|
||||
resolveInit();
|
||||
});
|
||||
await databaseInitPromise;
|
||||
} else if (!database) {
|
||||
await databaseInitPromise;
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Adds the specified image to the database. Returns a promise that is resolved with an id that can be used to retrieve it again.
|
||||
*
|
||||
* @param {string | canvas | ImageData} imageData the image data to store
|
||||
* @returns {Promise<string>} resolves with retrieval id
|
||||
*/
|
||||
async add(imageData) {
|
||||
await this.init();
|
||||
let imageId = tabUuid + '-' + (imageIdCounter++);
|
||||
if (database.isMemory) {
|
||||
database.images[imageId] = imageData;
|
||||
} else {
|
||||
await new Promise((resolve, reject) => {
|
||||
const transaction = database.transaction('images', 'readwrite');
|
||||
const images = transaction.objectStore('images');
|
||||
const image = {
|
||||
id: imageId,
|
||||
tabUuid,
|
||||
data: imageData
|
||||
}
|
||||
const request = images.add(image);
|
||||
request.onsuccess = function() {
|
||||
resolve();
|
||||
};
|
||||
request.onerror = function() {
|
||||
reject(request.error);
|
||||
};
|
||||
});
|
||||
}
|
||||
return imageId;
|
||||
},
|
||||
|
||||
/**
|
||||
* Gets the specified image from the database, by imageId retrieved from "add()" method.
|
||||
*
|
||||
* @param {string} imageId the id of the image to get
|
||||
* @returns {Promise<string | canvas | ImageData>} resolves with the image
|
||||
*/
|
||||
async get(imageId) {
|
||||
await this.init();
|
||||
if (database.isMemory) {
|
||||
return database.images[imageId];
|
||||
} else {
|
||||
return new Promise((resolve, reject) => {
|
||||
const transaction = database.transaction('images', 'readonly');
|
||||
const images = transaction.objectStore('images');
|
||||
const request = images.get(imageId);
|
||||
request.onsuccess = function() {
|
||||
resolve(request.result && request.result.data);
|
||||
};
|
||||
request.onerror = function() {
|
||||
reject(request.error);
|
||||
};
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Deletes the specified image from the database, by imageId retrieved from "add()" method.
|
||||
*
|
||||
* @param {string} imageId the id of the image to delete
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
async delete(imageId) {
|
||||
await this.init();
|
||||
if (database.isMemory) {
|
||||
delete database.images[imageId];
|
||||
} else {
|
||||
return new Promise((resolve, reject) => {
|
||||
const transaction = database.transaction('images', 'readwrite');
|
||||
const images = transaction.objectStore('images');
|
||||
const request = images.delete(imageId);
|
||||
request.onsuccess = function() {
|
||||
resolve();
|
||||
};
|
||||
request.onerror = function() {
|
||||
reject(request.error);
|
||||
};
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Deletes all images associated with the current tab.
|
||||
*
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
async delete_all() {
|
||||
await this.init();
|
||||
if (database.isMemory) {
|
||||
database.images = {};
|
||||
} else {
|
||||
return new Promise((resolve, reject) => {
|
||||
const transaction = database.transaction('images', 'readwrite');
|
||||
const images = transaction.objectStore('images');
|
||||
const getAllImagesRequest = images.getAll();
|
||||
getAllImagesRequest.onsuccess = async function () {
|
||||
const allImages = getAllImagesRequest.result;
|
||||
let errorOccurred = false;
|
||||
for (let image of allImages) {
|
||||
if (image.tabUuid === tabUuid) {
|
||||
try {
|
||||
await new Promise((deleteResolve, deleteReject) => {
|
||||
const request = images.delete(image.id);
|
||||
request.onsuccess = function() {
|
||||
deleteResolve();
|
||||
};
|
||||
request.onerror = function() {
|
||||
deleteReject(request.error);
|
||||
};
|
||||
});
|
||||
} catch (error) {
|
||||
errorOccurred = true;
|
||||
// Should eventually be deleted when database is deleted due to timeout
|
||||
}
|
||||
}
|
||||
}
|
||||
if (errorOccurred) {
|
||||
// Use a different uuid to prevent conflicts
|
||||
tabUuid = uuidv4();
|
||||
}
|
||||
resolve();
|
||||
};
|
||||
getAllImagesRequest.onerror = function () {
|
||||
reject(request.error);
|
||||
};
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
37
src/js/actions/toggle-layer-visibility.js
Normal file
@ -0,0 +1,37 @@
|
||||
import app from '../app.js';
|
||||
import config from '../config.js';
|
||||
import { Base_action } from './base.js';
|
||||
|
||||
export class Toggle_layer_visibility_action extends Base_action {
|
||||
/**
|
||||
* toggle layer visibility
|
||||
*
|
||||
* @param {int} layer_id
|
||||
*/
|
||||
constructor(layer_id) {
|
||||
super('toggle_layer_visibility', 'Toggle Layer Visibility');
|
||||
this.layer_id = parseInt(layer_id);
|
||||
this.old_visible = null;
|
||||
}
|
||||
|
||||
async do() {
|
||||
super.do();
|
||||
const layer = app.Layers.get_layer(this.layer_id);
|
||||
this.old_visible = layer.visible;
|
||||
if (layer.visible == false)
|
||||
layer.visible = true;
|
||||
else
|
||||
layer.visible = false;
|
||||
app.Layers.render();
|
||||
app.GUI.GUI_layers.render_layers();
|
||||
}
|
||||
|
||||
async undo() {
|
||||
super.undo();
|
||||
const layer = app.Layers.get_layer(this.layer_id);
|
||||
layer.visible = this.old_visible;
|
||||
this.old_visible = null;
|
||||
app.Layers.render();
|
||||
app.GUI.GUI_layers.render_layers();
|
||||
}
|
||||
}
|
||||
37
src/js/actions/update-config.js
Normal file
@ -0,0 +1,37 @@
|
||||
import app from './../app.js';
|
||||
import config from './../config.js';
|
||||
import { Base_action } from './base.js';
|
||||
|
||||
export class Update_config_action extends Base_action {
|
||||
/**
|
||||
* Updates the app config with the provided settings
|
||||
*
|
||||
* @param {object} settings
|
||||
*/
|
||||
constructor(settings) {
|
||||
super('update_config', 'Update Config');
|
||||
this.settings = settings;
|
||||
this.old_settings = {};
|
||||
}
|
||||
|
||||
async do() {
|
||||
super.do();
|
||||
for (let i in this.settings) {
|
||||
this.old_settings[i] = config[i];
|
||||
config[i] = this.settings[i];
|
||||
}
|
||||
}
|
||||
|
||||
async undo() {
|
||||
super.undo();
|
||||
for (let i in this.old_settings) {
|
||||
config[i] = this.old_settings[i];
|
||||
}
|
||||
this.old_settings = {};
|
||||
}
|
||||
|
||||
free() {
|
||||
this.settings = null;
|
||||
this.old_settings = null;
|
||||
}
|
||||
}
|
||||
149
src/js/actions/update-layer-image.js
Normal file
@ -0,0 +1,149 @@
|
||||
import app from './../app.js';
|
||||
import config from './../config.js';
|
||||
import Helper_class from './../libs/helpers.js';
|
||||
import alertify from './../../../node_modules/alertifyjs/build/alertify.min.js';
|
||||
import image_store from './store/image-store.js';
|
||||
import { Base_action } from './base.js';
|
||||
|
||||
const Helper = new Helper_class();
|
||||
|
||||
export class Update_layer_image_action extends Base_action {
|
||||
/**
|
||||
* updates layer image data
|
||||
*
|
||||
* @param {canvas} canvas
|
||||
* @param {int} layer_id (optional)
|
||||
*/
|
||||
constructor(canvas, layer_id) {
|
||||
super('update_layer_image', 'Update Layer Image');
|
||||
this.canvas = canvas;
|
||||
if (layer_id == null)
|
||||
layer_id = config.layer.id;
|
||||
this.layer_id = parseInt(layer_id);
|
||||
this.reference_layer = null;
|
||||
this.old_image_id = null;
|
||||
this.new_image_id = null;
|
||||
this.old_link_database_id = null;
|
||||
}
|
||||
|
||||
async do() {
|
||||
super.do();
|
||||
this.reference_layer = app.Layers.get_layer(this.layer_id);
|
||||
if (!this.reference_layer) {
|
||||
throw new Error('Aborted - layer with specified id doesn\'t exist');
|
||||
}
|
||||
if (this.reference_layer.type != 'image'){
|
||||
alertify.error('Error: layer must be image.');
|
||||
throw new Error('Aborted - layer is not an image');
|
||||
}
|
||||
|
||||
// Get data url representation of image
|
||||
let canvas_data_url;
|
||||
if (this.new_image_id) {
|
||||
try {
|
||||
canvas_data_url = await image_store.get(this.new_image_id);
|
||||
} catch (error) {
|
||||
throw new Error('Aborted - problem retrieving cached image from database');
|
||||
}
|
||||
} else if (this.canvas) {
|
||||
if (Helper.is_edge_or_ie() == false && typeof(FileReader) !== 'undefined') {
|
||||
// Update image using blob and FileReader (async)
|
||||
await new Promise((resolve) => {
|
||||
this.canvas.toBlob((blob) => {
|
||||
var reader = new FileReader();
|
||||
reader.onloadend = () => {
|
||||
canvas_data_url = reader.result;
|
||||
resolve();
|
||||
}
|
||||
reader.readAsDataURL(blob);
|
||||
}, 'image/png');
|
||||
});
|
||||
}
|
||||
else {
|
||||
// Slow way for IE, Edge
|
||||
canvas_data_url = this.canvas.toDataURL();
|
||||
}
|
||||
}
|
||||
|
||||
// Store data url in database
|
||||
try {
|
||||
if (!this.old_image_id) {
|
||||
if (this.reference_layer._link_database_id) {
|
||||
this.old_image_id = this.reference_layer._link_database_id;
|
||||
} else {
|
||||
this.old_image_id = await image_store.add(this.reference_layer.link.src);
|
||||
}
|
||||
}
|
||||
if (!this.new_image_id) {
|
||||
this.new_image_id = await image_store.add(canvas_data_url);
|
||||
}
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
requestAnimationFrame(() => {
|
||||
app.State.free(0, this.database_estimate || 1)
|
||||
});
|
||||
}
|
||||
|
||||
// Estimate storage size
|
||||
try {
|
||||
this.database_estimate = new Blob([await image_store.get(this.old_image_id)]).size;
|
||||
} catch (e) {}
|
||||
|
||||
// Assign layer properties
|
||||
this.reference_layer.link.src = canvas_data_url;
|
||||
this.old_link_database_id = this.reference_layer._link_database_id;
|
||||
this.reference_layer._link_database_id = this.new_image_id;
|
||||
|
||||
this.canvas = null;
|
||||
config.need_render = true;
|
||||
}
|
||||
|
||||
async undo() {
|
||||
super.undo();
|
||||
|
||||
// Estimate storage size
|
||||
try {
|
||||
this.database_estimate = new Blob([this.reference_layer.link.src]).size;
|
||||
} catch (e) {}
|
||||
|
||||
// Restore old image
|
||||
if (this.old_image_id != null) {
|
||||
try {
|
||||
this.reference_layer.link.src = await image_store.get(this.old_image_id);
|
||||
} catch (error) {
|
||||
throw new Error('Failed to retrieve image from store');
|
||||
}
|
||||
}
|
||||
this.reference_layer._link_database_id = this.old_link_database_id;
|
||||
this.reference_layer = null;
|
||||
config.need_render = true;
|
||||
}
|
||||
|
||||
async free() {
|
||||
let has_error = false;
|
||||
if (this.new_image_id != null) {
|
||||
try {
|
||||
await image_store.delete(this.new_image_id);
|
||||
} catch (error) {
|
||||
has_error = true;
|
||||
}
|
||||
this.new_image_id = null;
|
||||
}
|
||||
if (this.is_done || !this.old_link_database_id) {
|
||||
if (this.old_image_id != null) {
|
||||
try {
|
||||
await image_store.delete(this.old_image_id);
|
||||
} catch (error) {
|
||||
has_error = true;
|
||||
}
|
||||
this.old_image_id = null;
|
||||
}
|
||||
}
|
||||
this.canvas = null;
|
||||
this.old_link_database_id = null;
|
||||
this.reference_layer = null;
|
||||
if (has_error) {
|
||||
alertify.error('A problem occurred while removing undo history. It\'s suggested you save your work and refresh the page in order to free up memory.');
|
||||
}
|
||||
}
|
||||
}
|
||||
67
src/js/actions/update-layer.js
Normal file
@ -0,0 +1,67 @@
|
||||
import app from './../app.js';
|
||||
import config from './../config.js';
|
||||
import { Base_action } from './base.js';
|
||||
|
||||
export class Update_layer_action extends Base_action {
|
||||
/**
|
||||
* Updates an existing layer with the provided settings
|
||||
* WARNING: If passing objects or arrays into settings, make sure these are new or cloned objects, and not a modified existing object!
|
||||
*
|
||||
* @param {string} layer_id
|
||||
* @param {object} settings
|
||||
*/
|
||||
constructor(layer_id, settings) {
|
||||
super('update_layer', 'Update Layer');
|
||||
this.layer_id = layer_id;
|
||||
this.settings = settings;
|
||||
this.reference_layer = null;
|
||||
this.old_settings = {};
|
||||
}
|
||||
|
||||
async do() {
|
||||
super.do();
|
||||
this.reference_layer = app.Layers.get_layer(this.layer_id);
|
||||
if (!this.reference_layer) {
|
||||
throw new Error('Aborted - layer with specified id doesn\'t exist');
|
||||
}
|
||||
for (let i in this.settings) {
|
||||
if (i == 'id')
|
||||
continue;
|
||||
if (i == 'order')
|
||||
continue;
|
||||
this.old_settings[i] = this.reference_layer[i];
|
||||
this.reference_layer[i] = this.settings[i];
|
||||
}
|
||||
if (this.reference_layer.type === 'text') {
|
||||
this.reference_layer._needs_update_data = true;
|
||||
}
|
||||
if (this.settings.params || this.settings.width || this.settings.height) {
|
||||
config.need_render_changed_params = true;
|
||||
}
|
||||
config.need_render = true;
|
||||
}
|
||||
|
||||
async undo() {
|
||||
super.undo();
|
||||
if (this.reference_layer) {
|
||||
for (let i in this.old_settings) {
|
||||
this.reference_layer[i] = this.old_settings[i];
|
||||
}
|
||||
if (this.reference_layer.type === 'text') {
|
||||
this.reference_layer._needs_update_data = true;
|
||||
}
|
||||
if (this.old_settings.params || this.old_settings.width || this.old_settings.height) {
|
||||
config.need_render_changed_params = true;
|
||||
}
|
||||
this.old_settings = {};
|
||||
}
|
||||
this.reference_layer = null;
|
||||
config.need_render = true;
|
||||
}
|
||||
|
||||
free() {
|
||||
this.settings = null;
|
||||
this.old_settings = null;
|
||||
this.reference_layer = null;
|
||||
}
|
||||
}
|
||||
11
src/js/app.js
Normal file
@ -0,0 +1,11 @@
|
||||
// Store singletons for easy access
|
||||
export default {
|
||||
GUI: null,
|
||||
Tools: null,
|
||||
Layers: null,
|
||||
Config: null,
|
||||
State: null,
|
||||
FileOpen: null,
|
||||
FileSave: null,
|
||||
Actions: null
|
||||
};
|
||||
@ -14,7 +14,7 @@ const menuDefinition = [
|
||||
children: [
|
||||
{
|
||||
name: 'Open File',
|
||||
shortcut: 'Drag&Drop',
|
||||
shortcut: 'O',
|
||||
ellipsis: true,
|
||||
target: 'file/open.open_file'
|
||||
},
|
||||
@ -46,15 +46,21 @@ const menuDefinition = [
|
||||
{
|
||||
name: 'Search Images',
|
||||
ellipsis: true,
|
||||
target: 'file/search.search'
|
||||
target: 'file/open.search'
|
||||
},
|
||||
{
|
||||
divider: true
|
||||
},
|
||||
{
|
||||
name: 'Save As',
|
||||
name: 'Export',
|
||||
ellipsis: true,
|
||||
shortcut: 'S',
|
||||
target: 'file/save.export'
|
||||
},
|
||||
{
|
||||
name: 'Save As',
|
||||
ellipsis: true,
|
||||
shortcut: 'Shift + S',
|
||||
target: 'file/save.save'
|
||||
},
|
||||
{
|
||||
@ -65,7 +71,7 @@ const menuDefinition = [
|
||||
{
|
||||
name: 'Print',
|
||||
ellipsis: true,
|
||||
shortcut: 'Ctrl-P',
|
||||
shortcut: 'Ctrl+P',
|
||||
target: 'file/print.print'
|
||||
},
|
||||
{
|
||||
@ -88,8 +94,14 @@ const menuDefinition = [
|
||||
children: [
|
||||
{
|
||||
name: 'Undo',
|
||||
shortcut: 'Ctrl+Z',
|
||||
target: 'edit/undo.undo'
|
||||
},
|
||||
{
|
||||
name: 'Redo',
|
||||
shortcut: 'Ctrl+Y',
|
||||
target: 'edit/redo.redo'
|
||||
},
|
||||
{
|
||||
divider: true
|
||||
},
|
||||
@ -102,6 +114,11 @@ const menuDefinition = [
|
||||
name: 'Copy Selection',
|
||||
target: 'layer/new.new_selection'
|
||||
},
|
||||
{
|
||||
name: 'Copy to Clipboard',
|
||||
shortcut: 'Ctrl+C',
|
||||
target: 'edit/copy.copy_to_clipboard'
|
||||
},
|
||||
{
|
||||
name: 'Paste',
|
||||
shortcut: 'Ctrl+V',
|
||||
@ -112,20 +129,85 @@ const menuDefinition = [
|
||||
},
|
||||
{
|
||||
name: 'Select All',
|
||||
shortcut: 'Ctrl+A',
|
||||
target: 'edit/selection.select_all'
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
name: 'View',
|
||||
children: [
|
||||
{
|
||||
name: 'Zoom',
|
||||
children: [
|
||||
{
|
||||
name: 'Zoom In',
|
||||
target: 'view/zoom.in'
|
||||
},
|
||||
{
|
||||
name: 'Zoom Out',
|
||||
target: 'view/zoom.out'
|
||||
},
|
||||
{
|
||||
divider: true
|
||||
},
|
||||
{
|
||||
name: 'Original Size',
|
||||
target: 'view/zoom.original'
|
||||
},
|
||||
{
|
||||
name: 'Fit Window',
|
||||
target: 'view/zoom.auto'
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
name: 'Grid',
|
||||
shortcut: 'G',
|
||||
target: 'view/grid.grid'
|
||||
},
|
||||
{
|
||||
name: 'Guides',
|
||||
children: [
|
||||
{
|
||||
name: 'Insert',
|
||||
ellipsis: true,
|
||||
target: 'view/guides.insert'
|
||||
},
|
||||
{
|
||||
name: 'Update',
|
||||
target: 'view/guides.update'
|
||||
},
|
||||
{
|
||||
name: 'Remove all',
|
||||
target: 'view/guides.remove'
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
name: 'Ruler',
|
||||
target: 'view/ruler.ruler'
|
||||
},
|
||||
{
|
||||
divider: true
|
||||
},
|
||||
{
|
||||
name: 'Full Screen',
|
||||
target: 'view/full_screen.fs'
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
name: 'Image',
|
||||
children: [
|
||||
{
|
||||
name: 'Information',
|
||||
shortcut: 'I',
|
||||
ellipsis: true,
|
||||
target: 'image/information.information'
|
||||
},
|
||||
{
|
||||
name: 'Size',
|
||||
name: 'Canvas Size',
|
||||
ellipsis: true,
|
||||
target: 'image/size.size'
|
||||
},
|
||||
@ -135,30 +217,6 @@ const menuDefinition = [
|
||||
shortcut: 'T',
|
||||
target: 'image/trim.trim'
|
||||
},
|
||||
{
|
||||
name: 'Zoom',
|
||||
children: [
|
||||
{
|
||||
name: 'Zoom In',
|
||||
target: 'image/zoom.in'
|
||||
},
|
||||
{
|
||||
name: 'Zoom Out',
|
||||
target: 'image/zoom.out'
|
||||
},
|
||||
{
|
||||
divider: true
|
||||
},
|
||||
{
|
||||
name: 'Original Size',
|
||||
target: 'image/zoom.original'
|
||||
},
|
||||
{
|
||||
name: 'Fit Window',
|
||||
target: 'image/zoom.auto'
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
divider: true
|
||||
},
|
||||
@ -218,25 +276,18 @@ const menuDefinition = [
|
||||
ellipsis: true,
|
||||
target: 'image/palette.palette'
|
||||
},
|
||||
{
|
||||
name: 'Grid',
|
||||
ellipsis: true,
|
||||
shortcut: 'G',
|
||||
target: 'image/grid.grid'
|
||||
},
|
||||
{
|
||||
divider: true
|
||||
},
|
||||
{
|
||||
name: 'Histogram',
|
||||
ellipsis: true,
|
||||
shortcut: 'H',
|
||||
target: 'image/histogram.histogram'
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
name: 'Layers',
|
||||
name: 'Layer',
|
||||
children: [
|
||||
{
|
||||
name: 'New',
|
||||
@ -421,6 +472,11 @@ const menuDefinition = [
|
||||
ellipsis: true,
|
||||
target: 'effects/black_and_white.black_and_white'
|
||||
},
|
||||
{
|
||||
name: 'Borders',
|
||||
ellipsis: true,
|
||||
target: 'effects/borders.borders'
|
||||
},
|
||||
{
|
||||
name: 'Blueprint',
|
||||
target: 'effects/blueprint.blueprint'
|
||||
@ -524,11 +580,6 @@ const menuDefinition = [
|
||||
{
|
||||
name: 'Tools',
|
||||
children: [
|
||||
{
|
||||
name: 'Borders',
|
||||
ellipsis: true,
|
||||
target: 'tools/borders.borders'
|
||||
},
|
||||
{
|
||||
name: 'Sprites',
|
||||
target: 'tools/sprites.sprites'
|
||||
@ -584,6 +635,104 @@ const menuDefinition = [
|
||||
{
|
||||
divider: true
|
||||
},
|
||||
{
|
||||
name: 'Language',
|
||||
children: [
|
||||
{
|
||||
name: 'English',
|
||||
target: 'tools/translate.translate',
|
||||
parameter: 'en',
|
||||
},
|
||||
{
|
||||
divider: true
|
||||
},
|
||||
{
|
||||
//Arabic
|
||||
name: 'عربي',
|
||||
target: 'tools/translate.translate',
|
||||
parameter: 'ar',
|
||||
},
|
||||
{
|
||||
//Chinese simplified
|
||||
name: '简体中文',
|
||||
target: 'tools/translate.translate',
|
||||
parameter: 'zh',
|
||||
},
|
||||
{
|
||||
name: 'Deutsch',
|
||||
target: 'tools/translate.translate',
|
||||
parameter: 'de',
|
||||
},
|
||||
{
|
||||
name: 'Dutch',
|
||||
target: 'tools/translate.translate',
|
||||
parameter: 'nl',
|
||||
},
|
||||
{
|
||||
name: 'English (UK)',
|
||||
target: 'tools/translate.translate',
|
||||
parameter: 'uk',
|
||||
},
|
||||
{
|
||||
name: 'Español',
|
||||
target: 'tools/translate.translate',
|
||||
parameter: 'es',
|
||||
},
|
||||
{
|
||||
name: 'Français',
|
||||
target: 'tools/translate.translate',
|
||||
parameter: 'fr',
|
||||
},
|
||||
{
|
||||
name: 'Greek',
|
||||
target: 'tools/translate.translate',
|
||||
parameter: 'el',
|
||||
},
|
||||
{
|
||||
name: 'Italiano',
|
||||
target: 'tools/translate.translate',
|
||||
parameter: 'it',
|
||||
},
|
||||
{
|
||||
//Japanese
|
||||
name: '日本語',
|
||||
target: 'tools/translate.translate',
|
||||
parameter: 'ja',
|
||||
},
|
||||
{
|
||||
//Korean
|
||||
name: '한국어',
|
||||
target: 'tools/translate.translate',
|
||||
parameter: 'ko',
|
||||
},
|
||||
{
|
||||
name: 'Lietuvių',
|
||||
target: 'tools/translate.translate',
|
||||
parameter: 'lt',
|
||||
},
|
||||
{
|
||||
name: 'Português',
|
||||
target: 'tools/translate.translate',
|
||||
parameter: 'pt',
|
||||
},
|
||||
{
|
||||
name: 'русский язык',
|
||||
target: 'tools/translate.translate',
|
||||
parameter: 'ru',
|
||||
},
|
||||
{
|
||||
name: 'Türkçe',
|
||||
target: 'tools/translate.translate',
|
||||
parameter: 'tr',
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
name: 'Search',
|
||||
shortcut: 'F3',
|
||||
ellipsis: true,
|
||||
target: 'tools/search.search'
|
||||
},
|
||||
{
|
||||
name: 'Settings',
|
||||
ellipsis: true,
|
||||
@ -603,67 +752,12 @@ const menuDefinition = [
|
||||
name: 'Report Issues',
|
||||
href: 'https://github.com/viliusle/miniPaint/issues'
|
||||
},
|
||||
{
|
||||
name: 'Language',
|
||||
children: [
|
||||
{
|
||||
name: 'English',
|
||||
target: 'help/translate.translate.en'
|
||||
},
|
||||
{
|
||||
divider: true
|
||||
},
|
||||
{
|
||||
name: '简体中文',
|
||||
target: 'help/translate.translate.zh'
|
||||
},
|
||||
{
|
||||
name: 'Español',
|
||||
target: 'help/translate.translate.es'
|
||||
},
|
||||
{
|
||||
name: 'Français',
|
||||
target: 'help/translate.translate.fr'
|
||||
},
|
||||
{
|
||||
name: 'Deutsch',
|
||||
target: 'help/translate.translate.de'
|
||||
},
|
||||
{
|
||||
name: 'Italiano',
|
||||
target: 'help/translate.translate.it'
|
||||
},
|
||||
{
|
||||
name: '日本語',
|
||||
target: 'help/translate.translate.ja'
|
||||
},
|
||||
{
|
||||
name: '한국어',
|
||||
target: 'help/translate.translate.ko'
|
||||
},
|
||||
{
|
||||
name: 'Lietuvių',
|
||||
target: 'help/translate.translate.lt'
|
||||
},
|
||||
{
|
||||
name: 'Português',
|
||||
target: 'help/translate.translate.pt'
|
||||
},
|
||||
{
|
||||
name: 'русский язык',
|
||||
target: 'help/translate.translate.ru'
|
||||
},
|
||||
{
|
||||
name: 'Türkçe',
|
||||
target: 'help/translate.translate.tr'
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
divider: true
|
||||
},
|
||||
{
|
||||
name: 'About',
|
||||
ellipsis: true,
|
||||
target: 'help/about.about'
|
||||
}
|
||||
]
|
||||
|
||||
279
src/js/config.js
@ -12,15 +12,24 @@ config.visible_height = null;
|
||||
config.COLOR = '#008000';
|
||||
config.ALPHA = 255;
|
||||
config.ZOOM = 1;
|
||||
config.SNAP = true;
|
||||
config.pixabay_key = '3ca2cd8af3fde33af218bea02-9021417';
|
||||
config.safe_search_can_be_disabled = true;
|
||||
config.google_webfonts_key = 'AIzaSyAC_Tx8RKkvN235fXCUyi_5XhSaRCzNhMg';
|
||||
config.layers = [];
|
||||
config.layer = null;
|
||||
config.need_render = false;
|
||||
config.need_render_changed_params = false; // Set specifically when param change in layer details triggered render
|
||||
config.mouse = {};
|
||||
config.mouse_lock = null;
|
||||
config.swatches = {
|
||||
default: [] // Only default used right now, object format for swatch swapping in future.
|
||||
};
|
||||
config.user_fonts = {};
|
||||
config.guides_enabled = true;
|
||||
config.guides = [];
|
||||
config.ruler_active = false;
|
||||
config.enable_autoresize_by_default = true;
|
||||
|
||||
//requires styles in reset.css
|
||||
config.themes = [
|
||||
@ -29,13 +38,14 @@ config.themes = [
|
||||
'green',
|
||||
];
|
||||
|
||||
//no-translate BEGIN
|
||||
config.FONTS = [
|
||||
"Arial",
|
||||
"Courier",
|
||||
"Impact",
|
||||
"Impact",
|
||||
"Helvetica",
|
||||
"Monospace",
|
||||
"Tahoma",
|
||||
"Monospace",
|
||||
"Tahoma",
|
||||
"Times New Roman",
|
||||
"Verdana",
|
||||
"Amatic SC",
|
||||
@ -67,6 +77,7 @@ config.FONTS = [
|
||||
"Titillium Web",
|
||||
"Ubuntu"
|
||||
];
|
||||
//no-translate END
|
||||
|
||||
config.TOOLS = [
|
||||
{
|
||||
@ -78,13 +89,11 @@ config.TOOLS = [
|
||||
},
|
||||
{
|
||||
name: 'selection',
|
||||
title: 'Selection',
|
||||
attributes: {},
|
||||
on_leave: 'on_leave',
|
||||
},
|
||||
{
|
||||
name: 'brush',
|
||||
title: 'Brush',
|
||||
attributes: {
|
||||
size: 4,
|
||||
pressure: false,
|
||||
@ -92,23 +101,19 @@ config.TOOLS = [
|
||||
},
|
||||
{
|
||||
name: 'pencil',
|
||||
title: 'Pencil',
|
||||
on_update: 'on_params_update',
|
||||
attributes: {
|
||||
antialiasing: true,
|
||||
size: 2,
|
||||
size: 1,
|
||||
pressure: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'pick_color',
|
||||
title: 'Pick Color',
|
||||
attributes: {
|
||||
global: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'erase',
|
||||
title: 'Erase',
|
||||
on_update: 'on_params_update',
|
||||
attributes: {
|
||||
size: 30,
|
||||
@ -127,7 +132,6 @@ config.TOOLS = [
|
||||
},
|
||||
{
|
||||
name: 'fill',
|
||||
title: 'Fill',
|
||||
attributes: {
|
||||
power: 5,
|
||||
anti_aliasing: false,
|
||||
@ -135,35 +139,53 @@ config.TOOLS = [
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'line',
|
||||
title: 'Line',
|
||||
name: 'shape',
|
||||
on_activate: 'on_activate',
|
||||
title: 'Shapes (H)',
|
||||
attributes: {
|
||||
size: 1,
|
||||
type: {
|
||||
value: 'Simple',
|
||||
values: ['Simple', 'Arrow'],
|
||||
},
|
||||
size: 3,
|
||||
stroke: '#00aa00',
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'line',
|
||||
visible: false,
|
||||
attributes: {
|
||||
size: 4,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'arrow',
|
||||
visible: false,
|
||||
attributes: {
|
||||
size: 4,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'rectangle',
|
||||
title: 'Rectangle',
|
||||
visible: false,
|
||||
attributes: {
|
||||
size: 1,
|
||||
border_size: 4,
|
||||
border: true,
|
||||
fill: true,
|
||||
border_color: '#555555',
|
||||
fill_color: '#aaaaaa',
|
||||
radius: {
|
||||
value: 0,
|
||||
min: 0,
|
||||
},
|
||||
fill: true,
|
||||
square: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'circle',
|
||||
title: 'Circle',
|
||||
name: 'ellipse',
|
||||
visible: false,
|
||||
attributes: {
|
||||
size: 1,
|
||||
border_size: 4,
|
||||
border: true,
|
||||
fill: true,
|
||||
border_color: '#555555',
|
||||
fill_color: '#aaaaaa',
|
||||
circle: false,
|
||||
},
|
||||
},
|
||||
@ -175,14 +197,196 @@ config.TOOLS = [
|
||||
size: 30,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'triangle',
|
||||
visible: false,
|
||||
attributes: {
|
||||
border_size: 4,
|
||||
border: true,
|
||||
fill: true,
|
||||
border_color: '#555555',
|
||||
fill_color: '#aaaaaa',
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'right_triangle',
|
||||
visible: false,
|
||||
attributes: {
|
||||
border_size: 4,
|
||||
border: true,
|
||||
fill: true,
|
||||
border_color: '#555555',
|
||||
fill_color: '#aaaaaa',
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'romb',
|
||||
visible: false,
|
||||
attributes: {
|
||||
border_size: 4,
|
||||
border: true,
|
||||
fill: true,
|
||||
border_color: '#555555',
|
||||
fill_color: '#aaaaaa',
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'parallelogram',
|
||||
visible: false,
|
||||
attributes: {
|
||||
border_size: 4,
|
||||
border: true,
|
||||
fill: true,
|
||||
border_color: '#555555',
|
||||
fill_color: '#aaaaaa',
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'trapezoid',
|
||||
visible: false,
|
||||
attributes: {
|
||||
border_size: 4,
|
||||
border: true,
|
||||
fill: true,
|
||||
border_color: '#555555',
|
||||
fill_color: '#aaaaaa',
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'plus',
|
||||
visible: false,
|
||||
attributes: {
|
||||
border_size: 4,
|
||||
border: true,
|
||||
fill: true,
|
||||
border_color: '#555555',
|
||||
fill_color: '#aaaaaa',
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'pentagon',
|
||||
visible: false,
|
||||
attributes: {
|
||||
border_size: 4,
|
||||
border: true,
|
||||
fill: true,
|
||||
border_color: '#555555',
|
||||
fill_color: '#aaaaaa',
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'hexagon',
|
||||
visible: false,
|
||||
attributes: {
|
||||
border_size: 4,
|
||||
border: true,
|
||||
fill: true,
|
||||
border_color: '#555555',
|
||||
fill_color: '#aaaaaa',
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'star',
|
||||
visible: false,
|
||||
attributes: {
|
||||
border_size: 4,
|
||||
corners: 5,
|
||||
inner_radius: 40,
|
||||
border: true,
|
||||
fill: true,
|
||||
border_color: '#555555',
|
||||
fill_color: '#aaaaaa',
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'heart',
|
||||
visible: false,
|
||||
attributes: {
|
||||
border_size: 4,
|
||||
border: true,
|
||||
fill: true,
|
||||
border_color: '#555555',
|
||||
fill_color: '#aaaaaa',
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'cylinder',
|
||||
visible: false,
|
||||
attributes: {
|
||||
border_size: 4,
|
||||
border: true,
|
||||
fill: true,
|
||||
border_color: '#555555',
|
||||
fill_color: '#aaaaaa',
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'human',
|
||||
visible: false,
|
||||
attributes: {
|
||||
border_size: 4,
|
||||
fill: true,
|
||||
border_color: '#555555',
|
||||
fill_color: '#aaaaaa',
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'tear',
|
||||
visible: false,
|
||||
attributes: {
|
||||
border_size: 4,
|
||||
border: true,
|
||||
fill: true,
|
||||
border_color: '#555555',
|
||||
fill_color: '#aaaaaa',
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'cog',
|
||||
visible: false,
|
||||
attributes: {
|
||||
fill_color: '#555555',
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'bezier_curve',
|
||||
visible: false,
|
||||
attributes: {
|
||||
size: 4,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'moon',
|
||||
visible: false,
|
||||
attributes: {
|
||||
border_size: 4,
|
||||
border: true,
|
||||
fill: true,
|
||||
border_color: '#555555',
|
||||
fill_color: '#aaaaaa',
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'callout',
|
||||
visible: false,
|
||||
attributes: {
|
||||
border_size: 4,
|
||||
border: true,
|
||||
fill: true,
|
||||
border_color: '#555555',
|
||||
fill_color: '#aaaaaa',
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'text',
|
||||
title: 'Text',
|
||||
on_update: 'on_params_update',
|
||||
attributes: {
|
||||
font: {
|
||||
value: 'Arial',
|
||||
values: ['', ...config.FONTS.sort()],
|
||||
values() {
|
||||
const user_font_names = Object.keys(config.user_fonts);
|
||||
return ['', '[Add Font...]', ...Array.from(new Set([...config.FONTS, ...user_font_names].sort()))];
|
||||
}
|
||||
},
|
||||
size: 40,
|
||||
bold: {
|
||||
@ -224,7 +428,6 @@ config.TOOLS = [
|
||||
},
|
||||
{
|
||||
name: 'gradient',
|
||||
title: 'Gradient',
|
||||
attributes: {
|
||||
color_1: '#008000',
|
||||
color_2: '#ffffff',
|
||||
@ -235,7 +438,6 @@ config.TOOLS = [
|
||||
},
|
||||
{
|
||||
name: 'clone',
|
||||
title: 'Clone tool',
|
||||
attributes: {
|
||||
size: 30,
|
||||
anti_aliasing: true,
|
||||
@ -247,7 +449,6 @@ config.TOOLS = [
|
||||
},
|
||||
{
|
||||
name: 'crop',
|
||||
title: 'Crop',
|
||||
on_update: 'on_params_update',
|
||||
on_leave: 'on_leave',
|
||||
attributes: {
|
||||
@ -256,7 +457,6 @@ config.TOOLS = [
|
||||
},
|
||||
{
|
||||
name: 'blur',
|
||||
title: 'Blur tool',
|
||||
attributes: {
|
||||
size: 30,
|
||||
strength: 1,
|
||||
@ -264,14 +464,12 @@ config.TOOLS = [
|
||||
},
|
||||
{
|
||||
name: 'sharpen',
|
||||
title: 'Sharpen tool',
|
||||
attributes: {
|
||||
size: 30,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'desaturate',
|
||||
title: 'Desaturate',
|
||||
attributes: {
|
||||
size: 50,
|
||||
anti_aliasing: true,
|
||||
@ -279,7 +477,7 @@ config.TOOLS = [
|
||||
},
|
||||
{
|
||||
name: 'bulge_pinch',
|
||||
title: 'Bulge/Pinch tool',
|
||||
title: 'Bulge/Pinch Tool',
|
||||
attributes: {
|
||||
radius: 80,
|
||||
power: 50,
|
||||
@ -288,7 +486,7 @@ config.TOOLS = [
|
||||
},
|
||||
{
|
||||
name: 'animation',
|
||||
title: 'Play animation',
|
||||
on_activate: 'on_activate',
|
||||
on_update: 'on_params_update',
|
||||
on_leave: 'on_leave',
|
||||
attributes: {
|
||||
@ -296,6 +494,17 @@ config.TOOLS = [
|
||||
delay: 400,
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'polygon',
|
||||
visible: false,
|
||||
attributes: {
|
||||
border_size: 4,
|
||||
border: true,
|
||||
fill: true,
|
||||
border_color: '#555555',
|
||||
fill_color: '#aaaaaa',
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
//link to active tool
|
||||
|
||||
@ -4,6 +4,7 @@
|
||||
*/
|
||||
|
||||
import config from './../config.js';
|
||||
import Base_layers_class from './base-layers.js';
|
||||
import GUI_tools_class from './gui/gui-tools.js';
|
||||
import GUI_preview_class from './gui/gui-preview.js';
|
||||
import GUI_colors_class from './gui/gui-colors.js';
|
||||
@ -11,7 +12,8 @@ import GUI_layers_class from './gui/gui-layers.js';
|
||||
import GUI_information_class from './gui/gui-information.js';
|
||||
import GUI_details_class from './gui/gui-details.js';
|
||||
import GUI_menu_class from './gui/gui-menu.js';
|
||||
import Help_translate_class from './../modules/help/translate.js';
|
||||
import Tools_translate_class from './../modules/tools/translate.js';
|
||||
import Tools_settings_class from './../modules/tools/settings.js';
|
||||
import Helper_class from './../libs/helpers.js';
|
||||
import alertify from './../../../node_modules/alertifyjs/build/alertify.min.js';
|
||||
|
||||
@ -30,6 +32,7 @@ class Base_gui_class {
|
||||
instance = this;
|
||||
|
||||
this.Helper = new Helper_class();
|
||||
this.Base_layers = new Base_layers_class();
|
||||
|
||||
//last used menu id
|
||||
this.last_menu = '';
|
||||
@ -61,10 +64,18 @@ class Base_gui_class {
|
||||
this.GUI_information = new GUI_information_class(this);
|
||||
this.GUI_details = new GUI_details_class(this);
|
||||
this.GUI_menu = new GUI_menu_class();
|
||||
this.Help_translate = new Help_translate_class();
|
||||
this.Tools_translate = new Tools_translate_class();
|
||||
this.Tools_settings = new Tools_settings_class();
|
||||
this.modules = {};
|
||||
}
|
||||
|
||||
init() {
|
||||
this.load_modules();
|
||||
this.load_default_values();
|
||||
this.render_main_gui();
|
||||
this.init_service_worker();
|
||||
}
|
||||
|
||||
load_modules() {
|
||||
var _this = this;
|
||||
var modules_context = require.context("./../modules/", true, /\.js$/);
|
||||
@ -100,6 +111,26 @@ class Base_gui_class {
|
||||
if (transparency_type) {
|
||||
config.TRANSPARENCY_TYPE = transparency_type;
|
||||
}
|
||||
|
||||
//snap
|
||||
var snap_cookie = this.Helper.getCookie('snap');
|
||||
if (snap_cookie === null) {
|
||||
//default
|
||||
config.SNAP = true;
|
||||
}
|
||||
else{
|
||||
config.SNAP = Boolean(snap_cookie);
|
||||
}
|
||||
|
||||
//guides
|
||||
var guides_cookie = this.Helper.getCookie('guides');
|
||||
if (guides_cookie === null) {
|
||||
//default
|
||||
config.guides_enabled = true;
|
||||
}
|
||||
else{
|
||||
config.guides_enabled = Boolean(guides_cookie);
|
||||
}
|
||||
}
|
||||
|
||||
render_main_gui() {
|
||||
@ -120,15 +151,25 @@ class Base_gui_class {
|
||||
this.load_translations();
|
||||
}
|
||||
|
||||
init_service_worker() {
|
||||
/*if ('serviceWorker' in navigator) {
|
||||
navigator.serviceWorker.register('./service-worker.js').then(function(reg) {
|
||||
//Successfully registered service worker
|
||||
}).catch(function(err) {
|
||||
console.warn('Error registering service worker', err);
|
||||
});
|
||||
}*/
|
||||
}
|
||||
|
||||
set_events() {
|
||||
var _this = this;
|
||||
|
||||
//menu events
|
||||
this.GUI_menu.on('select_target', (target) => {
|
||||
this.GUI_menu.on('select_target', (target, object) => {
|
||||
var parts = target.split('.');
|
||||
var module = parts[0];
|
||||
var function_name = parts[1];
|
||||
var param = parts[2];
|
||||
var param = object.parameter ??= null;
|
||||
|
||||
//call module
|
||||
if (this.modules[module] == undefined) {
|
||||
@ -159,6 +200,9 @@ class Base_gui_class {
|
||||
});
|
||||
}
|
||||
|
||||
document.getElementById('left_mobile_menu_button').addEventListener('click', function (event) {
|
||||
document.querySelector('.sidebar_left').classList.toggle('active');
|
||||
});
|
||||
document.getElementById('mobile_menu_button').addEventListener('click', function (event) {
|
||||
document.querySelector('.sidebar_right').classList.toggle('active');
|
||||
});
|
||||
@ -168,6 +212,20 @@ class Base_gui_class {
|
||||
config.need_render = true;
|
||||
}, false);
|
||||
this.check_canvas_offset();
|
||||
|
||||
//confirmation on exit
|
||||
var exit_confirm = this.Tools_settings.get_setting('exit_confirm');
|
||||
window.addEventListener('beforeunload', function (e) {
|
||||
if(exit_confirm && (config.layers.length > 1 || _this.Base_layers.is_layer_empty(config.layer.id) == false)){
|
||||
e.preventDefault();
|
||||
e.returnValue = '';
|
||||
}
|
||||
return undefined;
|
||||
});
|
||||
|
||||
document.getElementById('canvas_minipaint').addEventListener('contextmenu', function (e) {
|
||||
e.preventDefault();
|
||||
}, false);
|
||||
}
|
||||
|
||||
check_canvas_offset() {
|
||||
@ -195,10 +253,12 @@ class Base_gui_class {
|
||||
config.visible_width = w;
|
||||
config.visible_height = h;
|
||||
|
||||
ctx.webkitImageSmoothingEnabled = false;
|
||||
ctx.oImageSmoothingEnabled = false;
|
||||
ctx.msImageSmoothingEnabled = false;
|
||||
ctx.imageSmoothingEnabled = false;
|
||||
if(config.ZOOM >= 1) {
|
||||
ctx.imageSmoothingEnabled = false;
|
||||
}
|
||||
else{
|
||||
ctx.imageSmoothingEnabled = true;
|
||||
}
|
||||
|
||||
this.render_canvas_background('canvas_minipaint');
|
||||
|
||||
@ -235,7 +295,7 @@ class Base_gui_class {
|
||||
|
||||
if (lang != null && lang != config.LANG) {
|
||||
config.LANG = lang.replace(/([^a-z]+)/gi, '');
|
||||
this.Help_translate.translate(config.LANG);
|
||||
this.Tools_translate.translate(config.LANG);
|
||||
}
|
||||
}
|
||||
|
||||
@ -245,34 +305,23 @@ class Base_gui_class {
|
||||
var page_h = wrapper.clientHeight;
|
||||
var auto_size = false;
|
||||
|
||||
var save_resolution_cookie = this.Helper.getCookie('save_resolution');
|
||||
var last_resolution = this.Helper.getCookie('last_resolution');
|
||||
if (save_resolution_cookie != null && save_resolution_cookie != ''
|
||||
&& last_resolution != null && last_resolution != '') {
|
||||
//load last saved resolution
|
||||
last_resolution = JSON.parse(last_resolution);
|
||||
config.WIDTH = parseInt(last_resolution[0]);
|
||||
config.HEIGHT = parseInt(last_resolution[1]);
|
||||
//use largest possible
|
||||
for (var i = this.common_dimensions.length - 1; i >= 0; i--) {
|
||||
if (this.common_dimensions[i][0] > page_w
|
||||
|| this.common_dimensions[i][1] > page_h) {
|
||||
//browser size is too small
|
||||
continue;
|
||||
}
|
||||
config.WIDTH = parseInt(this.common_dimensions[i][0]);
|
||||
config.HEIGHT = parseInt(this.common_dimensions[i][1]);
|
||||
auto_size = true;
|
||||
break;
|
||||
}
|
||||
else {
|
||||
//use largest possible
|
||||
for (var i = this.common_dimensions.length - 1; i >= 0; i--) {
|
||||
if (this.common_dimensions[i][0] > page_w
|
||||
|| this.common_dimensions[i][1] > page_h) {
|
||||
//browser size is too small
|
||||
continue;
|
||||
}
|
||||
config.WIDTH = parseInt(this.common_dimensions[i][0]);
|
||||
config.HEIGHT = parseInt(this.common_dimensions[i][1]);
|
||||
auto_size = true;
|
||||
break;
|
||||
}
|
||||
|
||||
if (auto_size == false) {
|
||||
//screen size is smaller then 400x300
|
||||
config.WIDTH = parseInt(page_w) - 15;
|
||||
config.HEIGHT = parseInt(page_h) - 10;
|
||||
}
|
||||
if (auto_size == false) {
|
||||
//screen size is smaller then 400x300
|
||||
config.WIDTH = parseInt(page_w) - 15;
|
||||
config.HEIGHT = parseInt(page_h) - 10;
|
||||
}
|
||||
}
|
||||
|
||||
@ -350,6 +399,41 @@ class Base_gui_class {
|
||||
ctx.stroke();
|
||||
}
|
||||
}
|
||||
|
||||
draw_guides(ctx){
|
||||
if(config.guides_enabled == false){
|
||||
return;
|
||||
}
|
||||
var thick_guides = this.Tools_settings.get_setting('thick_guides');
|
||||
|
||||
for(var i in config.guides) {
|
||||
var guide = config.guides[i];
|
||||
|
||||
if (guide.x === 0 || guide.y === 0) {
|
||||
continue;
|
||||
}
|
||||
|
||||
//set styles
|
||||
ctx.strokeStyle = '#00b8b8';
|
||||
if(thick_guides == false)
|
||||
ctx.lineWidth = 1;
|
||||
else
|
||||
ctx.lineWidth = 3;
|
||||
|
||||
ctx.beginPath();
|
||||
if (guide.y === null) {
|
||||
//vertical
|
||||
ctx.moveTo(guide.x, 0);
|
||||
ctx.lineTo(guide.x, config.HEIGHT);
|
||||
}
|
||||
if (guide.x === null) {
|
||||
//horizontal
|
||||
ctx.moveTo(0, guide.y);
|
||||
ctx.lineTo(config.WIDTH, guide.y);
|
||||
}
|
||||
ctx.stroke();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* change draw area size
|
||||
@ -395,7 +479,7 @@ class Base_gui_class {
|
||||
theme_name = theme_cookie;
|
||||
}
|
||||
else {
|
||||
theme_name = config.themes[0];
|
||||
theme_name = this.Tools_settings.get_setting('theme');
|
||||
}
|
||||
}
|
||||
|
||||
@ -405,6 +489,30 @@ class Base_gui_class {
|
||||
document.querySelector('body').classList.add('theme-' + theme_name);
|
||||
}
|
||||
|
||||
get_language() {
|
||||
return config.LANG;
|
||||
}
|
||||
|
||||
get_color() {
|
||||
return config.COLOR;
|
||||
}
|
||||
|
||||
get_alpha() {
|
||||
return config.ALPHA;
|
||||
}
|
||||
|
||||
get_zoom() {
|
||||
return config.ZOOM;
|
||||
}
|
||||
|
||||
get_transparency_support() {
|
||||
return config.TRANSPARENCY;
|
||||
}
|
||||
|
||||
get_active_tool() {
|
||||
return config.TOOL;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export default Base_gui_class;
|
||||
|
||||
166
src/js/core/base-search.js
Normal file
@ -0,0 +1,166 @@
|
||||
/*
|
||||
* miniPaint - https://github.com/viliusle/miniPaint
|
||||
* author: Vilius L.
|
||||
*/
|
||||
|
||||
import config from './../config.js';
|
||||
import Dialog_class from './../libs/popup.js';
|
||||
import Base_gui_class from './base-gui.js';
|
||||
const fuzzysort = require('fuzzysort');
|
||||
|
||||
var instance = null;
|
||||
|
||||
class Base_search_class {
|
||||
|
||||
constructor() {
|
||||
//singleton
|
||||
if (instance) {
|
||||
return instance;
|
||||
}
|
||||
instance = this;
|
||||
|
||||
this.POP = new Dialog_class();
|
||||
this.Base_gui = new Base_gui_class();
|
||||
this.db = null;
|
||||
|
||||
this.events();
|
||||
}
|
||||
|
||||
events() {
|
||||
document.addEventListener('keydown', (event) => {
|
||||
if (this.POP.get_active_instances() > 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
var code = event.key;
|
||||
if (code == "F3" || ( (event.ctrlKey == true || event.metaKey) && code == "f")) {
|
||||
//open
|
||||
this.search();
|
||||
event.preventDefault();
|
||||
}
|
||||
}, false);
|
||||
|
||||
document.addEventListener('input', (event) => {
|
||||
if(document.querySelector('#pop_data_search') == null){
|
||||
return;
|
||||
}
|
||||
|
||||
var node = document.querySelector('#global_search_results');
|
||||
node.innerHTML = '';
|
||||
|
||||
var query = event.target.value;
|
||||
if(query == ''){
|
||||
return;
|
||||
}
|
||||
|
||||
let results = fuzzysort.go(query, this.db, {
|
||||
keys: ['title'],
|
||||
limit: 10,
|
||||
threshold: -50000,
|
||||
});
|
||||
|
||||
//show
|
||||
for(var i = 0; i < results.length; i++) {
|
||||
var item = results[i];
|
||||
|
||||
var className = "search-result n" + (i+1);
|
||||
if(i == 0){
|
||||
className += " active";
|
||||
}
|
||||
|
||||
node.innerHTML += "<div class='"+className+"' data-key='"+item.obj.key+"'>"
|
||||
+ fuzzysort.highlight(item[0]) + "</div>";
|
||||
}
|
||||
}, false);
|
||||
|
||||
//allow to select with arrow keys
|
||||
document.addEventListener('keydown', function (e) {
|
||||
if(document.querySelector('#global_search_results') == null
|
||||
|| document.querySelector('.search-result') == null){
|
||||
return;
|
||||
}
|
||||
var k = e.key;
|
||||
|
||||
if (k == "ArrowUp") {
|
||||
var target = document.querySelector('.search-result.active');
|
||||
var index = Array.from(target.parentNode.children).indexOf(target);
|
||||
if(index > 0){
|
||||
index--;
|
||||
}
|
||||
target.classList.remove('active');
|
||||
var target2 =document.querySelector('#global_search_results').childNodes[index];
|
||||
target2.classList.add('active');
|
||||
e.preventDefault();
|
||||
}
|
||||
else if (k == "ArrowDown") {
|
||||
var target = document.querySelector('.search-result.active');
|
||||
var index = Array.from(target.parentNode.children).indexOf(target);
|
||||
var total = target.parentNode.childElementCount;
|
||||
if(index < total - 1){
|
||||
index++;
|
||||
}
|
||||
target.classList.remove('active');
|
||||
var target2 = document.querySelector('#global_search_results').childNodes[index];
|
||||
target2.classList.add('active');
|
||||
e.preventDefault();
|
||||
}
|
||||
|
||||
}, false);
|
||||
}
|
||||
|
||||
search() {
|
||||
var _this = this;
|
||||
|
||||
//init DB
|
||||
if(this.db === null) {
|
||||
this.db = Object.keys(this.Base_gui.modules);
|
||||
for(var i in this.db){
|
||||
this.db[i] = {
|
||||
key: this.db[i],
|
||||
title: this.db[i].replace(/_/i, ' '),
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
var settings = {
|
||||
title: 'Search',
|
||||
params: [
|
||||
{name: "search", title: "Search:", value: ""},
|
||||
],
|
||||
on_load: function (params, popup) {
|
||||
var node = document.createElement("div");
|
||||
node.id = 'global_search_results';
|
||||
node.innerHTML = '';
|
||||
popup.el.querySelector('.dialog_content').appendChild(node);
|
||||
},
|
||||
on_finish: function (params) {
|
||||
//execute
|
||||
var target = document.querySelector('.search-result.active');
|
||||
if(target){
|
||||
//execute
|
||||
var key = target.dataset.key;
|
||||
var class_object = this.Base_gui.modules[key];
|
||||
var function_name = _this.get_function_from_path(key);
|
||||
|
||||
_this.POP.hide();
|
||||
class_object[function_name]();
|
||||
}
|
||||
},
|
||||
};
|
||||
this.POP.show(settings);
|
||||
|
||||
//on input change
|
||||
document.getElementById("pop_data_search").select();
|
||||
}
|
||||
|
||||
get_function_from_path(path){
|
||||
var parts = path.split("/");
|
||||
var result = parts[parts.length - 1];
|
||||
result = result.replace(/-/, '_');
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export default Base_search_class;
|
||||
@ -25,6 +25,9 @@ class Base_selection_class {
|
||||
* - enable_background
|
||||
* - enable_borders
|
||||
* - enable_controls
|
||||
* - enable_rotation
|
||||
* - enable_move
|
||||
* - keep_ratio
|
||||
*
|
||||
* @param {ctx} ctx
|
||||
* @param {object} settings
|
||||
@ -44,42 +47,52 @@ class Base_selection_class {
|
||||
this.ctx = ctx;
|
||||
this.mouse_lock = null;
|
||||
this.selected_obj_positions = {};
|
||||
this.selected_obj_rotate_position = {};
|
||||
this.selected_object_drag_type = null;
|
||||
this.click_details = {};
|
||||
this.is_touch = false;
|
||||
// True if dragging from inside canvas area
|
||||
this.is_drag = false;
|
||||
this.current_angle = null;
|
||||
|
||||
this.events();
|
||||
}
|
||||
|
||||
events() {
|
||||
var _this = this;
|
||||
|
||||
document.addEventListener('mousedown', function (e) {
|
||||
if(_this.is_touch == true)
|
||||
document.addEventListener('mousedown', (e) => {
|
||||
this.is_drag = false;
|
||||
if(this.is_touch == true)
|
||||
return;
|
||||
_this.selected_object_actions(e);
|
||||
if (!e.target.closest('#main_wrapper'))
|
||||
return;
|
||||
this.is_drag = true;
|
||||
this.selected_object_actions(e);
|
||||
});
|
||||
document.addEventListener('mousemove', function (e) {
|
||||
if(_this.is_touch == true)
|
||||
document.addEventListener('mousemove', (e) => {
|
||||
if(this.is_touch == true)
|
||||
return;
|
||||
_this.selected_object_actions(e);
|
||||
this.selected_object_actions(e);
|
||||
});
|
||||
document.addEventListener('mouseup', function (e) {
|
||||
if(_this.is_touch == true)
|
||||
document.addEventListener('mouseup', (e) => {
|
||||
if(this.is_touch == true)
|
||||
return;
|
||||
_this.selected_object_actions(e);
|
||||
this.selected_object_actions(e);
|
||||
});
|
||||
|
||||
// touch
|
||||
document.addEventListener('touchstart', function (event) {
|
||||
_this.is_touch = true;
|
||||
_this.selected_object_actions(event);
|
||||
document.addEventListener('touchstart', (event) => {
|
||||
this.is_drag = false;
|
||||
this.is_touch = true;
|
||||
if (!event.target.closest('#main_wrapper'))
|
||||
return;
|
||||
this.is_drag = true;
|
||||
this.selected_object_actions(event);
|
||||
});
|
||||
document.addEventListener('touchmove', function (event) {
|
||||
_this.selected_object_actions(event);
|
||||
document.addEventListener('touchmove', (event) => {
|
||||
this.selected_object_actions(event);
|
||||
}, {passive: false});
|
||||
document.addEventListener('touchend', function (event) {
|
||||
_this.selected_object_actions(event);
|
||||
document.addEventListener('touchend', (event) => {
|
||||
this.selected_object_actions(event);
|
||||
});
|
||||
}
|
||||
|
||||
@ -135,6 +148,14 @@ class Base_selection_class {
|
||||
return settings;
|
||||
}
|
||||
|
||||
calcRotateDistanceFromX(layerW) {
|
||||
const block_size = handle_size / config.ZOOM;
|
||||
|
||||
return Math.max(
|
||||
Math.min(layerW * 0.9, Math.abs(layerW - 2 * block_size)),
|
||||
layerW / 2 - block_size / 2
|
||||
);
|
||||
}
|
||||
/**
|
||||
* marks object as selected, and draws corners
|
||||
*/
|
||||
@ -180,7 +201,7 @@ class Base_selection_class {
|
||||
x = Math.round(-data.width / 2);
|
||||
y = Math.round(-data.height / 2);
|
||||
}
|
||||
|
||||
|
||||
//fill
|
||||
if (settings.enable_background == true) {
|
||||
this.ctx.fillStyle = "rgba(0, 255, 0, 0.3)";
|
||||
@ -200,26 +221,54 @@ class Base_selection_class {
|
||||
this.ctx.strokeRect(x - wholeLineWidth, y - wholeLineWidth, w + (wholeLineWidth * 2), h + (wholeLineWidth * 2));
|
||||
}
|
||||
|
||||
//show crop lines
|
||||
if(settings.crop_lines === true){
|
||||
|
||||
for(var part = 1; part < 3; part++) {
|
||||
this.ctx.lineWidth = wholeLineWidth;
|
||||
this.ctx.strokeStyle = 'rgb(255, 255, 255)';
|
||||
this.ctx.beginPath();
|
||||
this.ctx.moveTo(x + w / 3 * part - halfLineWidth, y);
|
||||
this.ctx.lineTo(x + w / 3 * part - halfLineWidth, y + h);
|
||||
this.ctx.stroke();
|
||||
|
||||
this.ctx.lineWidth = halfLineWidth;
|
||||
this.ctx.strokeStyle = 'rgb(0, 0, 0)';
|
||||
this.ctx.beginPath();
|
||||
this.ctx.moveTo(x + w / 3 * part - halfLineWidth, y);
|
||||
this.ctx.lineTo(x + w / 3 * part - halfLineWidth, y + h);
|
||||
this.ctx.stroke();
|
||||
}
|
||||
|
||||
for(var part = 1; part < 3; part++) {
|
||||
this.ctx.lineWidth = wholeLineWidth;
|
||||
this.ctx.strokeStyle = 'rgb(255, 255, 255)';
|
||||
this.ctx.beginPath();
|
||||
this.ctx.moveTo(x, y + h / 3 * part - halfLineWidth);
|
||||
this.ctx.lineTo(x + w, y + h / 3 * part - halfLineWidth);
|
||||
this.ctx.stroke();
|
||||
|
||||
this.ctx.lineWidth = halfLineWidth;
|
||||
this.ctx.strokeStyle = 'rgb(0, 0, 0)';
|
||||
this.ctx.beginPath();
|
||||
this.ctx.moveTo(x, y + h / 3 * part - halfLineWidth);
|
||||
this.ctx.lineTo(x + w, y + h / 3 * part - halfLineWidth);
|
||||
this.ctx.stroke();
|
||||
}
|
||||
}
|
||||
|
||||
const hitsLeftEdge = isRotated ? false : x < handle_size;
|
||||
const hitsTopEdge = isRotated ? false : y < handle_size;
|
||||
const hitsRightEdge = isRotated ? false : x + w > config.WIDTH - handle_size;
|
||||
const hitsBottomEdge = isRotated ? false : y + h > config.HEIGHT - handle_size;
|
||||
|
||||
//draw corners
|
||||
var corner = (x, y, dx, dy, drag_type) => {
|
||||
// var block_size = Math.round(block_size_default / 2) * 2;
|
||||
var corner = (x, y, dx, dy, drag_type, cursor) => {
|
||||
var angle = 0;
|
||||
if (settings.data.rotate != null && settings.data.rotate != 0) {
|
||||
angle = settings.data.rotate;
|
||||
}
|
||||
|
||||
//register position
|
||||
this.selected_obj_positions[drag_type] = {
|
||||
x: x + dx * block_size,
|
||||
y: y + dy * block_size,
|
||||
size: block_size,
|
||||
};
|
||||
|
||||
if (settings.enable_controls == false || angle != 0) {
|
||||
this.ctx.strokeStyle = "rgba(0, 0, 0, 0.4)";
|
||||
this.ctx.fillStyle = "rgba(255, 255, 255, 0.8)";
|
||||
@ -228,31 +277,78 @@ class Base_selection_class {
|
||||
this.ctx.strokeStyle = "#000000";
|
||||
this.ctx.fillStyle = "#ffffff";
|
||||
}
|
||||
|
||||
//borders
|
||||
this.ctx.lineWidth = wholeLineWidth;
|
||||
this.ctx.beginPath();
|
||||
this.ctx.arc(x + dx * block_size, y + dy * block_size, block_size / 2, 0, 2 * Math.PI);
|
||||
this.ctx.fill();
|
||||
this.ctx.stroke();
|
||||
|
||||
//create path
|
||||
const circle = new Path2D();
|
||||
circle.arc(x + dx * block_size, y + dy * block_size, block_size / 2, 0, 2 * Math.PI);
|
||||
|
||||
//draw
|
||||
this.ctx.fill(circle);
|
||||
this.ctx.stroke(circle);
|
||||
|
||||
//register position
|
||||
this.selected_obj_positions[drag_type] = {
|
||||
cursor: cursor,
|
||||
path: circle,
|
||||
};
|
||||
};
|
||||
|
||||
//draw rotation
|
||||
var draw_rotation = () => {
|
||||
var settings = this.find_settings();
|
||||
|
||||
if (settings.data === null
|
||||
|| settings.data.status == 'draft'
|
||||
|| settings.data.rotate === null
|
||||
|| (settings.data.hide_selection_if_active === true && settings.data.type == config.TOOL.name)) {
|
||||
return;
|
||||
}
|
||||
|
||||
var r_x = x + this.calcRotateDistanceFromX(w) + corner_offset + wholeLineWidth;
|
||||
var r_y = y - corner_offset - wholeLineWidth;
|
||||
var r_dx = hitsRightEdge ? -0.5 : 0;
|
||||
var r_dy = hitsTopEdge ? 0.5 : 0;
|
||||
|
||||
this.ctx.strokeStyle = "#000000";
|
||||
this.ctx.fillStyle = "#d0d62a";
|
||||
this.ctx.lineWidth = wholeLineWidth;
|
||||
|
||||
//create path
|
||||
const circle = new Path2D();
|
||||
circle.arc(r_x + r_dx * block_size, r_y + r_dy * block_size, block_size / 2, 0, 2 * Math.PI);
|
||||
|
||||
//draw
|
||||
this.ctx.fill(circle);
|
||||
this.ctx.stroke(circle);
|
||||
|
||||
//register position
|
||||
this.selected_obj_rotate_position = {
|
||||
cursor: "pointer",
|
||||
path: circle,
|
||||
};
|
||||
|
||||
};
|
||||
if (settings.enable_rotation == true) {
|
||||
draw_rotation();
|
||||
}
|
||||
|
||||
if (settings.enable_controls == true) {
|
||||
corner(x - corner_offset - wholeLineWidth, y - corner_offset - wholeLineWidth, hitsLeftEdge ? 0.5 : 0, hitsTopEdge ? 0.5 : 0, DRAG_TYPE_LEFT | DRAG_TYPE_TOP);
|
||||
corner(x + w + corner_offset + wholeLineWidth, y - corner_offset - wholeLineWidth, hitsRightEdge ? -0.5 : 0, hitsTopEdge ? 0.5 : 0, DRAG_TYPE_RIGHT | DRAG_TYPE_TOP);
|
||||
corner(x - corner_offset - wholeLineWidth, y + h + corner_offset + wholeLineWidth, hitsLeftEdge ? 0.5 : 0, hitsBottomEdge ? -0.5 : 0, DRAG_TYPE_LEFT | DRAG_TYPE_BOTTOM);
|
||||
corner(x + w + corner_offset + wholeLineWidth, y + h + corner_offset + wholeLineWidth, hitsRightEdge ? -0.5 : 0, hitsBottomEdge ? -0.5 : 0, DRAG_TYPE_RIGHT | DRAG_TYPE_BOTTOM);
|
||||
corner(x - corner_offset - wholeLineWidth, y - corner_offset - wholeLineWidth, hitsLeftEdge ? 0.5 : 0, hitsTopEdge ? 0.5 : 0, DRAG_TYPE_LEFT | DRAG_TYPE_TOP, 'nwse-resize');
|
||||
corner(x + w + corner_offset + wholeLineWidth, y - corner_offset - wholeLineWidth, hitsRightEdge ? -0.5 : 0, hitsTopEdge ? 0.5 : 0, DRAG_TYPE_RIGHT | DRAG_TYPE_TOP, 'nesw-resize');
|
||||
corner(x - corner_offset - wholeLineWidth, y + h + corner_offset + wholeLineWidth, hitsLeftEdge ? 0.5 : 0, hitsBottomEdge ? -0.5 : 0, DRAG_TYPE_LEFT | DRAG_TYPE_BOTTOM, 'nesw-resize');
|
||||
corner(x + w + corner_offset + wholeLineWidth, y + h + corner_offset + wholeLineWidth, hitsRightEdge ? -0.5 : 0, hitsBottomEdge ? -0.5 : 0, DRAG_TYPE_RIGHT | DRAG_TYPE_BOTTOM, 'nwse-resize');
|
||||
}
|
||||
|
||||
if (settings.enable_controls == true) {
|
||||
//draw centers
|
||||
if (Math.abs(w) > block_size * 5) {
|
||||
corner(x + w / 2, y - middle_offset - wholeLineWidth, 0, hitsTopEdge ? 0.5 : 0, DRAG_TYPE_TOP);
|
||||
corner(x + w / 2, y + h + middle_offset + wholeLineWidth, 0, hitsBottomEdge ? -0.5 : 0, DRAG_TYPE_BOTTOM);
|
||||
corner(x + w / 2, y - middle_offset - wholeLineWidth, 0, hitsTopEdge ? 0.5 : 0, DRAG_TYPE_TOP, 'ns-resize');
|
||||
corner(x + w / 2, y + h + middle_offset + wholeLineWidth, 0, hitsBottomEdge ? -0.5 : 0, DRAG_TYPE_BOTTOM, 'ns-resize');
|
||||
}
|
||||
if (Math.abs(h) > block_size * 5) {
|
||||
corner(x - middle_offset - wholeLineWidth, y + h / 2, hitsLeftEdge ? 0.5 : 0, 0, DRAG_TYPE_LEFT);
|
||||
corner(x + w + middle_offset + wholeLineWidth, y + h / 2, hitsRightEdge ? -0.5 : 0, 0, DRAG_TYPE_RIGHT);
|
||||
corner(x - middle_offset - wholeLineWidth, y + h / 2, hitsLeftEdge ? 0.5 : 0, 0, DRAG_TYPE_LEFT, 'ew-resize');
|
||||
corner(x + w + middle_offset + wholeLineWidth, y + h / 2, hitsRightEdge ? -0.5 : 0, 0, DRAG_TYPE_RIGHT, 'ew-resize');
|
||||
}
|
||||
}
|
||||
|
||||
@ -262,6 +358,22 @@ class Base_selection_class {
|
||||
|
||||
selected_object_actions(e) {
|
||||
var settings = this.find_settings();
|
||||
var data = settings.data;
|
||||
|
||||
if(data == null){
|
||||
return;
|
||||
}
|
||||
|
||||
this.ctx.save();
|
||||
if (data.rotate != null && data.rotate != 0) {
|
||||
this.ctx.translate(data.x + data.width / 2, data.y + data.height / 2);
|
||||
this.ctx.rotate(data.rotate * Math.PI / 180);
|
||||
}
|
||||
|
||||
var x = settings.data.x;
|
||||
var y = settings.data.y;
|
||||
var w = settings.data.width;
|
||||
var h = settings.data.height;
|
||||
|
||||
//simplify checks
|
||||
var event_type = e.type;
|
||||
@ -269,6 +381,9 @@ class Base_selection_class {
|
||||
if(event_type == 'touchmove') event_type = 'mousemove';
|
||||
if(event_type == 'touchend') event_type = 'mouseup';
|
||||
|
||||
if (!this.is_drag && ['mousedown', 'mouseup'].includes(event_type))
|
||||
return;
|
||||
|
||||
const mainWrapper = document.getElementById('main_wrapper');
|
||||
const defaultCursor = config.TOOL && config.TOOL.name === 'text' ? 'text' : 'default';
|
||||
if (mainWrapper.style.cursor != defaultCursor) {
|
||||
@ -277,10 +392,6 @@ class Base_selection_class {
|
||||
if (event_type == 'mousedown' && config.mouse.valid == false || settings.enable_controls == false) {
|
||||
return;
|
||||
}
|
||||
if (settings.data != null && settings.data.rotate != null && settings.data.rotate > 0) {
|
||||
//controls on rotated object disabled
|
||||
return;
|
||||
}
|
||||
|
||||
var mouse = config.mouse;
|
||||
const drag_type = this.selected_object_drag_type;
|
||||
@ -292,11 +403,12 @@ class Base_selection_class {
|
||||
width: settings.data.width,
|
||||
height: settings.data.height,
|
||||
};
|
||||
this.current_angle = null;
|
||||
}
|
||||
if (event_type == 'mousemove' && this.mouse_lock == 'selected_object_actions') {
|
||||
if (event_type == 'mousemove' && this.mouse_lock == 'selected_object_actions' && this.is_drag) {
|
||||
|
||||
const allowNegativeDimensions = settings.data.render_function
|
||||
&& ['line', 'gradient'].includes(settings.data.render_function[0]);
|
||||
&& ['line', 'arrow', 'gradient'].includes(settings.data.render_function[0]);
|
||||
|
||||
mainWrapper.style.cursor = "pointer";
|
||||
|
||||
@ -309,8 +421,32 @@ class Base_selection_class {
|
||||
const is_drag_type_right = Math.floor(drag_type / DRAG_TYPE_RIGHT) % 2 === 1;
|
||||
const is_drag_type_top = Math.floor(drag_type / DRAG_TYPE_TOP) % 2 === 1;
|
||||
const is_drag_type_bottom = Math.floor(drag_type / DRAG_TYPE_BOTTOM) % 2 === 1;
|
||||
|
||||
if (e.buttons == 1 || typeof e.buttons == "undefined") {
|
||||
|
||||
if(is_drag_type_left && is_drag_type_top) mainWrapper.style.cursor = "nwse-resize";
|
||||
else if(is_drag_type_top && is_drag_type_right) mainWrapper.style.cursor = "nesw-resize";
|
||||
else if(is_drag_type_right && is_drag_type_bottom) mainWrapper.style.cursor = "nwse-resize";
|
||||
else if(is_drag_type_bottom && is_drag_type_left) mainWrapper.style.cursor = "nesw-resize";
|
||||
else if(is_drag_type_top) mainWrapper.style.cursor = "ns-resize";
|
||||
else if(is_drag_type_right) mainWrapper.style.cursor = "ew-resize";
|
||||
else if(is_drag_type_bottom) mainWrapper.style.cursor = "ns-resize";
|
||||
else if(is_drag_type_left) mainWrapper.style.cursor = "ew-resize";
|
||||
|
||||
if(drag_type == 'rotate'){
|
||||
//rotate
|
||||
var dx = x + this.calcRotateDistanceFromX(w) - (x + w / 2);
|
||||
var dy = h / 2;
|
||||
var original_angle = Math.atan2(dy, dx) / Math.PI * 180; //compensate rotation icon angle
|
||||
|
||||
var dx = mouse.x - (x + w / 2);
|
||||
var dy = mouse.y - (y + h / 2);
|
||||
var angle = Math.atan2(dy, dx) / Math.PI * 180 + original_angle;
|
||||
|
||||
//settings.data.rotate = angle;
|
||||
this.current_angle = angle;
|
||||
|
||||
config.need_render = true;
|
||||
}
|
||||
else if (e.buttons == 1 || typeof e.buttons == "undefined") {
|
||||
// Do transformations
|
||||
var dx = Math.round(mouse.x - mouse.click_x);
|
||||
var dy = Math.round(mouse.y - mouse.click_y);
|
||||
@ -347,7 +483,7 @@ class Base_selection_class {
|
||||
settings.data.width = width;
|
||||
if (is_drag_type_top || is_drag_type_bottom)
|
||||
settings.data.height = height;
|
||||
|
||||
|
||||
// Don't allow negative width/height on most layers
|
||||
if (!allowNegativeDimensions) {
|
||||
if (settings.data.width <= 0) {
|
||||
@ -377,13 +513,15 @@ class Base_selection_class {
|
||||
}
|
||||
|
||||
if (!this.mouse_lock) {
|
||||
//set mouse move cursor
|
||||
if(settings.enable_move && mouse.x > x && mouse.x < x + w && mouse.y > y && mouse.y < y + h){
|
||||
mainWrapper.style.cursor = "move";
|
||||
}
|
||||
|
||||
for (let current_drag_type in this.selected_obj_positions) {
|
||||
const position = this.selected_obj_positions[current_drag_type];
|
||||
|
||||
if (mouse.x >= position.x - position.size / 2 && mouse.x <= position.x + position.size / 2
|
||||
&& mouse.y >= position.y - position.size / 2 && mouse.y <= position.y + position.size / 2
|
||||
) {
|
||||
//match
|
||||
if (position.path && this.ctx.isPointInPath(position.path, mouse.x, mouse.y)) {
|
||||
// match
|
||||
if (event_type == 'mousedown') {
|
||||
if (e.buttons == 1 || typeof e.buttons == "undefined") {
|
||||
this.mouse_lock = 'selected_object_actions';
|
||||
@ -391,10 +529,27 @@ class Base_selection_class {
|
||||
}
|
||||
}
|
||||
if (event_type == 'mousemove') {
|
||||
mainWrapper.style.cursor = "pointer";
|
||||
mainWrapper.style.cursor = position.cursor;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//rotate?
|
||||
const position = this.selected_obj_rotate_position;
|
||||
if (position.path && this.ctx.isPointInPath(position.path, mouse.x, mouse.y)) {
|
||||
//match
|
||||
if (event_type == 'mousedown') {
|
||||
if (e.buttons == 1 || typeof e.buttons == "undefined") {
|
||||
this.mouse_lock = 'selected_object_actions';
|
||||
this.selected_object_drag_type = "rotate";
|
||||
}
|
||||
}
|
||||
if (event_type == 'mousemove') {
|
||||
mainWrapper.style.cursor = position.cursor;
|
||||
}
|
||||
}
|
||||
|
||||
this.ctx.restore();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -8,6 +8,7 @@ import Base_layers_class from './base-layers.js';
|
||||
import Base_gui_class from './base-gui.js';
|
||||
import Helper_class from './../libs/helpers.js';
|
||||
import alertify from './../../../node_modules/alertifyjs/build/alertify.min.js';
|
||||
import app from '../app.js';
|
||||
|
||||
var instance = null;
|
||||
|
||||
@ -30,165 +31,190 @@ class Base_state_class {
|
||||
this.levels = 3;
|
||||
this.levels_optimal = 3;
|
||||
this.enabled = true;
|
||||
this.action_history = [];
|
||||
this.action_history_index = 0;
|
||||
this.action_history_max = 50;
|
||||
|
||||
this.set_events();
|
||||
}
|
||||
|
||||
set_events() {
|
||||
document.addEventListener('keydown', (event) => {
|
||||
var code = event.code;
|
||||
const key = (event.key || '').toLowerCase();
|
||||
if (this.Helper.is_input(event.target))
|
||||
return;
|
||||
|
||||
if (code == "KeyZ" && (event.ctrlKey == true || event.metaKey)) {
|
||||
//undo
|
||||
if (key == "z" && (event.ctrlKey == true || event.metaKey)) {
|
||||
// Undo
|
||||
this.undo();
|
||||
event.preventDefault();
|
||||
}
|
||||
if (key == "y" && (event.ctrlKey == true || event.metaKey)) {
|
||||
// Redo
|
||||
this.redo();
|
||||
event.preventDefault();
|
||||
}
|
||||
}, false);
|
||||
}
|
||||
|
||||
save() {
|
||||
|
||||
this.optimize();
|
||||
|
||||
if (this.enabled == false) {
|
||||
return;
|
||||
async do_action(action, options = {}) {
|
||||
let error_during_free = false;
|
||||
try {
|
||||
await action.do();
|
||||
} catch (error) {
|
||||
// Action aborted. This is usually expected behavior as actions throw errors if they shouldn't run.
|
||||
return { status: 'aborted', reason: error };
|
||||
}
|
||||
|
||||
//move previous
|
||||
this.layers_archive.unshift(null);
|
||||
if (this.layers_archive.length > this.levels) {
|
||||
//remove element, that is too far in history - saving memory here
|
||||
this.layers_archive.splice(-1, 1);
|
||||
}
|
||||
|
||||
//general
|
||||
this.layers_archive[0] = {
|
||||
width: config.WIDTH,
|
||||
height: config.HEIGHT,
|
||||
layer_active: config.layer.id,
|
||||
};
|
||||
|
||||
//layers
|
||||
this.layers_archive[0].layers = [];
|
||||
for (var i in config.layers) {
|
||||
var layer = {};
|
||||
for (var j in config.layers[i]) {
|
||||
if (j[0] == '_' || j == 'link_canvas') {
|
||||
//private data
|
||||
continue;
|
||||
// Remove all redo actions from history
|
||||
if (this.action_history_index < this.action_history.length) {
|
||||
const freed_actions = this.action_history.slice(this.action_history_index, this.action_history.length).reverse();
|
||||
this.action_history = this.action_history.slice(0, this.action_history_index);
|
||||
for (let freed_action of freed_actions) {
|
||||
try {
|
||||
await freed_action.free();
|
||||
} catch (error) {
|
||||
error_during_free = true;
|
||||
}
|
||||
|
||||
layer[j] = config.layers[i][j];
|
||||
}
|
||||
layer = JSON.parse(JSON.stringify(layer));
|
||||
this.layers_archive[0].layers.push(layer);
|
||||
}
|
||||
|
||||
//image data
|
||||
this.layers_archive[0].data = [];
|
||||
for (var i in config.layers) {
|
||||
if (config.layers[i].type != 'image')
|
||||
continue;
|
||||
|
||||
this.layers_archive[0].data.push(
|
||||
{
|
||||
id: config.layers[i].id,
|
||||
data: config.layers[i].link.cloneNode(true), //@todo - optimize, avoid duplicating data
|
||||
// Add the new action to history
|
||||
const last_action = this.action_history[this.action_history.length - 1];
|
||||
if (options.merge_with_history && last_action) {
|
||||
if (typeof options.merge_with_history === 'string') {
|
||||
options.merge_with_history = [options.merge_with_history];
|
||||
}
|
||||
if (options.merge_with_history.includes(last_action.action_id)) {
|
||||
this.action_history[this.action_history.length - 1] = new app.Actions.Bundle_action(
|
||||
last_action.action_id,
|
||||
last_action.action_description,
|
||||
[last_action, action]
|
||||
);
|
||||
}
|
||||
} else {
|
||||
this.action_history.push(action);
|
||||
if (this.action_history.length > this.action_history_max) {
|
||||
let action_to_free = this.action_history.shift();
|
||||
try {
|
||||
await action_to_free.free();
|
||||
} catch (error) {
|
||||
error_during_free = true;
|
||||
}
|
||||
);
|
||||
} else {
|
||||
this.action_history_index++;
|
||||
}
|
||||
}
|
||||
|
||||
// Chrome arbitrary method to determine memory usage, but most people use Chrome so...
|
||||
if (window.performance && window.performance.memory) {
|
||||
if (window.performance.memory.usedJSHeapSize > window.performance.memory.jsHeapSizeLimit * 0.8) {
|
||||
this.free(window.performance.memory.jsHeapSizeLimit * 0.2);
|
||||
}
|
||||
}
|
||||
|
||||
if (error_during_free) {
|
||||
alertify.error('A problem occurred while removing undo history. It\'s suggested you save your work and refresh the page in order to free up memory.');
|
||||
}
|
||||
return { status: 'completed' };
|
||||
}
|
||||
|
||||
can_redo() {
|
||||
return this.action_history_index < this.action_history.length;
|
||||
}
|
||||
|
||||
can_undo() {
|
||||
return this.action_history_index > 0;
|
||||
}
|
||||
|
||||
async redo_action() {
|
||||
if (this.can_redo()) {
|
||||
const action = this.action_history[this.action_history_index];
|
||||
await action.do();
|
||||
this.action_history_index++;
|
||||
} else {
|
||||
alertify.success('There\'s nothing to redo', 3);
|
||||
}
|
||||
}
|
||||
|
||||
async undo_action() {
|
||||
if (this.can_undo()) {
|
||||
this.action_history_index--;
|
||||
await this.action_history[this.action_history_index].undo();
|
||||
} else {
|
||||
alertify.success('There\'s nothing to undo', 3);
|
||||
}
|
||||
}
|
||||
|
||||
async scrap_last_action() {
|
||||
if (this.can_undo()) {
|
||||
await this.undo_action();
|
||||
this.action_history.pop();
|
||||
}
|
||||
}
|
||||
|
||||
// Frees history actions up to the specified memory & database size. Starts with undo history, then moves to redo history.
|
||||
async free(memory_size = 0, database_size = 0) {
|
||||
let total_memory_freed = 0;
|
||||
let total_database_freed = 0;
|
||||
let has_error = false;
|
||||
let free_complete = false;
|
||||
while (this.action_history_index > 0) {
|
||||
let action = this.action_history.shift();
|
||||
total_memory_freed += action.memory_estimate;
|
||||
total_database_freed += action.database_estimate;
|
||||
try {
|
||||
await action.free();
|
||||
} catch (error) {
|
||||
has_error = true;
|
||||
}
|
||||
if (total_memory_freed >= memory_size && total_database_freed >= database_size) {
|
||||
free_complete = true;
|
||||
break;
|
||||
}
|
||||
this.action_history_index--;
|
||||
}
|
||||
if (!free_complete) {
|
||||
for (let i = this.action_history.length - 1; i >= 0; i--) {
|
||||
let action = this.action_history[i];
|
||||
total_memory_freed += action.memory_estimate;
|
||||
total_database_freed += action.database_estimate;
|
||||
try {
|
||||
await action.free();
|
||||
} catch (error) {
|
||||
has_error = true;
|
||||
}
|
||||
if (total_memory_freed >= memory_size && total_database_freed >= database_size) {
|
||||
free_complete = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (has_error) {
|
||||
alertify.error('A problem occurred while removing undo history. It\'s suggested you save your work and refresh the page in order to free up memory.');
|
||||
}
|
||||
return {
|
||||
total_memory_freed,
|
||||
total_database_freed
|
||||
}
|
||||
}
|
||||
|
||||
save() {
|
||||
const message = 'window.State.save() is removed. Use State.do_action() to manage undo history instead.';
|
||||
console.warn(message);
|
||||
alertify.error(message);
|
||||
}
|
||||
|
||||
/**
|
||||
* supports multiple levels undo system
|
||||
*/
|
||||
undo() {
|
||||
if (this.enabled == false || this.layers_archive[0] == undefined) {
|
||||
//not saved yet
|
||||
alertify.error('Undo is not available.');
|
||||
return false;
|
||||
}
|
||||
|
||||
var data = this.layers_archive[0];
|
||||
|
||||
//set attributes
|
||||
if (config.WIDTH != parseInt(data.width) || config.HEIGHT != parseInt(data.height)) {
|
||||
config.WIDTH = parseInt(data.width);
|
||||
config.HEIGHT = parseInt(data.height);
|
||||
this.Base_gui.prepare_canvas();
|
||||
}
|
||||
this.Base_layers.reset_layers();
|
||||
|
||||
for (var i in data.layers) {
|
||||
var value = data.layers[i];
|
||||
|
||||
if (value.type == 'image') {
|
||||
//add image data
|
||||
value.link = null;
|
||||
for (var j in data.data) {
|
||||
if (data.data[j].id == value.id) {
|
||||
value.data = data.data[j].data;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this.Base_layers.insert(value, false);
|
||||
}
|
||||
|
||||
if (config.WIDTH != parseInt(data.width) || config.HEIGHT != parseInt(data.height)) {
|
||||
config.WIDTH = parseInt(data.width);
|
||||
config.HEIGHT = parseInt(data.height);
|
||||
this.Base_gui.prepare_canvas();
|
||||
}
|
||||
|
||||
this.Base_layers.select(data.layer_active);
|
||||
this.layers_archive.shift(); //remove used state
|
||||
this.undo_action();
|
||||
}
|
||||
|
||||
/**
|
||||
* try save, optimize memory, find optimal undo level count.
|
||||
* supports multiple levels redo system
|
||||
*/
|
||||
optimize() {
|
||||
var megapixels = config.WIDTH * config.HEIGHT / 1024 / 1024;
|
||||
var images = 0;
|
||||
for (var i in config.layers) {
|
||||
if (config.layers[i].type == 'image') {
|
||||
images++;
|
||||
}
|
||||
}
|
||||
var total_megapixels = megapixels * images;
|
||||
|
||||
if (total_megapixels > 100) {
|
||||
//high dimensions - undo disabled
|
||||
if (this.enabled == true)
|
||||
alertify.warning('Undo disabled.');
|
||||
this.enabled = false;
|
||||
this.layers_archive = [];
|
||||
}
|
||||
else {
|
||||
//enabled
|
||||
if (this.enabled == false)
|
||||
alertify.success('Undo enabled.');
|
||||
this.enabled = true;
|
||||
|
||||
if (total_megapixels > 50) {
|
||||
//1 undo level
|
||||
if (this.levels > 1)
|
||||
alertify.warning('Undo levels changed to 1.');
|
||||
this.levels = 1;
|
||||
this.layers_archive = [
|
||||
this.layers_archive[0],
|
||||
];
|
||||
}
|
||||
else {
|
||||
//OK
|
||||
if (this.levels == 1)
|
||||
alertify.success('Undo levels restored to ' + this.levels);
|
||||
this.levels = this.levels_optimal;
|
||||
}
|
||||
}
|
||||
redo() {
|
||||
this.redo_action();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -6,6 +6,8 @@
|
||||
import config from './../config.js';
|
||||
import Base_layers_class from './base-layers.js';
|
||||
import Base_gui_class from './base-gui.js';
|
||||
import app from "../app";
|
||||
import Helper_class from "../libs/helpers";
|
||||
|
||||
/**
|
||||
* Base tools class, can be used for extending on tools like brush, provides various helping methods.
|
||||
@ -15,6 +17,7 @@ class Base_tools_class {
|
||||
constructor(save_mouse) {
|
||||
this.Base_layers = new Base_layers_class();
|
||||
this.Base_gui = new Base_gui_class();
|
||||
this.Helper = new Helper_class();
|
||||
this.is_drag = false;
|
||||
this.mouse_last_click_pos = [false, false];
|
||||
this.mouse_click_pos = [false, false];
|
||||
@ -24,6 +27,7 @@ class Base_tools_class {
|
||||
this.speed_average = 0;
|
||||
this.save_mouse = save_mouse;
|
||||
this.is_touch = false;
|
||||
this.shape_mouse_click = {x: null, y: null};
|
||||
|
||||
this.prepare();
|
||||
|
||||
@ -121,7 +125,7 @@ class Base_tools_class {
|
||||
|
||||
var eventType = event.type;
|
||||
|
||||
if (event.target.id != "canvas_minipaint") {
|
||||
if (event.target.id != 'canvas_minipaint' && event.target.id != 'main_wrapper') {
|
||||
//outside canvas
|
||||
this.mouse_valid = false;
|
||||
}
|
||||
@ -130,10 +134,12 @@ class Base_tools_class {
|
||||
}
|
||||
|
||||
if (eventType === 'mousedown' || eventType === 'touchstart') {
|
||||
if (event.target.id != "canvas_minipaint" || (event.which != 1 && eventType !== 'touchstart'))
|
||||
if ((event.target.id != 'canvas_minipaint' && event.target.id != 'main_wrapper') || (event.which != 1 && eventType !== 'touchstart')) {
|
||||
this.mouse_click_valid = false;
|
||||
else
|
||||
}
|
||||
else {
|
||||
this.mouse_click_valid = true;
|
||||
}
|
||||
this.mouse_valid = true;
|
||||
}
|
||||
|
||||
@ -307,5 +313,422 @@ class Base_tools_class {
|
||||
return response;
|
||||
}
|
||||
|
||||
draw_shape(ctx, x, y, width, height, coords, is_demo) {
|
||||
if(is_demo !== false) {
|
||||
ctx.fillStyle = '#aaa';
|
||||
ctx.strokeStyle = '#555';
|
||||
ctx.lineWidth = 2;
|
||||
}
|
||||
ctx.lineJoin = "round";
|
||||
|
||||
ctx.beginPath();
|
||||
for(var i in coords){
|
||||
if(coords[i] === null){
|
||||
ctx.closePath();
|
||||
ctx.fill();
|
||||
ctx.stroke();
|
||||
ctx.beginPath();
|
||||
continue;
|
||||
}
|
||||
|
||||
//coords in 100x100 box
|
||||
var pos_x = x + coords[i][0] * width / 100;
|
||||
var pos_y = y + coords[i][1] * height / 100;
|
||||
|
||||
if(i == '0')
|
||||
ctx.moveTo(pos_x, pos_y);
|
||||
else
|
||||
ctx.lineTo(pos_x, pos_y);
|
||||
}
|
||||
ctx.closePath();
|
||||
|
||||
ctx.fill();
|
||||
ctx.stroke();
|
||||
}
|
||||
|
||||
default_events(){
|
||||
var _this = this;
|
||||
|
||||
//mouse events
|
||||
document.addEventListener('mousedown', function (event) {
|
||||
_this.default_dragStart(event);
|
||||
});
|
||||
document.addEventListener('mousemove', function (event) {
|
||||
_this.default_dragMove(event);
|
||||
});
|
||||
document.addEventListener('mouseup', function (event) {
|
||||
_this.default_dragEnd(event);
|
||||
});
|
||||
|
||||
// collect touch events
|
||||
document.addEventListener('touchstart', function (event) {
|
||||
_this.default_dragStart(event);
|
||||
});
|
||||
document.addEventListener('touchmove', function (event) {
|
||||
_this.default_dragMove(event);
|
||||
});
|
||||
document.addEventListener('touchend', function (event) {
|
||||
_this.default_dragEnd(event);
|
||||
});
|
||||
}
|
||||
|
||||
default_dragStart(event) {
|
||||
if (config.TOOL.name != this.name)
|
||||
return;
|
||||
this.mousedown(event);
|
||||
}
|
||||
|
||||
default_dragMove(event) {
|
||||
if (config.TOOL.name != this.name)
|
||||
return;
|
||||
this.mousemove(event);
|
||||
}
|
||||
|
||||
default_dragEnd(event) {
|
||||
if (config.TOOL.name != this.name)
|
||||
return;
|
||||
this.mouseup(event);
|
||||
}
|
||||
|
||||
shape_mousedown(e) {
|
||||
var mouse = this.get_mouse_info(e);
|
||||
if (mouse.click_valid == false)
|
||||
return;
|
||||
|
||||
var mouse_x = mouse.x;
|
||||
var mouse_y = mouse.y;
|
||||
|
||||
//apply snap
|
||||
var snap_info = this.calc_snap_position(e, mouse_x, mouse_y);
|
||||
if(snap_info != null){
|
||||
if(snap_info.x != null) {
|
||||
mouse_x = snap_info.x;
|
||||
}
|
||||
if(snap_info.y != null) {
|
||||
mouse_y = snap_info.y;
|
||||
}
|
||||
}
|
||||
|
||||
this.shape_mouse_click.x = mouse_x;
|
||||
this.shape_mouse_click.y = mouse_y;
|
||||
|
||||
//register new object - current layer is not ours or params changed
|
||||
this.layer = {
|
||||
type: this.name,
|
||||
params: this.clone(this.getParams()),
|
||||
status: 'draft',
|
||||
render_function: [this.name, 'render'],
|
||||
x: Math.round(mouse_x),
|
||||
y: Math.round(mouse_y),
|
||||
color: null,
|
||||
is_vector: true
|
||||
};
|
||||
app.State.do_action(
|
||||
new app.Actions.Bundle_action('new_'+this.name+'_layer', 'New '+this.Helper.ucfirst(this.name)+' Layer', [
|
||||
new app.Actions.Insert_layer_action(this.layer)
|
||||
])
|
||||
);
|
||||
}
|
||||
|
||||
shape_mousemove(e) {
|
||||
var mouse = this.get_mouse_info(e);
|
||||
var params = this.getParams();
|
||||
|
||||
if (mouse.is_drag == false)
|
||||
return;
|
||||
if (mouse.click_valid == false) {
|
||||
return;
|
||||
}
|
||||
|
||||
var mouse_x = Math.round(mouse.x);
|
||||
var mouse_y = Math.round(mouse.y);
|
||||
var click_x = Math.round(this.shape_mouse_click.x);
|
||||
var click_y = Math.round(this.shape_mouse_click.y);
|
||||
|
||||
//apply snap
|
||||
var snap_info = this.calc_snap_position(e, mouse_x, mouse_y, config.layer.id);
|
||||
if(snap_info != null){
|
||||
if(snap_info.x != null) {
|
||||
mouse_x = snap_info.x;
|
||||
}
|
||||
if(snap_info.y != null) {
|
||||
mouse_y = snap_info.y;
|
||||
}
|
||||
}
|
||||
|
||||
var x = Math.min(mouse_x, click_x);
|
||||
var y = Math.min(mouse_y, click_y);
|
||||
var width = Math.abs(mouse_x - click_x);
|
||||
var height = Math.abs(mouse_y - click_y);
|
||||
|
||||
if (e.ctrlKey == true || e.metaKey) {
|
||||
if (width < height * this.best_ratio) {
|
||||
width = height * this.best_ratio;
|
||||
}
|
||||
else {
|
||||
height = width / this.best_ratio;
|
||||
}
|
||||
if (mouse_x < click_x) {
|
||||
x = click_x - width;
|
||||
}
|
||||
if (mouse_y < click_y) {
|
||||
y = click_y - height;
|
||||
}
|
||||
}
|
||||
|
||||
//more data
|
||||
config.layer.x = x;
|
||||
config.layer.y = y;
|
||||
config.layer.width = width;
|
||||
config.layer.height = height;
|
||||
|
||||
this.Base_layers.render();
|
||||
}
|
||||
|
||||
shape_mouseup(e) {
|
||||
var mouse = this.get_mouse_info(e);
|
||||
var params = this.getParams();
|
||||
|
||||
if (mouse.click_valid == false) {
|
||||
config.layer.status = null;
|
||||
return;
|
||||
}
|
||||
|
||||
var mouse_x = Math.round(mouse.x);
|
||||
var mouse_y = Math.round(mouse.y);
|
||||
var click_x = Math.round(this.shape_mouse_click.x);
|
||||
var click_y = Math.round(this.shape_mouse_click.y);
|
||||
|
||||
//apply snap
|
||||
var snap_info = this.calc_snap_position(e, mouse_x, mouse_y, config.layer.id);
|
||||
if(snap_info != null){
|
||||
if(snap_info.x != null) {
|
||||
mouse_x = snap_info.x;
|
||||
}
|
||||
if(snap_info.y != null) {
|
||||
mouse_y = snap_info.y;
|
||||
}
|
||||
}
|
||||
this.snap_line_info = {x: null, y: null};
|
||||
|
||||
var x = Math.min(mouse_x, click_x);
|
||||
var y = Math.min(mouse_y, click_y);
|
||||
var width = Math.abs(mouse_x - click_x);
|
||||
var height = Math.abs(mouse_y - click_y);
|
||||
|
||||
if (e.ctrlKey == true || e.metaKey) {
|
||||
if (width < height * this.best_ratio) {
|
||||
width = height * this.best_ratio;
|
||||
}
|
||||
else {
|
||||
height = width / this.best_ratio;
|
||||
}
|
||||
if (mouse_x < click_x) {
|
||||
x = click_x - width;
|
||||
}
|
||||
if (mouse_y < click_y) {
|
||||
y = click_y - height;
|
||||
}
|
||||
}
|
||||
|
||||
if (width == 0 && height == 0) {
|
||||
//same coordinates - cancel
|
||||
app.State.scrap_last_action();
|
||||
return;
|
||||
}
|
||||
|
||||
//more data
|
||||
app.State.do_action(
|
||||
new app.Actions.Update_layer_action(config.layer.id, {
|
||||
x,
|
||||
y,
|
||||
width,
|
||||
height,
|
||||
status: null
|
||||
}),
|
||||
{ merge_with_history: 'new_'+this.name+'_layer' }
|
||||
);
|
||||
}
|
||||
|
||||
render_overlay_parent(ctx){
|
||||
//x
|
||||
if(this.snap_line_info.x !== null) {
|
||||
this.Helper.draw_special_line(
|
||||
ctx,
|
||||
this.snap_line_info.x.start_x,
|
||||
this.snap_line_info.x.start_y,
|
||||
this.snap_line_info.x.end_x,
|
||||
this.snap_line_info.x.end_y
|
||||
);
|
||||
}
|
||||
|
||||
//y
|
||||
if(this.snap_line_info.y !== null) {
|
||||
this.Helper.draw_special_line(
|
||||
ctx,
|
||||
this.snap_line_info.y.start_x,
|
||||
this.snap_line_info.y.start_y,
|
||||
this.snap_line_info.y.end_x,
|
||||
this.snap_line_info.y.end_y
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
get_snap_positions(exclude_id) {
|
||||
var snap_positions = {
|
||||
x: [
|
||||
0,
|
||||
config.WIDTH/2,
|
||||
config.WIDTH,
|
||||
],
|
||||
y: [
|
||||
0,
|
||||
config.HEIGHT/2,
|
||||
config.HEIGHT,
|
||||
],
|
||||
};
|
||||
if(config.guides_enabled == true){
|
||||
//use guides
|
||||
for(var i in config.guides){
|
||||
var guide = config.guides[i];
|
||||
if(guide.y === null)
|
||||
snap_positions.x.push(guide.x);
|
||||
else
|
||||
snap_positions.y.push(guide.y);
|
||||
}
|
||||
}
|
||||
for(var i in config.layers){
|
||||
if(exclude_id != null && exclude_id == config.layers[i].id){
|
||||
continue;
|
||||
}
|
||||
if(config.layers[i].visible == false
|
||||
|| config.layers[i].x === null || config.layers[i].y === null
|
||||
|| config.layers[i].width === null || config.layers[i].height === null){
|
||||
continue;
|
||||
}
|
||||
|
||||
//x
|
||||
var x = config.layers[i].x;
|
||||
if(x > 0 && x < config.WIDTH)
|
||||
snap_positions.x.push(x);
|
||||
|
||||
var x = config.layers[i].x + config.layers[i].width/2;
|
||||
if(x > 0 && x < config.WIDTH)
|
||||
snap_positions.x.push(x);
|
||||
|
||||
var x = config.layers[i].x + config.layers[i].width;
|
||||
if(x > 0 && x < config.WIDTH)
|
||||
snap_positions.x.push(x);
|
||||
|
||||
//y
|
||||
var y = config.layers[i].y;
|
||||
if(y > 0 && y < config.HEIGHT)
|
||||
snap_positions.y.push(y);
|
||||
|
||||
var y = config.layers[i].y + config.layers[i].height/2;
|
||||
if(y > 0 && y < config.HEIGHT)
|
||||
snap_positions.y.push(y);
|
||||
|
||||
var y = config.layers[i].y + config.layers[i].height;
|
||||
if(y > 0 && y < config.HEIGHT)
|
||||
snap_positions.y.push(y);
|
||||
}
|
||||
|
||||
return snap_positions;
|
||||
}
|
||||
|
||||
/**
|
||||
* calculates snap coordinates by current mouse position.
|
||||
*
|
||||
* @param event
|
||||
* @param pos_x
|
||||
* @param pos_y
|
||||
* @param exclude_id
|
||||
* @returns object|null
|
||||
*/
|
||||
calc_snap_position(event, pos_x, pos_y, exclude_id) {
|
||||
var snap_position = { x: null, y: null };
|
||||
var params = this.getParams();
|
||||
|
||||
if(config.SNAP === false || event.shiftKey == true || (event.ctrlKey == true || event.metaKey == true)){
|
||||
this.snap_line_info = {x: null, y: null};
|
||||
return null;
|
||||
}
|
||||
|
||||
//settings
|
||||
var sensitivity = 0.01;
|
||||
var max_distance = (config.WIDTH + config.HEIGHT) / 2 * sensitivity / config.ZOOM;
|
||||
|
||||
//collect snap positions
|
||||
if(typeof exclude_id != "undefined")
|
||||
var snap_positions = this.get_snap_positions(exclude_id);
|
||||
else
|
||||
var snap_positions = this.get_snap_positions();
|
||||
|
||||
//find closest snap positions
|
||||
var min_value = {
|
||||
x: null,
|
||||
y: null,
|
||||
};
|
||||
var min_distance = {
|
||||
x: null,
|
||||
y: null,
|
||||
};
|
||||
//x
|
||||
for(var i in snap_positions.x){
|
||||
var distance = Math.abs(pos_x - snap_positions.x[i]);
|
||||
if(distance < max_distance && (distance < min_distance.x || min_distance.x === null)){
|
||||
min_distance.x = distance;
|
||||
min_value.x = snap_positions.x[i];
|
||||
}
|
||||
}
|
||||
//y
|
||||
for(var i in snap_positions.y){
|
||||
var distance = Math.abs(pos_y - snap_positions.y[i]);
|
||||
if(distance < max_distance && (distance < min_distance.y || min_distance.y === null)){
|
||||
min_distance.y = distance;
|
||||
min_value.y = snap_positions.y[i];
|
||||
}
|
||||
}
|
||||
|
||||
//apply snap
|
||||
var success = false;
|
||||
|
||||
//x
|
||||
if(min_value.x != null) {
|
||||
snap_position.x = Math.round(min_value.x);
|
||||
success = true;
|
||||
this.snap_line_info.x = {
|
||||
start_x: min_value.x,
|
||||
start_y: 0,
|
||||
end_x: min_value.x,
|
||||
end_y: config.HEIGHT
|
||||
};
|
||||
}
|
||||
else{
|
||||
this.snap_line_info.x = null;
|
||||
}
|
||||
//y
|
||||
if(min_value.y != null) {
|
||||
snap_position.y = Math.round(min_value.y);
|
||||
success = true;
|
||||
this.snap_line_info.y = {
|
||||
start_x: 0,
|
||||
start_y: min_value.y,
|
||||
end_x: config.WIDTH,
|
||||
end_y: min_value.y,
|
||||
};
|
||||
}
|
||||
else{
|
||||
this.snap_line_info.y = null;
|
||||
}
|
||||
|
||||
if(success) {
|
||||
return snap_position;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
export default Base_tools_class;
|
||||
|
||||
@ -3,7 +3,6 @@ import Dialog_class from './../../libs/popup.js';
|
||||
import GUI_colors_class from './../gui/gui-colors.js';
|
||||
|
||||
const Helper = new Helper_class();
|
||||
let POP;
|
||||
|
||||
/**
|
||||
* This input opens a custom color picker dialog that is more tightly integrated with the application (swatch selection, etc).
|
||||
@ -13,19 +12,27 @@ let POP;
|
||||
(function ($) {
|
||||
|
||||
const template = `
|
||||
<div class="ui_color_input">
|
||||
<div class="ui_color_input" tabindex="-1">
|
||||
<input type="color">
|
||||
<div class="alpha_overlay"></div>
|
||||
</div>
|
||||
`;
|
||||
|
||||
const on_focus_color_input = (event) => {
|
||||
const $el = $(event.target.closest('.ui_color_input'));
|
||||
$el.trigger('focus');
|
||||
};
|
||||
|
||||
const on_blur_color_input = (event) => {
|
||||
const $el = $(event.target.closest('.ui_color_input'));
|
||||
$el.trigger('blur');
|
||||
};
|
||||
|
||||
const on_click_color_input = (event) => {
|
||||
event.preventDefault();
|
||||
const $el = $(event.target.closest('.ui_color_input'));
|
||||
const { value } = $el.data();
|
||||
if (!POP) {
|
||||
POP = new Dialog_class();
|
||||
}
|
||||
const POP = new Dialog_class();
|
||||
let colorsDialog = new GUI_colors_class();
|
||||
var settings = {
|
||||
title: 'Color Picker',
|
||||
@ -102,6 +109,7 @@ let POP;
|
||||
|
||||
const classList = el.className;
|
||||
const id = definition.id != null ? definition.id : el.getAttribute('id');
|
||||
const inputId = definition.inputId || '';
|
||||
const disabled = definition.disabled != null ? definition.disabled : el.hasAttribute('disabled') ? true : false;
|
||||
const value = definition.value != null ? definition.value : el.value || 0;
|
||||
const ariaLabeledBy = el.getAttribute('aria-labelledby');
|
||||
@ -129,6 +137,9 @@ let POP;
|
||||
if (id) {
|
||||
el.setAttribute('id', id);
|
||||
}
|
||||
if (inputId) {
|
||||
input.setAttribute('id', inputId);
|
||||
}
|
||||
if (ariaLabeledBy) {
|
||||
input.setAttribute('aria-labelledby', ariaLabeledBy);
|
||||
}
|
||||
@ -142,6 +153,8 @@ let POP;
|
||||
|
||||
$(input)
|
||||
.on('click', on_click_color_input)
|
||||
.on('focus', on_focus_color_input)
|
||||
.on('blur', on_blur_color_input)
|
||||
|
||||
set_value($el, value);
|
||||
set_disabled($el, disabled);
|
||||
|
||||
@ -5,6 +5,7 @@
|
||||
|
||||
import config from './../../config.js';
|
||||
import Helper_class from './../../libs/helpers.js';
|
||||
import Tools_translate_class from './../../modules/tools/translate.js';
|
||||
|
||||
const Helper = new Helper_class();
|
||||
|
||||
@ -12,25 +13,18 @@ const sidebarTemplate = `
|
||||
<div class="ui_flex_group justify_content_space_between stacked">
|
||||
<div id="selected_color_sample" class="ui_color_sample" title="Current Color Preview"></div>
|
||||
<div class="ui_button_group">
|
||||
<button id="toggle_color_swatches_section_button" aria-pressed="true" class="ui_icon_button" title="Toggle Swatches">
|
||||
<span class="sr_only">Toggle Swatches</span>
|
||||
<svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-grid-3x2" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" d="M0 3.5A1.5 1.5 0 0 1 1.5 2h13A1.5 1.5 0 0 1 16 3.5v8a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 0 11.5v-8zM1.5 3a.5.5 0 0 0-.5.5V7h4V3H1.5zM5 8H1v3.5a.5.5 0 0 0 .5.5H5V8zm1 0h4v4H6V8zm4-1H6V3h4v4zm1 1v4h3.5a.5.5 0 0 0 .5-.5V8h-4zm0-1V3h3.5a.5.5 0 0 1 .5.5V7h-4z"/>
|
||||
</svg>
|
||||
</button>
|
||||
<button id="toggle_color_picker_section_button" aria-pressed="true" class="ui_icon_button" title="Toggle Color Picker">
|
||||
<button id="toggle_color_picker_section_button" aria-pressed="true" class="ui_icon_button trn" title="Toggle Color Picker">
|
||||
<span class="sr_only">Toggle Color Picker</span>
|
||||
<svg width="1em" height="1em" viewBox="0 0 24 24" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
|
||||
<rect width="24" height="24" opacity="0" />
|
||||
<path
|
||||
d="M19.54 5.08A10.61 10.61 0 0 0 11.91 2a10 10 0 0 0-.05 20 2.58 2.58 0 0 0 2.53-1.89 2.52 2.52 0 0 0-.57-2.28.5.5 0 0 1 .37-.83h1.65A6.15 6.15 0 0 0 22 11.33a8.48 8.48 0 0 0-2.46-6.25zM15.88 15h-1.65a2.49 2.49 0 0 0-1.87 4.15.49.49 0 0 1 .12.49c-.05.21-.28.34-.59.36a8 8 0 0 1-7.82-9.11A8.1 8.1 0 0 1 11.92 4H12a8.47 8.47 0 0 1 6.1 2.48 6.5 6.5 0 0 1 1.9 4.77A4.17 4.17 0 0 1 15.88 15z" />
|
||||
<path d="M19.54 5.08A10.61 10.61 0 0 0 11.91 2a10 10 0 0 0-.05 20 2.58 2.58 0 0 0 2.53-1.89 2.52 2.52 0 0 0-.57-2.28.5.5 0 0 1 .37-.83h1.65A6.15 6.15 0 0 0 22 11.33a8.48 8.48 0 0 0-2.46-6.25zM15.88 15h-1.65a2.49 2.49 0 0 0-1.87 4.15.49.49 0 0 1 .12.49c-.05.21-.28.34-.59.36a8 8 0 0 1-7.82-9.11A8.1 8.1 0 0 1 11.92 4H12a8.47 8.47 0 0 1 6.1 2.48 6.5 6.5 0 0 1 1.9 4.77A4.17 4.17 0 0 1 15.88 15z" />
|
||||
<circle cx="12" cy="6.5" r="1.5" />
|
||||
<path d="M15.25 7.2a1.5 1.5 0 1 0 2.05.55 1.5 1.5 0 0 0-2.05-.55z" />
|
||||
<path d="M8.75 7.2a1.5 1.5 0 1 0 .55 2.05 1.5 1.5 0 0 0-.55-2.05z" />
|
||||
<path d="M6.16 11.26a1.5 1.5 0 1 0 2.08.4 1.49 1.49 0 0 0-2.08-.4z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button id="toggle_color_channels_section_button" aria-pressed="true" class="ui_icon_button" title="Toggle Color Channels">
|
||||
<button id="toggle_color_channels_section_button" aria-pressed="true" class="ui_icon_button trn" title="Toggle Color Channels">
|
||||
<span class="sr_only">Toggle Color Channels</span>
|
||||
<svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-card-list" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" d="M14.5 3h-13a.5.5 0 0 0-.5.5v9a.5.5 0 0 0 .5.5h13a.5.5 0 0 0 .5-.5v-9a.5.5 0 0 0-.5-.5zm-13-1A1.5 1.5 0 0 0 0 3.5v9A1.5 1.5 0 0 0 1.5 14h13a1.5 1.5 0 0 0 1.5-1.5v-9A1.5 1.5 0 0 0 14.5 2h-13z"/>
|
||||
@ -40,6 +34,12 @@ const sidebarTemplate = `
|
||||
<circle cx="3.5" cy="10.5" r=".5"/>
|
||||
</svg>
|
||||
</button>
|
||||
<button id="toggle_color_swatches_section_button" aria-pressed="true" class="ui_icon_button trn" title="Toggle Swatches">
|
||||
<span class="sr_only">Toggle Swatches</span>
|
||||
<svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-grid-3x2" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" d="M0 3.5A1.5 1.5 0 0 1 1.5 2h13A1.5 1.5 0 0 1 16 3.5v8a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 0 11.5v-8zM1.5 3a.5.5 0 0 0-.5.5V7h4V3H1.5zM5 8H1v3.5a.5.5 0 0 0 .5.5H5V8zm1 0h4v4H6V8zm4-1H6V3h4v4zm1 1v4h3.5a.5.5 0 0 0 .5-.5V8h-4zm0-1V3h3.5a.5.5 0 0 1 .5.5V7h-4z"/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div id="color_section_swatches" class="block_section">
|
||||
@ -47,12 +47,12 @@ const sidebarTemplate = `
|
||||
</div>
|
||||
<div id="color_section_picker" class="block_section">
|
||||
<input id="color_picker_gradient" type="color" aria-label="Color Selection">
|
||||
</div>
|
||||
<div id="color_section_channels" class="block_section color_section_channels">
|
||||
<div class="ui_input_group stacked">
|
||||
<label id="color_hex_label" title="Hex" class="label_width_small">Hex</label>
|
||||
<label id="color_hex_label" title="Hex" class="label_width_small trn">Hex</label>
|
||||
<input id="color_hex" aria-labelledby="color_hex_label" value="#000000" maxlength="7" type="text" />
|
||||
</div>
|
||||
</div>
|
||||
<div id="color_section_channels" class="block_section color_section_channels">
|
||||
<div class="ui_input_grid stacked">
|
||||
<div class="ui_input_group">
|
||||
<label id="rgb_r_label" title="Red" class="label_width_character text_red"><strong>R<span class="sr_only">ed</span></strong></label>
|
||||
@ -102,11 +102,11 @@ const dialogTemplate = `
|
||||
<div class="block_section">
|
||||
<div class="ui_input_grid stacked">
|
||||
<div class="ui_input_group">
|
||||
<label class="label_width_medium">Current</label>
|
||||
<label class="label_width_medium trn">Current</label>
|
||||
<div id="dialog_selected_color_sample" class="ui_color_sample"></div>
|
||||
</div>
|
||||
<div class="ui_input_group">
|
||||
<label class="label_width_medium">Previous</label>
|
||||
<label class="label_width_medium trn">Previous</label>
|
||||
<div id="dialog_previous_color_sample" class="ui_color_sample"></div>
|
||||
</div>
|
||||
</div>
|
||||
@ -114,7 +114,7 @@ const dialogTemplate = `
|
||||
</div>
|
||||
<div id="dialog_color_channel_group">
|
||||
<div class="ui_input_group stacked">
|
||||
<label id="dialog_color_hex_label" title="Hex" class="label_width_small">Hex</label>
|
||||
<label id="dialog_color_hex_label" title="Hex" class="label_width_small trn">Hex</label>
|
||||
<input id="dialog_color_hex" aria-labelledby="dialog_color_hex_label" value="#000000" maxlength="7" type="text" />
|
||||
</div>
|
||||
<div class="ui_input_grid stacked">
|
||||
@ -178,6 +178,7 @@ class GUI_colors_class {
|
||||
this.sections = null;
|
||||
this.inputs = null;
|
||||
this.Helper = new Helper_class();
|
||||
this.Tools_translate = new Tools_translate_class();
|
||||
}
|
||||
|
||||
render_main_colors(uiType) {
|
||||
@ -191,11 +192,15 @@ class GUI_colors_class {
|
||||
this.el = document.getElementById('toggle_colors');
|
||||
this.el.innerHTML = sidebarTemplate;
|
||||
}
|
||||
if (config.LANG != 'en') {
|
||||
this.Tools_translate.translate(config.LANG, this.el);
|
||||
}
|
||||
this.init_components();
|
||||
this.render_ui_deferred = Helper.throttle(this.render_ui_deferred, 50);
|
||||
}
|
||||
|
||||
init_components() {
|
||||
|
||||
// Store button references
|
||||
this.buttons = {
|
||||
toggleColorSwatches: $('#toggle_color_swatches_section_button', this.el),
|
||||
@ -288,6 +293,10 @@ class GUI_colors_class {
|
||||
}
|
||||
Helper.setCookie('toggle_color_picker', isPressed ? 1 : 0);
|
||||
});
|
||||
this.inputs.sample.on('click', (event) => {
|
||||
this.buttons.toggleColorPicker.click();
|
||||
});
|
||||
|
||||
// Restore toggle preference, default to visible for picker
|
||||
const saved_toggle_color_picker = Helper.getCookie('toggle_color_picker');
|
||||
if (saved_toggle_color_picker === 0) {
|
||||
@ -341,7 +350,6 @@ class GUI_colors_class {
|
||||
// Initialize hex entry
|
||||
this.inputs.hex
|
||||
.on('input', (event) => {
|
||||
console.log(event);
|
||||
const value = this.inputs.hex.val();
|
||||
const trimmedValue = value.trim();
|
||||
if (value !== trimmedValue) {
|
||||
|
||||
@ -3,46 +3,53 @@
|
||||
* author: Vilius L.
|
||||
*/
|
||||
|
||||
import app from './../../app.js';
|
||||
import config from './../../config.js';
|
||||
import Dialog_class from './../../libs/popup.js';
|
||||
import Text_class from './../../tools/text.js';
|
||||
import Base_layers_class from "../base-layers";
|
||||
import Tools_settings_class from './../../modules/tools/settings.js';
|
||||
import Helper_class from './../../libs/helpers.js';
|
||||
import Tools_translate_class from './../../modules/tools/translate.js';
|
||||
|
||||
var template = `
|
||||
<div class="row">
|
||||
<span class="trn label">X</span>
|
||||
<input type="number" id="detail_x" />
|
||||
<button class="extra reset" type="button" id="reset_x" title="Reset">Reset</button>
|
||||
<input type="number" id="detail_x" step="any" />
|
||||
<button class="extra reset trn" type="button" id="reset_x" title="Reset">Reset</button>
|
||||
</div>
|
||||
<div class="row">
|
||||
<span class="trn label">Y:</span>
|
||||
<input type="number" id="detail_y" />
|
||||
<button class="extra reset" type="button" id="reset_y" title="Reset">Reset</button>
|
||||
<input type="number" id="detail_y" step="any" />
|
||||
<button class="extra reset trn" type="button" id="reset_y" title="Reset">Reset</button>
|
||||
</div>
|
||||
<div class="row">
|
||||
<span class="trn label">Width:</span>
|
||||
<input type="number" id="detail_width" />
|
||||
<button class="extra reset" type="button" id="reset_size" title="Reset">Reset</button>
|
||||
<input type="number" id="detail_width" step="any" />
|
||||
<button class="extra reset trn" type="button" id="reset_size" title="Reset">Reset</button>
|
||||
</div>
|
||||
<div class="row">
|
||||
<span class="trn label">Height:</span>
|
||||
<input type="number" id="detail_height" />
|
||||
<input type="number" id="detail_height" step="any" />
|
||||
</div>
|
||||
<hr />
|
||||
<div class="row">
|
||||
<span class="trn label">Rotate:</span>
|
||||
<input type="number" min="-360" max="360" id="detail_rotate" />
|
||||
<button class="extra reset trn" type="button" id="reset_rotate" title="Reset">Reset</button>
|
||||
</div>
|
||||
<div class="row">
|
||||
<span class="trn label">Opacity:</span>
|
||||
<input type="number" min="0" max="100" id="detail_opacity" />
|
||||
<button class="extra reset trn" type="button" id="reset_opacity" title="Reset">Reset</button>
|
||||
</div>
|
||||
<div class="row">
|
||||
<span class="trn label">Color:</span>
|
||||
<input style="padding: 0px;" type="color" id="detail_color" />
|
||||
</div>
|
||||
<div id="parameters_container"></div>
|
||||
<div id="text_detail_params">
|
||||
<hr />
|
||||
<div class="row">
|
||||
<div class="row center">
|
||||
<span class="trn label"> </span>
|
||||
<button type="button" class="trn dots" id="detail_param_text">Edit text...</button>
|
||||
</div>
|
||||
@ -112,11 +119,18 @@ class GUI_details_class {
|
||||
constructor() {
|
||||
this.POP = new Dialog_class();
|
||||
this.Text = new Text_class();
|
||||
this.Base_layers = new Base_layers_class();
|
||||
this.Tools_settings = new Tools_settings_class();
|
||||
this.Helper = new Helper_class();
|
||||
this.layer_details_active = false;
|
||||
this.Tools_translate = new Tools_translate_class();
|
||||
}
|
||||
|
||||
render_main_details() {
|
||||
document.getElementById('toggle_details').innerHTML = template;
|
||||
|
||||
if (config.LANG != 'en') {
|
||||
this.Tools_translate.translate(config.LANG, document.getElementById('toggle_details'));
|
||||
}
|
||||
this.render_details(true);
|
||||
}
|
||||
|
||||
@ -136,10 +150,22 @@ class GUI_details_class {
|
||||
document.getElementById('text_detail_params').style.display = 'block';
|
||||
document.getElementById('detail_color').closest('.row').style.display = 'none';
|
||||
}
|
||||
else {
|
||||
else{
|
||||
document.getElementById('text_detail_params').style.display = 'none';
|
||||
document.getElementById('detail_color').closest('.row').style.display = 'block';
|
||||
|
||||
if (config.layer != undefined && (config.layer.color === null || config.layer.type == 'image')) {
|
||||
//hide color
|
||||
document.getElementById('detail_color').closest('.row').style.display = 'none';
|
||||
}
|
||||
else {
|
||||
//show color
|
||||
document.getElementById('detail_color').closest('.row').style.display = 'block';
|
||||
}
|
||||
}
|
||||
|
||||
//add params
|
||||
this.render_more_parameters();
|
||||
|
||||
this.render_text(events);
|
||||
this.render_general_select_param('boundary', events);
|
||||
this.render_general_select_param('kerning', events);
|
||||
@ -152,15 +178,30 @@ class GUI_details_class {
|
||||
|
||||
render_general(key, events) {
|
||||
var layer = config.layer;
|
||||
var _this = this;
|
||||
var units = this.Tools_settings.get_setting('default_units');
|
||||
var resolution = this.Tools_settings.get_setting('resolution');
|
||||
|
||||
if (layer != undefined) {
|
||||
var target = document.getElementById('detail_' + key);
|
||||
target.dataset.layer = layer.id;
|
||||
if (layer[key] == null) {
|
||||
target.value = '';
|
||||
target.disabled = true;
|
||||
}
|
||||
else {
|
||||
target.value = Math.round(layer[key]);
|
||||
var value = layer[key];
|
||||
|
||||
if(key == 'x' || key == 'y' || key == 'width' || key == 'height'){
|
||||
//convert units
|
||||
value = this.Helper.get_user_unit(value, units, resolution);
|
||||
}
|
||||
else {
|
||||
value = Math.round(value);
|
||||
}
|
||||
|
||||
//set
|
||||
target.value = value;
|
||||
target.disabled = false;
|
||||
}
|
||||
}
|
||||
@ -172,8 +213,38 @@ class GUI_details_class {
|
||||
console.log('Error: missing details event target ' + 'detail_' + key);
|
||||
return;
|
||||
}
|
||||
let focus_value = null;
|
||||
target.addEventListener('focus', function (e) {
|
||||
focus_value = parseFloat(this.value);
|
||||
});
|
||||
target.addEventListener('blur', function (e) {
|
||||
if(key == 'x' || key == 'y' || key == 'width' || key == 'height'){
|
||||
//convert units
|
||||
var value = _this.Helper.get_internal_unit(this.value, units, resolution);
|
||||
}
|
||||
else {
|
||||
var value = parseInt(this.value);
|
||||
}
|
||||
var layer = _this.Base_layers.get_layer(e.target.dataset.layer);
|
||||
layer[key] = focus_value;
|
||||
if (focus_value !== value) {
|
||||
app.State.do_action(
|
||||
new app.Actions.Bundle_action('change_layer_details', 'Change Layer Details', [
|
||||
new app.Actions.Update_layer_action(layer.id, {
|
||||
[key]: value
|
||||
})
|
||||
])
|
||||
);
|
||||
}
|
||||
});
|
||||
target.addEventListener('change', function (e) {
|
||||
var value = parseInt(this.value);
|
||||
if(key == 'x' || key == 'y' || key == 'width' || key == 'height'){
|
||||
//convert units
|
||||
var value = _this.Helper.get_internal_unit(this.value, units, resolution);
|
||||
}
|
||||
else {
|
||||
var value = parseInt(this.value);
|
||||
}
|
||||
|
||||
if(this.min != undefined && this.min != '' && value < this.min){
|
||||
document.getElementById('detail_opacity').value = value;
|
||||
@ -189,9 +260,17 @@ class GUI_details_class {
|
||||
});
|
||||
target.addEventListener('keyup', function (e) {
|
||||
//for edge....
|
||||
if (e.keyCode != 13)
|
||||
if (e.keyCode != 13) {
|
||||
return;
|
||||
var value = parseInt(this.value);
|
||||
}
|
||||
|
||||
if(key == 'x' || key == 'y' || key == 'width' || key == 'height'){
|
||||
//convert units
|
||||
var value = _this.Helper.get_internal_unit(this.value, units, resolution);
|
||||
}
|
||||
else {
|
||||
var value = parseInt(this.value);
|
||||
}
|
||||
|
||||
if(this.min != undefined && this.min != '' && value < this.min){
|
||||
document.getElementById('detail_opacity').value = value;
|
||||
@ -239,14 +318,34 @@ class GUI_details_class {
|
||||
|
||||
if (events) {
|
||||
//events
|
||||
document.getElementById('detail_param_' + key).addEventListener('change', function (e) {
|
||||
var target = document.getElementById('detail_param_' + key);
|
||||
let focus_value = null;
|
||||
target.addEventListener('focus', function (e) {
|
||||
focus_value = parseInt(this.value);
|
||||
});
|
||||
target.addEventListener('blur', function (e) {
|
||||
var value = parseInt(this.value);
|
||||
config.layer.params[key] = focus_value;
|
||||
let params_copy = JSON.parse(JSON.stringify(config.layer.params));
|
||||
params_copy[key] = value;
|
||||
if (focus_value !== value) {
|
||||
app.State.do_action(
|
||||
new app.Actions.Bundle_action('change_layer_details', 'Change Layer Details', [
|
||||
new app.Actions.Update_layer_action(config.layer.id, {
|
||||
params: params_copy
|
||||
})
|
||||
])
|
||||
);
|
||||
}
|
||||
});
|
||||
target.addEventListener('change', function (e) {
|
||||
var value = parseInt(this.value);
|
||||
config.layer.params[key] = value;
|
||||
config.need_render = true;
|
||||
config.need_render_changed_params = true;
|
||||
|
||||
});
|
||||
document.getElementById('detail_param_' + key).addEventListener('click', function (e) {
|
||||
target.addEventListener('click', function (e) {
|
||||
if (typeof config.layer.params[key] != 'boolean')
|
||||
return;
|
||||
this.classList.toggle('active');
|
||||
@ -256,13 +355,13 @@ class GUI_details_class {
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
render_general_select_param(key, events){
|
||||
var layer = config.layer;
|
||||
|
||||
if (layer != undefined) {
|
||||
var target = document.getElementById('detail_param_' + key);
|
||||
|
||||
|
||||
if (layer.params[key] == null) {
|
||||
target.value = '';
|
||||
target.disabled = true;
|
||||
@ -278,7 +377,27 @@ class GUI_details_class {
|
||||
|
||||
if (events) {
|
||||
//events
|
||||
document.getElementById('detail_param_' + key).addEventListener('change', function (e) {
|
||||
var target = document.getElementById('detail_param_' + key);
|
||||
let focus_value = null;
|
||||
target.addEventListener('focus', function (e) {
|
||||
focus_value = this.value;
|
||||
});
|
||||
target.addEventListener('blur', function (e) {
|
||||
var value = this.value;
|
||||
config.layer.params[key] = focus_value;
|
||||
let params_copy = JSON.parse(JSON.stringify(config.layer.params));
|
||||
params_copy[key] = value;
|
||||
if (focus_value !== value) {
|
||||
app.State.do_action(
|
||||
new app.Actions.Bundle_action('change_layer_details', 'Change Layer Details', [
|
||||
new app.Actions.Update_layer_action(config.layer.id, {
|
||||
params: params_copy
|
||||
})
|
||||
])
|
||||
);
|
||||
}
|
||||
});
|
||||
target.addEventListener('change', function (e) {
|
||||
var value = this.value;
|
||||
config.layer.params[key] = value;
|
||||
config.need_render = true;
|
||||
@ -306,11 +425,22 @@ class GUI_details_class {
|
||||
|
||||
if (events) {
|
||||
//events
|
||||
let focus_value = null;
|
||||
$colorInput.on('focus', function (e) {
|
||||
focus_value = $colorInput.uiColorInput('get_value');
|
||||
});
|
||||
$colorInput.on('change', function (e) {
|
||||
const value = $colorInput.uiColorInput('get_value');
|
||||
config.layer.color = value;
|
||||
config.need_render = true;
|
||||
config.need_render_changed_params = true;
|
||||
config.layer.color = focus_value;
|
||||
if (focus_value !== value) {
|
||||
app.State.do_action(
|
||||
new app.Actions.Bundle_action('change_layer_details', 'Change Layer Details', [
|
||||
new app.Actions.Update_layer_action(config.layer.id, {
|
||||
color: value
|
||||
})
|
||||
])
|
||||
);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@ -334,22 +464,61 @@ class GUI_details_class {
|
||||
if (events) {
|
||||
//events
|
||||
document.getElementById('reset_x').addEventListener('click', function (e) {
|
||||
if(config.layer.x != null)
|
||||
config.layer.x = 0;
|
||||
config.need_render = true;
|
||||
config.need_render_changed_params = true;
|
||||
if (config.layer.x) {
|
||||
app.State.do_action(
|
||||
new app.Actions.Bundle_action('change_layer_details', 'Change Layer Details', [
|
||||
new app.Actions.Update_layer_action(config.layer.id, {
|
||||
x: 0
|
||||
})
|
||||
])
|
||||
);
|
||||
}
|
||||
});
|
||||
document.getElementById('reset_y').addEventListener('click', function (e) {
|
||||
if(config.layer.x != null)
|
||||
config.layer.y = 0;
|
||||
config.need_render = true;
|
||||
config.need_render_changed_params = true;
|
||||
if (config.layer.y) {
|
||||
app.State.do_action(
|
||||
new app.Actions.Bundle_action('change_layer_details', 'Change Layer Details', [
|
||||
new app.Actions.Update_layer_action(config.layer.id, {
|
||||
y: 0
|
||||
})
|
||||
])
|
||||
);
|
||||
}
|
||||
});
|
||||
document.getElementById('reset_size').addEventListener('click', function (e) {
|
||||
config.layer.width = config.layer.width_original;
|
||||
config.layer.height = config.layer.height_original;
|
||||
config.need_render = true;
|
||||
config.need_render_changed_params = true;
|
||||
if (config.layer.width !== config.layer.width_original
|
||||
|| config.layer.height !== config.layer.height_original) {
|
||||
app.State.do_action(
|
||||
new app.Actions.Bundle_action('change_layer_details', 'Change Layer Details', [
|
||||
new app.Actions.Update_layer_action(config.layer.id, {
|
||||
width: config.layer.width_original,
|
||||
height: config.layer.height_original
|
||||
})
|
||||
])
|
||||
);
|
||||
}
|
||||
});
|
||||
document.getElementById('reset_rotate').addEventListener('click', function (e) {
|
||||
if (config.layer.rotate) {
|
||||
app.State.do_action(
|
||||
new app.Actions.Bundle_action('change_layer_details', 'Change Layer Details', [
|
||||
new app.Actions.Update_layer_action(config.layer.id, {
|
||||
rotate: 0
|
||||
})
|
||||
])
|
||||
);
|
||||
}
|
||||
});
|
||||
document.getElementById('reset_opacity').addEventListener('click', function (e) {
|
||||
if (config.layer.opacity != 100) {
|
||||
app.State.do_action(
|
||||
new app.Actions.Bundle_action('change_layer_details', 'Change Layer Details', [
|
||||
new app.Actions.Update_layer_action(config.layer.id, {
|
||||
opacity: 100
|
||||
})
|
||||
])
|
||||
);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@ -363,10 +532,188 @@ class GUI_details_class {
|
||||
document.getElementById('detail_param_text').addEventListener('click', function (e) {
|
||||
document.querySelector('#tools_container #text').click();
|
||||
document.getElementById('text_tool_keyboard_input').focus();
|
||||
config.need_render = true;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
render_more_parameters() {
|
||||
var _this = this;
|
||||
var target_id = "parameters_container";
|
||||
const itemContainer = document.getElementById(target_id);
|
||||
|
||||
if(this.layer_details_active == true){
|
||||
return;
|
||||
}
|
||||
|
||||
itemContainer.innerHTML = "";
|
||||
|
||||
if(!config.layer || typeof config.layer.params == 'undefined' || config.layer.type == 'text') {
|
||||
return;
|
||||
}
|
||||
|
||||
//find layer parameters settings
|
||||
var params_config = null;
|
||||
for (var i in config.TOOLS) {
|
||||
if (config.TOOLS[i].name == config.layer.type) {
|
||||
params_config = config.TOOLS[i];
|
||||
}
|
||||
}
|
||||
if(params_config == null){
|
||||
return;
|
||||
}
|
||||
|
||||
for (var k in params_config.attributes) {
|
||||
var item = params_config.attributes[k];
|
||||
|
||||
//hide some fields, in future name should start with underscore
|
||||
if(params_config.name == 'rectangle' && k == 'square'
|
||||
|| params_config.name == 'ellipse' && k == 'circle'
|
||||
|| params_config.name == 'pencil' && k == 'pressure'
|
||||
|| params_config.name == 'pencil' && k == 'size'){
|
||||
continue;
|
||||
}
|
||||
|
||||
//row
|
||||
let item_row = document.createElement('div');
|
||||
item_row.className = 'row';
|
||||
itemContainer.appendChild(item_row);
|
||||
|
||||
//title
|
||||
var title = k[0].toUpperCase() + k.slice(1);
|
||||
title = title.replace("_", " ");
|
||||
let item_title = document.createElement('span');
|
||||
item_title.className = 'trn label';
|
||||
item_title.innerHTML = title;
|
||||
item_row.appendChild(item_title);
|
||||
|
||||
//value
|
||||
if (typeof item == 'boolean' || (typeof item == 'object' && typeof item.value == 'boolean')) {
|
||||
//boolean - true, false
|
||||
|
||||
const elementInput = document.createElement('button');
|
||||
elementInput.type = 'button';
|
||||
elementInput.className = 'trn ui_toggle_button';
|
||||
elementInput.innerHTML = title;
|
||||
|
||||
elementInput.dataset.key = k;
|
||||
item_row.appendChild(elementInput);
|
||||
|
||||
let value = config.layer.params[k];
|
||||
elementInput.setAttribute('aria-pressed', value);
|
||||
|
||||
//events
|
||||
elementInput.addEventListener('click', function (e) {
|
||||
//on leave
|
||||
let layer = config.layer;
|
||||
let key = this.dataset.key;
|
||||
let new_value = elementInput.getAttribute('aria-pressed') !== 'true';
|
||||
let params = JSON.parse(JSON.stringify(config.layer.params));
|
||||
params[key] = new_value;
|
||||
|
||||
app.State.do_action(
|
||||
new app.Actions.Update_layer_action(layer.id, {
|
||||
params: params
|
||||
})
|
||||
);
|
||||
});
|
||||
}
|
||||
else if (typeof item == 'number' || (typeof item == 'object' && typeof item.value == 'number')) {
|
||||
//numbers
|
||||
|
||||
const elementInput = document.createElement('input');
|
||||
elementInput.type = 'number';
|
||||
elementInput.dataset.key = k;
|
||||
item_row.appendChild(elementInput);
|
||||
|
||||
let min = 1;
|
||||
let max = k === 'power' ? 100 : 999;
|
||||
let step = null;
|
||||
let value = config.layer.params[k];
|
||||
if (typeof item == 'object') {
|
||||
value = item.value;
|
||||
if (item.min != null) {
|
||||
min = item.min;
|
||||
}
|
||||
if (item.max != null) {
|
||||
max = item.max;
|
||||
}
|
||||
if (item.step != null) {
|
||||
step = item.step;
|
||||
}
|
||||
}
|
||||
elementInput.setAttribute('min', min);
|
||||
elementInput.setAttribute('max', max);
|
||||
if (item.step != null) {
|
||||
elementInput.setAttribute('step', step);
|
||||
}
|
||||
elementInput.setAttribute('value', config.layer.params[k]);
|
||||
|
||||
//events
|
||||
let focus_value = null;
|
||||
elementInput.addEventListener('focus', function (e) {
|
||||
focus_value = parseFloat(this.value);
|
||||
_this.layer_details_active = true;
|
||||
});
|
||||
elementInput.addEventListener('blur', function (e) {
|
||||
//on leave
|
||||
_this.layer_details_active = false;
|
||||
let layer = config.layer;
|
||||
let key = this.dataset.key;
|
||||
let new_value = parseInt(this.value);
|
||||
let params = JSON.parse(JSON.stringify(config.layer.params));
|
||||
params[key] = new_value;
|
||||
|
||||
if (focus_value !== new_value) {
|
||||
app.State.do_action(
|
||||
new app.Actions.Update_layer_action(layer.id, {
|
||||
params: params
|
||||
})
|
||||
);
|
||||
}
|
||||
});
|
||||
elementInput.addEventListener('change', function (e) {
|
||||
//on change - lots of events here in short time
|
||||
let key = this.dataset.key;
|
||||
let new_value = parseInt(this.value);
|
||||
|
||||
config.layer.params[key] = new_value;
|
||||
config.need_render = true;
|
||||
});
|
||||
}
|
||||
else if (typeof item == 'string' && item[0] == '#') {
|
||||
//color
|
||||
|
||||
var elementInput = document.createElement('input');
|
||||
elementInput.type = 'color';
|
||||
let focus_value = null;
|
||||
const $colorInput = $(elementInput).uiColorInput({
|
||||
id: k,
|
||||
value: item
|
||||
})
|
||||
.on('change', () => {
|
||||
let layer = config.layer;
|
||||
let key = $colorInput.uiColorInput('get_id');
|
||||
let new_value = $colorInput.uiColorInput('get_value');
|
||||
let params = JSON.parse(JSON.stringify(config.layer.params));
|
||||
params[key] = new_value;
|
||||
|
||||
app.State.do_action(
|
||||
new app.Actions.Update_layer_action(layer.id, {
|
||||
params: params
|
||||
})
|
||||
);
|
||||
});
|
||||
$colorInput.uiColorInput('set_value', config.layer.params[k]);
|
||||
|
||||
item_row.appendChild($colorInput[0]);
|
||||
}
|
||||
else {
|
||||
alertify.error('Error: unsupported attribute type:' + typeof item + ', ' + k);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export default GUI_details_class;
|
||||
|
||||
@ -5,13 +5,21 @@
|
||||
|
||||
import config from './../../config.js';
|
||||
import Base_layers_class from './../base-layers.js';
|
||||
import Tools_settings_class from './../../modules/tools/settings.js';
|
||||
import Helper_class from './../../libs/helpers.js';
|
||||
import Tools_translate_class from './../../modules/tools/translate.js';
|
||||
|
||||
var template = `
|
||||
<span class="trn label">Size:</span>
|
||||
<span id="mouse_info_size">-</span>
|
||||
<span id="mouse_info_size">-</span>
|
||||
<span class="id-mouse_info_units"></span>
|
||||
<br />
|
||||
<span class="trn label">Mouse:</span>
|
||||
<span id="mouse_info_mouse">-</span>
|
||||
<span class="id-mouse_info_units"></span>
|
||||
<br />
|
||||
<span class="trn label">Resolution:</span>
|
||||
<span id="mouse_info_resolution">-</span>
|
||||
`;
|
||||
|
||||
/**
|
||||
@ -21,10 +29,20 @@ class GUI_information_class {
|
||||
|
||||
constructor(ctx) {
|
||||
this.Base_layers = new Base_layers_class();
|
||||
this.Tools_settings = new Tools_settings_class();
|
||||
this.Helper = new Helper_class();
|
||||
this.Tools_translate = new Tools_translate_class();
|
||||
this.last_width = null;
|
||||
this.last_height = null;
|
||||
this.units = this.Tools_settings.get_setting('default_units');
|
||||
this.resolution = this.Tools_settings.get_setting('resolution');
|
||||
}
|
||||
|
||||
render_main_information() {
|
||||
document.getElementById('toggle_info').innerHTML = template;
|
||||
if (config.LANG != 'en') {
|
||||
this.Tools_translate.translate(config.LANG, document.getElementById('toggle_info'));
|
||||
}
|
||||
this.set_events();
|
||||
this.show_size();
|
||||
}
|
||||
@ -33,20 +51,53 @@ class GUI_information_class {
|
||||
var _this = this;
|
||||
var target = document.getElementById('mouse_info_mouse');
|
||||
|
||||
//colors
|
||||
//show width and height
|
||||
//should use canvas resize API in future
|
||||
document.addEventListener('mousemove', function (e) {
|
||||
_this.show_size();
|
||||
}, false);
|
||||
|
||||
//show current mouse position
|
||||
document.getElementById('canvas_minipaint').addEventListener('mousemove', function (e) {
|
||||
var global_pos = _this.Base_layers.get_world_coords(e.offsetX, e.offsetY);
|
||||
var mouse_x = Math.ceil(global_pos.x);
|
||||
var mouse_y = Math.ceil(global_pos.y);
|
||||
|
||||
target.innerHTML = mouse_x + ', ' + mouse_y;
|
||||
mouse_x = _this.Helper.get_user_unit(mouse_x, _this.units, _this.resolution);
|
||||
mouse_y = _this.Helper.get_user_unit(mouse_y, _this.units, _this.resolution);
|
||||
|
||||
_this.show_size();
|
||||
target.innerHTML = mouse_x + ', ' + mouse_y;
|
||||
}, false);
|
||||
}
|
||||
|
||||
show_size() {
|
||||
document.getElementById('mouse_info_size').innerHTML = config.WIDTH + ' x ' + config.HEIGHT;
|
||||
update_units(){
|
||||
this.units = this.Tools_settings.get_setting('default_units');
|
||||
this.resolution = this.Tools_settings.get_setting('resolution');
|
||||
this.show_size(true);
|
||||
}
|
||||
|
||||
show_size(force) {
|
||||
if(force == undefined && this.last_width == config.WIDTH && this.last_height == config.HEIGHT) {
|
||||
return;
|
||||
}
|
||||
|
||||
var width = this.Helper.get_user_unit(config.WIDTH, this.units, this.resolution);
|
||||
var height = this.Helper.get_user_unit(config.HEIGHT, this.units, this.resolution);
|
||||
|
||||
document.getElementById('mouse_info_size').innerHTML = width + ' x ' + height;
|
||||
|
||||
var resolution = this.Tools_settings.get_setting('resolution');
|
||||
document.getElementById('mouse_info_resolution').innerHTML = resolution;
|
||||
|
||||
//show units
|
||||
var default_units = this.Tools_settings.get_setting('default_units_short');
|
||||
var targets = document.querySelectorAll('.id-mouse_info_units');
|
||||
for (var i = 0; i < targets.length; i++) {
|
||||
targets[i].innerHTML = default_units;
|
||||
}
|
||||
|
||||
this.last_width = config.WIDTH;
|
||||
this.last_height = config.HEIGHT;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -3,17 +3,23 @@
|
||||
* author: Vilius L.
|
||||
*/
|
||||
|
||||
import app from './../../app.js';
|
||||
import config from './../../config.js';
|
||||
import Base_layers_class from './../base-layers.js';
|
||||
import Helper_class from './../../libs/helpers.js';
|
||||
import Layer_rename_class from './../../modules/layer/rename.js';
|
||||
import Effects_browser_class from './../../modules/effects/browser.js';
|
||||
import Layer_duplicate_class from './../../modules/layer/duplicate.js';
|
||||
import Layer_raster_class from './../../modules/layer/raster.js';
|
||||
import Tools_translate_class from './../../modules/tools/translate.js';
|
||||
|
||||
var template = `
|
||||
<span class="trn">Insert:</span>
|
||||
<button type="button" class="layer_add" id="insert_layer">+</button>
|
||||
<button type="button" class="layer_add trn" id="insert_layer" title="Insert new layer">+</button>
|
||||
<button type="button" class="layer_duplicate trn" id="layer_duplicate" title="Duplicate layer">D</button>
|
||||
<button type="button" class="layer_raster trn" id="layer_raster" title="Convert layer to raster">R</button>
|
||||
|
||||
<button type="button" class="layers_arrow" title="Move down" id="layer_down">↓</button>
|
||||
<button type="button" class="layers_arrow" title="Move up" id="layer_up">↑</button>
|
||||
<button type="button" class="layers_arrow trn" title="Move layer down" id="layer_down">↓</button>
|
||||
<button type="button" class="layers_arrow trn" title="Move layer up" id="layer_up">↑</button>
|
||||
|
||||
<div class="layers_list" id="layers"></div>
|
||||
`;
|
||||
@ -27,12 +33,18 @@ class GUI_layers_class {
|
||||
this.Base_layers = new Base_layers_class();
|
||||
this.Helper = new Helper_class();
|
||||
this.Layer_rename = new Layer_rename_class();
|
||||
this.Effects_browser = new Effects_browser_class();
|
||||
this.Layer_duplicate = new Layer_duplicate_class();
|
||||
this.Layer_raster = new Layer_raster_class();
|
||||
this.Tools_translate = new Tools_translate_class();
|
||||
}
|
||||
|
||||
render_main_layers() {
|
||||
document.getElementById('layers_base').innerHTML = template;
|
||||
if (config.LANG != 'en') {
|
||||
this.Tools_translate.translate(config.LANG, document.getElementById('layers_base'));
|
||||
}
|
||||
this.render_layers();
|
||||
|
||||
this.set_events();
|
||||
}
|
||||
|
||||
@ -43,38 +55,67 @@ class GUI_layers_class {
|
||||
var target = event.target;
|
||||
if (target.id == 'insert_layer') {
|
||||
//new layer
|
||||
window.State.save();
|
||||
_this.Base_layers.insert();
|
||||
app.State.do_action(
|
||||
new app.Actions.Insert_layer_action()
|
||||
);
|
||||
}
|
||||
else if (target.id == 'layer_duplicate') {
|
||||
//duplicate
|
||||
_this.Layer_duplicate.duplicate();
|
||||
}
|
||||
else if (target.id == 'layer_raster') {
|
||||
//raster
|
||||
_this.Layer_raster.raster();
|
||||
}
|
||||
else if (target.id == 'layer_up') {
|
||||
//move layer up
|
||||
window.State.save();
|
||||
_this.Base_layers.move(config.layer.id, 1);
|
||||
app.State.do_action(
|
||||
new app.Actions.Reorder_layer_action(config.layer.id, 1)
|
||||
);
|
||||
}
|
||||
else if (target.id == 'layer_down') {
|
||||
//move layer down
|
||||
window.State.save();
|
||||
_this.Base_layers.move(config.layer.id, -1);
|
||||
app.State.do_action(
|
||||
new app.Actions.Reorder_layer_action(config.layer.id, -1)
|
||||
);
|
||||
}
|
||||
else if (target.id == 'visibility') {
|
||||
//change visibility
|
||||
_this.Base_layers.toggle_visibility(target.dataset.id);
|
||||
return app.State.do_action(
|
||||
new app.Actions.Toggle_layer_visibility_action(target.dataset.id)
|
||||
);
|
||||
}
|
||||
else if (target.id == 'delete') {
|
||||
//delete layer
|
||||
window.State.save();
|
||||
_this.Base_layers.delete(target.dataset.id);
|
||||
app.State.do_action(
|
||||
new app.Actions.Delete_layer_action(target.dataset.id)
|
||||
);
|
||||
}
|
||||
else if (target.id == 'layer_name') {
|
||||
//select layer
|
||||
if (target.dataset.id == config.layer.id)
|
||||
return;
|
||||
_this.Base_layers.select(target.dataset.id);
|
||||
app.State.do_action(
|
||||
new app.Actions.Select_layer_action(target.dataset.id)
|
||||
);
|
||||
}
|
||||
else if (target.id == 'delete_filter') {
|
||||
//delete filter
|
||||
window.State.save();
|
||||
_this.Base_layers.delete_filter(target.dataset.pid, target.dataset.id);
|
||||
app.State.do_action(
|
||||
new app.Actions.Delete_layer_filter_action(target.dataset.pid, target.dataset.id)
|
||||
);
|
||||
}
|
||||
else if (target.id == 'filter_name') {
|
||||
//edit filter
|
||||
var effects = _this.Effects_browser.get_effects_list();
|
||||
var key = target.dataset.filter.toLowerCase();
|
||||
for (var i in effects) {
|
||||
if(effects[i].title.toLowerCase() == key){
|
||||
_this.Base_layers.select(target.dataset.pid);
|
||||
var function_name = _this.Effects_browser.get_function_from_path(key);
|
||||
effects[i].object[function_name](target.dataset.id);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@ -100,43 +141,59 @@ class GUI_layers_class {
|
||||
|
||||
document.getElementById(target_id).innerHTML = '';
|
||||
var html = '';
|
||||
|
||||
if (config.layer) {
|
||||
for (var i in layers) {
|
||||
var value = layers[i];
|
||||
var class_extra = '';
|
||||
if(value.composition === 'source-atop'){
|
||||
class_extra += ' shorter';
|
||||
}
|
||||
if (value.id == config.layer.id){
|
||||
class_extra += ' active';
|
||||
}
|
||||
|
||||
for (var i in layers) {
|
||||
var value = layers[i];
|
||||
html += '<div class="item ' + class_extra + '">';
|
||||
if (value.visible == true)
|
||||
html += ' <button class="visibility visible trn" id="visibility" data-id="' + value.id + '" title="Hide"></button>';
|
||||
else
|
||||
html += ' <button class="visibility trn" id="visibility" data-id="' + value.id + '" title="Show"></button>';
|
||||
html += ' <button class="delete trn" id="delete" data-id="' + value.id + '" title="Delete"></button>';
|
||||
|
||||
if(value.composition === 'source-atop'){
|
||||
html += ' <button class="arrow_down" data-id="' + value.id + '" ></button>';
|
||||
}
|
||||
|
||||
if (value.id == config.layer.id)
|
||||
html += '<div class="item active">';
|
||||
else
|
||||
html += '<div class="item">';
|
||||
if (value.visible == true)
|
||||
html += ' <span class="visibility visible" id="visibility" data-id="' + value.id + '" title="hide"></span>';
|
||||
else
|
||||
html += ' <span class="visibility" id="visibility" data-id="' + value.id + '" title="show"></span>';
|
||||
html += ' <span class="delete" id="delete" data-id="' + value.id + '" title="delete"></span>';
|
||||
html += ' <span class="layer_name" id="layer_name" data-id="' + value.id + '">' + value.name + '</span>';
|
||||
html += ' <div class="clear"></div>';
|
||||
html += '</div>';
|
||||
var layer_title = this.Helper.escapeHtml(value.name);
|
||||
|
||||
html += ' <button class="layer_name" id="layer_name" data-id="' + value.id + '">' + layer_title + '</button>';
|
||||
html += ' <div class="clear"></div>';
|
||||
html += '</div>';
|
||||
|
||||
//show filters
|
||||
if (layers[i].filters.length > 0) {
|
||||
html += '<div class="filters">';
|
||||
for (var j in layers[i].filters) {
|
||||
var filter = layers[i].filters[j];
|
||||
var title = this.Helper.ucfirst(filter.name);
|
||||
title = title.replace(/-/g, ' ');
|
||||
//show filters
|
||||
if (layers[i].filters.length > 0) {
|
||||
html += '<div class="filters">';
|
||||
for (var j in layers[i].filters) {
|
||||
var filter = layers[i].filters[j];
|
||||
var title = this.Helper.ucfirst(filter.name);
|
||||
title = title.replace(/-/g, ' ');
|
||||
|
||||
html += '<div class="filter">';
|
||||
html += ' <span class="delete" id="delete_filter" data-pid="' + layers[i].id + '" data-id="' + filter.id + '" title="delete"></span>';
|
||||
html += ' <span class="layer_name" id="filter_name" data-pid="' + layers[i].id + '" data-id="' + filter.id + '">' + title + '</span>';
|
||||
html += ' <div class="clear"></div>';
|
||||
html += '<div class="filter">';
|
||||
html += ' <span class="delete" id="delete_filter" data-pid="' + layers[i].id + '" data-id="' + filter.id + '" title="delete"></span>';
|
||||
html += ' <span class="layer_name" id="filter_name" data-pid="' + layers[i].id + '" data-id="' + filter.id + '" data-filter="' + filter.name + '">' + title + '</span>';
|
||||
html += ' <div class="clear"></div>';
|
||||
html += '</div>';
|
||||
}
|
||||
html += '</div>';
|
||||
}
|
||||
html += '</div>';
|
||||
}
|
||||
}
|
||||
|
||||
//register
|
||||
document.getElementById(target_id).innerHTML = html;
|
||||
if (config.LANG != 'en') {
|
||||
this.Tools_translate.translate(config.LANG, document.getElementById(target_id));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -5,7 +5,7 @@
|
||||
|
||||
import config from './../../config.js';
|
||||
import menuDefinition from './../../config-menu.js';
|
||||
import Help_translate_class from './../../modules/help/translate.js';
|
||||
import Tools_translate_class from './../../modules/tools/translate.js';
|
||||
|
||||
/**
|
||||
* class responsible for rendering main menu
|
||||
@ -20,7 +20,7 @@ class GUI_menu_class {
|
||||
this.lastFocusedMenuBarLink = 0;
|
||||
this.dropdownStack = [];
|
||||
|
||||
this.Help_translate = new Help_translate_class();
|
||||
this.Tools_translate = new Tools_translate_class();
|
||||
}
|
||||
|
||||
render_main() {
|
||||
@ -46,8 +46,12 @@ class GUI_menu_class {
|
||||
document.body.addEventListener('mousedown', (event) => { return this.on_mouse_down_body(event); }, true);
|
||||
document.body.addEventListener('touchstart', (event) => { return this.on_mouse_down_body(event); }, true);
|
||||
window.addEventListener('resize', (event) => { return this.on_resize_window(event); }, true);
|
||||
|
||||
|
||||
document.body.classList.add('loaded');
|
||||
|
||||
if (config.LANG != 'en') {
|
||||
this.Tools_translate.translate(config.LANG, this.menuContainer);
|
||||
}
|
||||
}
|
||||
|
||||
on(eventName, callback) {
|
||||
@ -59,10 +63,10 @@ class GUI_menu_class {
|
||||
}
|
||||
}
|
||||
|
||||
emit(eventName, payload) {
|
||||
emit(eventName, payload, object) {
|
||||
if (this.eventSubscriptions[eventName]) {
|
||||
for (let callback of this.eventSubscriptions[eventName]) {
|
||||
callback(payload);
|
||||
callback(payload, object);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -297,10 +301,10 @@ class GUI_menu_class {
|
||||
|
||||
// Emit callback events for triggered links
|
||||
if (definition.target) {
|
||||
this.emit('select_target', definition.target);
|
||||
this.emit('select_target', definition.target, definition);
|
||||
}
|
||||
else if (definition.href) {
|
||||
this.emit('select_href', definition.href);
|
||||
this.emit('select_href', definition.href, null);
|
||||
}
|
||||
}
|
||||
|
||||
@ -339,7 +343,7 @@ class GUI_menu_class {
|
||||
this.menuContainer.appendChild(dropdownElement);
|
||||
|
||||
if (config.LANG != 'en') {
|
||||
this.Help_translate.translate(config.LANG, this.menuContainer);
|
||||
this.Tools_translate.translate(config.LANG, this.menuContainer);
|
||||
}
|
||||
|
||||
if (focusAfterCreation) {
|
||||
|
||||
@ -15,10 +15,10 @@ var template = `
|
||||
</div>
|
||||
<div class="canvas_preview_details">
|
||||
<div class="details">
|
||||
<input title="Zoom out" class="layer_add" id="zoom_less" type="button" value="-" />
|
||||
<input title="Reset zoom level" class="layer_add" id="zoom_100" type="button" value="100%" />
|
||||
<input title="Zoom in" class="layer_add" id="zoom_more" type="button" value="+" />
|
||||
<input class="layer_add" id="zoom_fit" type="button" value="Fit" />
|
||||
<button title="Zoom out" class="layer_add trn" id="zoom_less"">-</button>
|
||||
<button title="Reset zoom level" class="layer_add trn" id="zoom_100">100%</button>
|
||||
<button title="Zoom in" class="layer_add trn" id="zoom_more"">+</button>
|
||||
<button title="Fit window" class="layer_add trn" id="zoom_fit">Fit</button>
|
||||
</div>
|
||||
<input id="zoom_range" type="range" value="100" min="50" max="1000" step="50" />
|
||||
</div>
|
||||
@ -209,7 +209,7 @@ class GUI_preview_class {
|
||||
this.canvas_preview.stroke();
|
||||
}
|
||||
|
||||
zoom(recalc) {
|
||||
async zoom(recalc) {
|
||||
if (recalc != undefined) {
|
||||
//zoom-in or zoom-out
|
||||
if (recalc == 1 || recalc == -1) {
|
||||
@ -270,11 +270,15 @@ class GUI_preview_class {
|
||||
config.ZOOM = Math.min(config.ZOOM, 500);
|
||||
}
|
||||
|
||||
document.getElementById("zoom_100").value = Math.round(config.ZOOM * 100) + '%';
|
||||
document.getElementById("zoom_100").innerHTML = Math.round(config.ZOOM * 100) + '%';
|
||||
document.getElementById("zoom_range").value = (config.ZOOM * 100);
|
||||
|
||||
config.need_render = true;
|
||||
this.GUI.prepare_canvas();
|
||||
|
||||
//sleep after last image import, it maybe not be finished yet
|
||||
await new Promise(r => setTimeout(r, 10));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@ -3,9 +3,10 @@
|
||||
* author: Vilius L.
|
||||
*/
|
||||
|
||||
import app from './../../app.js';
|
||||
import config from './../../config.js';
|
||||
import Helper_class from './../../libs/helpers.js';
|
||||
import Help_translate_class from './../../modules/help/translate.js';
|
||||
import Tools_translate_class from './../../modules/tools/translate.js';
|
||||
import alertify from './../../../../node_modules/alertifyjs/build/alertify.min.js';
|
||||
import Base_gui_class from '../base-gui.js';
|
||||
|
||||
@ -24,7 +25,7 @@ class GUI_tools_class {
|
||||
instance = this;
|
||||
|
||||
this.Helper = new Helper_class();
|
||||
this.Help_translate = new Help_translate_class();
|
||||
this.Tools_translate = new Tools_translate_class();
|
||||
this.Base_gui = new Base_gui_class();
|
||||
|
||||
//active tool
|
||||
@ -39,11 +40,30 @@ class GUI_tools_class {
|
||||
plugins_context.keys().forEach(function (key) {
|
||||
if (key.indexOf('Base' + '/') < 0) {
|
||||
var moduleKey = key.replace('./', '').replace('.js', '');
|
||||
var full_key = moduleKey;
|
||||
if (moduleKey.indexOf('/') > -1) {
|
||||
var parts = moduleKey.split("/");
|
||||
moduleKey = parts[parts.length - 1];
|
||||
}
|
||||
|
||||
var classObj = plugins_context(key);
|
||||
_this.tools_modules[moduleKey] = new classObj.default(ctx);
|
||||
var object = new classObj.default(ctx);
|
||||
|
||||
var title = _this.Helper.ucfirst(object.name);
|
||||
title = title.replace(/_/, ' ');
|
||||
|
||||
_this.tools_modules[moduleKey] = {
|
||||
key: moduleKey,
|
||||
full_key: full_key,
|
||||
name: object.name,
|
||||
title: title,
|
||||
object: object,
|
||||
};
|
||||
|
||||
//init events once
|
||||
_this.tools_modules[moduleKey].load();
|
||||
if(typeof object.load != "undefined") {
|
||||
object.load();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -58,8 +78,8 @@ class GUI_tools_class {
|
||||
var target_id = "tools_container";
|
||||
var _this = this;
|
||||
var saved_tool = this.Helper.getCookie('active_tool');
|
||||
if(saved_tool == 'media') {
|
||||
//bringing this backby default gives bad UX
|
||||
if(saved_tool == 'media' || saved_tool == 'shape') {
|
||||
//bringing this back by default gives bad UX
|
||||
saved_tool = null
|
||||
}
|
||||
if (saved_tool != null) {
|
||||
@ -69,16 +89,23 @@ class GUI_tools_class {
|
||||
//left menu
|
||||
for (var i in config.TOOLS) {
|
||||
var item = config.TOOLS[i];
|
||||
if(item.title)
|
||||
var title = item.title;
|
||||
else
|
||||
var title = this.Helper.ucfirst(item.name).replace(/_/, ' ');
|
||||
|
||||
var itemDom = document.createElement('span');
|
||||
itemDom.id = item.name;
|
||||
itemDom.title = item.title;
|
||||
itemDom.title = title;
|
||||
if (item.name == this.active_tool) {
|
||||
itemDom.className = 'item trn active ' + item.name;
|
||||
}
|
||||
else {
|
||||
itemDom.className = 'item trn ' + item.name;
|
||||
}
|
||||
if(item.visible === false){
|
||||
itemDom.style.display = 'none';
|
||||
}
|
||||
|
||||
//event
|
||||
itemDom.addEventListener('click', function (event) {
|
||||
@ -90,55 +117,14 @@ class GUI_tools_class {
|
||||
}
|
||||
|
||||
this.show_action_attributes();
|
||||
this.activate_tool(this.active_tool);
|
||||
new app.Actions.Activate_tool_action(this.active_tool, true).do();
|
||||
this.Base_gui.check_canvas_offset();
|
||||
}
|
||||
|
||||
activate_tool(key) {
|
||||
//reset last
|
||||
document.querySelector('#tools_container .' + this.active_tool)
|
||||
.classList.remove("active");
|
||||
|
||||
//send exit event to old previous tool
|
||||
if (config.TOOL.on_leave != undefined) {
|
||||
var moduleKey = config.TOOL.name;
|
||||
var functionName = config.TOOL.on_leave;
|
||||
this.tools_modules[moduleKey][functionName]();
|
||||
}
|
||||
|
||||
//change active
|
||||
this.active_tool = key;
|
||||
document.querySelector('#tools_container .' + this.active_tool)
|
||||
.classList.add("active");
|
||||
for (var i in config.TOOLS) {
|
||||
if (config.TOOLS[i].name == this.active_tool) {
|
||||
config.TOOL = config.TOOLS[i];
|
||||
}
|
||||
}
|
||||
|
||||
//check module
|
||||
if (this.tools_modules[key] == undefined) {
|
||||
alertify.error('Tools class not found: ' + key);
|
||||
return;
|
||||
}
|
||||
|
||||
//send activate event to new tool
|
||||
if (config.TOOL.on_activate != undefined) {
|
||||
var moduleKey = config.TOOL.name;
|
||||
var functionName = config.TOOL.on_activate;
|
||||
this.tools_modules[moduleKey][functionName]();
|
||||
}
|
||||
|
||||
//set default cursor
|
||||
const mainWrapper = document.getElementById('main_wrapper');
|
||||
const defaultCursor = config.TOOL && config.TOOL.name === 'text' ? 'text' : 'default';
|
||||
if (mainWrapper.style.cursor != defaultCursor) {
|
||||
mainWrapper.style.cursor = defaultCursor;
|
||||
}
|
||||
|
||||
this.show_action_attributes();
|
||||
this.Helper.setCookie('active_tool', this.active_tool);
|
||||
config.need_render = true;
|
||||
async activate_tool(key) {
|
||||
return app.State.do_action(
|
||||
new app.Actions.Activate_tool_action(key)
|
||||
);
|
||||
}
|
||||
|
||||
action_data() {
|
||||
@ -214,6 +200,7 @@ class GUI_tools_class {
|
||||
element.classList.add('ui_icon_button');
|
||||
element.classList.add('input_height');
|
||||
element.innerHTML = icon;
|
||||
element.title = k;
|
||||
element.innerHTML = '<img style="width:16px;height:16px;" alt="'+title+'" src="images/icons/'+icon+'" />';
|
||||
} else {
|
||||
element.classList.add('ui_toggle_button');
|
||||
@ -235,7 +222,7 @@ class GUI_tools_class {
|
||||
//send event
|
||||
var moduleKey = actionData.name;
|
||||
var functionName = actionData.on_update;
|
||||
this.tools_modules[moduleKey][functionName]({ key: id, value: new_value });
|
||||
this.tools_modules[moduleKey].object[functionName]({ key: id, value: new_value });
|
||||
}
|
||||
});
|
||||
|
||||
@ -265,8 +252,9 @@ class GUI_tools_class {
|
||||
}
|
||||
|
||||
var elementTitle = document.createElement('label');
|
||||
elementTitle.innerHTML = title + ': ';
|
||||
elementTitle.innerHTML = title + ':';
|
||||
elementTitle.id = 'attribute_label_' + k;
|
||||
elementTitle.className = 'trn';
|
||||
|
||||
const elementInput = document.createElement('input');
|
||||
elementInput.type = 'number';
|
||||
@ -295,7 +283,7 @@ class GUI_tools_class {
|
||||
//send event
|
||||
var moduleKey = actionData.name;
|
||||
var functionName = actionData.on_update;
|
||||
this.tools_modules[moduleKey][functionName]({ key: id, value: value });
|
||||
this.tools_modules[moduleKey].object[functionName]({ key: id, value: value });
|
||||
}
|
||||
});
|
||||
|
||||
@ -306,34 +294,45 @@ class GUI_tools_class {
|
||||
//select
|
||||
|
||||
var elementTitle = document.createElement('label');
|
||||
elementTitle.innerHTML = title + ': ';
|
||||
elementTitle.innerHTML = title + ':';
|
||||
elementTitle.for = k;
|
||||
elementTitle.className = 'trn';
|
||||
|
||||
var selectList = document.createElement("select");
|
||||
selectList.id = k;
|
||||
for (var j in item.values) {
|
||||
const values = typeof item.values === 'function' ? item.values() : item.values;
|
||||
for (let j in values) {
|
||||
var option = document.createElement("option");
|
||||
if (item.value == item.values[j]) {
|
||||
if (item.value == values[j]) {
|
||||
option.selected = 'selected';
|
||||
}
|
||||
option.className = 'trn';
|
||||
option.name = item.values[j];
|
||||
option.value = item.values[j];
|
||||
option.text = item.values[j];
|
||||
option.name = values[j];
|
||||
option.value = values[j];
|
||||
option.text = values[j];
|
||||
selectList.appendChild(option);
|
||||
}
|
||||
//event
|
||||
selectList.addEventListener('change', (event) => {
|
||||
const actionData = this.action_data();
|
||||
actionData.attributes[event.target.id].value = event.target.value;
|
||||
this.show_action_attributes();
|
||||
|
||||
if (actionData.on_update != undefined) {
|
||||
//send event
|
||||
var moduleKey = actionData.name;
|
||||
var functionName = actionData.on_update;
|
||||
this.tools_modules[moduleKey][functionName]({ key: event.target.id, value: event.target.value });
|
||||
const result = this.tools_modules[moduleKey].object[functionName]({ key: event.target.id, value: event.target.value });
|
||||
if (result) {
|
||||
// Allow the on_update function to modify the attribute value if necessary.
|
||||
if (result.new_values) {
|
||||
for (let key in result.new_values) {
|
||||
actionData.attributes[key].value = result.new_values[key];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this.show_action_attributes();
|
||||
});
|
||||
|
||||
itemDom.appendChild(elementTitle);
|
||||
@ -343,8 +342,9 @@ class GUI_tools_class {
|
||||
//color
|
||||
|
||||
var elementTitle = document.createElement('label');
|
||||
elementTitle.innerHTML = title + ': ';
|
||||
elementTitle.innerHTML = title + ':';
|
||||
elementTitle.for = k;
|
||||
elementTitle.className = 'trn';
|
||||
|
||||
var colorInput = document.createElement('input');
|
||||
colorInput.type = 'color';
|
||||
@ -362,7 +362,7 @@ class GUI_tools_class {
|
||||
//send event
|
||||
var moduleKey = actionData.name;
|
||||
var functionName = actionData.on_update;
|
||||
this.tools_modules[moduleKey][functionName]({ key: id, value: value });
|
||||
this.tools_modules[moduleKey].object[functionName]({ key: id, value: value });
|
||||
}
|
||||
});
|
||||
|
||||
@ -376,7 +376,7 @@ class GUI_tools_class {
|
||||
|
||||
if (config.LANG != 'en') {
|
||||
//retranslate
|
||||
this.Help_translate.translate(config.LANG);
|
||||
this.Tools_translate.translate(config.LANG);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
513
src/js/languages/ar.json
Normal file
@ -0,0 +1,513 @@
|
||||
{
|
||||
"A problem occurred while removing undo history. It": "حدثت مشكلة أثناء إزالة محفوظات التراجع. هو - هي",
|
||||
"About": "حول",
|
||||
"Active": "نشيط",
|
||||
"Aden": "عدن",
|
||||
"Advanced": "متقدم",
|
||||
"All": "الجميع",
|
||||
"Alpha": "ألفا",
|
||||
"Alpha:": "ألفا:",
|
||||
"Anonymous": "مجهول",
|
||||
"Anti aliasing": "مكافحة التعرج",
|
||||
"Application markup may have changed,": "ربما تم تغيير ترميز التطبيق،",
|
||||
"Arial": "اريال",
|
||||
"Arrow": "سهم",
|
||||
"ArrowDown": "السهم للاسفل",
|
||||
"ArrowLeft": "السهم لليسار",
|
||||
"ArrowRight": "السهم الأيمن",
|
||||
"ArrowUp": "ارووب",
|
||||
"Author:": "مؤلف:",
|
||||
"Auto Adjust Colors": "ضبط تلقائي للألوان",
|
||||
"Auto Kerning": "تقنين تلقائي لتقنين الأحرف",
|
||||
"Average:": "متوسط:",
|
||||
"Backspace": "مسافة للخلف",
|
||||
"Base": "يتمركز",
|
||||
"Basic": "أساسي",
|
||||
"Black and White": "اسود و ابيض",
|
||||
"Blue": "أزرق",
|
||||
"Blue channel:": "القناة الزرقاء:",
|
||||
"Blueprint": "مخطط",
|
||||
"Blur Radius:": "نصف قطر التمويه:",
|
||||
"Blur Tool": "أداة طمس",
|
||||
"Blur power:": "قوة طمس:",
|
||||
"Borders": "الحدود",
|
||||
"Bottom": "قاع",
|
||||
"Bottom to Top": "من الأسفل للأعلى",
|
||||
"Bounds:": "الحدود:",
|
||||
"Box": "علبة",
|
||||
"Box Blur": "مربع طمس",
|
||||
"Box blur": "مربع طمس",
|
||||
"Brightness": "سطوع",
|
||||
"Brightness:": "سطوع:",
|
||||
"Bulge\/Pinch Tool": "أداة انتفاخ \/ قرصة",
|
||||
"Burn": "حرق",
|
||||
"Can not animate 1 layer.": "لا يمكن تحريك طبقة واحدة.",
|
||||
"Can not find previous layer.": "لا يمكن العثور على الطبقة السابقة.",
|
||||
"Can not use this tool on current layer: image already takes all area.": "لا يمكن استخدام هذه الأداة على الطبقة الحالية: الصورة تشغل المساحة بأكملها بالفعل.",
|
||||
"Cancel": "يلغي",
|
||||
"Canvas Size": "حجم قماش",
|
||||
"Center": "مركز",
|
||||
"Center x:": "المركز x:",
|
||||
"Center y:": "مركز ص:",
|
||||
"Center:": "مركز:",
|
||||
"Change Composition": "تغيير التكوين",
|
||||
"Change Layer Details": "تغيير تفاصيل الطبقة",
|
||||
"Change Opacity": "تغيير التعتيم",
|
||||
"Channel:": "قناة:",
|
||||
"Circle": "دائرة",
|
||||
"Clarendon": "كلاريندون",
|
||||
"Clear": "واضح",
|
||||
"Clear Selection": "التحديد الواضح",
|
||||
"Clone Tool": "أداة استنساخ",
|
||||
"Clone count:": "عدد النسخ:",
|
||||
"Clone tool disabled for resized image. Please rasterize first.": "تم تعطيل أداة النسخ للصورة التي تم تغيير حجمها. يرجى التنقيط أولا.",
|
||||
"Cloned edges": "حواف مستنسخة",
|
||||
"Close": "يغلق",
|
||||
"Color #": "اللون #",
|
||||
"Color Corrections": "تصحيحات اللون",
|
||||
"Color Palette": "لوحة الألوان",
|
||||
"Color Zoom": "تكبير اللون",
|
||||
"Color alpha value can not be zero.": "لا يمكن أن تكون قيمة ألفا للون صفراً.",
|
||||
"Color to Alpha": "لون ألفا",
|
||||
"Color zoom": "تكبير اللون",
|
||||
"Color:": "اللون:",
|
||||
"Colors": "الألوان",
|
||||
"Colors:": "الألوان:",
|
||||
"Common Filters": "مرشحات مشتركة",
|
||||
"Composition": "تكوين",
|
||||
"Composition:": "تكوين:",
|
||||
"Content Fill": "تعبئة المحتوى",
|
||||
"Contrast": "مقابلة",
|
||||
"Contrast:": "مقابلة:",
|
||||
"Convert layer to raster": "تحويل الطبقة إلى النقطية",
|
||||
"Convert to Raster": "تحويل إلى نقطي",
|
||||
"Copy Selection": "نسخ التحديد",
|
||||
"Copy to Clipboard": "نسخ إلى الحافظة",
|
||||
"Courier": "ساعي",
|
||||
"Crop Tool": "أداة المحاصيل",
|
||||
"Crop on rotated layer is not supported. Convert it to raster to continue.": "القص على الطبقة التي تم تدويرها غير مدعوم. قم بتحويله إلى خطوط المسح للمتابعة.",
|
||||
"Ctrl + C": "السيطرة + ج",
|
||||
"Ctrl+A": "السيطرة + أ",
|
||||
"Ctrl+C": "Ctrl + C",
|
||||
"Ctrl+P": "السيطرة+P",
|
||||
"Ctrl+V": "السيطرة + V.",
|
||||
"Ctrl+Y": "Ctrl + Y",
|
||||
"Ctrl+Z": "السيطرة + Z",
|
||||
"Current": "تيار",
|
||||
"Current Color Preview": "معاينة اللون الحالي",
|
||||
"Custom": "مخصص",
|
||||
"Data URL": "URL البيانات",
|
||||
"Data URL:": "URL البيانات:",
|
||||
"Decrease": "تخفيض",
|
||||
"Decrease Color Depth": "تقليل عمق اللون",
|
||||
"Degree:": "درجة:",
|
||||
"Del": "ديل",
|
||||
"Delete": "حذف",
|
||||
"Delete Selection": "حذف التحديد",
|
||||
"Denoise": "يقلل الضوضاء",
|
||||
"Desaturate Tool": "أداة إزالة التشبع",
|
||||
"Description:": "وصف:",
|
||||
"Deutsch": "الألمانية",
|
||||
"Differences": "اختلافات",
|
||||
"Differences Down": "الخلافات أسفل",
|
||||
"Direction:": "اتجاه:",
|
||||
"Dither": "ثبات",
|
||||
"Dithering:": "التردد:",
|
||||
"Dominant color:": "اللون السائد:",
|
||||
"Dot Screen": "شاشة نقطية",
|
||||
"Down": "أسفل",
|
||||
"Duplicate": "ينسخ",
|
||||
"Duplicate Layer": "طبقة مكررة",
|
||||
"Duplicate layer": "طبقة مكررة",
|
||||
"Dynamic": "متحرك",
|
||||
"Edge": "حافة",
|
||||
"Edit": "يحرر",
|
||||
"Edit text...": "تحرير النص...",
|
||||
"Effect browser": "متصفح التأثير",
|
||||
"Effects": "تأثيرات",
|
||||
"Effects browser": "متصفح التأثيرات",
|
||||
"Email:": "بريد الالكتروني:",
|
||||
"Emboss": "زخرف",
|
||||
"Empty selection": "اختيار فارغ",
|
||||
"Empty selection or type not image.": "اختيار فارغ أو اكتب ليس صورة.",
|
||||
"Enable autoresize:": "تمكين إعادة الحجم التلقائي:",
|
||||
"End": "نهاية",
|
||||
"English": "الإنجليزية",
|
||||
"English (UK)": "الإنجليزية (المملكة المتحدة)",
|
||||
"Enrich": "يثرى",
|
||||
"Enter": "يدخل",
|
||||
"Erase Tool": "أداة المحو",
|
||||
"Erase on rotate object is disabled. Please rasterize first.": "تم تعطيل المسح عند تدوير الكائن. يرجى التنقيط أولا.",
|
||||
"Error": "خطأ",
|
||||
"Error connecting to service.": "خطأ في الاتصال بالخدمة.",
|
||||
"Error loading the list of fonts from Google.": "حدث خطأ أثناء تحميل قائمة الخطوط من Google.",
|
||||
"Error registering service worker": "خطأ في تسجيل عامل الخدمة",
|
||||
"Error: can not find filter:": "خطأ: لا يمكن العثور على عامل التصفية:",
|
||||
"Error: can not find layer with id:": "خطأ: لا يمكن العثور على طبقة بالمعرف:",
|
||||
"Error: missing details event target": "خطأ: تفاصيل الهدف حدث مفقود",
|
||||
"Error: unknown layer type:": "خطأ: نوع طبقة غير معروف:",
|
||||
"Error: unsupported attribute type:": "خطأ: نوع السمة غير مدعوم:",
|
||||
"Esc": "خروج",
|
||||
"Escape": "يهرب",
|
||||
"Español": "الاسبانية",
|
||||
"Expand edges": "قم بتوسيع الحواف",
|
||||
"Exponent:": "الأس:",
|
||||
"Export": "يصدر",
|
||||
"External": "خارجي",
|
||||
"Factor:": "عامل:",
|
||||
"File": "ملف",
|
||||
"File name:": "اسم الملف:",
|
||||
"File size:": "حجم الملف:",
|
||||
"Fill": "ملء",
|
||||
"Fill Tool": "أداة التعبئة",
|
||||
"Fit": "ملائم",
|
||||
"Fit Window": "تناسب النافذة",
|
||||
"Fit window": "نافذة مناسبة",
|
||||
"Flatten Image": "تسطيح الصورة",
|
||||
"Flip": "يواجه",
|
||||
"FloydSteinberg-serpentine": "FloydSteinberg-serpentine",
|
||||
"Font": "الخط",
|
||||
"Français": "الفرنسية",
|
||||
"Full HD, 1080p": "دقة Full HD ، 1080 بكسل",
|
||||
"Full Screen": "تكبير الشاشة",
|
||||
"Full layers data": "بيانات الطبقات الكاملة",
|
||||
"Gap:": "الفارق:",
|
||||
"Gaussian Blur": "التمويه الضبابي",
|
||||
"Gif delay:": "تأخير Gif:",
|
||||
"Gingham": "القماش القطني",
|
||||
"GitHub:": "جيثب:",
|
||||
"Gradient Radius:": "نصف قطر التدرج:",
|
||||
"Grains": "بقوليات",
|
||||
"Graphics Interchange Format": "تنسيق تبادل الرسومات",
|
||||
"Gray": "رمادي",
|
||||
"Grayscale": "تدرج الرمادي",
|
||||
"Greek": "اليونانية",
|
||||
"Green": "لون أخضر",
|
||||
"Green channel:": "القناة الخضراء:",
|
||||
"Greyscale:": "الرمادي:",
|
||||
"Grid": "شبكة",
|
||||
"Grid on\/off": "الشبكة على \/ قبالة",
|
||||
"Guides": "خطوط إرشاد",
|
||||
"Guides enabled.": "تم تمكين الأدلة.",
|
||||
"H Radius:": "نصف قطر H:",
|
||||
"H. Align:": "ح. محاذاة:",
|
||||
"Heatmap": "خريطة الحرارة",
|
||||
"Height (%):": "ارتفاع (٪):",
|
||||
"Height:": "ارتفاع:",
|
||||
"Help": "مساعدة",
|
||||
"Helvetica": "هيلفيتيكا",
|
||||
"Hermite": "هيرمايت",
|
||||
"Hex": "عرافة",
|
||||
"Hide": "يخفي",
|
||||
"Histogram": "الرسم البياني",
|
||||
"Histogram:": "الرسم البياني:",
|
||||
"Home": "الصفحة الرئيسية",
|
||||
"Horizontal": "أفقي",
|
||||
"Horizontal Alignment": "المحاذاة الأفقية",
|
||||
"Horizontal blur:": "طمس أفقي:",
|
||||
"Horizontal:": "أفقي:",
|
||||
"Hue": "مسحة",
|
||||
"Hue Rotate": "تدوير هوى",
|
||||
"Hue:": "مسحة:",
|
||||
"Image": "صورة",
|
||||
"Image data with multi-layers. Can be opened using miniPaint -": "بيانات الصورة متعددة الطبقات. يمكن فتحه باستخدام miniPaint -",
|
||||
"Impact": "تأثير",
|
||||
"In proportion:": "في نسبة:",
|
||||
"Increase": "زيادة",
|
||||
"Information": "معلومة",
|
||||
"Inkwell": "محبرة",
|
||||
"Insert": "إدراج",
|
||||
"Insert guides": "أدلة إدراج",
|
||||
"Insert new layer": "أدخل طبقة جديدة",
|
||||
"Instagram Filters": "مرشحات Instagram",
|
||||
"Invalid Hex Code": "رمز سداسي عشري غير صالح",
|
||||
"Italiano": "ايطالي",
|
||||
"JPG\/JPEG Format": "تنسيق JPG \/ JPEG",
|
||||
"Kerning:": "تقنين الأحرف:",
|
||||
"Key-Points": "النقاط الرئيسية",
|
||||
"KeyU": "KeyU",
|
||||
"Keyboard Shortcuts": "اختصارات لوحة المفاتيح",
|
||||
"Keyword:": "الكلمة الرئيسية:",
|
||||
"Lanczos": "لانكوز",
|
||||
"Landscape": "منظر جمالي",
|
||||
"Language": "لغة",
|
||||
"Last modified": "آخر تعديل",
|
||||
"Layer": "طبقة",
|
||||
"Layer details": "تفاصيل الطبقة",
|
||||
"Layer is empty.": "الطبقة فارغة.",
|
||||
"Layer is not compatible with resize": "الطبقة غير متوافقة مع تغيير الحجم",
|
||||
"Layer is vector, convert it to raster to apply this tool.": "الطبقة متجهية ، قم بتحويلها إلى خطوط نقطية لتطبيق هذه الأداة.",
|
||||
"Layers": "طبقات",
|
||||
"Layers:": "طبقات:",
|
||||
"Layout:": "تَخطِيط:",
|
||||
"Left": "اليسار",
|
||||
"Left to Right": "من اليسار إلى اليمين",
|
||||
"Level:": "مستوى:",
|
||||
"Levels:": "المستويات:",
|
||||
"Lietuvių": "ليتوفيتش",
|
||||
"Lo-fi": "Lo-fi",
|
||||
"Luminance:": "الانارة:",
|
||||
"Luminosity": "لمعان",
|
||||
"Magic Eraser Tool": "أداة ماجيك ممحاة",
|
||||
"Merge Down": "دمج أسفل",
|
||||
"Merge Layers": "دمج الطبقات",
|
||||
"Merged": "مندمجة",
|
||||
"Metrics": "المقاييس",
|
||||
"Middle": "وسط",
|
||||
"Missing at least 1 size parameter.": "معلمة حجم واحدة مفقودة على الأقل.",
|
||||
"Missing permissions to write to Clipboard.cc": "أذونات مفقودة للكتابة إلى Clipboard.cc",
|
||||
"Mode:": "الوضع:",
|
||||
"Module function not found.": "لم يتم العثور على وظيفة الوحدة النمطية.",
|
||||
"Modules class not found:": "فئة الوحدات غير موجودة:",
|
||||
"Monospace": "مونوسبيس",
|
||||
"Mosaic": "فسيفساء",
|
||||
"Mouse:": "الفأر:",
|
||||
"Move": "يتحرك",
|
||||
"Move Layer": "تحريك الطبقة",
|
||||
"Move layer down": "انقل الطبقة إلى الأسفل",
|
||||
"Move layer up": "حرك الطبقة لأعلى",
|
||||
"Name:": "اسم:",
|
||||
"Negative": "سلبي",
|
||||
"New": "جديد",
|
||||
"New Bezier Layer": "طبقة بيزيير جديدة",
|
||||
"New Brush Layer": "طبقة فرشاة جديدة",
|
||||
"New Ellipse Layer": "طبقة Ellipse جديدة",
|
||||
"New File": "ملف جديد",
|
||||
"New Gradient Layer": "طبقة متدرجة جديدة",
|
||||
"New Layer": "طبقة جديدة",
|
||||
"New Line Layer": "طبقة خط جديدة",
|
||||
"New Pencil Layer": "طبقة قلم رصاص جديدة",
|
||||
"New Polygon Layer": "طبقة مضلعة جديدة",
|
||||
"New Rectangle Layer": "طبقة مستطيل جديدة",
|
||||
"New Text Layer": "طبقة نص جديدة",
|
||||
"New file": "ملف جديد",
|
||||
"New from Selection": "جديد من التحديد",
|
||||
"New layer": "طبقة جديدة",
|
||||
"Next": "التالي",
|
||||
"Night Vision": "الرؤية الليلية",
|
||||
"None": "لا أحد",
|
||||
"Nothing is selected.": "لم يتم اختيار شيء.",
|
||||
"Offset X:": "تعويض X:",
|
||||
"Offset Y:": "تعويض ص:",
|
||||
"Oil": "زيت",
|
||||
"Ok": "موافق",
|
||||
"Online image editor.": "محرر الصور على الإنترنت.",
|
||||
"Opacity": "العتامة",
|
||||
"Opacity:": "العتامة:",
|
||||
"Open": "فتح",
|
||||
"Open Data URL": "فتح URL البيانات",
|
||||
"Open Directory": "الدليل المفتوح",
|
||||
"Open File": "افتح ملف",
|
||||
"Open File Data URL": "فتح ملف بيانات URL",
|
||||
"Open File URL": "فتح ملف URL",
|
||||
"Open File Webcam": "افتح ملف كاميرا الويب",
|
||||
"Open Image": "صورة مفتوحة",
|
||||
"Open JSON File": "افتح ملف JSON",
|
||||
"Open Test Template": "افتح نموذج الاختبار",
|
||||
"Open URL": "رابط مفتوح",
|
||||
"Open data URL": "فتح URL البيانات",
|
||||
"Open from Webcam": "افتح من كاميرا الويب",
|
||||
"Original Size": "الحجم الأصلي",
|
||||
"PNGTOSVG - Convert Image to SVG": "PNGTOSVG - تحويل الصورة إلى SVG",
|
||||
"PageDown": "اسفل الصفحة",
|
||||
"PageUp": "PageUp",
|
||||
"Palette": "لوحة",
|
||||
"Parameter #1:": "المعلمة # 1:",
|
||||
"Parameter #2:": "المعلمة # 2:",
|
||||
"Paste": "معجون",
|
||||
"Pencil": "قلم",
|
||||
"Percentage:": "النسبة المئوية:",
|
||||
"Pixels:": "بكسل:",
|
||||
"Placeholder comment for color channels": "تعليق العنصر النائب لقنوات الألوان",
|
||||
"Placeholder comment for color picker": "تعليق العنصر النائب لمنتقي الألوان",
|
||||
"Placeholder comment for color swatches": "تعليق العنصر النائب لحوامل اللون",
|
||||
"Portable Network Graphics": "رسومات الشبكة المحمولة",
|
||||
"Portrait": "لَوحَة",
|
||||
"Português": "البرتغالية",
|
||||
"Position:": "موقع:",
|
||||
"Power:": "قوة:",
|
||||
"Preview": "معاينة",
|
||||
"Previous": "سابق",
|
||||
"Previous layer must be image, convert it to raster to apply this tool.": "يجب أن تكون الطبقة السابقة صورة ، قم بتحويلها إلى نقطية لتطبيق هذه الأداة.",
|
||||
"Print": "مطبعة",
|
||||
"Quality:": "جودة:",
|
||||
"Quick Load": "تحميل سريع",
|
||||
"Quick Save": "حفظ سريع",
|
||||
"REMOVE.BG - Remove Image Background": "؛ REMOVE.BG - إزالة خلفية الصورة",
|
||||
"Radial": "شعاعي",
|
||||
"Radial gradient": "شعاعي التدرج",
|
||||
"Radius:": "نصف القطر:",
|
||||
"Range:": "نطاق:",
|
||||
"Red": "أحمر",
|
||||
"Red channel:": "القناة الحمراء:",
|
||||
"Redo": "إعادة",
|
||||
"Remove all": "حذف الكل",
|
||||
"Rename": "إعادة تسمية",
|
||||
"Rename Layer": "إعادة تسمية الطبقة",
|
||||
"Rendered with errors.": "قدمت مع وجود أخطاء.",
|
||||
"Rendering...": "استدعاء...",
|
||||
"Replace Color": "استبدل اللون",
|
||||
"Replace color": "استبدل اللون",
|
||||
"Replacement:": "إستبدال:",
|
||||
"Report Issues": "الإبلاغ عن المشكلات",
|
||||
"Reset": "إعادة ضبط",
|
||||
"Resize": "تغيير الحجم",
|
||||
"Resize Boundary": "تغيير حجم الحدود",
|
||||
"Resize Layer": "طبقة تغيير الحجم",
|
||||
"Resize Layers": "تغيير حجم الطبقات",
|
||||
"Resize Text Layer": "تغيير حجم طبقة النص",
|
||||
"Resized as background": "تم تغيير الحجم كخلفية",
|
||||
"Resized:": "تم تغيير الحجم:",
|
||||
"Resolution:": "القرار:",
|
||||
"Restore Alpha": "استعادة ألفا",
|
||||
"Right": "حق",
|
||||
"Right angle:": "زاوية مستقيمة:",
|
||||
"Right to Left": "من اليمين الى اليسار",
|
||||
"Rotate": "استدارة",
|
||||
"Rotate Layer": "تدوير طبقة",
|
||||
"Rotate is not supported on this type of object. Convert to raster?": "التدوير غير مدعوم في هذا النوع من الكائنات. تحويل إلى نقطية؟",
|
||||
"Rotate left": "استدر يسارا",
|
||||
"Rotate:": "استدارة:",
|
||||
"Ruler": "مسطرة",
|
||||
"SQUOOSH - Compress and Compare Images": "SQUOOSH - ضغط ومقارنة الصور",
|
||||
"Saturate": "تشبع",
|
||||
"Saturation": "التشبع",
|
||||
"Saturation:": "التشبع:",
|
||||
"Save As": "حفظ باسم",
|
||||
"Save As Data URL": "حفظ باسم URL البيانات",
|
||||
"Save as": "حفظ باسم",
|
||||
"Save as type:": "حفظ كنوع:",
|
||||
"Save layers:": "حفظ الطبقات:",
|
||||
"Scaling up is not supported in Hermite, using Lanczos.": "التوسع غير مدعوم في Hermite ، باستخدام Lanczos.",
|
||||
"Scroll down": "حرك الفأرة لأسفل",
|
||||
"Scroll up": "انتقل إلى أعلى",
|
||||
"Search": "بحث",
|
||||
"Search Images": "البحث عن الصور",
|
||||
"Search for Font": "البحث عن الخط",
|
||||
"Search:": "يبحث:",
|
||||
"Select All": "اختر الكل",
|
||||
"Select Text Layer": "حدد طبقة النص",
|
||||
"Select object tool": "حدد أداة الكائن",
|
||||
"Selected": "المحدد",
|
||||
"Selection Tool": "آلة الاختيار",
|
||||
"Sensitivity:": "حساسية:",
|
||||
"Separated": "منفصل",
|
||||
"Separated (original types)": "منفصل (الأنواع الأصلية)",
|
||||
"Sepia": "بني داكن",
|
||||
"Set Image Size": "ضبط حجم الصورة",
|
||||
"Settings": "إعدادات",
|
||||
"Shadow": "ظل",
|
||||
"Shapes": "الأشكال",
|
||||
"Shapes (H)": "الأشكال (ح)",
|
||||
"Sharpen": "شحذ",
|
||||
"Sharpen Tool": "أداة شحذ",
|
||||
"Sharpen:": "شحذ:",
|
||||
"Shift + S": "التحول + س",
|
||||
"Shortcut Key:": "مفتاح الاختصار:",
|
||||
"Show": "يعرض",
|
||||
"Show \/ Hide": "اظهر المخفي",
|
||||
"Show file size:": "إظهار حجم الملف:",
|
||||
"Simple": "بسيط",
|
||||
"Size is too big, max": "الحجم كبير جدًا ، الحد الأقصى",
|
||||
"Size:": "مقاس:",
|
||||
"Skip - layer must be image.": "تخطي - يجب أن تكون الطبقة عبارة عن صورة.",
|
||||
"Solarize": "شمسي",
|
||||
"Sorry, cold not load getUserMedia() data:": "عذرا ، لا تقم بتحميل بيانات getUserMedia ():",
|
||||
"Sorry, image could not be loaded.": "عذرا ، الصورة لا يمكن تحميلها.",
|
||||
"Sorry, image could not be loaded. Try copy image and paste it.": "عذرا ، الصورة لا يمكن تحميلها. حاول نسخ الصورة ولصقها.",
|
||||
"Sorry, image is too big, max 5 MB.": "عذرًا ، الصورة كبيرة جدًا ، بحد أقصى 5 ميجا بايت.",
|
||||
"Source coordinates saved.": "تم حفظ إحداثيات المصدر.",
|
||||
"Source is empty, right click on image or use long press to save source position.": "المصدر فارغ ، انقر بزر الماوس الأيمن على الصورة أو استخدم الضغط لفترة طويلة لحفظ موضع المصدر.",
|
||||
"Sprites": "العفاريت",
|
||||
"Square": "مربع",
|
||||
"Stream:": "مجرى:",
|
||||
"Strength:": "قوة:",
|
||||
"Strict": "صارم",
|
||||
"TINYPNG - Compress PNG and JPEG": "TINYPNG - ضغط PNG و JPEG",
|
||||
"Tab": "فاتورة غير مدفوعة",
|
||||
"Tag Image File Format": "تنسيق ملف صورة العلامة",
|
||||
"Tahoma": "تاهوما",
|
||||
"Target:": "استهداف:",
|
||||
"The quick brown fox jumps over the lazy dog.": "الثعلب البني السريع يقفز فوق الكلب الكسول.",
|
||||
"There": "هناك",
|
||||
"There are no layers behind.": "لا توجد طبقات خلف.",
|
||||
"There is only 1 layer.": "هناك طبقة واحدة فقط.",
|
||||
"This layer must contain an image. Please convert it to raster to apply this tool.": "يجب أن تحتوي هذه الطبقة على صورة. يرجى تحويله إلى نقطية لتطبيق هذه الأداة.",
|
||||
"Tilt Shift": "تحول الإمالة",
|
||||
"Times New Roman": "تايمز نيو رومان",
|
||||
"Toaster": "محمصة",
|
||||
"Toggle": "تبديل",
|
||||
"Toggle Color Channels": "تبديل قنوات الألوان",
|
||||
"Toggle Color Picker": "تبديل منتقي الألوان",
|
||||
"Toggle Menu": "تبديل القائمة",
|
||||
"Toggle Swatches": "تبديل العينات",
|
||||
"Tools": "أدوات",
|
||||
"Top": "قمة",
|
||||
"Top to Bottom": "من اعلى لاسفل",
|
||||
"Total pixels:": "إجمالي وحدات البكسل:",
|
||||
"Translate": "ترجمة",
|
||||
"Translate Layer": "طبقة الترجمة",
|
||||
"Translate error, can not find dictionary:": "خطأ في الترجمة ، لا يمكن العثور على القاموس:",
|
||||
"Transparent:": "شفاف:",
|
||||
"Trim": "تقليم",
|
||||
"Trim Layers": "طبقات القطع",
|
||||
"Trim borders:": "تقليم الحدود:",
|
||||
"Trim layer:": "طبقة القطع:",
|
||||
"Trim white color?": "تقليم اللون الأبيض؟",
|
||||
"Type:": "اكتب:",
|
||||
"Türkçe": "Türkçe",
|
||||
"Undo": "الغاء التحميل",
|
||||
"Unique colors:": "ألوان فريدة:",
|
||||
"Up": "فوق",
|
||||
"Update": "تحديث",
|
||||
"Update Brush Layer": "تحديث طبقة الفرشاة",
|
||||
"Update Pencil Layer": "تحديث طبقة القلم الرصاص",
|
||||
"Update guides": "أدلة التحديث",
|
||||
"Use Ctrl+V keyboard shortcut to paste from Clipboard.": "استخدم اختصار لوحة المفاتيح Ctrl + V للصق من الحافظة.",
|
||||
"V Radius:": "نصف القطر الخامس:",
|
||||
"V. Align:": "V. محاذاة:",
|
||||
"Valencia": "فالنسيا",
|
||||
"Verdana": "فيردانا",
|
||||
"Version:": "الإصدار:",
|
||||
"Vertical": "رأسي",
|
||||
"Vertical Alignment": "انحياز عمودي",
|
||||
"Vertical blur:": "التمويه العمودي:",
|
||||
"Vertical:": "رأسي:",
|
||||
"Vibrance": "حيوية",
|
||||
"View": "رأي",
|
||||
"Vignette": "المقالة القصيرة",
|
||||
"ViliusL": "ViliusL",
|
||||
"Vintage": "كلاسيكي",
|
||||
"Webcam": "كاميرا ويب",
|
||||
"Webcam #": "كاميرا ويب #",
|
||||
"Website:": "موقع الكتروني:",
|
||||
"Weppy File Format": "تنسيق ملف Weppy",
|
||||
"Width (%):": "عرض (٪):",
|
||||
"Width:": "عرض:",
|
||||
"Windows Bitmap": "Windows Bitmap",
|
||||
"Word": "كلمة",
|
||||
"Word + Letter": "كلمة + حرف",
|
||||
"Wrap At:": "التفاف في:",
|
||||
"Wrap:": "لف:",
|
||||
"Wrong dimensions": "أبعاد خاطئة",
|
||||
"Wrong file type, must be image or json.": "نوع الملف غير صحيح ، يجب أن يكون صورة أو json.",
|
||||
"X end:": "نهاية X:",
|
||||
"X position:": "المركز العاشر:",
|
||||
"X start:": "بداية X:",
|
||||
"X-Pro II": "اكس برو الثاني",
|
||||
"Y end:": "نهاية ص:",
|
||||
"Y position:": "موقف ص:",
|
||||
"Y start:": "بداية Y:",
|
||||
"You can also drag and drop items into browser.": "يمكنك أيضًا سحب العناصر وإفلاتها في المتصفح.",
|
||||
"Your browser does not support canvas or JavaScript is not enabled.": "لا يدعم المستعرض الخاص بك اللوحة القماشية أو لم يتم تمكين JavaScript.",
|
||||
"Your browser does not support this format.": "متصفحك لا يدعم هذا التنسيق.",
|
||||
"Your search did not match any images.": "بحثك لم يطابق أي صور.",
|
||||
"Zoom": "تكبير",
|
||||
"Zoom Blur": "زووم بلور",
|
||||
"Zoom In": "تكبير",
|
||||
"Zoom Out": "تصغير",
|
||||
"Zoom blur": "زووم طمس",
|
||||
"Zoom in": "تكبير",
|
||||
"Zoom out": "تصغير",
|
||||
"Zoom:": "تكبير:"
|
||||
}
|
||||
@ -1,210 +1,291 @@
|
||||
{
|
||||
"2d": "2d",
|
||||
"480p": "480p",
|
||||
"A problem occurred while removing undo history. It": "Beim Entfernen des Rückgängig-Verlaufs ist ein Problem aufgetreten. Es",
|
||||
"About": "Über",
|
||||
"Active": "Aktiv",
|
||||
"Aden": "Aden",
|
||||
"Advanced": "Fortgeschritten",
|
||||
"All": "Alle",
|
||||
"Alpha": "Alpha",
|
||||
"Alpha:": "Alpha:",
|
||||
"Anonymous": "Anonym",
|
||||
"Anti aliasing": "Kantenglättung",
|
||||
"Application markup may have changed,": "Das Anwendungs-Markup hat sich möglicherweise geändert.",
|
||||
"Arial": "Arial",
|
||||
"Arrow": "Pfeil",
|
||||
"ArrowDown": "Pfeil nach unten",
|
||||
"ArrowLeft": "Pfeil links",
|
||||
"ArrowRight": "Pfeil rechts",
|
||||
"ArrowUp": "Pfeil nach oben",
|
||||
"Author:": "Autor:",
|
||||
"Auto Adjust Colors": "Automatische Farbeinstellung",
|
||||
"Auto Kerning": "Auto Kerning",
|
||||
"Average:": "Durchschnitt:",
|
||||
"BMP - Windows Bitmap": "BMP - Windows-Bitmap",
|
||||
"Backspace": "Rücktaste",
|
||||
"Base": "Basis",
|
||||
"Basic": "Basic",
|
||||
"Black and White": "Schwarz und weiß",
|
||||
"Blue": "Blau",
|
||||
"Blue channel:": "Blauer Kanal:",
|
||||
"Blue:": "Blau:",
|
||||
"Blueprint": "Entwurf",
|
||||
"Blur Radius:": "Weichzeichner-Radius:",
|
||||
"Blur Tool": "Unschärfewerkzeug",
|
||||
"Blur power:": "Weichzeichner-Stärke:",
|
||||
"Blur tool": "Weichzeichner",
|
||||
"Bold": "Fett gedruckt",
|
||||
"Bold Italic": "Fett Kursiv",
|
||||
"Borders": "Grenzen",
|
||||
"Bottom": "Unterseite",
|
||||
"Bottom to Top": "Unten nach oben",
|
||||
"Bounds:": "Grenzen:",
|
||||
"Box": "Box",
|
||||
"Box Blur": "Box Unschärfe",
|
||||
"Box blur": "Box Unschärfe",
|
||||
"Brightness": "Helligkeit",
|
||||
"Brightness:": "Helligkeit:",
|
||||
"Brush": "Pinsel",
|
||||
"Bulge\/Pinch tool": "Ausbuchtung \/ Pinch-Werkzeug",
|
||||
"Bulge\/Pinch Tool": "Ausbuchtungs- \/ Quetschwerkzeug",
|
||||
"Burn": "Brennen",
|
||||
"CSS Filters": "CSS-Filter",
|
||||
"Can not animate 1 layer.": "1 Ebene kann nicht animiert werden.",
|
||||
"Can not find previous layer.": "Die vorherige Ebene kann nicht gefunden werden.",
|
||||
"Can not use this tool on current layer: image already takes all area.": "Dieses Werkzeug kann auf der aktuellen Ebene nicht verwendet werden: Das Bild nimmt bereits den gesamten Bereich ein.",
|
||||
"Cancel": "Abbrechen",
|
||||
"Canvas Size": "Leinwandgröße",
|
||||
"Center": "Zentrum",
|
||||
"Center x:": "Mitte x:",
|
||||
"Center y:": "Mitte y:",
|
||||
"Center:": "Zentrum:",
|
||||
"Change Composition": "Zusammensetzung ändern",
|
||||
"Change Layer Details": "Layerdetails ändern",
|
||||
"Change Opacity": "Deckkraft ändern",
|
||||
"Channel:": "Kanal:",
|
||||
"Circle": "Kreis",
|
||||
"Clarendon": "Clarendon",
|
||||
"Clear": "Löschen",
|
||||
"Clear Selection": "Auswahl löschen",
|
||||
"Clone Tool": "Klon-Tool",
|
||||
"Clone count:": "Klonanzahl:",
|
||||
"Clone tool": "Klonwerkzeug",
|
||||
"Clone tool disabled for resized image. Please rasterize first.": "Das Klon-Tool ist für das in der Größe geänderte Bild deaktiviert. Bitte zuerst rastern.",
|
||||
"Cloned edges": "Klonierte Kanten",
|
||||
"Close": "Schließen",
|
||||
"Color #": "Farbe #",
|
||||
"Color Zoom": "Farbzoom",
|
||||
"Color alpha value can not be zero.": "Farb-Alpha-Wert kann nicht Null sein.",
|
||||
"Color Corrections": "Farbkorrekturen",
|
||||
"Color Palette": "Farbpalette",
|
||||
"Color Zoom": "Farbzoom",
|
||||
"Color alpha value can not be zero.": "Farb-Alpha-Wert kann nicht Null sein.",
|
||||
"Color to Alpha": "Farbe zu Alpha",
|
||||
"Color zoom": "Farbzoom",
|
||||
"Color:": "Farbe:",
|
||||
"Colors": "Farben",
|
||||
"Colors:": "Farben:",
|
||||
"Common Filters": "Allgemeine Filter",
|
||||
"Composition": "Zusammensetzung",
|
||||
"Composition:": "Zusammensetzung:",
|
||||
"Content Fill": "Inhalt ausfüllen",
|
||||
"Contrast": "Kontrast",
|
||||
"Contrast:": "Kontrast:",
|
||||
"Convert layer to raster": "Konvertieren Sie die Ebene in ein Raster",
|
||||
"Convert to Raster": "In Raster konvertieren",
|
||||
"Copy Selection": "Auswahl kopieren",
|
||||
"Copy:": "Kopieren:",
|
||||
"Copy to Clipboard": "In die Zwischenablage kopieren",
|
||||
"Courier": "Kurier",
|
||||
"Crop": "Zuschneiden",
|
||||
"Crop Tool": "Freistellungswerkzeug",
|
||||
"Crop on rotated layer is not supported. Convert it to raster to continue.": "Das Zuschneiden auf einer gedrehten Ebene wird nicht unterstützt. Konvertieren Sie es in Raster, um fortzufahren.",
|
||||
"Ctrl + C": "Strg + C",
|
||||
"Ctrl+A": "Strg + A.",
|
||||
"Ctrl+C": "Strg + C.",
|
||||
"Ctrl+P": "Strg+P",
|
||||
"Ctrl+V": "Strg + V",
|
||||
"Ctrl-P": "Strg-P",
|
||||
"Ctrl+Y": "Strg + Y.",
|
||||
"Ctrl+Z": "Strg + Z.",
|
||||
"Current": "Aktuell",
|
||||
"Curve": "Kurve",
|
||||
"Current Color Preview": "Aktuelle Farbvorschau",
|
||||
"Custom": "Individuell",
|
||||
"Data URL": "Daten-URL",
|
||||
"Data URL:": "Daten-URL:",
|
||||
"Decrease": "Verringern",
|
||||
"Decrease Color Depth": "Farbtiefe verringern",
|
||||
"Default": "Standard",
|
||||
"Degree:": "Grad:",
|
||||
"Del": "Del",
|
||||
"Delete": "Löschen",
|
||||
"Delete Selection": "Auswahl löschen",
|
||||
"Denoise": "Denoise",
|
||||
"Desaturate": "Entsättigen",
|
||||
"Desaturate Tool": "Entsättigtes Werkzeug",
|
||||
"Description:": "Beschreibung:",
|
||||
"Deutsch": "Deutsch",
|
||||
"Differences": "Unterschiede",
|
||||
"Differences Down": "Unterschiede nach unten",
|
||||
"Direction:": "Richtung:",
|
||||
"Dither": "Dither",
|
||||
"Dithering:": "Dithering:",
|
||||
"Dominant color:": "Dominierende Farbe:",
|
||||
"Dot Screen": "Punkt-Bildschirm",
|
||||
"Down": "Runter",
|
||||
"Duplicate": "Duplikat",
|
||||
"Duplicate Layer": "Ebene duplizieren",
|
||||
"Duplicate layer": "Ebene duplizieren",
|
||||
"Dynamic": "Dynamisch",
|
||||
"Edge": "Kante",
|
||||
"Edit": "Bearbeiten",
|
||||
"Edit text": "Text bearbeiten",
|
||||
"Edit text...": "Text bearbeiten...",
|
||||
"Effect browser": "Effektbrowser",
|
||||
"Effects": "Filter",
|
||||
"Effects browser": "Effektbrowser",
|
||||
"Email:": "Email:",
|
||||
"Emboss": "Prägen",
|
||||
"Empty selection": "Leere Auswahl",
|
||||
"Empty selection or type not image.": "Leere Auswahl oder kein Bildtyp.",
|
||||
"Enable autoresize:": "Automatische Größenänderung aktivieren:",
|
||||
"End": "Ende",
|
||||
"English": "Englisch",
|
||||
"English (UK)": "Englisch UK)",
|
||||
"Enrich": "Bereichern",
|
||||
"Erase": "Löschen",
|
||||
"Erase on rotate object is disabled. Sorry.": "Das Objekt \"Erase on rotate\" ist deaktiviert. Es tut uns leid.",
|
||||
"Enter": "Eingeben",
|
||||
"Erase Tool": "Löschwerkzeug",
|
||||
"Erase on rotate object is disabled. Please rasterize first.": "„Löschen beim Drehen des Objekts“ ist deaktiviert. Bitte zuerst rastern.",
|
||||
"Error": "Fehler",
|
||||
"Error connecting to service.": "Fehler beim Verbinden mit dem Dienst.",
|
||||
"Error: can not load image.": "Fehler: Bild kann nicht geladen werden.",
|
||||
"Error loading the list of fonts from Google.": "Fehler beim Laden der Schriftartenliste von Google.",
|
||||
"Error registering service worker": "Fehler beim Registrieren des Servicemitarbeiters",
|
||||
"Error: can not find filter:": "Fehler: Filter kann nicht gefunden werden:",
|
||||
"Error: can not find layer with id:": "Fehler: Layer mit ID kann nicht gefunden werden:",
|
||||
"Error: missing details event target": "Fehler: Details zum Ereignis fehlen",
|
||||
"Error: unknown layer type:": "Fehler: unbekannter Layertyp:",
|
||||
"Error: unsupported attribute type:": "Fehler: nicht unterstützter Attributtyp:",
|
||||
"Error: wrong key:": "Fehler: falscher Schlüssel:",
|
||||
"Esc": "Esc",
|
||||
"Escape": "Flucht",
|
||||
"Español": "Spanisch",
|
||||
"Expand edges": "Kanten erweitern",
|
||||
"Exponent:": "Exponent:",
|
||||
"Export": "Export",
|
||||
"External": "Extern",
|
||||
"Factor:": "Faktor:",
|
||||
"File": "Datei",
|
||||
"File name:": "Dateiname:",
|
||||
"File size:": "Dateigröße:",
|
||||
"Fill": "Füllen",
|
||||
"Fill Tool": "Füllwerkzeug",
|
||||
"Fit": "Passen",
|
||||
"Fit Window": "Fenster einpassen",
|
||||
"Fit window": "Fenster einbauen",
|
||||
"Flatten Image": "Zu einer Ebene vereinigen",
|
||||
"Flip": "Spiegeln",
|
||||
"FloydSteinberg-serpentine": "FloydSteinberg-Serpentin",
|
||||
"French": "Französisch",
|
||||
"Font": "Schriftart",
|
||||
"Français": "Français",
|
||||
"Full HD, 1080p": "Volles HD, 1080p",
|
||||
"GIF - Graphics Interchange Format": "GIF - Graphics Interchange Format",
|
||||
"Full Screen": "Ganzer Bildschirm",
|
||||
"Full layers data": "Vollständige Layer-Daten",
|
||||
"Gap:": "Spalt:",
|
||||
"Gaussian Blur": "Gaußscher Weichzeichner",
|
||||
"German": "Deutsch",
|
||||
"Gif delay:": "Gif Verzögerung:",
|
||||
"Gingham": "Gingham",
|
||||
"GitHub:": "GitHub:",
|
||||
"Gradient": "Gradient",
|
||||
"Gradient Radius:": "Gradient Radius:",
|
||||
"Grains": "Körner",
|
||||
"Graphics Interchange Format": "Grafikaustauschformat",
|
||||
"Gray": "Grau",
|
||||
"Grayscale": "Graustufen",
|
||||
"Greek": "griechisch",
|
||||
"Green": "Grün",
|
||||
"Green channel:": "Grüner Kanal:",
|
||||
"Green:": "Grün:",
|
||||
"Greyscale:": "Graustufen:",
|
||||
"Grid": "Raster",
|
||||
"Grid on\/off": "Raster ein \/ aus",
|
||||
"Guides": "Führer",
|
||||
"Guides enabled.": "Anleitungen aktiviert.",
|
||||
"H Radius:": "H Radius:",
|
||||
"H. Align:": "H. Ausrichten:",
|
||||
"Heatmap": "Heatmap",
|
||||
"Height (%):": "Höhe (%):",
|
||||
"Height:": "Höhe:",
|
||||
"Help": "Hilfe",
|
||||
"Helvetica": "Helvetica",
|
||||
"Hermite": "Hermite",
|
||||
"Hex:": "Hex:",
|
||||
"Hex": "Verhexen",
|
||||
"Hide": "Verstecken",
|
||||
"Histogram": "Histogramm",
|
||||
"Histogram:": "Histogramm:",
|
||||
"Home": "Zuhause",
|
||||
"Horizontal": "Horizontal",
|
||||
"Horizontal Alignment": "Horizontale Ausrichtung",
|
||||
"Horizontal blur:": "Horizontale Unschärfe:",
|
||||
"Horizontal:": "Horizontal:",
|
||||
"Hue": "Farbton",
|
||||
"Hue Rotate": "Farbton drehen",
|
||||
"Hue:": "Farbton:",
|
||||
"Image": "Bild",
|
||||
"Image data with multi-layers. Can be opened using miniPaint -": "Bilddaten mit mehreren Ebenen. Kann mit miniPaint geöffnet werden -",
|
||||
"Impact": "Auswirkung",
|
||||
"In proportion:": "Im Verhältnis:",
|
||||
"Increase": "Erhöhen, ansteigen",
|
||||
"Information": "Information",
|
||||
"Insert:": "Einfügen:",
|
||||
"Inkwell": "Tintenfass",
|
||||
"Insert": "Einfügen",
|
||||
"Insert guides": "Führungen einfügen",
|
||||
"Insert new layer": "Neue Ebene einfügen",
|
||||
"Instagram Filters": "Instagram Filter",
|
||||
"Invalid Hex Code": "Ungültiger Hex-Code",
|
||||
"Italiano": "Italienisch",
|
||||
"Italic": "Kursiv",
|
||||
"JPG - JPG\/JPEG Format": "JPG - JPG \/ JPEG Format",
|
||||
"JPG, WEBP quality:": "JPG, WEBP Qualität:",
|
||||
"JSON - Full layers data": "JSON - Vollständige Ebenen-Daten",
|
||||
"Japanese": "Japanisch",
|
||||
"JPG\/JPEG Format": "JPG \/ JPEG-Format",
|
||||
"Kerning:": "Kerning:",
|
||||
"Key-Points": "Schlüsselpunkte",
|
||||
"KeyU": "KeyU",
|
||||
"Keyboard Shortcuts": "Tastatürkürzel",
|
||||
"Keyword:": "Stichwort:",
|
||||
"Korean": "Koreanisch",
|
||||
"Lanczos": "Lanczos",
|
||||
"Landscape": "Landschaft",
|
||||
"Language": "Sprache",
|
||||
"Last modified": "Zuletzt bearbeitet",
|
||||
"Layer": "Schicht",
|
||||
"Layer details": "Ebenendetails",
|
||||
"Layer is already image.": "Die Ebene ist bereits ein Bild.",
|
||||
"Layer must be image, convert it to raster to apply this tool.": "Die Ebene muss ein Bild sein, wandeln Sie sie in ein Raster um, um dieses Werkzeug anzuwenden.",
|
||||
"Layer is empty.": "Die Ebene ist leer.",
|
||||
"Layer is not compatible with resize": "Die Ebene ist nicht mit der Größenänderung kompatibel",
|
||||
"Layer is vector, convert it to raster to apply this tool.": "Die Ebene ist ein Vektor. Konvertieren Sie sie in ein Raster, um dieses Werkzeug anzuwenden.",
|
||||
"Layers": "Ebenen",
|
||||
"Layers:": "Ebenen:",
|
||||
"Layout:": "Layout:",
|
||||
"Left": "Links",
|
||||
"Left to Right": "Links nach rechts",
|
||||
"Level:": "Niveau:",
|
||||
"Levels:": "Stufen:",
|
||||
"Lietuvių": "Litauisch",
|
||||
"Line": "Linie",
|
||||
"Lum:": "Lum:",
|
||||
"Lo-fi": "Lo-Fi",
|
||||
"Luminance:": "Leuchtdichte:",
|
||||
"Magic Wand Tool": "Zauberstab-Werkzeug",
|
||||
"Luminosity": "Helligkeit",
|
||||
"Magic Eraser Tool": "Magic Eraser Tool",
|
||||
"Merge Down": "Nach unten vereinigen",
|
||||
"Merge Layers": "Ebenen zusammenführen",
|
||||
"Merged": "Zusammengeführt",
|
||||
"Metrics": "Metriken",
|
||||
"Middle": "Mitte",
|
||||
"Missing at least 1 size parameter.": "Mindestens 1 Größenparameter fehlt.",
|
||||
"Missing permissions to write to Clipboard.cc": "Fehlende Berechtigungen zum Schreiben in Clipboard.cc",
|
||||
"Mode:": "Modus:",
|
||||
"Module function not found.": "Modulfunktion nicht gefunden.",
|
||||
"Modules class not found:": "Modulklasse nicht gefunden:",
|
||||
"Monospace": "Monospace",
|
||||
"Mosaic": "Mosaik",
|
||||
"Mouse:": "Maus:",
|
||||
"Move": "Bewegung",
|
||||
"Move down": "Nach unten schieben",
|
||||
"Move up": "Nach oben schieben",
|
||||
"Move Layer": "Ebene verschieben",
|
||||
"Move layer down": "Ebene nach unten verschieben",
|
||||
"Move layer up": "Ebene nach oben verschieben",
|
||||
"Name:": "Name:",
|
||||
"Needs at least 2 layers.": "Benötigt mindestens 2 Ebenen.",
|
||||
"Negative": "Negativ",
|
||||
"New": "Neu",
|
||||
"New Bezier Layer": "Neue Bezier-Ebene",
|
||||
"New Brush Layer": "Neue Pinselschicht",
|
||||
"New Ellipse Layer": "Neue Ellipsenebene",
|
||||
"New File": "Neue Datei",
|
||||
"New Gradient Layer": "Neue Verlaufsebene",
|
||||
"New Layer": "Neue Schicht",
|
||||
"New Line Layer": "Neue Linienebene",
|
||||
"New Pencil Layer": "Neue Bleistiftebene",
|
||||
"New Polygon Layer": "Neue Polygonebene",
|
||||
"New Rectangle Layer": "Neue Rechteckschicht",
|
||||
"New Text Layer": "Neue Textebene",
|
||||
"New file": "Neue Datei",
|
||||
"New from Selection": "Neu von Auswahl",
|
||||
"New layer": "Neue Ebene",
|
||||
"New width can not be smaller then current width": "Die neue Breite darf nicht kleiner als die aktuelle Breite sein",
|
||||
"Normal": "Normal",
|
||||
"Next": "Nächste",
|
||||
"Night Vision": "Nachtsicht",
|
||||
"None": "Keiner",
|
||||
"Nothing is selected.": "Nichts ausgewählt.",
|
||||
"Offset X:": "Offset X:",
|
||||
"Offset Y:": "Offset Y:",
|
||||
@ -217,23 +298,34 @@
|
||||
"Open Data URL": "Öffnen Sie die Daten-URL",
|
||||
"Open Directory": "Verzeichnis öffnen",
|
||||
"Open File": "Datei öffnen",
|
||||
"Open File Data URL": "Öffnen Sie die Dateidaten-URL",
|
||||
"Open File URL": "Öffnen Sie die Datei-URL",
|
||||
"Open File Webcam": "Öffnen Sie die Datei-Webcam",
|
||||
"Open Image": "Bild öffnen",
|
||||
"Open JSON File": "Öffnen Sie die JSON-Datei",
|
||||
"Open Test Template": "Öffnen Sie die Testvorlage",
|
||||
"Open URL": "Öffne URL",
|
||||
"Open data URL": "Öffnen Sie die Daten-URL",
|
||||
"Open from Webcam": "Von der Webcam öffnen",
|
||||
"Original Size": "Originalgröße",
|
||||
"PNG - Portable Network Graphics": "PNG - Portable Netzwerkgrafik",
|
||||
"PNGTOSVG - Convert Image to SVG": "PNGTOSVG - Bild in SVG konvertieren",
|
||||
"PageDown": "Bild nach unten",
|
||||
"PageUp": "PageUp",
|
||||
"Palette": "Palette",
|
||||
"Parameter #1:": "Parameter # 1:",
|
||||
"Parameter #2:": "Parameter # 2:",
|
||||
"Paste": "Einfügen",
|
||||
"Pencil": "Bleistift",
|
||||
"Percentage:": "Prozentsatz:",
|
||||
"Pick Color": "Farbe wählen",
|
||||
"Pixels:": "Pixel:",
|
||||
"Play animation": "Animation abspielen",
|
||||
"Portuguese": "Portugiesisch",
|
||||
"Placeholder comment for color channels": "Platzhalterkommentar für Farbkanäle",
|
||||
"Placeholder comment for color picker": "Platzhalterkommentar für Farbwähler",
|
||||
"Placeholder comment for color swatches": "Platzhalterkommentar für Farbfelder",
|
||||
"Portable Network Graphics": "Tragbare Netzwerkgrafiken",
|
||||
"Portrait": "Porträt",
|
||||
"Português": "Português",
|
||||
"Position:": "Position:",
|
||||
"Power:": "Leistung:",
|
||||
"Powred by pixabay.com .": "Powred von pixabay.com.",
|
||||
"Pre-Blur:": "Vor Weichzeichnen:",
|
||||
"Preview": "Vorschau",
|
||||
"Previous": "Bisherige",
|
||||
"Previous layer must be image, convert it to raster to apply this tool.": "Die vorherige Ebene muss ein Bild sein, wandeln Sie sie in ein Raster um, um dieses Werkzeug anzuwenden.",
|
||||
@ -241,123 +333,168 @@
|
||||
"Quality:": "Qualität:",
|
||||
"Quick Load": "Schnell laden",
|
||||
"Quick Save": "Schnellspeichern",
|
||||
"REMOVE.BG - Remove Image Background": "REMOVE.BG - Bildhintergrund entfernen",
|
||||
"Radial": "Radial",
|
||||
"Radial gradient": "Radialer Verlauf",
|
||||
"Radius:": "Radius:",
|
||||
"Range:": "Angebot:",
|
||||
"Rectangle": "Rechteck",
|
||||
"Red": "Rot",
|
||||
"Red channel:": "Roter Kanal:",
|
||||
"Red:": "Rot:",
|
||||
"Redo": "Wiederholen",
|
||||
"Remove all": "Alles entfernen",
|
||||
"Rename": "Umbenennen",
|
||||
"Rename Layer": "Ebene umbenennen",
|
||||
"Rendered with errors.": "Mit Fehlern gerendert.",
|
||||
"Rendering...": "Rendern ...",
|
||||
"Replace Color": "Farbe ersetzen",
|
||||
"Replace color": "Farbe ersetzen",
|
||||
"Replacement:": "Ersatz:",
|
||||
"Report Issues": "Probleme melden",
|
||||
"Resample - Hermite": "Resample - Hermite",
|
||||
"Reset": "Zurücksetzen",
|
||||
"Reset zoom level": "Zoomstufe zurücksetzen",
|
||||
"Resize": "Größe ändern",
|
||||
"Resize Boundary": "Größe der Grenze ändern",
|
||||
"Resize Layer": "Ändern Sie die Größe der Ebene",
|
||||
"Resize Layers": "Ändern Sie die Größe von Ebenen",
|
||||
"Resize Text Layer": "Ändern Sie die Größe der Textebene",
|
||||
"Resized as background": "Größe als Hintergrund",
|
||||
"Resized:": "Größe geändert:",
|
||||
"Resolution:": "Auflösung:",
|
||||
"Restore Alpha": "Alpha wiederherstellen",
|
||||
"Right": "Recht",
|
||||
"Right angle:": "Rechter Winkel:",
|
||||
"Right to Left": "Rechts nach links",
|
||||
"Rotate": "Drehen",
|
||||
"Rotate Layer": "Ebene drehen",
|
||||
"Rotate is not supported on this type of object. Convert to raster?": "Drehen wird bei diesem Objekttyp nicht unterstützt. In Raster konvertieren?",
|
||||
"Rotate left": "Nach links drehen",
|
||||
"Rotate:": "Drehen:",
|
||||
"Russian": "Russisch",
|
||||
"Sat:": "Sat:",
|
||||
"Ruler": "Herrscher",
|
||||
"SQUOOSH - Compress and Compare Images": "SQUOOSH - Bilder komprimieren und vergleichen",
|
||||
"Saturate": "Sättigen",
|
||||
"Saturation": "Sättigung",
|
||||
"Saturation:": "Sättigung:",
|
||||
"Save": "Speichern",
|
||||
"Save As": "Speichern als",
|
||||
"Save As Data URL": "Als Daten-URL speichern",
|
||||
"Save as": "Speichern als",
|
||||
"Save as type:": "Speichern unter:",
|
||||
"Save layers:": "Ebenen speichern:",
|
||||
"Save resolution:": "Auflösung speichern:",
|
||||
"Scaling up is not supported in Hermite, using Lanczos.": "Das Skalieren wird in Hermite mit Lanczos nicht unterstützt.",
|
||||
"Scroll down": "Runterscrollen",
|
||||
"Scroll up": "Hochscrollen",
|
||||
"Search": "Suche",
|
||||
"Search Images": "Bilder suchen",
|
||||
"Search for Font": "Suchen Sie nach Schriftart",
|
||||
"Search:": "Suchen:",
|
||||
"Select All": "Alles auswählen",
|
||||
"Select Text Layer": "Wählen Sie Textebene",
|
||||
"Select object tool": "Wählen Sie das Objektwerkzeug aus",
|
||||
"Selected": "Ausgewählt",
|
||||
"Selection": "Auswahl",
|
||||
"Selection Tool": "Auswahlwerkzeug",
|
||||
"Sensitivity:": "Empfindlichkeit:",
|
||||
"Separated": "Getrennt",
|
||||
"Separated (original types)": "Getrennt (Originaltypen)",
|
||||
"Sepia": "Sepia",
|
||||
"Set Image Size": "Stellen Sie die Bildgröße ein",
|
||||
"Settings": "Einstellungen",
|
||||
"Shadow": "Schatten",
|
||||
"Shadow:": "Schatten:",
|
||||
"Shapes": "Formen",
|
||||
"Shapes (H)": "Formen (H)",
|
||||
"Sharpen": "Schärfen",
|
||||
"Sharpen tool": "Werkzeug schärfen",
|
||||
"Sharpen Tool": "Werkzeug schärfen",
|
||||
"Sharpen:": "Schärfen:",
|
||||
"Shift + S": "Umschalt + S",
|
||||
"Shortcut Key:": "Tastenkürzel:",
|
||||
"Show": "Zeigen",
|
||||
"Show \/ Hide": "Anzeigen Ausblenden",
|
||||
"Show file size:": "Dateigröße anzeigen:",
|
||||
"Simple": "Einfach",
|
||||
"Size": "Größe",
|
||||
"Size is too big, max": "Größe ist zu groß, max",
|
||||
"Size:": "Größe:",
|
||||
"Skip - layer must be image.": "Überspringen - Ebene muss ein Bild sein.",
|
||||
"Solarize": "Solarisieren",
|
||||
"Sorry, cold not load getUserMedia() data:": "Sorry, kalt getUserMedia () Daten nicht laden:",
|
||||
"Sorry, image could not be loaded.": "Das Bild konnte leider nicht geladen werden.",
|
||||
"Sorry, image could not be loaded. Try copy image and paste it.": "Entschuldigung, Bild konnte nicht geladen werden. Versuchen Sie, das Bild zu kopieren und einzufügen.",
|
||||
"Sorry, image is too big, max 5 MB.": "Entschuldigung, das Bild ist zu groß, maximal 5 MB.",
|
||||
"Source is empty, right click on image to save source position.": "Die Quelle ist leer, klicken Sie mit der rechten Maustaste auf das Bild, um die Quellposition zu speichern.",
|
||||
"Source coordinates saved.": "Quellkoordinaten gespeichert.",
|
||||
"Source is empty, right click on image or use long press to save source position.": "Quelle ist leer, klicken Sie mit der rechten Maustaste auf das Bild oder drücken Sie lange, um die Position der Quelle zu speichern.",
|
||||
"Sprites": "Sprites",
|
||||
"Square": "Rechteck",
|
||||
"Stream:": "Strom:",
|
||||
"Strength:": "Stärke:",
|
||||
"Strict": "Streng",
|
||||
"Stroke": "Strich",
|
||||
"Stroke:": "Strich:",
|
||||
"TINYPNG - Compress PNG and JPEG": "TINYPNG - Komprimiert PNG und JPEG",
|
||||
"Tab": "Tab",
|
||||
"Tag Image File Format": "Markieren Sie das Bilddateiformat",
|
||||
"Tahoma": "Tahoma",
|
||||
"Target:": "Ziel:",
|
||||
"Text": "Text",
|
||||
"Text example": "Textbeispiel",
|
||||
"Text:": "Text:",
|
||||
"The quick brown fox jumps over the lazy dog.": "Der schnelle Braunfuchs springt über den faulen Hund.",
|
||||
"There": "Dort",
|
||||
"There are no layers behind.": "Es gibt keine Ebenen dahinter.",
|
||||
"There is only 1 layer.": "Es gibt nur 1 Ebene.",
|
||||
"This layer must contain an image. Please convert it to raster to apply this tool.": "Diese Ebene muss ein Bild enthalten. Bitte konvertieren Sie es in ein Raster, um dieses Tool anzuwenden.",
|
||||
"Tilt Shift": "Neigung Verschiebung",
|
||||
"Times New Roman": "Times New Roman",
|
||||
"Toaster": "Toaster",
|
||||
"Toggle": "Umschalten",
|
||||
"Toggle Color Channels": "Farbkanäle umschalten",
|
||||
"Toggle Color Picker": "Farbwähler umschalten",
|
||||
"Toggle Menu": "Menü umschalten",
|
||||
"Toggle Swatches": "Farbfelder umschalten",
|
||||
"Tools": "Werkzeuge",
|
||||
"Tools class not found:": "Tools-Klasse nicht gefunden:",
|
||||
"Top": "oben",
|
||||
"Top to Bottom": "Oben nach unten",
|
||||
"Total pixels:": "Gesamtpixel:",
|
||||
"Translate": "Übersetzen",
|
||||
"Translate Layer": "Ebene übersetzen",
|
||||
"Translate error, can not find dictionary:": "Fehler beim Übersetzen, Wörterbuch nicht gefunden:",
|
||||
"Transparency background:": "Transparenz Hintergrund:",
|
||||
"Transparent:": "Transparent:",
|
||||
"Trim": "Trimmen",
|
||||
"Trim everything:": "Alles zurechtschneiden:",
|
||||
"Trim Layers": "Schichten schneiden",
|
||||
"Trim borders:": "Rand schneiden:",
|
||||
"Trim layer:": "Trim-Ebene:",
|
||||
"Trim white color?": "Trim weiße Farbe?",
|
||||
"Turkish": "Türkisch",
|
||||
"Type:": "Typ:",
|
||||
"Türkçe": "Türkçe",
|
||||
"Undo": "Rückgängig machen",
|
||||
"Undo disabled.": "Rückgängig deaktiviert",
|
||||
"Undo enabled.": "Rückgängig machen",
|
||||
"Undo is not available.": "Rückgängig ist nicht verfügbar.",
|
||||
"Undo levels changed to 1.": "Stufen rückgängig machen, die auf 1 geändert wurden.",
|
||||
"Undo levels restored to": "Rückgängigmachen von Stufen, auf die wiederhergestellt wird",
|
||||
"Unique colors:": "Einzigartige Farben:",
|
||||
"Up": "Oben",
|
||||
"Update": "Aktualisieren",
|
||||
"Update Brush Layer": "Pinselebene aktualisieren",
|
||||
"Update Pencil Layer": "Bleistiftebene aktualisieren",
|
||||
"Update guides": "Update-Anleitungen",
|
||||
"Use Ctrl+V keyboard shortcut to paste from Clipboard.": "Verwenden Sie die Tastenkombination Strg + V zum Einfügen aus der Zwischenablage.",
|
||||
"V Radius:": "V-Radius:",
|
||||
"V. Align:": "V. Ausrichten:",
|
||||
"Valencia": "Valencia",
|
||||
"Verdana": "Verdana",
|
||||
"Version:": "Ausführung:",
|
||||
"Vertical": "Vertikal",
|
||||
"Vertical Alignment": "Vertikale Ausrichtung",
|
||||
"Vertical blur:": "Vertikale Unschärfe:",
|
||||
"Vertical:": "Vertikal:",
|
||||
"Vibrance": "Dynamik",
|
||||
"View": "Sicht",
|
||||
"Vignette": "Vignette",
|
||||
"ViliusL": "ViliusL",
|
||||
"Vintage": "Vintage",
|
||||
"Visible:": "Sichtbar:",
|
||||
"WEBP - Weppy File Format": "WEBP - Weppy Dateiformat",
|
||||
"Webcam": "Webcam",
|
||||
"Webcam #": "Webcam #",
|
||||
"Website:": "Webseite:",
|
||||
"Weppy File Format": "Weppy Dateiformat",
|
||||
"Width (%):": "Breite (%):",
|
||||
"Width:": "Breite:",
|
||||
"Windows Bitmap": "Windows Bitmap",
|
||||
"Word": "Wort",
|
||||
"Word + Letter": "Wort + Brief",
|
||||
"Wrap At:": "Wrap At:",
|
||||
"Wrap:": "Wickeln:",
|
||||
"Wrong dimensions": "Falsche Abmessungen",
|
||||
"Wrong file type, must be image or json.": "Falscher Dateityp, muss image oder json sein.",
|
||||
"X end:": "X Ende:",
|
||||
"X position:": "X-Position:",
|
||||
"X start:": "X Start:",
|
||||
"X-Pro II": "X-Pro II",
|
||||
"Y end:": "Y Ende:",
|
||||
"Y position:": "Y-Position:",
|
||||
"Y start:": "Y Start:",
|
||||
|
||||
513
src/js/languages/el.json
Normal file
@ -0,0 +1,513 @@
|
||||
{
|
||||
"A problem occurred while removing undo history. It": "Προέκυψε ένα πρόβλημα κατά την αφαίρεση του ιστορικού αναίρεσης",
|
||||
"About": "Σχετικά",
|
||||
"Active": "Ενεργό",
|
||||
"Aden": "Άντεν",
|
||||
"Advanced": "Προχωρημένα",
|
||||
"All": "Όλα",
|
||||
"Alpha": "Άλφα",
|
||||
"Alpha:": "Άλφα:",
|
||||
"Anonymous": "Ανώνυμο",
|
||||
"Anti aliasing": "Εξομάλυνση",
|
||||
"Application markup may have changed,": "Η σήμανση της εφαρμογής μπορεί να έχει αλλάξει,",
|
||||
"Arial": "Άριαλ",
|
||||
"Arrow": "Βέλος",
|
||||
"ArrowDown": "Κάτω βέλος",
|
||||
"ArrowLeft": "Αριστερό βέλος",
|
||||
"ArrowRight": "Δεξί βέλος",
|
||||
"ArrowUp": "Πάνω βέλος",
|
||||
"Author:": "Δημιουργός",
|
||||
"Auto Adjust Colors": "Αυτόματη ρύθμιση χρωμάτων",
|
||||
"Auto Kerning": "Αυτόματο διάστημα χαρακτήρων",
|
||||
"Average:": "Μέσο",
|
||||
"Backspace": "Οπισθοδρόμηση",
|
||||
"Base": "Βάση",
|
||||
"Basic": "Βασικό",
|
||||
"Black and White": "Μαύρο και Άσπρο",
|
||||
"Blue": "Μπλε",
|
||||
"Blue channel:": "Μπλε κανάλι",
|
||||
"Blueprint": "αποτύπωμα",
|
||||
"Blur Radius:": "Ακτίνα θολούρας",
|
||||
"Blur Tool": "Εργαλείο θολούρας",
|
||||
"Blur power:": "Δύναμη θολούρας",
|
||||
"Borders": "Όρια",
|
||||
"Bottom": "Κάτω",
|
||||
"Bottom to Top": "Κάτω προς πάνω",
|
||||
"Bounds:": "Περιορισμοί",
|
||||
"Box": "Κουτί",
|
||||
"Box Blur": "Κουτί θόλωσης",
|
||||
"Box blur": "Κουτί θόλωσης",
|
||||
"Brightness": "Φωτεινότητα",
|
||||
"Brightness:": "Φωτεινότητα",
|
||||
"Bulge\/Pinch Tool": "Εργαλείο εξογκώματος \/ Τσιμπήματος",
|
||||
"Burn": "Καίω",
|
||||
"Can not animate 1 layer.": "Δεν μπορεί να αναπαράγει ένα επίπεδο",
|
||||
"Can not find previous layer.": "Δεν μπορεί να βρεί το προηγούμενο επίπεδο",
|
||||
"Can not use this tool on current layer: image already takes all area.": "Δεν είναι δυνατή η χρήση αυτού του εργαλείου στο τρέχον επίπεδο: η εικόνα καταλαμβάνει ήδη όλη την περιοχή.",
|
||||
"Cancel": "Ακύρωση",
|
||||
"Canvas Size": "Μέγεθος καμβά",
|
||||
"Center": "Κέντρο",
|
||||
"Center x:": "Κέντρο Χ",
|
||||
"Center y:": "Κέντρο Υ",
|
||||
"Center:": "Κέντρο",
|
||||
"Change Composition": "Αλλαγή Σύνθεσης",
|
||||
"Change Layer Details": "Λεπτομέρειες αλλαγής επιπέδου",
|
||||
"Change Opacity": "Αλλαγή αδιαφάνειας",
|
||||
"Channel:": "Κανάλια",
|
||||
"Circle": "Κύκλος",
|
||||
"Clarendon": "Κλαρεντόν",
|
||||
"Clear": "Καθαρισμός",
|
||||
"Clear Selection": "Καθαρισμός επιλογής",
|
||||
"Clone Tool": "Εργαλείο κλωνοποίησης",
|
||||
"Clone count:": "Μετρητής Κλώνων",
|
||||
"Clone tool disabled for resized image. Please rasterize first.": "Το εργαλείο κλωνοποίησης απενεργοποιήθηκε για αλλαγή μεγέθους εικόνας. Παρακαλώ ραστεροποιήστε πρώτα.",
|
||||
"Cloned edges": "Άκρες κλώνου",
|
||||
"Close": "Κλείσε",
|
||||
"Color #": "Χρώμα #",
|
||||
"Color Corrections": "Διορθώσεις χρώματος",
|
||||
"Color Palette": "Παλέτα χρώματος",
|
||||
"Color Zoom": "Εστίαση χρώματος",
|
||||
"Color alpha value can not be zero.": "Η τιμή ΑΛΦΑ στο χρώμα δεν μπορεί να είναι μηδέν",
|
||||
"Color to Alpha": "Χρώμα σε ΑΛΦΑ",
|
||||
"Color zoom": "Εστίαση χρώματος",
|
||||
"Color:": "Χρώμα",
|
||||
"Colors": "Χρώματα",
|
||||
"Colors:": "Χρώματα",
|
||||
"Common Filters": "Κοινά φίλτρα",
|
||||
"Composition": "Σύνθεση",
|
||||
"Composition:": "Σύνθεση",
|
||||
"Content Fill": "Γέμισμα περιεχομένου",
|
||||
"Contrast": "Αντίθεση",
|
||||
"Contrast:": "Αντίθεση",
|
||||
"Convert layer to raster": "Μετατροπή στρώματος σε ράστερ",
|
||||
"Convert to Raster": "Μετατροπή σε πίνακα τιμών",
|
||||
"Copy Selection": "Αντιγραφή επιλογής",
|
||||
"Copy to Clipboard": "Αντιγραφή στο πρόχειρο",
|
||||
"Courier": "Μεταφορέας",
|
||||
"Crop Tool": "Εργαλείο αποκοπής",
|
||||
"Crop on rotated layer is not supported. Convert it to raster to continue.": "Η αποκοπή σε περιστραμμένο επίπεδο δεν υποστηρίζεται. Μετατρέψτε το σε πίνακα τιμών για να συνεχίσετε",
|
||||
"Ctrl + C": "Ctrl + C",
|
||||
"Ctrl+A": "Ctrl+A",
|
||||
"Ctrl+C": "Ctrl+C",
|
||||
"Ctrl+P": "Ctrl+P",
|
||||
"Ctrl+V": "Ctrl+V",
|
||||
"Ctrl+Y": "Ctrl+Y",
|
||||
"Ctrl+Z": "Ctrl+Z",
|
||||
"Current": "Τρέχον",
|
||||
"Current Color Preview": "Τρέχουσα προεπισκόπηση χρώματος",
|
||||
"Custom": "Προεπιλεγμένο",
|
||||
"Data URL": "Δεδομένα URL",
|
||||
"Data URL:": "Δεδομένα URL",
|
||||
"Decrease": "Μείωση",
|
||||
"Decrease Color Depth": "Μείωση βάθους χρώματος",
|
||||
"Degree:": "Βαθμός",
|
||||
"Del": "Διαγρ",
|
||||
"Delete": "Διαγραφή",
|
||||
"Delete Selection": "Διαγραφή επιλογής",
|
||||
"Denoise": "Αφαίρεση θορύβου",
|
||||
"Desaturate Tool": "Εργαλείο αποκορεσμού",
|
||||
"Description:": "Περιγραφή",
|
||||
"Deutsch": "Γερμανικά",
|
||||
"Differences": "Διαφορές",
|
||||
"Differences Down": "Διαφορές κάτω",
|
||||
"Direction:": "Κατεύθυνση",
|
||||
"Dither": "Μείωση παραμόρφωσης σήματος χαμηλού πλάτους",
|
||||
"Dithering:": "Μείωση παραμόρφωσης σήματος χαμηλού πλάτους",
|
||||
"Dominant color:": "Κυρίαρχο χρώμα:",
|
||||
"Dot Screen": "Στίγμα οθόνης",
|
||||
"Down": "Κάτω",
|
||||
"Duplicate": "Διπλασίασε",
|
||||
"Duplicate Layer": "Διπλασίασε επίπεδο",
|
||||
"Duplicate layer": "Διπλότυπο στρώμα",
|
||||
"Dynamic": "Δυναμικό",
|
||||
"Edge": "Αιχμή",
|
||||
"Edit": "Επεξεργασία",
|
||||
"Edit text...": "Επεξεργασία κειμένου",
|
||||
"Effect browser": "Κατάλογος εφέ",
|
||||
"Effects": "εφέ",
|
||||
"Effects browser": "Κατάλογος εφέ",
|
||||
"Email:": "μέιλ",
|
||||
"Emboss": "Στάμπα",
|
||||
"Empty selection": "Κενή επιλογή",
|
||||
"Empty selection or type not image.": "Κενή επιλογή ή όχι τύπος εικόνας",
|
||||
"Enable autoresize:": "Ενεργοποίηση αυτόματου μεγέθους:",
|
||||
"End": "Τέλος",
|
||||
"English": "Αγγλικά",
|
||||
"English (UK)": "Αγγλικά (Ηνωμένο Βασίλειο)",
|
||||
"Enrich": "Εμπλουτισμός",
|
||||
"Enter": "Εισαγωγή",
|
||||
"Erase Tool": "Εργαλείο διαγραφής",
|
||||
"Erase on rotate object is disabled. Please rasterize first.": "Η διαγραφή στο περιστρεφόμενο αντικείμενο είναι απενεργοποιημένη. Παρακαλώ ραστεροποιήστε πρώτα.",
|
||||
"Error": "Σφάλμα",
|
||||
"Error connecting to service.": "Σφάλμα σύνδεσης σε υπηρεσία",
|
||||
"Error loading the list of fonts from Google.": "Σφάλμα κατά τη φόρτωση της λίστας γραμματοσειρών από την Google.",
|
||||
"Error registering service worker": "Σφάλμα εγγραφής σε υπηρεσία",
|
||||
"Error: can not find filter:": "Σφάλμα: Δεν βρίσκεται το φίλτρο",
|
||||
"Error: can not find layer with id:": "Σφάλμα: Δεν βρίσκεται το επίπεδο",
|
||||
"Error: missing details event target": "Σφάλμα: Λείπουν λεπτομέρειες στόχου γεγονότων",
|
||||
"Error: unknown layer type:": "Σφάλμα: Άγνωστος τύπος επιπέδου",
|
||||
"Error: unsupported attribute type:": "Σφάλμα: μη υποστηριζόμενος τύπος χαρακτηριστικού:",
|
||||
"Esc": "Διαφ",
|
||||
"Escape": "Διαφυγή",
|
||||
"Español": "Ισπανικά",
|
||||
"Expand edges": "Διεύρυνση άκρων",
|
||||
"Exponent:": "Εκθέτης:Ν",
|
||||
"Export": "Εξαγωγή",
|
||||
"External": "Εξωτερικός",
|
||||
"Factor:": "Παράγοντας",
|
||||
"File": "Αρχείο",
|
||||
"File name:": "Όνομα αρχείου",
|
||||
"File size:": "Μέγεθος Αρχείου",
|
||||
"Fill": "Γέμισμα",
|
||||
"Fill Tool": "Εργαλείο Γεμίσματος",
|
||||
"Fit": "Ταίριασμα",
|
||||
"Fit Window": "Ταίριασμα στο παράθυρο",
|
||||
"Fit window": "Κατάλληλο παράθυρο",
|
||||
"Flatten Image": "Επιπεδοποίηση εικόνας",
|
||||
"Flip": "Αναποδογύρισμα",
|
||||
"FloydSteinberg-serpentine": "Σερπατίνα Φλόυντ - Στάινμπεργκ",
|
||||
"Font": "Γραμματοσειρά",
|
||||
"Français": "Γαλλικά",
|
||||
"Full HD, 1080p": "Υψηλή ανάλυση 1080ρ",
|
||||
"Full Screen": "Πλήρης Οθόνη",
|
||||
"Full layers data": "Πλήρη δεδομένα επιπέδου",
|
||||
"Gap:": "Κενό",
|
||||
"Gaussian Blur": "Γκαουσσιανή Θόλωση",
|
||||
"Gif delay:": "Καθυστέρηση gif",
|
||||
"Gingham": "Gingham",
|
||||
"GitHub:": "Github",
|
||||
"Gradient Radius:": "Ακτίνα κλίσης",
|
||||
"Grains": "Κόκκοι",
|
||||
"Graphics Interchange Format": "Μορφή Μεταβαλλόμενων Γραφικών",
|
||||
"Gray": "Γκρι",
|
||||
"Grayscale": "Κλίμακα του Γκρι",
|
||||
"Greek": "Ελληνικά",
|
||||
"Green": "Πράσινο",
|
||||
"Green channel:": "Πράσινο Κανάλι",
|
||||
"Greyscale:": "Κλίμακα του Γκρι",
|
||||
"Grid": "Πλέγμα",
|
||||
"Grid on\/off": "Πλέγμα ανοικτό \/ κλειστό",
|
||||
"Guides": "Οδηγοί",
|
||||
"Guides enabled.": "Οδηγοί ενεργοί",
|
||||
"H Radius:": "Οριζόντια Ακτίνα",
|
||||
"H. Align:": "Οριζόντια Ευθυγράμμιση",
|
||||
"Heatmap": "Χάρτης θερμότητας",
|
||||
"Height (%):": "Ύψος (%)",
|
||||
"Height:": "Ύψος",
|
||||
"Help": "Βοήθεια",
|
||||
"Helvetica": "Ελβετικά",
|
||||
"Hermite": "Ερμητιανό",
|
||||
"Hex": "Δεκαεξαδικό",
|
||||
"Hide": "Κρύβω",
|
||||
"Histogram": "Ιστόγραμμα",
|
||||
"Histogram:": "Ιστόγραμμα",
|
||||
"Home": "Αρχική",
|
||||
"Horizontal": "Οριζόντιο",
|
||||
"Horizontal Alignment": "Οριζόντια ευθυγράμμιση",
|
||||
"Horizontal blur:": "Οριζόντια Θόλωση",
|
||||
"Horizontal:": "Οριζόντιο",
|
||||
"Hue": "Απόχρωση",
|
||||
"Hue Rotate": "Περιστροφή απόχρωσης",
|
||||
"Hue:": "Απόχρωση",
|
||||
"Image": "Εικόνα",
|
||||
"Image data with multi-layers. Can be opened using miniPaint -": "Δεδομένα εικόνας με πολλά επίπεδα. Δεν μπορεί να ανοιχτεί με το minipaint",
|
||||
"Impact": "Επίδραση",
|
||||
"In proportion:": "Σε αναλογία:",
|
||||
"Increase": "Αύξηση",
|
||||
"Information": "Πληροφορίες",
|
||||
"Inkwell": "Πηγή μελανιού",
|
||||
"Insert": "Εισαγωγή",
|
||||
"Insert guides": "Οδηγοί εισαγωγής",
|
||||
"Insert new layer": "Εισαγάγετε νέο στρώμα",
|
||||
"Instagram Filters": "Φίλτρα ίνσταγκραμ",
|
||||
"Invalid Hex Code": "Άκυρος δεκαεξαδικός κωδικός",
|
||||
"Italiano": "Ιταλικά",
|
||||
"JPG\/JPEG Format": "Μορφή JPG \/ JPEG",
|
||||
"Kerning:": "Διάστημα χαρακτήρων",
|
||||
"Key-Points": "Σημεία - κλειδί",
|
||||
"KeyU": "Κλειδί υ",
|
||||
"Keyboard Shortcuts": "Συντομεύσεις πληκτρολογίου",
|
||||
"Keyword:": "Λέξη - κλειδί",
|
||||
"Lanczos": "Ζώνη Γλώσσας",
|
||||
"Landscape": "Τοπίο",
|
||||
"Language": "Γλώσσα",
|
||||
"Last modified": "Τελευταία τροποποίηση",
|
||||
"Layer": "Επίπεδο",
|
||||
"Layer details": "Λεπτομέρειες επιπέδου",
|
||||
"Layer is empty.": "Το επίπεδο είναι κενό.",
|
||||
"Layer is not compatible with resize": "Επίπεδο μη συμβατό με αλλαγή μεγέθους",
|
||||
"Layer is vector, convert it to raster to apply this tool.": "Το επίπεδο είναι διάνυσμα. Μετατροπή πρώτα σε πίνακα, για εφαρμογή με αυτό το εργαλείο.",
|
||||
"Layers": "Επίπεδα",
|
||||
"Layers:": "Επίπεδα:",
|
||||
"Layout:": "Διάταξη:",
|
||||
"Left": "Αριστερά",
|
||||
"Left to Right": "Αριστερά προς δεξιά",
|
||||
"Level:": "Επίπεδο",
|
||||
"Levels:": "Επίπεδα",
|
||||
"Lietuvių": "Lietuviu",
|
||||
"Lo-fi": "Χαμηλής συχνότητας",
|
||||
"Luminance:": "Φωτισμός",
|
||||
"Luminosity": "Ψωτεινότητα",
|
||||
"Magic Eraser Tool": "Εργαλείο μαγικής σβήστρας",
|
||||
"Merge Down": "Συγχώνευση προς τα κάτω",
|
||||
"Merge Layers": "Συγχώνευση επιπέδων",
|
||||
"Merged": "Συγχωνευμένος",
|
||||
"Metrics": "Μετρικό",
|
||||
"Middle": "Μέσαίο",
|
||||
"Missing at least 1 size parameter.": "Λείπει τουλάχιστον μία παράμετρος μεγέθους",
|
||||
"Missing permissions to write to Clipboard.cc": "Δεν επιτρέπεται η εγγραφή στο αρχείο πρόχειρου",
|
||||
"Mode:": "Λειτουργία",
|
||||
"Module function not found.": "Δεν βρέθηκε η λειτουργία της προσθήκης",
|
||||
"Modules class not found:": "Δεν βρέθηκε η κλάση της προσθήκης",
|
||||
"Monospace": "Μονοδιάστημα",
|
||||
"Mosaic": "Μωσαικό",
|
||||
"Mouse:": "Ποντίκι",
|
||||
"Move": "Μετακίνησε",
|
||||
"Move Layer": "Επίπεδο μετακίνησης",
|
||||
"Move layer down": "Μετακινήστε το στρώμα προς τα κάτω",
|
||||
"Move layer up": "Μετακινήστε το στρώμα προς τα πάνω",
|
||||
"Name:": "Όνομα",
|
||||
"Negative": "Αρνιτικό",
|
||||
"New": "Νέο",
|
||||
"New Bezier Layer": "Νέο στρώμα Bezier",
|
||||
"New Brush Layer": "Νέο επίπεδο πινέλου",
|
||||
"New Ellipse Layer": "Νέο επίπεδο έλλειψης",
|
||||
"New File": "Νέο αρχείο",
|
||||
"New Gradient Layer": "Νέο επίπεδο κλίσης",
|
||||
"New Layer": "Νέο επίπεδο",
|
||||
"New Line Layer": "Νέο επίπεδο γραμμής",
|
||||
"New Pencil Layer": "Νέο επίπεδο μολυβιού",
|
||||
"New Polygon Layer": "Νέο στρώμα πολυγώνου",
|
||||
"New Rectangle Layer": "Νέο επίπεδο ορθογωνίου",
|
||||
"New Text Layer": "Νέο επίπεδο κειμένου",
|
||||
"New file": "Νέο αρχείο",
|
||||
"New from Selection": "Νέο από επιλογή...",
|
||||
"New layer": "Νέο επίπεδο",
|
||||
"Next": "Επόμενο",
|
||||
"Night Vision": "Νυχτερινή όραση",
|
||||
"None": "Κανένα",
|
||||
"Nothing is selected.": "Δεν επιλέχθηκε τίποτα",
|
||||
"Offset X:": "Αντιστάθμισμα Χ",
|
||||
"Offset Y:": "Αντιστάθμισμα Υ",
|
||||
"Oil": "Λάδι",
|
||||
"Ok": "ΟΚ",
|
||||
"Online image editor.": "Διαδικτυακός Επεξεργαστής εικόνας",
|
||||
"Opacity": "Αδιαφάνεια",
|
||||
"Opacity:": "Αδιαφανές",
|
||||
"Open": "Άνοιγμα",
|
||||
"Open Data URL": "Άνοιγμα URL δεδομένων",
|
||||
"Open Directory": "Άνοιγμα καταλόγου",
|
||||
"Open File": "Άνοιγμα αρχείου",
|
||||
"Open File Data URL": "Άνοιγμα URL αρχείου δεδομένων",
|
||||
"Open File URL": "Άνοιγμα URL αρχείου",
|
||||
"Open File Webcam": "Άνοιγμα αρχείου από κάμερα",
|
||||
"Open Image": "Άνοιγμα εικόνας",
|
||||
"Open JSON File": "Άνοιγμα αρχείου JSON",
|
||||
"Open Test Template": "Άνοιγμα Δοκιμαστικού Υποδείγματος",
|
||||
"Open URL": "Άνοιγμα URL",
|
||||
"Open data URL": "Άνοιγμα URL δεδομένων",
|
||||
"Open from Webcam": "Άνοιγμα από κάμερα",
|
||||
"Original Size": "Αρχικό μέγεθος",
|
||||
"PNGTOSVG - Convert Image to SVG": "Μετατροπή εικόνας από PNG σε SVG",
|
||||
"PageDown": "Σελίδα παρακάτω",
|
||||
"PageUp": "Σελίδα παραπάνω",
|
||||
"Palette": "Παλέτα",
|
||||
"Parameter #1:": "Παράμετρος #1",
|
||||
"Parameter #2:": "Παράμετρος #2",
|
||||
"Paste": "Επικόλληση",
|
||||
"Pencil": "Μολύβι",
|
||||
"Percentage:": "Ποσοστό:",
|
||||
"Pixels:": "Πίξελ",
|
||||
"Placeholder comment for color channels": "Σχόλιο Κατόχου για κανάλια χρωμάτων",
|
||||
"Placeholder comment for color picker": "Σχόλιο Κατόχου για επιλογέα χρωμάτων",
|
||||
"Placeholder comment for color swatches": "Σχόλιο Κατόχου για δείγματα χρωμάτων",
|
||||
"Portable Network Graphics": "Γραφικά φορητού δικτύου",
|
||||
"Portrait": "Πορτρέτο",
|
||||
"Português": "Πορτογαλικά",
|
||||
"Position:": "Θέση",
|
||||
"Power:": "Δύναμη",
|
||||
"Preview": "Προεπισκόπηση",
|
||||
"Previous": "Προηγούμενο",
|
||||
"Previous layer must be image, convert it to raster to apply this tool.": "Το προηγούμενο επίπεδο πρέπει να είναι εικόνα. Μετατρέψτε το σε πίνακα, για να εφαρμοστεί αυτό το εργαλείο",
|
||||
"Print": "Εκτύπωση",
|
||||
"Quality:": "Ποιότητα",
|
||||
"Quick Load": "Γρήγορο φόρτωμα",
|
||||
"Quick Save": "Γρήγορη αποθήκευση",
|
||||
"REMOVE.BG - Remove Image Background": "Αφαίρεση φόντου εικόνας",
|
||||
"Radial": "Ακτινικό",
|
||||
"Radial gradient": "Ακτινική κλίση",
|
||||
"Radius:": "Ακτίνα",
|
||||
"Range:": "Εύρος",
|
||||
"Red": "Κόκκινο",
|
||||
"Red channel:": "Κόκκινο κανάλι",
|
||||
"Redo": "Επανάλαβε",
|
||||
"Remove all": "Αφαίρεσε τα όλα",
|
||||
"Rename": "Μετονομασία",
|
||||
"Rename Layer": "Μετονομασία επιπέδου",
|
||||
"Rendered with errors.": "Διεκπεραιώθηκε με σφάλματα",
|
||||
"Rendering...": "Διεκπεραίωση...",
|
||||
"Replace Color": "Αντικατάσταση χρώματος",
|
||||
"Replace color": "Αντικατάσταση χρώματος",
|
||||
"Replacement:": "Αντικατάσταση",
|
||||
"Report Issues": "Αναφορά προβλημάτων",
|
||||
"Reset": "Επαναφορά",
|
||||
"Resize": "Αλλαγή μεγέθους",
|
||||
"Resize Boundary": "Αλλαγή μεγέθους ορίων",
|
||||
"Resize Layer": "Αλλαγή μεγέθους επιπέδου",
|
||||
"Resize Layers": "Αλλαγή μεγέθους επιπέδων",
|
||||
"Resize Text Layer": "Αλλαγή μεγέθους επιπέδου κειμένου",
|
||||
"Resized as background": "Αλλαγή μεγέθους ως φόντο",
|
||||
"Resized:": "Αλλαγή μεγέθους:",
|
||||
"Resolution:": "Ανάλυση",
|
||||
"Restore Alpha": "Επαναφορά τιμής ΑΛΦΑ",
|
||||
"Right": "Δεξιά",
|
||||
"Right angle:": "Ορθή γωνία",
|
||||
"Right to Left": "Δεξιά προς αριστερά",
|
||||
"Rotate": "Περιστροφή",
|
||||
"Rotate Layer": "Επίπεδο περιστροφής",
|
||||
"Rotate is not supported on this type of object. Convert to raster?": "Η περιστροφή δεν υποστηρίζεται σε αυτού του τύπου αντικείμενο. Μετατροπή σε πίνακα;",
|
||||
"Rotate left": "Περιστροφή αριστερά",
|
||||
"Rotate:": "Περιστροφή",
|
||||
"Ruler": "Χάρακας",
|
||||
"SQUOOSH - Compress and Compare Images": "Συμπίεση και σύγκριση εικόνων",
|
||||
"Saturate": "Κορεσμός",
|
||||
"Saturation": "Κορεσμός",
|
||||
"Saturation:": "Κορεσμός",
|
||||
"Save As": "Αποθήκευση ως",
|
||||
"Save As Data URL": "Αποθήκευση ως δεδομένα URL",
|
||||
"Save as": "Αποθήκευση ως...",
|
||||
"Save as type:": "Αποθήκευση ως τύπος...",
|
||||
"Save layers:": "Αποθήκευση επιπέδων",
|
||||
"Scaling up is not supported in Hermite, using Lanczos.": "Η κλιμάκωση δεν υποστηρίζεται σε ερμητιανό πίνακα, χρησιμοποιόντας LancZos",
|
||||
"Scroll down": "Κύλιση κάτω",
|
||||
"Scroll up": "Κύλιση πάνω",
|
||||
"Search": "Αναζήτηση",
|
||||
"Search Images": "Αναζήτηση εικόνων",
|
||||
"Search for Font": "Αναζήτηση γραμματοσειράς",
|
||||
"Search:": "Αναζήτηση:",
|
||||
"Select All": "Επιλογή όλων",
|
||||
"Select Text Layer": "Επιλογή επιπέδου κειμένου",
|
||||
"Select object tool": "Επιλογή εργαλειου αντικειμένου",
|
||||
"Selected": "Επιλεγμένο",
|
||||
"Selection Tool": "Εργαλείο επιλογής ",
|
||||
"Sensitivity:": "Ευαισθησία",
|
||||
"Separated": "Διαχωρισμένο",
|
||||
"Separated (original types)": "Διαχωρισμένοι (πρωτότυποι τύποι)",
|
||||
"Sepia": "Σέπια",
|
||||
"Set Image Size": "Θέσε μέγεθος εικόνας",
|
||||
"Settings": "Ρυθμίσεις",
|
||||
"Shadow": "Σκιά",
|
||||
"Shapes": "Σχήματα",
|
||||
"Shapes (H)": "Σχήματα (Η)",
|
||||
"Sharpen": "Όξυνση",
|
||||
"Sharpen Tool": "Εργαλείο όξυνσης",
|
||||
"Sharpen:": "Όξυνση",
|
||||
"Shift + S": "Shift + S",
|
||||
"Shortcut Key:": "Πλήκτρο συντόμευσης",
|
||||
"Show": "προβολή",
|
||||
"Show \/ Hide": "Εμφάνισε \/ Κρύψε",
|
||||
"Show file size:": "Δείξε μέγεθος αρχείου",
|
||||
"Simple": "Απλό",
|
||||
"Size is too big, max": "Μέγεθος πέρα του μέγιστου επιτρεπτού",
|
||||
"Size:": "Μέγεθος",
|
||||
"Skip - layer must be image.": "Παράλειψη - Το επίπεδο πρέπει να είναι εικόνα",
|
||||
"Solarize": "Ηλίαση",
|
||||
"Sorry, cold not load getUserMedia() data:": "Λυπάμαι, δεν μπορώ να φορτώσω τα δεδομένα",
|
||||
"Sorry, image could not be loaded.": "Λυπάμαι, η εικόνα δεν μπόρεσε να φορτωθεί",
|
||||
"Sorry, image could not be loaded. Try copy image and paste it.": "Λυπάμαι, η εικόνα δεν μπόρεσε να φορτωθεί. Δοκιμάστε αντιγραφή - επικόλληση.",
|
||||
"Sorry, image is too big, max 5 MB.": "Λυπάμαι. Πολύ μεγάλη εικόνα. Μέγιστο μέγεθος 5 ΜΒ",
|
||||
"Source coordinates saved.": "Αποθηκεύτηκαν οι συντεταγμένες της πηγής.",
|
||||
"Source is empty, right click on image or use long press to save source position.": "Η πηγή είναι άδεια. Κάντε δεξί κλικ στην εικόνα ή πατήστε το παρατεταμένα για να αποθηκεύσετε την θέση της πηγής.",
|
||||
"Sprites": "Αντικείμενα.",
|
||||
"Square": "Τετράγωνο",
|
||||
"Stream:": "Ροή",
|
||||
"Strength:": "Δύναμη",
|
||||
"Strict": "Περιορισμός",
|
||||
"TINYPNG - Compress PNG and JPEG": "Συμπίεση PNG και JPEG",
|
||||
"Tab": "Στηλοθέτης",
|
||||
"Tag Image File Format": "Μορφή αρχείου εικόνας",
|
||||
"Tahoma": "Ταχόμα",
|
||||
"Target:": "Στόχος",
|
||||
"The quick brown fox jumps over the lazy dog.": "Η γρήγορη καφέ αλεπού πηδάει πάνω από το τεμπέλικο σκυλί.",
|
||||
"There": "Εκεί",
|
||||
"There are no layers behind.": "Δεν υπάρχουν επίπεδα από πίσω",
|
||||
"There is only 1 layer.": "Υπάρχει μόνο ένα επίπεδο",
|
||||
"This layer must contain an image. Please convert it to raster to apply this tool.": "Αυτό το επίπεδο πρέπει να περιέχει μια εικόνα. Παρακαλώ μετατρέψτε την σε πίνακα για να εφαρμόσετε αυτό το εργαλέιο.",
|
||||
"Tilt Shift": "Μετατόπιση κλίσης",
|
||||
"Times New Roman": "Τimes New Roman",
|
||||
"Toaster": "Τοστιέρα",
|
||||
"Toggle": "Εναλλαγή",
|
||||
"Toggle Color Channels": "Εναλλαγή καναλιών χρώματος",
|
||||
"Toggle Color Picker": "Εναλλαγή διαλογέα χρώματος",
|
||||
"Toggle Menu": "Εναλλαγή στο μενού",
|
||||
"Toggle Swatches": "Εναλλαγή δειγμάτων",
|
||||
"Tools": "Εργαλεία",
|
||||
"Top": "Κορυφή",
|
||||
"Top to Bottom": "Από πάνω προς τα κάτω",
|
||||
"Total pixels:": "Συνολικά πίξελς",
|
||||
"Translate": "Μετάφρασε",
|
||||
"Translate Layer": "Μετάφρασε το επίπεδο",
|
||||
"Translate error, can not find dictionary:": "Σφάλμα μετάφρασης. Δεν βρίσκεται (σ)το λεξικό ",
|
||||
"Transparent:": "Διαφανές",
|
||||
"Trim": "Κούρεμα",
|
||||
"Trim Layers": "Κούρεμα επιπέδων",
|
||||
"Trim borders:": "Κούρεμα ορίων",
|
||||
"Trim layer:": "Κούρεμα επιπέδου",
|
||||
"Trim white color?": "Κούρεμα λευκού χρώματος;",
|
||||
"Type:": "Τύπος",
|
||||
"Türkçe": "Τούρκικα",
|
||||
"Undo": "Αναίρεση",
|
||||
"Unique colors:": "Μοναδικά χρώματα",
|
||||
"Up": "Πάνω",
|
||||
"Update": "Ενημέρωση",
|
||||
"Update Brush Layer": "Ενημέρωση επιπέδου πινέλου",
|
||||
"Update Pencil Layer": "Ενημέρωση επιπέδου μολυβιού",
|
||||
"Update guides": "Ενημέρωση οδηγιών",
|
||||
"Use Ctrl+V keyboard shortcut to paste from Clipboard.": "Χρησιμοποίησε τη συντόμευση Ctrl+V για να επικολλήσεις από το πρόχειρο.",
|
||||
"V Radius:": "Κατακόρυφη ακτίνα",
|
||||
"V. Align:": "Κατακόρυφη ευθυγράμμιση",
|
||||
"Valencia": "Βαλένθια",
|
||||
"Verdana": "Βερντάνα",
|
||||
"Version:": "Έκδοση",
|
||||
"Vertical": "Κατακόρυφο",
|
||||
"Vertical Alignment": "Κατακόρυφη ευθυγράμμιση",
|
||||
"Vertical blur:": "Κατακόρυφη Θόλωση",
|
||||
"Vertical:": "Κατακόρυφη",
|
||||
"Vibrance": "Δόνηση",
|
||||
"View": "Επισκόπηση",
|
||||
"Vignette": "Βινιέτα",
|
||||
"ViliusL": "ViliusL",
|
||||
"Vintage": "Παλιομοδίτικο",
|
||||
"Webcam": "Κάμερα",
|
||||
"Webcam #": "Κάμερα #",
|
||||
"Website:": "Ιστότοπος",
|
||||
"Weppy File Format": "Μορφή αρχείου",
|
||||
"Width (%):": "Πλάτος (%)",
|
||||
"Width:": "Πλάτος",
|
||||
"Windows Bitmap": "Windows bitmap (χάρτης bit)",
|
||||
"Word": "Λέξη",
|
||||
"Word + Letter": "Λέξη + Γράμμα",
|
||||
"Wrap At:": "Τύλιξε στο:",
|
||||
"Wrap:": "Τύλιξε",
|
||||
"Wrong dimensions": "Λάθος διαστάσεις",
|
||||
"Wrong file type, must be image or json.": "Λάθος τύπος αρχείου. Πρέπει να είναι εικόνα ή JSON",
|
||||
"X end:": "Χ τέλος",
|
||||
"X position:": "Χ θέση",
|
||||
"X start:": "Χ αρχή",
|
||||
"X-Pro II": "Χ Προ ΙΙ",
|
||||
"Y end:": "Υ τέλος",
|
||||
"Y position:": "Υ θέση",
|
||||
"Y start:": "Υ αρχή",
|
||||
"You can also drag and drop items into browser.": "Μπορείς επίσης να σύρεις αντικείμενα μέσα στο φυλλομετρητή",
|
||||
"Your browser does not support canvas or JavaScript is not enabled.": "Ο φυλλομετρητής σου δεν υποστηρίζει καμβά ή Javascript.",
|
||||
"Your browser does not support this format.": "Ο φυλλομετρηρής σου δεν υποστηρίζει αυτή τη μορφή",
|
||||
"Your search did not match any images.": "Η αναζήτηση σου δεν ταίριαξε με καμία εικόνα",
|
||||
"Zoom": "Ζούμ (μεγένθυση - σμίκρυνση)",
|
||||
"Zoom Blur": "Εστίαση Θολούρας",
|
||||
"Zoom In": "Μεγένθυση",
|
||||
"Zoom Out": "Σμίκρυνση",
|
||||
"Zoom blur": "Εστίαση Θολούρας",
|
||||
"Zoom in": "Μεγένθυση",
|
||||
"Zoom out": "Σμίκρυνση",
|
||||
"Zoom:": "Εστίαση (Ζούμ)"
|
||||
}
|
||||
@ -1,211 +1,291 @@
|
||||
{
|
||||
"2d": "",
|
||||
"480p": "",
|
||||
"A problem occurred while removing undo history. It": "",
|
||||
"About": "",
|
||||
"Active": "",
|
||||
"Aden": "",
|
||||
"Advanced": "",
|
||||
"All": "",
|
||||
"Alpha": "",
|
||||
"Alpha:": "",
|
||||
"Anonymous": "",
|
||||
"Anti aliasing": "",
|
||||
"Application markup may have changed,": "",
|
||||
"Arial": "",
|
||||
"Arrow": "",
|
||||
"ArrowDown": "",
|
||||
"ArrowLeft": "",
|
||||
"ArrowRight": "",
|
||||
"ArrowUp": "",
|
||||
"Author:": "",
|
||||
"Auto Adjust Colors": "",
|
||||
"Auto Kerning": "",
|
||||
"Average:": "",
|
||||
"AVIF - AV1 Image File Format": "",
|
||||
"BMP - Windows Bitmap": "",
|
||||
"Backspace": "",
|
||||
"Base": "",
|
||||
"Basic": "",
|
||||
"Black and White": "",
|
||||
"Blue": "",
|
||||
"Blue channel:": "",
|
||||
"Blue:": "",
|
||||
"Blueprint": "",
|
||||
"Blur Radius:": "",
|
||||
"Blur Tool": "",
|
||||
"Blur power:": "",
|
||||
"Blur tool": "",
|
||||
"Bold": "",
|
||||
"Bold Italic": "",
|
||||
"Borders": "",
|
||||
"Bottom": "",
|
||||
"Bottom to Top": "",
|
||||
"Bounds:": "",
|
||||
"Box": "",
|
||||
"Box Blur": "",
|
||||
"Box blur": "",
|
||||
"Brightness": "",
|
||||
"Brightness:": "",
|
||||
"Brush": "",
|
||||
"Bulge\/Pinch tool": "",
|
||||
"Bulge\/Pinch Tool": "",
|
||||
"Burn": "",
|
||||
"CSS Filters": "",
|
||||
"Can not animate 1 layer.": "",
|
||||
"Can not find previous layer.": "",
|
||||
"Can not use this tool on current layer: image already takes all area.": "",
|
||||
"Cancel": "",
|
||||
"Canvas Size": "",
|
||||
"Center": "",
|
||||
"Center x:": "",
|
||||
"Center y:": "",
|
||||
"Center:": "",
|
||||
"Change Composition": "",
|
||||
"Change Layer Details": "",
|
||||
"Change Opacity": "",
|
||||
"Channel:": "",
|
||||
"Circle": "",
|
||||
"Clarendon": "",
|
||||
"Clear": "",
|
||||
"Clear Selection": "",
|
||||
"Clone Tool": "",
|
||||
"Clone count:": "",
|
||||
"Clone tool": "",
|
||||
"Clone tool disabled for resized image. Please rasterize first.": "",
|
||||
"Cloned edges": "",
|
||||
"Close": "",
|
||||
"Color #": "",
|
||||
"Color Zoom": "",
|
||||
"Color alpha value can not be zero.": "",
|
||||
"Color Corrections": "",
|
||||
"Color Palette": "",
|
||||
"Color Zoom": "",
|
||||
"Color alpha value can not be zero.": "",
|
||||
"Color to Alpha": "",
|
||||
"Color zoom": "",
|
||||
"Color:": "",
|
||||
"Colors": "",
|
||||
"Colors:": "",
|
||||
"Common Filters": "",
|
||||
"Composition": "",
|
||||
"Composition:": "",
|
||||
"Content Fill": "",
|
||||
"Contrast": "",
|
||||
"Contrast:": "",
|
||||
"Convert layer to raster": "",
|
||||
"Convert to Raster": "",
|
||||
"Copy Selection": "",
|
||||
"Copy:": "",
|
||||
"Copy to Clipboard": "",
|
||||
"Courier": "",
|
||||
"Crop": "",
|
||||
"Crop Tool": "",
|
||||
"Crop on rotated layer is not supported. Convert it to raster to continue.": "",
|
||||
"Ctrl + C": "",
|
||||
"Ctrl+A": "",
|
||||
"Ctrl+C": "",
|
||||
"Ctrl+P": "",
|
||||
"Ctrl+V": "",
|
||||
"Ctrl-P": "",
|
||||
"Ctrl+Y": "",
|
||||
"Ctrl+Z": "",
|
||||
"Current": "",
|
||||
"Curve": "",
|
||||
"Current Color Preview": "",
|
||||
"Custom": "",
|
||||
"Data URL": "",
|
||||
"Data URL:": "",
|
||||
"Decrease": "",
|
||||
"Decrease Color Depth": "",
|
||||
"Default": "",
|
||||
"Degree:": "",
|
||||
"Del": "",
|
||||
"Delete": "",
|
||||
"Delete Selection": "",
|
||||
"Denoise": "",
|
||||
"Desaturate": "",
|
||||
"Desaturate Tool": "",
|
||||
"Description:": "",
|
||||
"Deutsch": "",
|
||||
"Differences": "",
|
||||
"Differences Down": "",
|
||||
"Direction:": "",
|
||||
"Dither": "",
|
||||
"Dithering:": "",
|
||||
"Dominant color:": "",
|
||||
"Dot Screen": "",
|
||||
"Down": "",
|
||||
"Duplicate": "",
|
||||
"Duplicate Layer": "",
|
||||
"Duplicate layer": "",
|
||||
"Dynamic": "",
|
||||
"Edge": "",
|
||||
"Edit": "",
|
||||
"Edit text": "",
|
||||
"Edit text...": "",
|
||||
"Effect browser": "",
|
||||
"Effects": "",
|
||||
"Effects browser": "",
|
||||
"Email:": "",
|
||||
"Emboss": "",
|
||||
"Empty selection": "",
|
||||
"Empty selection or type not image.": "",
|
||||
"Enable autoresize:": "",
|
||||
"End": "",
|
||||
"English": "",
|
||||
"English (UK)": "",
|
||||
"Enrich": "",
|
||||
"Erase": "",
|
||||
"Erase on rotate object is disabled. Sorry.": "",
|
||||
"Enter": "",
|
||||
"Erase Tool": "",
|
||||
"Erase on rotate object is disabled. Please rasterize first.": "",
|
||||
"Error": "",
|
||||
"Error connecting to service.": "",
|
||||
"Error: can not load image.": "",
|
||||
"Error loading the list of fonts from Google.": "",
|
||||
"Error registering service worker": "",
|
||||
"Error: can not find filter:": "",
|
||||
"Error: can not find layer with id:": "",
|
||||
"Error: missing details event target": "",
|
||||
"Error: unknown layer type:": "",
|
||||
"Error: unsupported attribute type:": "",
|
||||
"Error: wrong key:": "",
|
||||
"Esc": "",
|
||||
"Escape": "",
|
||||
"Español": "",
|
||||
"Expand edges": "",
|
||||
"Exponent:": "",
|
||||
"Export": "",
|
||||
"External": "",
|
||||
"Factor:": "",
|
||||
"File": "",
|
||||
"File name:": "",
|
||||
"File size:": "",
|
||||
"Fill": "",
|
||||
"Fill Tool": "",
|
||||
"Fit": "",
|
||||
"Fit Window": "",
|
||||
"Fit window": "",
|
||||
"Flatten Image": "",
|
||||
"Flip": "",
|
||||
"FloydSteinberg-serpentine": "",
|
||||
"French": "",
|
||||
"Font": "",
|
||||
"Français": "",
|
||||
"Full HD, 1080p": "",
|
||||
"GIF - Graphics Interchange Format": "",
|
||||
"Full Screen": "",
|
||||
"Full layers data": "",
|
||||
"Gap:": "",
|
||||
"Gaussian Blur": "",
|
||||
"German": "",
|
||||
"Gif delay:": "",
|
||||
"Gingham": "",
|
||||
"GitHub:": "",
|
||||
"Gradient": "",
|
||||
"Gradient Radius:": "",
|
||||
"Grains": "",
|
||||
"Graphics Interchange Format": "",
|
||||
"Gray": "",
|
||||
"Grayscale": "",
|
||||
"Greek": "",
|
||||
"Green": "",
|
||||
"Green channel:": "",
|
||||
"Green:": "",
|
||||
"Greyscale:": "",
|
||||
"Grid": "",
|
||||
"Grid on\/off": "",
|
||||
"Guides": "",
|
||||
"Guides enabled.": "",
|
||||
"H Radius:": "",
|
||||
"H. Align:": "",
|
||||
"Heatmap": "",
|
||||
"Height (%):": "",
|
||||
"Height:": "",
|
||||
"Help": "",
|
||||
"Helvetica": "",
|
||||
"Hermite": "",
|
||||
"Hex:": "",
|
||||
"Hex": "",
|
||||
"Hide": "",
|
||||
"Histogram": "",
|
||||
"Histogram:": "",
|
||||
"Home": "",
|
||||
"Horizontal": "",
|
||||
"Horizontal Alignment": "",
|
||||
"Horizontal blur:": "",
|
||||
"Horizontal:": "",
|
||||
"Hue": "",
|
||||
"Hue Rotate": "",
|
||||
"Hue:": "",
|
||||
"Image": "",
|
||||
"Image data with multi-layers. Can be opened using miniPaint -": "",
|
||||
"Impact": "",
|
||||
"In proportion:": "",
|
||||
"Increase": "",
|
||||
"Information": "",
|
||||
"Insert:": "",
|
||||
"Inkwell": "",
|
||||
"Insert": "",
|
||||
"Insert guides": "",
|
||||
"Insert new layer": "",
|
||||
"Instagram Filters": "",
|
||||
"Invalid Hex Code": "",
|
||||
"Italiano": "",
|
||||
"Italic": "",
|
||||
"JPG - JPG\/JPEG Format": "",
|
||||
"JPG, WEBP quality:": "",
|
||||
"JSON - Full layers data": "",
|
||||
"Japanese": "",
|
||||
"JPG\/JPEG Format": "",
|
||||
"Kerning:": "",
|
||||
"Key-Points": "",
|
||||
"KeyU": "",
|
||||
"Keyboard Shortcuts": "",
|
||||
"Keyword:": "",
|
||||
"Korean": "",
|
||||
"Lanczos": "",
|
||||
"Landscape": "",
|
||||
"Language": "",
|
||||
"Last modified": "",
|
||||
"Layer": "",
|
||||
"Layer details": "",
|
||||
"Layer is already image.": "",
|
||||
"Layer must be image, convert it to raster to apply this tool.": "",
|
||||
"Layer is empty.": "",
|
||||
"Layer is not compatible with resize": "",
|
||||
"Layer is vector, convert it to raster to apply this tool.": "",
|
||||
"Layers": "",
|
||||
"Layers:": "",
|
||||
"Layout:": "",
|
||||
"Left": "",
|
||||
"Left to Right": "",
|
||||
"Level:": "",
|
||||
"Levels:": "",
|
||||
"Lietuvių": "",
|
||||
"Line": "",
|
||||
"Lum:": "",
|
||||
"Lo-fi": "",
|
||||
"Luminance:": "",
|
||||
"Magic Wand Tool": "",
|
||||
"Luminosity": "",
|
||||
"Magic Eraser Tool": "",
|
||||
"Merge Down": "",
|
||||
"Merge Layers": "",
|
||||
"Merged": "",
|
||||
"Metrics": "",
|
||||
"Middle": "",
|
||||
"Missing at least 1 size parameter.": "",
|
||||
"Missing permissions to write to Clipboard.cc": "",
|
||||
"Mode:": "",
|
||||
"Module function not found.": "",
|
||||
"Modules class not found:": "",
|
||||
"Monospace": "",
|
||||
"Mosaic": "",
|
||||
"Mouse:": "",
|
||||
"Move": "",
|
||||
"Move down": "",
|
||||
"Move up": "",
|
||||
"Move Layer": "",
|
||||
"Move layer down": "",
|
||||
"Move layer up": "",
|
||||
"Name:": "",
|
||||
"Needs at least 2 layers.": "",
|
||||
"Negative": "",
|
||||
"New": "",
|
||||
"New Bezier Layer": "",
|
||||
"New Brush Layer": "",
|
||||
"New Ellipse Layer": "",
|
||||
"New File": "",
|
||||
"New Gradient Layer": "",
|
||||
"New Layer": "",
|
||||
"New Line Layer": "",
|
||||
"New Pencil Layer": "",
|
||||
"New Polygon Layer": "",
|
||||
"New Rectangle Layer": "",
|
||||
"New Text Layer": "",
|
||||
"New file": "",
|
||||
"New from Selection": "",
|
||||
"New layer": "",
|
||||
"New width can not be smaller then current width": "",
|
||||
"Normal": "",
|
||||
"Next": "",
|
||||
"Night Vision": "",
|
||||
"None": "",
|
||||
"Nothing is selected.": "",
|
||||
"Offset X:": "",
|
||||
"Offset Y:": "",
|
||||
@ -218,23 +298,34 @@
|
||||
"Open Data URL": "",
|
||||
"Open Directory": "",
|
||||
"Open File": "",
|
||||
"Open File Data URL": "",
|
||||
"Open File URL": "",
|
||||
"Open File Webcam": "",
|
||||
"Open Image": "",
|
||||
"Open JSON File": "",
|
||||
"Open Test Template": "",
|
||||
"Open URL": "",
|
||||
"Open data URL": "",
|
||||
"Open from Webcam": "",
|
||||
"Original Size": "",
|
||||
"PNG - Portable Network Graphics": "",
|
||||
"PNGTOSVG - Convert Image to SVG": "",
|
||||
"PageDown": "",
|
||||
"PageUp": "",
|
||||
"Palette": "",
|
||||
"Parameter #1:": "",
|
||||
"Parameter #2:": "",
|
||||
"Paste": "",
|
||||
"Pencil": "",
|
||||
"Percentage:": "",
|
||||
"Pick Color": "",
|
||||
"Pixels:": "",
|
||||
"Play animation": "",
|
||||
"Portuguese": "",
|
||||
"Placeholder comment for color channels": "",
|
||||
"Placeholder comment for color picker": "",
|
||||
"Placeholder comment for color swatches": "",
|
||||
"Portable Network Graphics": "",
|
||||
"Portrait": "",
|
||||
"Português": "",
|
||||
"Position:": "",
|
||||
"Power:": "",
|
||||
"Powred by pixabay.com .": "",
|
||||
"Pre-Blur:": "",
|
||||
"Preview": "",
|
||||
"Previous": "",
|
||||
"Previous layer must be image, convert it to raster to apply this tool.": "",
|
||||
@ -242,123 +333,168 @@
|
||||
"Quality:": "",
|
||||
"Quick Load": "",
|
||||
"Quick Save": "",
|
||||
"REMOVE.BG - Remove Image Background": "",
|
||||
"Radial": "",
|
||||
"Radial gradient": "",
|
||||
"Radius:": "",
|
||||
"Range:": "",
|
||||
"Rectangle": "",
|
||||
"Red": "",
|
||||
"Red channel:": "",
|
||||
"Red:": "",
|
||||
"Redo": "",
|
||||
"Remove all": "",
|
||||
"Rename": "",
|
||||
"Rename Layer": "",
|
||||
"Rendered with errors.": "",
|
||||
"Rendering...": "",
|
||||
"Replace Color": "",
|
||||
"Replace color": "",
|
||||
"Replacement:": "",
|
||||
"Report Issues": "",
|
||||
"Resample - Hermite": "",
|
||||
"Reset": "",
|
||||
"Reset zoom level": "",
|
||||
"Resize": "",
|
||||
"Resize Boundary": "",
|
||||
"Resize Layer": "",
|
||||
"Resize Layers": "",
|
||||
"Resize Text Layer": "",
|
||||
"Resized as background": "",
|
||||
"Resized:": "",
|
||||
"Resolution:": "",
|
||||
"Restore Alpha": "",
|
||||
"Right": "",
|
||||
"Right angle:": "",
|
||||
"Right to Left": "",
|
||||
"Rotate": "",
|
||||
"Rotate Layer": "",
|
||||
"Rotate is not supported on this type of object. Convert to raster?": "",
|
||||
"Rotate left": "",
|
||||
"Rotate:": "",
|
||||
"Russian": "",
|
||||
"Sat:": "",
|
||||
"Ruler": "",
|
||||
"SQUOOSH - Compress and Compare Images": "",
|
||||
"Saturate": "",
|
||||
"Saturation": "",
|
||||
"Saturation:": "",
|
||||
"Save": "",
|
||||
"Save As": "",
|
||||
"Save As Data URL": "",
|
||||
"Save as": "",
|
||||
"Save as type:": "",
|
||||
"Save layers:": "",
|
||||
"Save resolution:": "",
|
||||
"Scaling up is not supported in Hermite, using Lanczos.": "",
|
||||
"Scroll down": "",
|
||||
"Scroll up": "",
|
||||
"Search": "",
|
||||
"Search Images": "",
|
||||
"Search for Font": "",
|
||||
"Search:": "",
|
||||
"Select All": "",
|
||||
"Select Text Layer": "",
|
||||
"Select object tool": "",
|
||||
"Selected": "",
|
||||
"Selection": "",
|
||||
"Selection Tool": "",
|
||||
"Sensitivity:": "",
|
||||
"Separated": "",
|
||||
"Separated (original types)": "",
|
||||
"Sepia": "",
|
||||
"Set Image Size": "",
|
||||
"Settings": "",
|
||||
"Shadow": "",
|
||||
"Shadow:": "",
|
||||
"Shapes": "",
|
||||
"Shapes (H)": "",
|
||||
"Sharpen": "",
|
||||
"Sharpen tool": "",
|
||||
"Sharpen Tool": "",
|
||||
"Sharpen:": "",
|
||||
"Shift + S": "",
|
||||
"Shortcut Key:": "",
|
||||
"Show": "",
|
||||
"Show \/ Hide": "",
|
||||
"Show file size:": "",
|
||||
"Simple": "",
|
||||
"Size": "",
|
||||
"Size is too big, max": "",
|
||||
"Size:": "",
|
||||
"Skip - layer must be image.": "",
|
||||
"Solarize": "",
|
||||
"Sorry, cold not load getUserMedia() data:": "",
|
||||
"Sorry, image could not be loaded.": "",
|
||||
"Sorry, image could not be loaded. Try copy image and paste it.": "",
|
||||
"Sorry, image is too big, max 5 MB.": "",
|
||||
"Source is empty, right click on image to save source position.": "",
|
||||
"Source coordinates saved.": "",
|
||||
"Source is empty, right click on image or use long press to save source position.": "",
|
||||
"Sprites": "",
|
||||
"Square": "",
|
||||
"Stream:": "",
|
||||
"Strength:": "",
|
||||
"Strict": "",
|
||||
"Stroke": "",
|
||||
"Stroke:": "",
|
||||
"TINYPNG - Compress PNG and JPEG": "",
|
||||
"Tab": "",
|
||||
"Tag Image File Format": "",
|
||||
"Tahoma": "",
|
||||
"Target:": "",
|
||||
"Text": "",
|
||||
"Text example": "",
|
||||
"Text:": "",
|
||||
"The quick brown fox jumps over the lazy dog.": "",
|
||||
"There": "",
|
||||
"There are no layers behind.": "",
|
||||
"There is only 1 layer.": "",
|
||||
"This layer must contain an image. Please convert it to raster to apply this tool.": "",
|
||||
"Tilt Shift": "",
|
||||
"Times New Roman": "",
|
||||
"Toaster": "",
|
||||
"Toggle": "",
|
||||
"Toggle Color Channels": "",
|
||||
"Toggle Color Picker": "",
|
||||
"Toggle Menu": "",
|
||||
"Toggle Swatches": "",
|
||||
"Tools": "",
|
||||
"Tools class not found:": "",
|
||||
"Top": "",
|
||||
"Top to Bottom": "",
|
||||
"Total pixels:": "",
|
||||
"Translate": "",
|
||||
"Translate Layer": "",
|
||||
"Translate error, can not find dictionary:": "",
|
||||
"Transparency background:": "",
|
||||
"Transparent:": "",
|
||||
"Trim": "",
|
||||
"Trim everything:": "",
|
||||
"Trim Layers": "",
|
||||
"Trim borders:": "",
|
||||
"Trim layer:": "",
|
||||
"Trim white color?": "",
|
||||
"Turkish": "",
|
||||
"Type:": "",
|
||||
"Türkçe": "",
|
||||
"Undo": "",
|
||||
"Undo disabled.": "",
|
||||
"Undo enabled.": "",
|
||||
"Undo is not available.": "",
|
||||
"Undo levels changed to 1.": "",
|
||||
"Undo levels restored to": "",
|
||||
"Unique colors:": "",
|
||||
"Up": "",
|
||||
"Update": "",
|
||||
"Update Brush Layer": "",
|
||||
"Update Pencil Layer": "",
|
||||
"Update guides": "",
|
||||
"Use Ctrl+V keyboard shortcut to paste from Clipboard.": "",
|
||||
"V Radius:": "",
|
||||
"V. Align:": "",
|
||||
"Valencia": "",
|
||||
"Verdana": "",
|
||||
"Version:": "",
|
||||
"Vertical": "",
|
||||
"Vertical Alignment": "",
|
||||
"Vertical blur:": "",
|
||||
"Vertical:": "",
|
||||
"Vibrance": "",
|
||||
"View": "",
|
||||
"Vignette": "",
|
||||
"ViliusL": "",
|
||||
"Vintage": "",
|
||||
"Visible:": "",
|
||||
"WEBP - Weppy File Format": "",
|
||||
"Webcam": "",
|
||||
"Webcam #": "",
|
||||
"Website:": "",
|
||||
"Weppy File Format": "",
|
||||
"Width (%):": "",
|
||||
"Width:": "",
|
||||
"Windows Bitmap": "",
|
||||
"Word": "",
|
||||
"Word + Letter": "",
|
||||
"Wrap At:": "",
|
||||
"Wrap:": "",
|
||||
"Wrong dimensions": "",
|
||||
"Wrong file type, must be image or json.": "",
|
||||
"X end:": "",
|
||||
"X position:": "",
|
||||
"X start:": "",
|
||||
"X-Pro II": "",
|
||||
"Y end:": "",
|
||||
"Y position:": "",
|
||||
"Y start:": "",
|
||||
|
||||
@ -1,210 +1,291 @@
|
||||
{
|
||||
"2d": "2d",
|
||||
"480p": "480p",
|
||||
"A problem occurred while removing undo history. It": "Ocurrió un problema al eliminar el historial de deshacer. Eso",
|
||||
"About": "Acerca de",
|
||||
"Active": "Activo",
|
||||
"Aden": "Adén",
|
||||
"Advanced": "Avanzado",
|
||||
"All": "Todas",
|
||||
"Alpha": "Alfa",
|
||||
"Alpha:": "Alfa:",
|
||||
"Anonymous": "Anónimo",
|
||||
"Anti aliasing": "Anti aliasing",
|
||||
"Application markup may have changed,": "Es posible que el marcado de la aplicación haya cambiado,",
|
||||
"Arial": "Arial",
|
||||
"Arrow": "Flecha",
|
||||
"ArrowDown": "ArrowDown",
|
||||
"ArrowLeft": "Flecha Izquierda",
|
||||
"ArrowRight": "Flecha Derecha",
|
||||
"ArrowUp": "Flecha arriba",
|
||||
"Author:": "Autor:",
|
||||
"Auto Adjust Colors": "Ajuste automático de colores",
|
||||
"Auto Kerning": "Kerning automático",
|
||||
"Average:": "Promedio:",
|
||||
"BMP - Windows Bitmap": "BMP - Mapa de bits de Windows",
|
||||
"Backspace": "Retroceso",
|
||||
"Base": "Base",
|
||||
"Basic": "BASIC",
|
||||
"Black and White": "En blanco y negro",
|
||||
"Blue": "Azul",
|
||||
"Blue channel:": "Canal azul:",
|
||||
"Blue:": "Azul:",
|
||||
"Blueprint": "Plano",
|
||||
"Blur Radius:": "Blur Radio:",
|
||||
"Blur Tool": "Herramienta de desenfoque",
|
||||
"Blur power:": "Desenfoque de poder:",
|
||||
"Blur tool": "Herramienta de desenfoque",
|
||||
"Bold": "Negrita",
|
||||
"Bold Italic": "Negrita cursiva",
|
||||
"Borders": "Bordes",
|
||||
"Bottom": "Fondo",
|
||||
"Bottom to Top": "Abajo hacia arriba",
|
||||
"Bounds:": "Límites:",
|
||||
"Box": "Caja",
|
||||
"Box Blur": "Caja de desenfoque",
|
||||
"Box blur": "Caja de desenfoque",
|
||||
"Brightness": "Brillo",
|
||||
"Brightness:": "Brillo:",
|
||||
"Brush": "Cepillo",
|
||||
"Bulge\/Pinch tool": "Herramienta de abombamiento \/ pellizco",
|
||||
"Bulge\/Pinch Tool": "Herramienta de abultamiento \/ pellizco",
|
||||
"Burn": "Quemar",
|
||||
"CSS Filters": "Filtros CSS",
|
||||
"Can not animate 1 layer.": "No se puede animar 1 capa.",
|
||||
"Can not find previous layer.": "No se puede encontrar la capa anterior.",
|
||||
"Can not use this tool on current layer: image already takes all area.": "No se puede utilizar esta herramienta en la capa actual: la imagen ya ocupa toda el área.",
|
||||
"Cancel": "Cancelar",
|
||||
"Canvas Size": "Tamaño del lienzo",
|
||||
"Center": "Centrar",
|
||||
"Center x:": "Centro x:",
|
||||
"Center y:": "Centro y:",
|
||||
"Center:": "Centrar:",
|
||||
"Change Composition": "Cambiar composición",
|
||||
"Change Layer Details": "Cambiar los detalles de la capa",
|
||||
"Change Opacity": "Cambiar la opacidad",
|
||||
"Channel:": "Canal:",
|
||||
"Circle": "Circulo",
|
||||
"Clarendon": "Letras gruesas a la media",
|
||||
"Clear": "Claro",
|
||||
"Clear Selection": "Selección clara",
|
||||
"Clone Tool": "Herramienta de clonación",
|
||||
"Clone count:": "Recuento de clones",
|
||||
"Clone tool": "Herramienta de clonación",
|
||||
"Clone tool disabled for resized image. Please rasterize first.": "Herramienta de clonación deshabilitada para imágenes redimensionadas. Rasterice primero.",
|
||||
"Cloned edges": "Bordes clonados",
|
||||
"Close": "Cerca",
|
||||
"Color #": "Color #",
|
||||
"Color Zoom": "Zoom de color",
|
||||
"Color alpha value can not be zero.": "El valor alfa del color no puede ser cero.",
|
||||
"Color Corrections": "Correcciones de color",
|
||||
"Color Palette": "Paleta de color",
|
||||
"Color Zoom": "Zoom de color",
|
||||
"Color alpha value can not be zero.": "El valor alfa del color no puede ser cero.",
|
||||
"Color to Alpha": "Color a alfa",
|
||||
"Color zoom": "Zoom a color",
|
||||
"Color:": "Color:",
|
||||
"Colors": "Colores",
|
||||
"Colors:": "Colores:",
|
||||
"Common Filters": "Filtros comunes",
|
||||
"Composition": "Composición",
|
||||
"Composition:": "Composición:",
|
||||
"Content Fill": "Relleno de contenido",
|
||||
"Contrast": "Contraste",
|
||||
"Contrast:": "Contraste:",
|
||||
"Convert layer to raster": "Convertir capa a ráster",
|
||||
"Convert to Raster": "Convertir a trama",
|
||||
"Copy Selection": "Copiar selección",
|
||||
"Copy:": "Dupdo:",
|
||||
"Copy to Clipboard": "Copiar al portapapeles",
|
||||
"Courier": "mensajero",
|
||||
"Crop": "Cultivo",
|
||||
"Crop Tool": "Herramienta de recorte",
|
||||
"Crop on rotated layer is not supported. Convert it to raster to continue.": "No se admite el recorte en la capa rotada. Conviértalo en ráster para continuar.",
|
||||
"Ctrl + C": "Ctrl+C",
|
||||
"Ctrl+A": "Ctrl + A",
|
||||
"Ctrl+C": "Ctrl + C",
|
||||
"Ctrl+P": "Ctrl+P",
|
||||
"Ctrl+V": "Ctrl + V",
|
||||
"Ctrl-P": "Ctrl-P",
|
||||
"Ctrl+Y": "Ctrl + Y",
|
||||
"Ctrl+Z": "Ctrl + Z",
|
||||
"Current": "Corriente",
|
||||
"Curve": "Curva",
|
||||
"Current Color Preview": "Vista previa del color actual",
|
||||
"Custom": "Personalizado",
|
||||
"Data URL": "URL de datos",
|
||||
"Data URL:": "URL de datos:",
|
||||
"Decrease": "Disminución",
|
||||
"Decrease Color Depth": "Disminuir la profundidad de color",
|
||||
"Default": "Defecto",
|
||||
"Degree:": "La licenciatura:",
|
||||
"Del": "Del",
|
||||
"Delete": "Borrar",
|
||||
"Delete Selection": "Eliminar selección",
|
||||
"Denoise": "Denoise",
|
||||
"Desaturate": "Desaturar",
|
||||
"Desaturate Tool": "Herramienta de desaturar",
|
||||
"Description:": "Descripción:",
|
||||
"Deutsch": "Alemán",
|
||||
"Differences": "Diferencias",
|
||||
"Differences Down": "Diferencias hacia abajo",
|
||||
"Direction:": "Dirección:",
|
||||
"Dither": "Vacilar",
|
||||
"Dithering:": "Dithering:",
|
||||
"Dominant color:": "Color dominante:",
|
||||
"Dot Screen": "Pantalla de puntos",
|
||||
"Down": "Abajo",
|
||||
"Duplicate": "Duplicar",
|
||||
"Duplicate Layer": "Duplicar capa",
|
||||
"Duplicate layer": "Duplicar capa",
|
||||
"Dynamic": "Dinámica",
|
||||
"Edge": "Borde",
|
||||
"Edit": "Editar",
|
||||
"Edit text": "Editar texto",
|
||||
"Edit text...": "Editar texto...",
|
||||
"Effect browser": "Navegador de efectos",
|
||||
"Effects": "Efectos",
|
||||
"Effects browser": "Navegador de efectos",
|
||||
"Email:": "Email:",
|
||||
"Emboss": "Realzar",
|
||||
"Empty selection": "Selección vacía",
|
||||
"Empty selection or type not image.": "Vaciar selección o escribir no imagen.",
|
||||
"Enable autoresize:": "Habilitar tamaño automático:",
|
||||
"End": "Fin",
|
||||
"English": "Inglés",
|
||||
"English (UK)": "Inglés del Reino Unido)",
|
||||
"Enrich": "Enriquecer",
|
||||
"Erase": "Borrar",
|
||||
"Erase on rotate object is disabled. Sorry.": "Borrar en rotar objeto está deshabilitado. Lo siento.",
|
||||
"Enter": "Entrar",
|
||||
"Erase Tool": "Herramienta de borrado",
|
||||
"Erase on rotate object is disabled. Please rasterize first.": "Borrar al rotar objeto está deshabilitado. Rasterice primero.",
|
||||
"Error": "Error",
|
||||
"Error connecting to service.": "Error al conectarse al servicio.",
|
||||
"Error: can not load image.": "Error: no se puede cargar la imagen.",
|
||||
"Error loading the list of fonts from Google.": "Error al cargar la lista de fuentes de Google.",
|
||||
"Error registering service worker": "Error al registrar al trabajador del servicio",
|
||||
"Error: can not find filter:": "Error: no se puede encontrar el filtro:",
|
||||
"Error: can not find layer with id:": "Error: no se puede encontrar la capa con id:",
|
||||
"Error: missing details event target": "Error: falta el objetivo del evento de detalles",
|
||||
"Error: unsupported attribute type:": "Error: tipo de atributo no soportado:",
|
||||
"Error: wrong key:": "Error: clave incorrecta:",
|
||||
"Error: unknown layer type:": "Error: tipo de capa desconocido:",
|
||||
"Error: unsupported attribute type:": "Error: tipo de atributo no admitido:",
|
||||
"Esc": "Esc",
|
||||
"Escape": "Escapar",
|
||||
"Español": "English",
|
||||
"Expand edges": "Expandir bordes",
|
||||
"Exponent:": "Exponente:",
|
||||
"Export": "Exportar",
|
||||
"External": "Externo",
|
||||
"Factor:": "Factor:",
|
||||
"File": "Archivo",
|
||||
"File name:": "Nombre del archivo:",
|
||||
"File size:": "Tamaño del archivo:",
|
||||
"Fill": "Llenar",
|
||||
"Fill Tool": "Herramienta de relleno",
|
||||
"Fit": "Ajuste",
|
||||
"Fit Window": "Ajustar ventana",
|
||||
"Fit window": "Ajustar ventana",
|
||||
"Flatten Image": "Imagen aplanada",
|
||||
"Flip": "Dar la vuelta",
|
||||
"FloydSteinberg-serpentine": "FloydSteinberg-serpentina",
|
||||
"French": "francés",
|
||||
"Font": "Fuente",
|
||||
"Français": "Français",
|
||||
"Full HD, 1080p": "Full HD, 1080p",
|
||||
"GIF - Graphics Interchange Format": "GIF - Formato de intercambio de gráficos",
|
||||
"Full Screen": "Pantalla completa",
|
||||
"Full layers data": "Datos de capas completas",
|
||||
"Gap:": "Brecha:",
|
||||
"Gaussian Blur": "Desenfoque gaussiano",
|
||||
"German": "alemán",
|
||||
"Gif delay:": "Retraso Gif:",
|
||||
"Gingham": "Guingán",
|
||||
"GitHub:": "GitHub:",
|
||||
"Gradient": "Gradiente",
|
||||
"Gradient Radius:": "Radio de gradiente:",
|
||||
"Grains": "Granos",
|
||||
"Graphics Interchange Format": "formato de gráficos intercambeable",
|
||||
"Gray": "gris",
|
||||
"Grayscale": "Escala de grises",
|
||||
"Greek": "Griego",
|
||||
"Green": "Verde",
|
||||
"Green channel:": "Canal verde:",
|
||||
"Green:": "Verde:",
|
||||
"Greyscale:": "Escala de grises:",
|
||||
"Grid": "Cuadrícula",
|
||||
"Grid on\/off": "Grid on \/ off",
|
||||
"Guides": "Guías",
|
||||
"Guides enabled.": "Guías habilitadas.",
|
||||
"H Radius:": "H Radio:",
|
||||
"H. Align:": "H. Alinear:",
|
||||
"Heatmap": "Mapa de calor",
|
||||
"Height (%):": "Altura (%):",
|
||||
"Height:": "Altura:",
|
||||
"Help": "Ayuda",
|
||||
"Helvetica": "Helvética",
|
||||
"Hermite": "Hermite",
|
||||
"Hex:": "Maleficio:",
|
||||
"Hex": "Maleficio",
|
||||
"Hide": "Esconder",
|
||||
"Histogram": "Histograma",
|
||||
"Histogram:": "Histograma:",
|
||||
"Home": "Casa",
|
||||
"Horizontal": "Horizontal",
|
||||
"Horizontal Alignment": "Alineación horizontal",
|
||||
"Horizontal blur:": "Desenfoque horizontal:",
|
||||
"Horizontal:": "Horizontal:",
|
||||
"Hue": "Matiz",
|
||||
"Hue Rotate": "Hue Rotate",
|
||||
"Hue:": "Matiz:",
|
||||
"Image": "Imagen",
|
||||
"Image data with multi-layers. Can be opened using miniPaint -": "Datos de imagen con varias capas. Se puede abrir usando miniPaint -",
|
||||
"Impact": "Impacto",
|
||||
"In proportion:": "En proporción:",
|
||||
"Increase": "Incrementar",
|
||||
"Information": "Información",
|
||||
"Insert:": "Insertar:",
|
||||
"Inkwell": "Tintero",
|
||||
"Insert": "Insertar",
|
||||
"Insert guides": "Insertar guías",
|
||||
"Insert new layer": "Insertar nueva capa",
|
||||
"Instagram Filters": "Filtros de Instagram",
|
||||
"Invalid Hex Code": "Código hexadecimal no válido",
|
||||
"Italiano": "Italiano",
|
||||
"Italic": "Itálico",
|
||||
"JPG - JPG\/JPEG Format": "JPG - Formato JPG \/ JPEG",
|
||||
"JPG, WEBP quality:": "JPG, calidad de WEBP:",
|
||||
"JSON - Full layers data": "JSON: datos de capas completas",
|
||||
"Japanese": "japonés",
|
||||
"JPG\/JPEG Format": "Formato JPG \/ JPEG",
|
||||
"Kerning:": "Interletrado:",
|
||||
"Key-Points": "Puntos clave",
|
||||
"KeyU": "ClaveU",
|
||||
"Keyboard Shortcuts": "Atajos de teclado",
|
||||
"Keyword:": "Palabra clave:",
|
||||
"Korean": "coreano",
|
||||
"Lanczos": "Lanczos",
|
||||
"Landscape": "Paisaje",
|
||||
"Language": "Idioma",
|
||||
"Last modified": "Última modificación",
|
||||
"Layer": "Capa",
|
||||
"Layer details": "Detalles de la capa",
|
||||
"Layer is already image.": "Layer ya es imagen.",
|
||||
"Layer must be image, convert it to raster to apply this tool.": "La capa debe ser una imagen, conviértala a raster para aplicar esta herramienta.",
|
||||
"Layer is empty.": "La capa está vacía.",
|
||||
"Layer is not compatible with resize": "La capa no es compatible con el cambio de tamaño",
|
||||
"Layer is vector, convert it to raster to apply this tool.": "La capa es vectorial, conviértala en ráster para aplicar esta herramienta.",
|
||||
"Layers": "Capas",
|
||||
"Layers:": "Capas:",
|
||||
"Layout:": "Disposición:",
|
||||
"Left": "Izquierda",
|
||||
"Left to Right": "De izquierda a derecha",
|
||||
"Level:": "Nivel:",
|
||||
"Levels:": "Niveles:",
|
||||
"Lietuvių": "Lietuvių",
|
||||
"Line": "Línea",
|
||||
"Lum:": "Lum:",
|
||||
"Lo-fi": "Lo-fi",
|
||||
"Luminance:": "Luminancia:",
|
||||
"Magic Wand Tool": "Varita mágica",
|
||||
"Luminosity": "Luminosidad",
|
||||
"Magic Eraser Tool": "Herramienta de borrador mágico",
|
||||
"Merge Down": "Fusionar",
|
||||
"Merge Layers": "Fusionar capas",
|
||||
"Merged": "Fusionado",
|
||||
"Metrics": "Métrica",
|
||||
"Middle": "Medio",
|
||||
"Missing at least 1 size parameter.": "Falta al menos 1 parámetro de tamaño.",
|
||||
"Missing permissions to write to Clipboard.cc": "Permisos faltantes para escribir en Clipboard.cc",
|
||||
"Mode:": "Modo:",
|
||||
"Module function not found.": "Función del módulo no encontrada.",
|
||||
"Modules class not found:": "Clase de módulos no encontrada:",
|
||||
"Monospace": "Monoespacio",
|
||||
"Mosaic": "Mosaico",
|
||||
"Mouse:": "Ratón:",
|
||||
"Move": "Movimiento",
|
||||
"Move down": "Mover hacia abajo",
|
||||
"Move up": "Ascender",
|
||||
"Move Layer": "Mover capa",
|
||||
"Move layer down": "Mover capa hacia abajo",
|
||||
"Move layer up": "Mover capa hacia arriba",
|
||||
"Name:": "Nombre:",
|
||||
"Needs at least 2 layers.": "Necesita al menos 2 capas",
|
||||
"Negative": "Negativo",
|
||||
"New": "Nuevo",
|
||||
"New Bezier Layer": "Nueva capa Bézier",
|
||||
"New Brush Layer": "Nueva capa de pincel",
|
||||
"New Ellipse Layer": "Nueva capa de elipse",
|
||||
"New File": "Archivo nuevo",
|
||||
"New Gradient Layer": "Nueva capa de degradado",
|
||||
"New Layer": "Nueva capa",
|
||||
"New Line Layer": "Nueva capa de línea",
|
||||
"New Pencil Layer": "Nueva capa de lápiz",
|
||||
"New Polygon Layer": "Nueva capa de polígono",
|
||||
"New Rectangle Layer": "Nueva capa de rectángulo",
|
||||
"New Text Layer": "Nueva capa de texto",
|
||||
"New file": "Archivo nuevo",
|
||||
"New from Selection": "Nuevo de la selección",
|
||||
"New layer": "Nueva capa",
|
||||
"New width can not be smaller then current width": "El nuevo ancho no puede ser más pequeño que el ancho actual",
|
||||
"Normal": "Normal",
|
||||
"Next": "Próximo",
|
||||
"Night Vision": "Vision nocturna",
|
||||
"None": "Ninguna",
|
||||
"Nothing is selected.": "Nada está seleccionado.",
|
||||
"Offset X:": "Compensación X:",
|
||||
"Offset Y:": "Desplazamiento Y:",
|
||||
@ -217,23 +298,34 @@
|
||||
"Open Data URL": "URL de datos abiertos",
|
||||
"Open Directory": "Directorio abierto",
|
||||
"Open File": "Abrir documento",
|
||||
"Open File Data URL": "Abrir URL de datos de archivo",
|
||||
"Open File URL": "Abrir URL de archivo",
|
||||
"Open File Webcam": "Cámara web de archivos abiertos",
|
||||
"Open Image": "Abrir imagen",
|
||||
"Open JSON File": "Abrir archivo JSON",
|
||||
"Open Test Template": "Plantilla de prueba abierta",
|
||||
"Open URL": "URL abierta",
|
||||
"Open data URL": "URL de datos abiertos",
|
||||
"Open from Webcam": "Abrir desde la webcam",
|
||||
"Original Size": "Tamaño original",
|
||||
"PNG - Portable Network Graphics": "PNG - Gráficos de red portátiles",
|
||||
"PNGTOSVG - Convert Image to SVG": "PNGTOSVG - Convertir imagen a SVG",
|
||||
"PageDown": "Página abajo",
|
||||
"PageUp": "Página arriba",
|
||||
"Palette": "Paleta",
|
||||
"Parameter #1:": "Parámetro # 1:",
|
||||
"Parameter #2:": "Parámetro # 2:",
|
||||
"Paste": "Pegar",
|
||||
"Pencil": "Lápiz",
|
||||
"Percentage:": "Porcentaje:",
|
||||
"Pick Color": "Elegir color",
|
||||
"Pixels:": "Píxeles:",
|
||||
"Play animation": "Reproducir animación",
|
||||
"Portuguese": "portugués",
|
||||
"Placeholder comment for color channels": "Comentario de marcador de posición para canales de color",
|
||||
"Placeholder comment for color picker": "Comentario de marcador de posición para el selector de color",
|
||||
"Placeholder comment for color swatches": "Comentario de marcador de posición para muestras de color",
|
||||
"Portable Network Graphics": "Gráficos de red portátiles",
|
||||
"Portrait": "Retrato",
|
||||
"Português": "Português",
|
||||
"Position:": "Posición:",
|
||||
"Power:": "Poder:",
|
||||
"Powred by pixabay.com .": "Desarrollado por pixabay.com.",
|
||||
"Pre-Blur:": "Pre-desenfoque:",
|
||||
"Preview": "Avance",
|
||||
"Previous": "Anterior",
|
||||
"Previous layer must be image, convert it to raster to apply this tool.": "La capa anterior debe ser una imagen, conviértala a raster para aplicar esta herramienta.",
|
||||
@ -241,123 +333,168 @@
|
||||
"Quality:": "Calidad:",
|
||||
"Quick Load": "Carga rápida",
|
||||
"Quick Save": "Guardado rápido",
|
||||
"REMOVE.BG - Remove Image Background": "REMOVE.BG - Eliminar fondo de imagen",
|
||||
"Radial": "Radial",
|
||||
"Radial gradient": "Gradiente radial",
|
||||
"Radius:": "Radio:",
|
||||
"Range:": "Distancia:",
|
||||
"Rectangle": "Rectángulo",
|
||||
"Red": "rojo",
|
||||
"Red channel:": "Canal rojo:",
|
||||
"Red:": "Rojo:",
|
||||
"Redo": "Rehacer",
|
||||
"Remove all": "Eliminar todo",
|
||||
"Rename": "Rebautizar",
|
||||
"Rename Layer": "Cambiar nombre de capa",
|
||||
"Rendered with errors.": "Rendido con errores.",
|
||||
"Rendering...": "Representación...",
|
||||
"Replace Color": "Reemplazar color",
|
||||
"Replace color": "Reemplazar color",
|
||||
"Replacement:": "Reemplazo:",
|
||||
"Report Issues": "Informar problemas",
|
||||
"Resample - Hermite": "Remuestreo - Hermite",
|
||||
"Reset": "Reiniciar",
|
||||
"Reset zoom level": "Restablecer nivel de zoom",
|
||||
"Resize": "Cambiar el tamaño",
|
||||
"Resize Boundary": "Cambiar tamaño de límite",
|
||||
"Resize Layer": "Cambiar el tamaño de la capa",
|
||||
"Resize Layers": "Cambiar el tamaño de las capas",
|
||||
"Resize Text Layer": "Cambiar el tamaño de la capa de texto",
|
||||
"Resized as background": "Redimensionado como fondo",
|
||||
"Resized:": "Redimensionado:",
|
||||
"Resolution:": "Resolución:",
|
||||
"Restore Alpha": "Restaurar alfa",
|
||||
"Right": "Derecha",
|
||||
"Right angle:": "Ángulo recto:",
|
||||
"Right to Left": "De derecha a izquierda",
|
||||
"Rotate": "Girar",
|
||||
"Rotate Layer": "Girar capa",
|
||||
"Rotate is not supported on this type of object. Convert to raster?": "Girar no es compatible con este tipo de objeto. Convertir a raster?",
|
||||
"Rotate left": "Girar a la izquierda",
|
||||
"Rotate:": "Girar:",
|
||||
"Russian": "ruso",
|
||||
"Sat:": "Sab:",
|
||||
"Ruler": "Gobernante",
|
||||
"SQUOOSH - Compress and Compare Images": "SQUOOSH: comprime y compara imágenes",
|
||||
"Saturate": "Saturar",
|
||||
"Saturation": "Saturación",
|
||||
"Saturation:": "Saturación:",
|
||||
"Save": "Salvar",
|
||||
"Save As": "Guardar como",
|
||||
"Save As Data URL": "Guardar como URL de datos",
|
||||
"Save as": "Guardar como",
|
||||
"Save as type:": "Guardar como tipo:",
|
||||
"Save layers:": "Guardar capas:",
|
||||
"Save resolution:": "Guardar resolución:",
|
||||
"Scaling up is not supported in Hermite, using Lanczos.": "Hermite no admite la ampliación mediante Lanczos.",
|
||||
"Scroll down": "Desplazarse hacia abajo",
|
||||
"Scroll up": "Desplazarse hacia arriba",
|
||||
"Search": "Buscar",
|
||||
"Search Images": "Buscar imágenes",
|
||||
"Search for Font": "Buscar fuente",
|
||||
"Search:": "Buscar:",
|
||||
"Select All": "Seleccionar todo",
|
||||
"Select Text Layer": "Seleccionar capa de texto",
|
||||
"Select object tool": "Seleccionar herramienta de objeto",
|
||||
"Selected": "Seleccionado",
|
||||
"Selection": "Selección",
|
||||
"Selection Tool": "Herramienta de selección",
|
||||
"Sensitivity:": "Sensibilidad:",
|
||||
"Separated": "Apartado",
|
||||
"Separated (original types)": "Separados (tipos originales)",
|
||||
"Sepia": "Sepia",
|
||||
"Set Image Size": "Establecer tamaño de imagen",
|
||||
"Settings": "Configuraciones",
|
||||
"Shadow": "Sombra",
|
||||
"Shadow:": "Sombra:",
|
||||
"Shapes": "Formas",
|
||||
"Shapes (H)": "Formas (H)",
|
||||
"Sharpen": "Afilar",
|
||||
"Sharpen tool": "Afilar la herramienta",
|
||||
"Sharpen Tool": "Herramienta de afilado",
|
||||
"Sharpen:": "Afilar:",
|
||||
"Shift + S": "Mayús + S",
|
||||
"Shortcut Key:": "Tecla de acceso directo:",
|
||||
"Show": "Espectáculo",
|
||||
"Show \/ Hide": "Mostrar ocultar",
|
||||
"Show file size:": "Mostrar tamaño de archivo:",
|
||||
"Simple": "Sencillo",
|
||||
"Size": "tamaño",
|
||||
"Size is too big, max": "El tamaño es demasiado grande, máximo",
|
||||
"Size:": "Tamaño:",
|
||||
"Skip - layer must be image.": "Omitir: la capa debe ser una imagen.",
|
||||
"Solarize": "Solarizar",
|
||||
"Sorry, cold not load getUserMedia() data:": "Lo sentimos, no se cargan los datos de getUserMedia () en frío:",
|
||||
"Sorry, image could not be loaded.": "Lo sentimos, no se pudo cargar la imagen.",
|
||||
"Sorry, image could not be loaded. Try copy image and paste it.": "Lo sentimos, la imagen no se pudo cargar. Intenta copiar la imagen y pégala.",
|
||||
"Sorry, image is too big, max 5 MB.": "Lo sentimos, la imagen es demasiado grande, máximo 5 MB.",
|
||||
"Source is empty, right click on image to save source position.": "La fuente está vacía, haga clic derecho en la imagen para guardar la posición de la fuente.",
|
||||
"Source coordinates saved.": "Se guardaron las coordenadas de origen.",
|
||||
"Source is empty, right click on image or use long press to save source position.": "La fuente está vacía, haga clic con el botón derecho en la imagen o presione prolongadamente para guardar la posición de la fuente.",
|
||||
"Sprites": "Sprites",
|
||||
"Square": "Cuadrado",
|
||||
"Stream:": "Corriente:",
|
||||
"Strength:": "Fuerza:",
|
||||
"Strict": "Estricto",
|
||||
"Stroke": "Carrera",
|
||||
"Stroke:": "Carrera:",
|
||||
"TINYPNG - Compress PNG and JPEG": "TINYPNG - Comprimir PNG y JPEG",
|
||||
"Tab": "Lengüeta",
|
||||
"Tag Image File Format": "Formato de archivo de imagen de etiqueta",
|
||||
"Tahoma": "Tahoma",
|
||||
"Target:": "Objetivo:",
|
||||
"Text": "Texto",
|
||||
"Text example": "Ejemplo de texto",
|
||||
"Text:": "Texto:",
|
||||
"The quick brown fox jumps over the lazy dog.": "El veloz zorro marrón salta sobre el perro perezoso.",
|
||||
"There": "Allí",
|
||||
"There are no layers behind.": "No hay capas detrás",
|
||||
"There is only 1 layer.": "Solo hay 1 capa",
|
||||
"This layer must contain an image. Please convert it to raster to apply this tool.": "La capa debe ser una imagen, conviértala a raster para aplicar esta herramienta.",
|
||||
"Tilt Shift": "Cambio de inclinación",
|
||||
"Times New Roman": "Times New Roman",
|
||||
"Toaster": "Tostadora",
|
||||
"Toggle": "Palanca",
|
||||
"Toggle Color Channels": "Alternar canales de color",
|
||||
"Toggle Color Picker": "Alternar selector de color",
|
||||
"Toggle Menu": "Alternar menú",
|
||||
"Toggle Swatches": "Alternar muestras",
|
||||
"Tools": "Herramientas",
|
||||
"Tools class not found:": "Clase de herramientas no encontradas:",
|
||||
"Top": "Parte superior",
|
||||
"Top to Bottom": "De arriba hacia abajo",
|
||||
"Total pixels:": "Píxeles totales:",
|
||||
"Translate": "Traducir",
|
||||
"Translate Layer": "Traducir capa",
|
||||
"Translate error, can not find dictionary:": "Error de traducción, no se puede encontrar el diccionario:",
|
||||
"Transparency background:": "Fondo de transparencia:",
|
||||
"Transparent:": "Transparente:",
|
||||
"Trim": "Recortar",
|
||||
"Trim everything:": "Recortar todo:",
|
||||
"Trim Layers": "Recortar capas",
|
||||
"Trim borders:": "Recortar bordes:",
|
||||
"Trim layer:": "Capa de ajuste:",
|
||||
"Trim white color?": "Recortar el color blanco?",
|
||||
"Turkish": "turco",
|
||||
"Type:": "Tipo:",
|
||||
"Türkçe": "Türkçe",
|
||||
"Undo": "Deshacer",
|
||||
"Undo disabled.": "Deshabilitar.",
|
||||
"Undo enabled.": "Deshacer habilitado.",
|
||||
"Undo is not available.": "Deshacer no está disponible.",
|
||||
"Undo levels changed to 1.": "Los niveles de deshacer cambiaron a 1.",
|
||||
"Undo levels restored to": "Deshace los niveles restaurados a",
|
||||
"Unique colors:": "Colores únicos:",
|
||||
"Up": "Arriba",
|
||||
"Update": "Actualizar",
|
||||
"Update Brush Layer": "Actualizar capa de pincel",
|
||||
"Update Pencil Layer": "Actualizar capa de lápiz",
|
||||
"Update guides": "Guías de actualización",
|
||||
"Use Ctrl+V keyboard shortcut to paste from Clipboard.": "Use el atajo de teclado Ctrl + V para pegar desde el Portapapeles.",
|
||||
"V Radius:": "V Radio:",
|
||||
"V. Align:": "V. Alinear:",
|
||||
"Valencia": "Valencia",
|
||||
"Verdana": "Verdana",
|
||||
"Version:": "Versión:",
|
||||
"Vertical": "Vertical",
|
||||
"Vertical Alignment": "Alineamiento vertical",
|
||||
"Vertical blur:": "Desenfoque vertical:",
|
||||
"Vertical:": "Vertical:",
|
||||
"Vibrance": "Vibrance",
|
||||
"View": "Vista",
|
||||
"Vignette": "Viñeta",
|
||||
"ViliusL": "ViliusL",
|
||||
"Vintage": "Vendimia",
|
||||
"Visible:": "Visible:",
|
||||
"WEBP - Weppy File Format": "WEBP - Formato de archivo Weppy",
|
||||
"Webcam": "Cámara web",
|
||||
"Webcam #": "Cámara web #",
|
||||
"Website:": "Sitio web:",
|
||||
"Weppy File Format": "Formato de archivo Weppy",
|
||||
"Width (%):": "Ancho (%):",
|
||||
"Width:": "Anchura:",
|
||||
"Windows Bitmap": "Mapa de bits de Windows",
|
||||
"Word": "Palabra",
|
||||
"Word + Letter": "Palabra + Letra",
|
||||
"Wrap At:": "Envolver en:",
|
||||
"Wrap:": "Envolver:",
|
||||
"Wrong dimensions": "Dimensiones incorrectas",
|
||||
"Wrong file type, must be image or json.": "Tipo de archivo incorrecto, debe ser imagen o json.",
|
||||
"X end:": "X final:",
|
||||
"X position:": "Posición X:",
|
||||
"X start:": "X inicio:",
|
||||
"X-Pro II": "X-Pro II",
|
||||
"Y end:": "Final de Y:",
|
||||
"Y position:": "Posición Y:",
|
||||
"Y start:": "Y comienza:",
|
||||
|
||||
@ -1,210 +1,291 @@
|
||||
{
|
||||
"2d": "2d",
|
||||
"480p": "480p",
|
||||
"A problem occurred while removing undo history. It": "Un problème est survenu lors de la suppression de l'historique des annulations. Il",
|
||||
"About": "A propos",
|
||||
"Active": "actif",
|
||||
"Aden": "Aden",
|
||||
"Advanced": "Avancé",
|
||||
"All": "Tout",
|
||||
"Alpha": "Alpha",
|
||||
"Alpha:": "Alpha :",
|
||||
"Anonymous": "Anonyme",
|
||||
"Anti aliasing": "Anticrénelage",
|
||||
"Application markup may have changed,": "Le balisage de l'application peut avoir changé,",
|
||||
"Arial": "Arial",
|
||||
"Arrow": "Flèche",
|
||||
"ArrowDown": "Flèche vers le bas",
|
||||
"ArrowLeft": "Flèche Gauche",
|
||||
"ArrowRight": "FlècheDroite",
|
||||
"ArrowUp": "Flèche vers le haut",
|
||||
"Author:": "Auteur :",
|
||||
"Auto Adjust Colors": "Ajuster automatiquement les couleurs",
|
||||
"Auto Kerning": "Crénage automatique",
|
||||
"Average:": "Moyenne :",
|
||||
"BMP - Windows Bitmap": "BMP - Windows Bitmap",
|
||||
"Backspace": "Retour arrière",
|
||||
"Base": "Base",
|
||||
"Basic": "Basique",
|
||||
"Black and White": "Noir et blanc",
|
||||
"Blue": "Bleu",
|
||||
"Blue channel:": "Niveau de bleu :",
|
||||
"Blue:": "Bleu:",
|
||||
"Blueprint": "Plan",
|
||||
"Blur Radius:": "Rayon de floutage :",
|
||||
"Blur Tool": "Outil de floutage",
|
||||
"Blur power:": "Puissance de flou:",
|
||||
"Blur tool": "Flou",
|
||||
"Bold": "Gras",
|
||||
"Bold Italic": "Gras Italique",
|
||||
"Borders": "Cadres",
|
||||
"Bottom": "Bas",
|
||||
"Bottom to Top": "De bas en haut",
|
||||
"Bounds:": "Bornes:",
|
||||
"Box": "Boîte",
|
||||
"Box Blur": "Box Blur",
|
||||
"Box blur": "Box flou",
|
||||
"Brightness": "Luminosité",
|
||||
"Brightness:": "Luminosité :",
|
||||
"Brush": "Pinceau",
|
||||
"Bulge\/Pinch tool": "Déformer \/ Bosse",
|
||||
"Bulge\/Pinch Tool": "Outil de renflement \/ pincement",
|
||||
"Burn": "Brûler",
|
||||
"CSS Filters": "Filtres CSS",
|
||||
"Can not animate 1 layer.": "Impossible d'animer une couche.",
|
||||
"Can not find previous layer.": "Impossible de trouver la couche précédente.",
|
||||
"Can not use this tool on current layer: image already takes all area.": "Impossible d'utiliser cet outil sur le calque actuel : l'image occupe déjà toute la zone.",
|
||||
"Cancel": "Annuler",
|
||||
"Canvas Size": "Taille de la toile",
|
||||
"Center": "Centre",
|
||||
"Center x:": "Centrage x :",
|
||||
"Center y:": "Centrage y :",
|
||||
"Center:": "Centre :",
|
||||
"Change Composition": "Changer la composition",
|
||||
"Change Layer Details": "Modifier les détails du calque",
|
||||
"Change Opacity": "Changer l'opacité",
|
||||
"Channel:": "Niveau :",
|
||||
"Circle": "Cercle",
|
||||
"Clarendon": "Clarendon",
|
||||
"Clear": "Effacer",
|
||||
"Clear Selection": "Effacer la sélection",
|
||||
"Clone Tool": "Outil de clonage",
|
||||
"Clone count:": "Nombre de clones:",
|
||||
"Clone tool": "Tampon de clonage",
|
||||
"Clone tool disabled for resized image. Please rasterize first.": "Outil de clonage désactivé pour l'image redimensionnée. Veuillez d'abord pixelliser.",
|
||||
"Cloned edges": "Bords clonés",
|
||||
"Close": "Fermer",
|
||||
"Color #": "Couleur #",
|
||||
"Color Zoom": "Eclat",
|
||||
"Color alpha value can not be zero.": "La valeur alpha de la couleur ne peut pas être nulle.",
|
||||
"Color Corrections": "Correction des couleurs",
|
||||
"Color Palette": "Palette de couleurs",
|
||||
"Color Zoom": "Eclat",
|
||||
"Color alpha value can not be zero.": "La valeur alpha de la couleur ne peut pas être nulle.",
|
||||
"Color to Alpha": "Rendre transparent",
|
||||
"Color zoom": "Zoom couleur",
|
||||
"Color:": "Couleur :",
|
||||
"Colors": "Couleurs",
|
||||
"Colors:": "Couleurs :",
|
||||
"Common Filters": "Filtres communs",
|
||||
"Composition": "Composition",
|
||||
"Composition:": "Composition :",
|
||||
"Content Fill": "Remplissage de contenu",
|
||||
"Contrast": "Contraste",
|
||||
"Contrast:": "Contraste :",
|
||||
"Convert layer to raster": "Convertir le calque en raster",
|
||||
"Convert to Raster": "Convertir en raster",
|
||||
"Copy Selection": "Copier",
|
||||
"Copy:": "Copie:",
|
||||
"Copy to Clipboard": "Copier dans le presse-papier",
|
||||
"Courier": "Courier",
|
||||
"Crop": "Rogner selon la sélection",
|
||||
"Crop Tool": "Outil de recadrage",
|
||||
"Crop on rotated layer is not supported. Convert it to raster to continue.": "Le recadrage sur le calque pivoté n'est pas pris en charge. Convertissez-le en raster pour continuer.",
|
||||
"Ctrl + C": "Ctrl+C",
|
||||
"Ctrl+A": "Ctrl + A",
|
||||
"Ctrl+C": "Ctrl + C",
|
||||
"Ctrl+P": "Ctrl+P",
|
||||
"Ctrl+V": "Ctrl + V",
|
||||
"Ctrl-P": "Ctrl-P",
|
||||
"Ctrl+Y": "Ctrl + Y",
|
||||
"Ctrl+Z": "Ctrl + Z",
|
||||
"Current": "Actuel",
|
||||
"Curve": "Courbe",
|
||||
"Current Color Preview": "Aperçu de la couleur actuelle",
|
||||
"Custom": "Personnalisé",
|
||||
"Data URL": "URL de données",
|
||||
"Data URL:": "URL de données:",
|
||||
"Decrease": "Diminution",
|
||||
"Decrease Color Depth": "Postériser",
|
||||
"Default": "Défaut",
|
||||
"Degree:": "Degré:",
|
||||
"Del": "Supp",
|
||||
"Delete": "Supprimer",
|
||||
"Delete Selection": "Effacer la sélection",
|
||||
"Denoise": "Réduire le bruit",
|
||||
"Desaturate": "Désaturer",
|
||||
"Desaturate Tool": "Outil de désaturation",
|
||||
"Description:": "Description :",
|
||||
"Deutsch": "Deutsch",
|
||||
"Differences": "Détection des bords",
|
||||
"Differences Down": "Détection des bords...",
|
||||
"Direction:": "Direction:",
|
||||
"Dither": "Ajouter du bruit",
|
||||
"Dithering:": "Trame :",
|
||||
"Dominant color:": "Couleur dominante:",
|
||||
"Dot Screen": "Demi-teinte",
|
||||
"Down": "Vers le bas",
|
||||
"Duplicate": "Dupliquer",
|
||||
"Duplicate Layer": "Dupliquer le calque",
|
||||
"Duplicate layer": "Dupliquer le calque",
|
||||
"Dynamic": "Dynamique",
|
||||
"Edge": "Détection des bords",
|
||||
"Edit": "Edition",
|
||||
"Edit text": "Éditer le texte",
|
||||
"Edit text...": "Éditer le texte...",
|
||||
"Effect browser": "Navigateur d'effets",
|
||||
"Effects": "Effets",
|
||||
"Effects browser": "Navigateur d'effets",
|
||||
"Email:": "Email :",
|
||||
"Emboss": "Embossage",
|
||||
"Empty selection": "Sélection vide",
|
||||
"Empty selection or type not image.": "Sélection vide ou tapez pas d'image.",
|
||||
"Enable autoresize:": "Activer le redimensionnement automatique :",
|
||||
"End": "Fin",
|
||||
"English": "Anglais",
|
||||
"English (UK)": "Anglais Royaume-Uni)",
|
||||
"Enrich": "Améliorer la netteté",
|
||||
"Erase": "Gomme",
|
||||
"Erase on rotate object is disabled. Sorry.": "L'effacement à la rotation de l'objet est désactivé. Pardon.",
|
||||
"Enter": "Entrer",
|
||||
"Erase Tool": "Outil d'effacement",
|
||||
"Erase on rotate object is disabled. Please rasterize first.": "L'effacement lors de la rotation de l'objet est désactivé. Veuillez d'abord pixelliser.",
|
||||
"Error": "Erreur",
|
||||
"Error connecting to service.": "Erreur lors de la connexion au service.",
|
||||
"Error: can not load image.": "Erreur: impossible de charger l'image.",
|
||||
"Error loading the list of fonts from Google.": "Erreur lors du chargement de la liste des polices de Google.",
|
||||
"Error registering service worker": "Erreur lors de l'enregistrement du technicien de service",
|
||||
"Error: can not find filter:": "Erreur: impossible de trouver le filtre:",
|
||||
"Error: can not find layer with id:": "Erreur: impossible de trouver la couche avec l'ID:",
|
||||
"Error: missing details event target": "Erreur: cible des événements manquants de détails",
|
||||
"Error: unsupported attribute type:": "Erreur: type d'attribut non pris en charge:",
|
||||
"Error: wrong key:": "Erreur: mauvaise clé:",
|
||||
"Error: unknown layer type:": "Erreur: type de couche inconnu:",
|
||||
"Error: unsupported attribute type:": "Erreur : type d'attribut non pris en charge :",
|
||||
"Esc": "Esc",
|
||||
"Escape": "Échapper",
|
||||
"Español": "Espagnol",
|
||||
"Expand edges": "Développer les bords",
|
||||
"Exponent:": "Exposant :",
|
||||
"Export": "Exporter",
|
||||
"External": "Externe",
|
||||
"Factor:": "Facteur :",
|
||||
"File": "Fichier",
|
||||
"File name:": "Nom de fichier :",
|
||||
"File size:": "Taille du fichier :",
|
||||
"Fill": "Remplir",
|
||||
"Fill Tool": "Outil de remplissage",
|
||||
"Fit": "Fenêtre",
|
||||
"Fit Window": "Remplir la fenêtre",
|
||||
"Fit window": "Ajuster la fenêtre",
|
||||
"Flatten Image": "Fusionner tous les calques",
|
||||
"Flip": "Retourner",
|
||||
"FloydSteinberg-serpentine": "FloydSteinberg-serpentine",
|
||||
"French": "Français",
|
||||
"Font": "Police de caractère",
|
||||
"Français": "Français",
|
||||
"Full HD, 1080p": "Full HD, 1080p",
|
||||
"GIF - Graphics Interchange Format": "GIF - Format d'échange de graphiques",
|
||||
"Full Screen": "Plein écran",
|
||||
"Full layers data": "Données de couches complètes",
|
||||
"Gap:": "Ecart :",
|
||||
"Gaussian Blur": "Flou gaussien",
|
||||
"German": "Allemand",
|
||||
"Gif delay:": "Gif délai:",
|
||||
"Gingham": "Vichy",
|
||||
"GitHub:": "GitHub :",
|
||||
"Gradient": "Dégradé",
|
||||
"Gradient Radius:": "Rayon du dégradé :",
|
||||
"Grains": "Grains",
|
||||
"Graphics Interchange Format": "Format d'échange graphique",
|
||||
"Gray": "Gris",
|
||||
"Grayscale": "Niveaux de gris",
|
||||
"Greek": "grec",
|
||||
"Green": "Vert",
|
||||
"Green channel:": "Niveau de vert :",
|
||||
"Green:": "Vert:",
|
||||
"Greyscale:": "Noir et blanc :",
|
||||
"Grid": "Grille",
|
||||
"Grid on\/off": "Grille activée \/ désactivée",
|
||||
"Guides": "Guides",
|
||||
"Guides enabled.": "Guides activés.",
|
||||
"H Radius:": "Rayon H :",
|
||||
"H. Align:": "H. Aligner:",
|
||||
"Heatmap": "Zones chaudes",
|
||||
"Height (%):": "Hauteur (%) :",
|
||||
"Height:": "Hauteur :",
|
||||
"Help": "Aide",
|
||||
"Helvetica": "Helvetica",
|
||||
"Hermite": "Hermite",
|
||||
"Hex:": "Hex:",
|
||||
"Hex": "Hex",
|
||||
"Hide": "Cacher",
|
||||
"Histogram": "Histogramme",
|
||||
"Histogram:": "Histogramme :",
|
||||
"Home": "Accueil",
|
||||
"Horizontal": "Horizontalement",
|
||||
"Horizontal Alignment": "Alignement horizontal",
|
||||
"Horizontal blur:": "Flou horizontal:",
|
||||
"Horizontal:": "Horizontal:",
|
||||
"Hue": "Teinte",
|
||||
"Hue Rotate": "Hue Rotate",
|
||||
"Hue:": "Teinte :",
|
||||
"Image": "Image",
|
||||
"Image data with multi-layers. Can be opened using miniPaint -": "Données d'image avec plusieurs couches. Peut être ouvert en utilisant miniPaint -",
|
||||
"Impact": "Impact",
|
||||
"In proportion:": "En proportion:",
|
||||
"Increase": "Augmenter",
|
||||
"Information": "Informations",
|
||||
"Insert:": "Insérer:",
|
||||
"Inkwell": "Encrier",
|
||||
"Insert": "Insérer",
|
||||
"Insert guides": "Insérer des guides",
|
||||
"Insert new layer": "Insérer un nouveau calque",
|
||||
"Instagram Filters": "Filtres Instagram",
|
||||
"Invalid Hex Code": "Code hexadécimal non valide",
|
||||
"Italiano": "Italien",
|
||||
"Italic": "Italique",
|
||||
"JPG - JPG\/JPEG Format": "JPG - Format JPG\/JPEG",
|
||||
"JPG, WEBP quality:": "JPG, qualité WEBP:",
|
||||
"JSON - Full layers data": "JSON - Données avec tous les calques",
|
||||
"Japanese": "Japonais",
|
||||
"JPG\/JPEG Format": "Format JPG \/ JPEG",
|
||||
"Kerning:": "Crénage:",
|
||||
"Key-Points": "Points clés",
|
||||
"KeyU": "CléU",
|
||||
"Keyboard Shortcuts": "Raccourcis clavier",
|
||||
"Keyword:": "Mot-clé:",
|
||||
"Korean": "Coréen",
|
||||
"Lanczos": "Lanczos",
|
||||
"Landscape": "Paysage",
|
||||
"Language": "Langue",
|
||||
"Last modified": "Dernière mise à jour",
|
||||
"Layer": "Couche",
|
||||
"Layer details": "Détails de la couche",
|
||||
"Layer is already image.": "Le calque est déjà l'image.",
|
||||
"Layer must be image, convert it to raster to apply this tool.": "Le calque doit être image, le convertir en raster pour appliquer cet outil.",
|
||||
"Layer is empty.": "Le calque est vide.",
|
||||
"Layer is not compatible with resize": "Le calque n'est pas compatible avec le redimensionnement",
|
||||
"Layer is vector, convert it to raster to apply this tool.": "Le calque est vectoriel, convertissez-le en raster pour appliquer cet outil.",
|
||||
"Layers": "Calques",
|
||||
"Layers:": "Couches:",
|
||||
"Layout:": "Mise en page:",
|
||||
"Left": "à gauche",
|
||||
"Left to Right": "De gauche à droite",
|
||||
"Level:": "Niveau :",
|
||||
"Levels:": "Niveau :",
|
||||
"Lietuvių": "Lituanien",
|
||||
"Line": "Ligne",
|
||||
"Lum:": "Lum:",
|
||||
"Lo-fi": "Lo-fi",
|
||||
"Luminance:": "Luminance :",
|
||||
"Magic Wand Tool": "Baguette magique",
|
||||
"Luminosity": "Luminosité",
|
||||
"Magic Eraser Tool": "Outil Gomme magique",
|
||||
"Merge Down": "Fusionner avec le calque inférieur",
|
||||
"Merge Layers": "Fusionner les calques",
|
||||
"Merged": "Fusionné",
|
||||
"Metrics": "Métrique",
|
||||
"Middle": "Milieu",
|
||||
"Missing at least 1 size parameter.": "Il manque au moins 1 paramètre de taille.",
|
||||
"Missing permissions to write to Clipboard.cc": "Autorisations manquantes pour écrire dans Clipboard.cc",
|
||||
"Mode:": "Mode :",
|
||||
"Module function not found.": "Fonction du module introuvable.",
|
||||
"Modules class not found:": "Classe de modules introuvable:",
|
||||
"Monospace": "Monospace",
|
||||
"Mosaic": "Mosaïque",
|
||||
"Mouse:": "Souris :",
|
||||
"Move": "Déplacer",
|
||||
"Move down": "Déplacer vers le bas",
|
||||
"Move up": "Déplacer vers le haut",
|
||||
"Move Layer": "Déplacer le calque",
|
||||
"Move layer down": "Déplacer le calque vers le bas",
|
||||
"Move layer up": "Déplacer le calque vers le haut",
|
||||
"Name:": "Nom :",
|
||||
"Needs at least 2 layers.": "Nécessite au moins 2 couches.",
|
||||
"Negative": "Négatif",
|
||||
"New": "Nouveau...",
|
||||
"New Bezier Layer": "Nouvelle couche de Bézier",
|
||||
"New Brush Layer": "Nouveau calque de pinceau",
|
||||
"New Ellipse Layer": "Nouveau calque Ellipse",
|
||||
"New File": "Nouveau fichier",
|
||||
"New Gradient Layer": "Nouveau calque de dégradé",
|
||||
"New Layer": "Nouvelle Couche",
|
||||
"New Line Layer": "Nouvelle couche de ligne",
|
||||
"New Pencil Layer": "Nouveau calque de crayon",
|
||||
"New Polygon Layer": "Nouveau calque de polygone",
|
||||
"New Rectangle Layer": "Nouveau calque rectangle",
|
||||
"New Text Layer": "Nouveau calque de texte",
|
||||
"New file": "Nouveau fichier",
|
||||
"New from Selection": "Nouveau à partir de la sélection",
|
||||
"New layer": "Nouveau calque",
|
||||
"New width can not be smaller then current width": "La nouvelle largeur ne peut pas être plus petite que la largeur actuelle",
|
||||
"Normal": "Normal",
|
||||
"Next": "Suivant",
|
||||
"Night Vision": "Vision nocturne",
|
||||
"None": "Aucun",
|
||||
"Nothing is selected.": "Rien n'est sélectionné.",
|
||||
"Offset X:": "Décalage X:",
|
||||
"Offset Y:": "Décalage Y:",
|
||||
@ -217,23 +298,34 @@
|
||||
"Open Data URL": "URL de données ouvertes",
|
||||
"Open Directory": "Ouvrir le répertoire",
|
||||
"Open File": "Fichier ouvert",
|
||||
"Open File Data URL": "Ouvrir l'URL des données de fichier",
|
||||
"Open File URL": "Ouvrir l'URL du fichier",
|
||||
"Open File Webcam": "Ouvrir le fichier webcam",
|
||||
"Open Image": "Ouvrir l'image",
|
||||
"Open JSON File": "Ouvrez le fichier JSON",
|
||||
"Open Test Template": "Modèle de test ouvert",
|
||||
"Open URL": "Ouvrir depuis le Web",
|
||||
"Open data URL": "URL de données ouvertes",
|
||||
"Open from Webcam": "Ouvrir depuis la webcam",
|
||||
"Original Size": "Format original",
|
||||
"PNG - Portable Network Graphics": "PNG - Portable Network Graphics",
|
||||
"PNGTOSVG - Convert Image to SVG": "PNGTOSVG - Convertir l'image en SVG",
|
||||
"PageDown": "Bas de page",
|
||||
"PageUp": "Page Up",
|
||||
"Palette": "Palette",
|
||||
"Parameter #1:": "Paramètre n ° 1:",
|
||||
"Parameter #2:": "Paramètre n ° 2:",
|
||||
"Paste": "Coller",
|
||||
"Pencil": "Crayon",
|
||||
"Percentage:": "Pourcentage:",
|
||||
"Pick Color": "Sélecteur de couleurs",
|
||||
"Pixels:": "Pixels :",
|
||||
"Play animation": "Jouer l'animation",
|
||||
"Portuguese": "Portugais",
|
||||
"Placeholder comment for color channels": "Commentaire d'espace réservé pour les canaux de couleur",
|
||||
"Placeholder comment for color picker": "Commentaire d'espace réservé pour le sélecteur de couleurs",
|
||||
"Placeholder comment for color swatches": "Commentaire d'espace réservé pour les échantillons de couleur",
|
||||
"Portable Network Graphics": "Portable Network Graphics",
|
||||
"Portrait": "Portrait",
|
||||
"Português": "Português",
|
||||
"Position:": "Position:",
|
||||
"Power:": "<abbr title='Tolérance'>Tol.<\/abbr> :",
|
||||
"Powred by pixabay.com .": "Powred par pixabay.com.",
|
||||
"Pre-Blur:": "Flou :",
|
||||
"Preview": "Aperçu",
|
||||
"Previous": "précédent",
|
||||
"Previous layer must be image, convert it to raster to apply this tool.": "La couche précédente doit être une image, la convertir en raster pour appliquer cet outil.",
|
||||
@ -241,123 +333,168 @@
|
||||
"Quality:": "Qualité :",
|
||||
"Quick Load": "Chargement rapide",
|
||||
"Quick Save": "Sauvegarde rapide",
|
||||
"REMOVE.BG - Remove Image Background": "REMOVE.BG - Supprimer l'arrière-plan de l'image",
|
||||
"Radial": "Radial",
|
||||
"Radial gradient": "Gradient radial",
|
||||
"Radius:": "Rayon :",
|
||||
"Range:": "Gamme :",
|
||||
"Rectangle": "Rectangle",
|
||||
"Red": "Rouge",
|
||||
"Red channel:": "Niveau de rouge :",
|
||||
"Red:": "Rouge:",
|
||||
"Redo": "Refaire",
|
||||
"Remove all": "Enlever tout",
|
||||
"Rename": "Renommer",
|
||||
"Rename Layer": "Renommer le calque",
|
||||
"Rendered with errors.": "Rendu avec des erreurs.",
|
||||
"Rendering...": "Le rendu...",
|
||||
"Replace Color": "Remplacer une couleur",
|
||||
"Replace color": "Remplacer une couleur",
|
||||
"Replacement:": "Remplacement :",
|
||||
"Report Issues": "Signaler un problème",
|
||||
"Resample - Hermite": "Rééchantillonnage",
|
||||
"Reset": "Réinitialiser",
|
||||
"Reset zoom level": "Réinitialiser le niveau de zoom",
|
||||
"Resize": "Redimensionner",
|
||||
"Resize Boundary": "Redimensionner la limite",
|
||||
"Resize Layer": "Redimensionner le calque",
|
||||
"Resize Layers": "Redimensionner les calques",
|
||||
"Resize Text Layer": "Redimensionner le calque de texte",
|
||||
"Resized as background": "Redimensionné comme arrière-plan",
|
||||
"Resized:": "Redimensionné :",
|
||||
"Resolution:": "Taille :",
|
||||
"Restore Alpha": "Restaurer le niveau alpha",
|
||||
"Right": "à droite",
|
||||
"Right angle:": "Angle droit:",
|
||||
"Right to Left": "De droite à gauche",
|
||||
"Rotate": "Faire pivoter",
|
||||
"Rotate Layer": "Faire pivoter le calque",
|
||||
"Rotate is not supported on this type of object. Convert to raster?": "La rotation n'est pas prise en charge sur ce type d'objet. Convertir en raster?",
|
||||
"Rotate left": "Faire pivoter à gauche",
|
||||
"Rotate:": "Tourner:",
|
||||
"Russian": "Russe",
|
||||
"Sat:": "Sam:",
|
||||
"Ruler": "Règle",
|
||||
"SQUOOSH - Compress and Compare Images": "SQUOOSH - Compresser et comparer des images",
|
||||
"Saturate": "Saturer",
|
||||
"Saturation": "Saturation",
|
||||
"Saturation:": "Saturation :",
|
||||
"Save": "Enregistrer",
|
||||
"Save As": "Enregistrer sous",
|
||||
"Save As Data URL": "Enregistrer comme URL de données",
|
||||
"Save as": "Enregistrer sous",
|
||||
"Save as type:": "Enregistrer comme type :",
|
||||
"Save layers:": "Enregistrer les calques :",
|
||||
"Save resolution:": "Se souvenir de la taille :",
|
||||
"Scaling up is not supported in Hermite, using Lanczos.": "La mise à l'échelle n'est pas prise en charge dans Hermite, à l'aide de Lanczos.",
|
||||
"Scroll down": "Défiler vers le bas",
|
||||
"Scroll up": "Défiler",
|
||||
"Search": "Chercher",
|
||||
"Search Images": "Rechercher des images",
|
||||
"Search for Font": "Rechercher une police",
|
||||
"Search:": "Recherche:",
|
||||
"Select All": "Sélectionner tout",
|
||||
"Select Text Layer": "Sélectionnez le calque de texte",
|
||||
"Select object tool": "Déplacer les pixels sélectionnés",
|
||||
"Selected": "Choisi",
|
||||
"Selection": "Sélection",
|
||||
"Selection Tool": "Outil de sélection",
|
||||
"Sensitivity:": "Sensibilité :",
|
||||
"Separated": "Séparé",
|
||||
"Separated (original types)": "Séparé (types originaux)",
|
||||
"Sepia": "Vieille photo",
|
||||
"Set Image Size": "Définir la taille de l'image",
|
||||
"Settings": "Paramètres",
|
||||
"Shadow": "Ombre",
|
||||
"Shadow:": "Ombre :",
|
||||
"Shapes": "Formes",
|
||||
"Shapes (H)": "Formes (H)",
|
||||
"Sharpen": "Améliorer la netteté",
|
||||
"Sharpen tool": "Netteté",
|
||||
"Sharpen Tool": "Outil Sharpen",
|
||||
"Sharpen:": "Netteté :",
|
||||
"Shift + S": "Maj + S",
|
||||
"Shortcut Key:": "Touche de raccourci:",
|
||||
"Show": "Montrer",
|
||||
"Show \/ Hide": "Montrer \/ Cacher",
|
||||
"Show file size:": "Calculer la taille du fichier :",
|
||||
"Simple": "Simple",
|
||||
"Size": "Taille",
|
||||
"Size is too big, max": "La taille est trop grande, max",
|
||||
"Size:": "Taille :",
|
||||
"Skip - layer must be image.": "Skip-layer doit être image.",
|
||||
"Solarize": "Solariser",
|
||||
"Sorry, cold not load getUserMedia() data:": "Désolé, ne chargez pas les données getUserMedia () à froid:",
|
||||
"Sorry, image could not be loaded.": "Désolé, l'image n'a pas pu être chargée.",
|
||||
"Sorry, image could not be loaded. Try copy image and paste it.": "Désolé, l'image n'a pas pu être chargée. Essayez de la copier dans le presse-papier et de la coller à la place.",
|
||||
"Sorry, image is too big, max 5 MB.": "Désolé, l'image est trop grande (5MB max).",
|
||||
"Source is empty, right click on image to save source position.": "La source est vide, faites un clic droit sur l'image pour sauvegarder la position de la source.",
|
||||
"Source coordinates saved.": "Coordonnées source enregistrées.",
|
||||
"Source is empty, right click on image or use long press to save source position.": "La source est vide, cliquez avec le bouton droit sur l'image ou appuyez longuement pour enregistrer la position de la source.",
|
||||
"Sprites": "Sprites",
|
||||
"Square": "Carré",
|
||||
"Stream:": "Courant:",
|
||||
"Strength:": "Force :",
|
||||
"Strict": "Strict",
|
||||
"Stroke": "Contour",
|
||||
"Stroke:": "Accident vasculaire cérébral:",
|
||||
"TINYPNG - Compress PNG and JPEG": "TINYPNG - Compresser PNG et JPEG",
|
||||
"Tab": "Languette",
|
||||
"Tag Image File Format": "Format de fichier image de balise",
|
||||
"Tahoma": "Tahoma",
|
||||
"Target:": "Cible :",
|
||||
"Text": "Texte",
|
||||
"Text example": "Exemple de texte",
|
||||
"Text:": "Texte :",
|
||||
"The quick brown fox jumps over the lazy dog.": "Le renard brun rapide saute par-dessus le chien paresseux.",
|
||||
"There": "Là",
|
||||
"There are no layers behind.": "Il n'y a pas de couches derrière.",
|
||||
"There is only 1 layer.": "Il n'y a qu'une seule couche.",
|
||||
"This layer must contain an image. Please convert it to raster to apply this tool.": "Le calque doit être image, le convertir en raster pour appliquer cet outil.",
|
||||
"Tilt Shift": "Flou artistique",
|
||||
"Times New Roman": "Times New Roman",
|
||||
"Toaster": "Grille-pain",
|
||||
"Toggle": "Basculer",
|
||||
"Toggle Color Channels": "Basculer les canaux de couleur",
|
||||
"Toggle Color Picker": "Basculer le sélecteur de couleurs",
|
||||
"Toggle Menu": "Basculer le menu",
|
||||
"Toggle Swatches": "Basculer les nuances",
|
||||
"Tools": "Outils",
|
||||
"Tools class not found:": "Classe d'outils introuvable:",
|
||||
"Top": "Haut",
|
||||
"Top to Bottom": "De haut en bas",
|
||||
"Total pixels:": "Nombre de pixels :",
|
||||
"Translate": "Traduire",
|
||||
"Translate Layer": "Traduire le calque",
|
||||
"Translate error, can not find dictionary:": "Erreur de traduction, impossible de trouver le dictionnaire :",
|
||||
"Transparency background:": "Fond de transparence:",
|
||||
"Transparent:": "Transparence :",
|
||||
"Trim": "Rogner l'image",
|
||||
"Trim everything:": "Coupez tout:",
|
||||
"Trim Layers": "Couper les couches",
|
||||
"Trim borders:": "Couper les bordures:",
|
||||
"Trim layer:": "Couche de garniture:",
|
||||
"Trim white color?": "Taillez la couleur blanche?",
|
||||
"Turkish": "Turc",
|
||||
"Type:": "Taper:",
|
||||
"Türkçe": "Türkçe",
|
||||
"Undo": "Annuler",
|
||||
"Undo disabled.": "Annuler désactivé.",
|
||||
"Undo enabled.": "Annuler activé.",
|
||||
"Undo is not available.": "Annuler n'est pas disponible.",
|
||||
"Undo levels changed to 1.": "Les niveaux d'annulation ont été changés en 1.",
|
||||
"Undo levels restored to": "Annuler les niveaux restitués à",
|
||||
"Unique colors:": "Couleurs uniques :",
|
||||
"Up": "Vers le haut",
|
||||
"Update": "Mise à jour",
|
||||
"Update Brush Layer": "Mettre à jour le calque de pinceau",
|
||||
"Update Pencil Layer": "Mettre à jour le calque de crayon",
|
||||
"Update guides": "Guides de mise à jour",
|
||||
"Use Ctrl+V keyboard shortcut to paste from Clipboard.": "Utilisez le raccourci clavier Ctrl + V pour coller à partir du Presse-papiers.",
|
||||
"V Radius:": "Rayon V :",
|
||||
"V. Align:": "V. Aligner:",
|
||||
"Valencia": "Valence",
|
||||
"Verdana": "Verdana",
|
||||
"Version:": "Version:",
|
||||
"Vertical": "Verticalement",
|
||||
"Vertical Alignment": "Alignement vertical",
|
||||
"Vertical blur:": "Flou vertical:",
|
||||
"Vertical:": "Verticale:",
|
||||
"Vibrance": "Vibrance",
|
||||
"View": "Voir",
|
||||
"Vignette": "Vignette",
|
||||
"ViliusL": "ViliusL",
|
||||
"Vintage": "Vintage",
|
||||
"Visible:": "Visible :",
|
||||
"WEBP - Weppy File Format": "WEBP - Weppy File Format",
|
||||
"Webcam": "Webcam",
|
||||
"Webcam #": "Webcam #",
|
||||
"Website:": "Site Internet:",
|
||||
"Weppy File Format": "Format de fichier Weppy",
|
||||
"Width (%):": "Largeur (%) :",
|
||||
"Width:": "Largeur :",
|
||||
"Windows Bitmap": "Bitmap Windows",
|
||||
"Word": "Mot",
|
||||
"Word + Letter": "Mot + Lettre",
|
||||
"Wrap At:": "Envelopper à:",
|
||||
"Wrap:": "Emballage:",
|
||||
"Wrong dimensions": "Mauvaises dimensions",
|
||||
"Wrong file type, must be image or json.": "Mauvais type de fichier, image ou json attendu.",
|
||||
"X end:": "Fin X :",
|
||||
"X position:": "Position x :",
|
||||
"X start:": "Début X :",
|
||||
"X-Pro II": "X-Pro II",
|
||||
"Y end:": "Fin Y :",
|
||||
"Y position:": "Position y :",
|
||||
"Y start:": "Début Y :",
|
||||
|
||||
@ -1,210 +1,291 @@
|
||||
{
|
||||
"2d": "2d",
|
||||
"480p": "480p",
|
||||
"A problem occurred while removing undo history. It": "Si è verificato un problema durante la rimozione della cronologia degli annullamenti. It",
|
||||
"About": "Di",
|
||||
"Active": "Attivo",
|
||||
"Aden": "Aden",
|
||||
"Advanced": "Avanzate",
|
||||
"All": "Tutti",
|
||||
"Alpha": "Alfa",
|
||||
"Alpha:": "Alfa:",
|
||||
"Anonymous": "Anonimo",
|
||||
"Anti aliasing": "Anti aliasing",
|
||||
"Application markup may have changed,": "Il markup dell'applicazione potrebbe essere cambiato",
|
||||
"Arial": "Arial",
|
||||
"Arrow": "Freccia",
|
||||
"ArrowDown": "ArrowDown",
|
||||
"ArrowLeft": "ArrowLeft",
|
||||
"ArrowRight": "ArrowRight",
|
||||
"ArrowUp": "ArrowUp",
|
||||
"Author:": "Autore:",
|
||||
"Auto Adjust Colors": "Regola automaticamente i colori",
|
||||
"Auto Kerning": "Crenatura automatica",
|
||||
"Average:": "Media:",
|
||||
"BMP - Windows Bitmap": "BMP - Bitmap di Windows",
|
||||
"Backspace": "Backspace",
|
||||
"Base": "Base",
|
||||
"Basic": "Di base",
|
||||
"Black and White": "Bianco e nero",
|
||||
"Blue": "Blu",
|
||||
"Blue channel:": "Canale blu:",
|
||||
"Blue:": "Blu:",
|
||||
"Blueprint": "Planimetria",
|
||||
"Blur Radius:": "Sfocatura raggio:",
|
||||
"Blur Tool": "Strumento di sfocatura",
|
||||
"Blur power:": "Sfocatura:",
|
||||
"Blur tool": "Strumento di sfocatura",
|
||||
"Bold": "Grassetto",
|
||||
"Bold Italic": "Italico grassetto",
|
||||
"Borders": "frontiere",
|
||||
"Bottom": "Parte inferiore",
|
||||
"Bottom to Top": "Dal basso verso l'alto",
|
||||
"Bounds:": "Limiti:",
|
||||
"Box": "Scatola",
|
||||
"Box Blur": "Box Blur",
|
||||
"Box blur": "Scatola sfocatura",
|
||||
"Brightness": "Luminosità",
|
||||
"Brightness:": "Luminosità:",
|
||||
"Brush": "Spazzola",
|
||||
"Bulge\/Pinch tool": "Bulge \/ Pinch tool",
|
||||
"Bulge\/Pinch Tool": "Strumento rigonfiamento \/ pizzico",
|
||||
"Burn": "Bruciare",
|
||||
"CSS Filters": "Filtri CSS",
|
||||
"Can not animate 1 layer.": "Impossibile animare 1 livello.",
|
||||
"Can not find previous layer.": "Impossibile trovare il livello precedente.",
|
||||
"Can not use this tool on current layer: image already takes all area.": "Impossibile utilizzare questo strumento sul livello corrente: l'immagine occupa già tutta l'area.",
|
||||
"Cancel": "Annulla",
|
||||
"Canvas Size": "Dimensioni della tela",
|
||||
"Center": "Centro",
|
||||
"Center x:": "Centro x:",
|
||||
"Center y:": "Centro y:",
|
||||
"Center:": "Centro:",
|
||||
"Change Composition": "Cambia composizione",
|
||||
"Change Layer Details": "Cambia i dettagli del livello",
|
||||
"Change Opacity": "Cambia opacità",
|
||||
"Channel:": "Canale:",
|
||||
"Circle": "Cerchio",
|
||||
"Clarendon": "Clarendon",
|
||||
"Clear": "Chiaro",
|
||||
"Clear Selection": "Cancella selezione",
|
||||
"Clone Tool": "Strumento clone",
|
||||
"Clone count:": "Conteggio dei cloni:",
|
||||
"Clone tool": "Strumento clone",
|
||||
"Clone tool disabled for resized image. Please rasterize first.": "Strumento clone disabilitato per l'immagine ridimensionata. Per favore rasterizza prima.",
|
||||
"Cloned edges": "Bordi clonati",
|
||||
"Close": "Vicino",
|
||||
"Color #": "Colore #",
|
||||
"Color Zoom": "Zoom a colori",
|
||||
"Color alpha value can not be zero.": "Il valore alfa del colore non può essere zero.",
|
||||
"Color Corrections": "Correzioni di colore",
|
||||
"Color Palette": "Palette dei colori",
|
||||
"Color Zoom": "Zoom a colori",
|
||||
"Color alpha value can not be zero.": "Il valore alfa del colore non può essere zero.",
|
||||
"Color to Alpha": "Colore ad alfa",
|
||||
"Color zoom": "Zoom a colori",
|
||||
"Color:": "Colore:",
|
||||
"Colors": "Colori",
|
||||
"Colors:": "Colori:",
|
||||
"Common Filters": "Filtri comuni",
|
||||
"Composition": "Composizione",
|
||||
"Composition:": "Composizione:",
|
||||
"Content Fill": "Riempimento del contenuto",
|
||||
"Contrast": "Contrasto",
|
||||
"Contrast:": "Contrasto:",
|
||||
"Convert layer to raster": "Converti livello in raster",
|
||||
"Convert to Raster": "Converti in raster",
|
||||
"Copy Selection": "Copia selezione",
|
||||
"Copy:": "Copia:",
|
||||
"Copy to Clipboard": "Copia negli appunti",
|
||||
"Courier": "Corriere",
|
||||
"Crop": "raccolto",
|
||||
"Crop Tool": "Strumento di ritaglio",
|
||||
"Crop on rotated layer is not supported. Convert it to raster to continue.": "Il ritaglio su livello ruotato non è supportato. Convertilo in raster per continuare.",
|
||||
"Ctrl + C": "CTRL+C",
|
||||
"Ctrl+A": "Ctrl + A",
|
||||
"Ctrl+C": "Ctrl + C",
|
||||
"Ctrl+P": "CTRL+P",
|
||||
"Ctrl+V": "Ctrl + V",
|
||||
"Ctrl-P": "Ctrl-P",
|
||||
"Ctrl+Y": "Ctrl + Y",
|
||||
"Ctrl+Z": "Ctrl + Z",
|
||||
"Current": "attuale",
|
||||
"Curve": "Curva",
|
||||
"Current Color Preview": "Anteprima colore corrente",
|
||||
"Custom": "costume",
|
||||
"Data URL": "URL dei dati",
|
||||
"Data URL:": "URL dei dati:",
|
||||
"Decrease": "Diminuire",
|
||||
"Decrease Color Depth": "Diminuisci la profondità del colore",
|
||||
"Default": "Predefinito",
|
||||
"Degree:": "Grado:",
|
||||
"Del": "del",
|
||||
"Delete": "Elimina",
|
||||
"Delete Selection": "Elimina selezione",
|
||||
"Denoise": "Denoise",
|
||||
"Desaturate": "Togli saturazione",
|
||||
"Desaturate Tool": "Strumento di desatura",
|
||||
"Description:": "Descrizione:",
|
||||
"Deutsch": "Tedesco",
|
||||
"Differences": "differenze",
|
||||
"Differences Down": "Differenze giù",
|
||||
"Direction:": "Direzione:",
|
||||
"Dither": "oscillare",
|
||||
"Dithering:": "dithering:",
|
||||
"Dominant color:": "Colore dominante:",
|
||||
"Dot Screen": "Schermo a punti",
|
||||
"Down": "Giù",
|
||||
"Duplicate": "Duplicare",
|
||||
"Duplicate Layer": "Livello duplicato",
|
||||
"Duplicate layer": "Livello duplicato",
|
||||
"Dynamic": "Dinamico",
|
||||
"Edge": "Bordo",
|
||||
"Edit": "modificare",
|
||||
"Edit text": "Modifica il testo",
|
||||
"Edit text...": "Modifica il testo...",
|
||||
"Effect browser": "Browser effetti",
|
||||
"Effects": "effetti",
|
||||
"Effects browser": "Browser degli effetti",
|
||||
"Email:": "E-mail:",
|
||||
"Emboss": "rilievo",
|
||||
"Empty selection": "Selezione vuota",
|
||||
"Empty selection or type not image.": "Selezione vuota o tipo non immagine.",
|
||||
"Enable autoresize:": "Abilita ridimensionamento automatico:",
|
||||
"End": "Fine",
|
||||
"English": "Inglese",
|
||||
"English (UK)": "Inglese (Regno Unito)",
|
||||
"Enrich": "Arricchire",
|
||||
"Erase": "Cancellare",
|
||||
"Erase on rotate object is disabled. Sorry.": "Cancella su ruotare l'oggetto è disabilitato. Scusate.",
|
||||
"Enter": "accedere",
|
||||
"Erase Tool": "Strumento di cancellazione",
|
||||
"Erase on rotate object is disabled. Please rasterize first.": "La cancellazione durante la rotazione dell'oggetto è disabilitata. Per favore rasterizza prima.",
|
||||
"Error": "Errore",
|
||||
"Error connecting to service.": "Errore durante la connessione al servizio.",
|
||||
"Error: can not load image.": "Errore: impossibile caricare l'immagine.",
|
||||
"Error loading the list of fonts from Google.": "Errore durante il caricamento dell'elenco dei caratteri da Google.",
|
||||
"Error registering service worker": "Errore durante la registrazione dell'operatore del servizio",
|
||||
"Error: can not find filter:": "Errore: impossibile trovare il filtro:",
|
||||
"Error: can not find layer with id:": "Errore: impossibile trovare il livello con ID:",
|
||||
"Error: missing details event target": "Errore: manca il bersaglio dell'evento dettagli",
|
||||
"Error: unknown layer type:": "Errore: tipo di livello sconosciuto:",
|
||||
"Error: unsupported attribute type:": "Errore: tipo di attributo non supportato:",
|
||||
"Error: wrong key:": "Errore: chiave errata:",
|
||||
"Esc": "Esc",
|
||||
"Escape": "Fuga",
|
||||
"Español": "Español",
|
||||
"Expand edges": "Espandi i bordi",
|
||||
"Exponent:": "Esponente:",
|
||||
"Export": "Esportare",
|
||||
"External": "Esterno",
|
||||
"Factor:": "Fattore:",
|
||||
"File": "File",
|
||||
"File name:": "Nome del file:",
|
||||
"File size:": "Dimensione del file:",
|
||||
"Fill": "Riempire",
|
||||
"Fill Tool": "Strumento di riempimento",
|
||||
"Fit": "In forma",
|
||||
"Fit Window": "Finestra adatta",
|
||||
"Fit window": "Adatta la finestra",
|
||||
"Flatten Image": "Immagine piatta",
|
||||
"Flip": "Flip",
|
||||
"FloydSteinberg-serpentine": "FloydSteinberg-serpentina",
|
||||
"French": "francese",
|
||||
"Font": "Font",
|
||||
"Français": "Français",
|
||||
"Full HD, 1080p": "Full HD, 1080p",
|
||||
"GIF - Graphics Interchange Format": "GIF - Graphics Interchange Format",
|
||||
"Full Screen": "A schermo intero",
|
||||
"Full layers data": "Dati a strati completi",
|
||||
"Gap:": "Gap:",
|
||||
"Gaussian Blur": "Sfocatura gaussiana",
|
||||
"German": "Tedesco",
|
||||
"Gif delay:": "Ritardo Gif:",
|
||||
"Gingham": "Percalle",
|
||||
"GitHub:": "GitHub:",
|
||||
"Gradient": "Pendenza",
|
||||
"Gradient Radius:": "Raggio di pendenza:",
|
||||
"Grains": "Grani",
|
||||
"Graphics Interchange Format": "Formato di interscambio grafico",
|
||||
"Gray": "Grigio",
|
||||
"Grayscale": "Scala di grigi",
|
||||
"Greek": "greco",
|
||||
"Green": "verde",
|
||||
"Green channel:": "Canale Verde:",
|
||||
"Green:": "Verde:",
|
||||
"Greyscale:": "Scala di grigi:",
|
||||
"Grid": "Griglia",
|
||||
"Grid on\/off": "Griglia on \/ off",
|
||||
"Guides": "Guide",
|
||||
"Guides enabled.": "Guide abilitate.",
|
||||
"H Radius:": "Raggio H:",
|
||||
"H. Align:": "H. Allinea:",
|
||||
"Heatmap": "Mappa di calore",
|
||||
"Height (%):": "Altezza (%):",
|
||||
"Height:": "Altezza:",
|
||||
"Help": "Aiuto",
|
||||
"Helvetica": "Helvetica",
|
||||
"Hermite": "Hermite",
|
||||
"Hex:": "Esadecimale:",
|
||||
"Hex": "Esadecimale",
|
||||
"Hide": "Nascondere",
|
||||
"Histogram": "Istogramma",
|
||||
"Histogram:": "Istogramma:",
|
||||
"Home": "Casa",
|
||||
"Horizontal": "Orizzontale",
|
||||
"Horizontal Alignment": "Allineamento orizzontale",
|
||||
"Horizontal blur:": "Sfocatura orizzontale:",
|
||||
"Horizontal:": "Orizzontale:",
|
||||
"Hue": "Hue",
|
||||
"Hue Rotate": "Tonalità Ruota",
|
||||
"Hue:": "Hue:",
|
||||
"Image": "Immagine",
|
||||
"Image data with multi-layers. Can be opened using miniPaint -": "Dati immagine con multi-layer. Può essere aperto usando miniPaint -",
|
||||
"Impact": "urto",
|
||||
"In proportion:": "In proporzione:",
|
||||
"Increase": "Aumentare",
|
||||
"Information": "Informazione",
|
||||
"Insert:": "Inserire:",
|
||||
"Inkwell": "Calamaio",
|
||||
"Insert": "Inserire",
|
||||
"Insert guides": "Inserire le guide",
|
||||
"Insert new layer": "Inserisci un nuovo livello",
|
||||
"Instagram Filters": "Filtri Instagram",
|
||||
"Invalid Hex Code": "Codice esadecimale non valido",
|
||||
"Italiano": "Italiano",
|
||||
"Italic": "Corsivo",
|
||||
"JPG - JPG\/JPEG Format": "JPG - Formato JPG \/ JPEG",
|
||||
"JPG, WEBP quality:": "JPG, qualità WEBP:",
|
||||
"JSON - Full layers data": "JSON - Dati a strati completi",
|
||||
"Japanese": "giapponese",
|
||||
"JPG\/JPEG Format": "Formato JPG \/ JPEG",
|
||||
"Kerning:": "Crenatura:",
|
||||
"Key-Points": "Punti chiave",
|
||||
"KeyU": "KeyU",
|
||||
"Keyboard Shortcuts": "Tasti rapidi",
|
||||
"Keyword:": "Parola chiave:",
|
||||
"Korean": "coreano",
|
||||
"Lanczos": "Lanczos",
|
||||
"Landscape": "Paesaggio",
|
||||
"Language": "linguaggio",
|
||||
"Last modified": "Ultima modifica",
|
||||
"Layer": "Strato",
|
||||
"Layer details": "Dettagli del livello",
|
||||
"Layer is already image.": "Il livello è già immagine.",
|
||||
"Layer must be image, convert it to raster to apply this tool.": "Il livello deve essere un'immagine, convertirlo in raster per applicare questo strumento.",
|
||||
"Layer is empty.": "Il livello è vuoto.",
|
||||
"Layer is not compatible with resize": "Il livello non è compatibile con il ridimensionamento",
|
||||
"Layer is vector, convert it to raster to apply this tool.": "Il livello è vettoriale, convertilo in raster per applicare questo strumento.",
|
||||
"Layers": "Livelli",
|
||||
"Layers:": "strati:",
|
||||
"Layout:": "Disposizione:",
|
||||
"Left": "Sinistra",
|
||||
"Left to Right": "Da sinistra a destra",
|
||||
"Level:": "Livello:",
|
||||
"Levels:": "livelli:",
|
||||
"Lietuvių": "Lietuvių",
|
||||
"Line": "Linea",
|
||||
"Lum:": "Lum:",
|
||||
"Lo-fi": "Lo-fi",
|
||||
"Luminance:": "Luminance:",
|
||||
"Magic Wand Tool": "Strumento bacchetta magica",
|
||||
"Luminosity": "Luminosità",
|
||||
"Magic Eraser Tool": "Strumento gomma magica",
|
||||
"Merge Down": "Unisci giù",
|
||||
"Merge Layers": "Unire i livelli",
|
||||
"Merged": "Fusione",
|
||||
"Metrics": "Metrica",
|
||||
"Middle": "Medio",
|
||||
"Missing at least 1 size parameter.": "Manca almeno 1 parametro di dimensione.",
|
||||
"Missing permissions to write to Clipboard.cc": "Mancano i permessi per scrivere su Clipboard.cc",
|
||||
"Mode:": "Modalità:",
|
||||
"Module function not found.": "Funzione del modulo non trovata.",
|
||||
"Modules class not found:": "Classe di moduli non trovata:",
|
||||
"Monospace": "Monospace",
|
||||
"Mosaic": "Mosaico",
|
||||
"Mouse:": "Topo:",
|
||||
"Move": "Mossa",
|
||||
"Move down": "Abbassati",
|
||||
"Move up": "Andare avanti",
|
||||
"Move Layer": "Sposta livello",
|
||||
"Move layer down": "Sposta il livello verso il basso",
|
||||
"Move layer up": "Sposta il livello verso l'alto",
|
||||
"Name:": "Nome:",
|
||||
"Needs at least 2 layers.": "Ha bisogno di almeno 2 strati.",
|
||||
"Negative": "Negativo",
|
||||
"New": "Nuovo",
|
||||
"New Bezier Layer": "Nuovo livello Bezier",
|
||||
"New Brush Layer": "Nuovo livello pennello",
|
||||
"New Ellipse Layer": "Nuovo livello ellisse",
|
||||
"New File": "Nuovo file",
|
||||
"New Gradient Layer": "Nuovo livello sfumato",
|
||||
"New Layer": "Nuovo strato",
|
||||
"New Line Layer": "Nuovo livello di linea",
|
||||
"New Pencil Layer": "Nuovo livello matita",
|
||||
"New Polygon Layer": "Nuovo livello poligono",
|
||||
"New Rectangle Layer": "Nuovo livello rettangolo",
|
||||
"New Text Layer": "Nuovo livello di testo",
|
||||
"New file": "Nuovo file",
|
||||
"New from Selection": "Novità dalla selezione",
|
||||
"New layer": "Nuovo strato",
|
||||
"New width can not be smaller then current width": "La nuova larghezza non può essere più piccola della larghezza attuale",
|
||||
"Normal": "Normale",
|
||||
"Next": "Prossimo",
|
||||
"Night Vision": "Visione notturna",
|
||||
"None": "Nessuna",
|
||||
"Nothing is selected.": "Niente è selezionato.",
|
||||
"Offset X:": "Offset X:",
|
||||
"Offset Y:": "Offset Y:",
|
||||
@ -217,23 +298,34 @@
|
||||
"Open Data URL": "Apri URL dati",
|
||||
"Open Directory": "Apri Directory",
|
||||
"Open File": "Apri il file",
|
||||
"Open File Data URL": "Apri URL dati file",
|
||||
"Open File URL": "Apri URL file",
|
||||
"Open File Webcam": "Apri File Webcam",
|
||||
"Open Image": "Apri immagine",
|
||||
"Open JSON File": "Apri file JSON",
|
||||
"Open Test Template": "Apri modello di prova",
|
||||
"Open URL": "Apri URL",
|
||||
"Open data URL": "Apri l'URL dei dati",
|
||||
"Open from Webcam": "Apri da webcam",
|
||||
"Original Size": "Misura originale",
|
||||
"PNG - Portable Network Graphics": "PNG - Portable Network Graphics",
|
||||
"PNGTOSVG - Convert Image to SVG": "PNGTOSVG - Converti immagine in SVG",
|
||||
"PageDown": "Pagina giù",
|
||||
"PageUp": "Pagina su",
|
||||
"Palette": "Tavolozza",
|
||||
"Parameter #1:": "Parametro n. 1:",
|
||||
"Parameter #2:": "Parametro n. 2:",
|
||||
"Paste": "Incolla",
|
||||
"Pencil": "Matita",
|
||||
"Percentage:": "Percentuale:",
|
||||
"Pick Color": "Scegli colore",
|
||||
"Pixels:": "pixel:",
|
||||
"Play animation": "Riproduci animazione",
|
||||
"Portuguese": "portoghese",
|
||||
"Placeholder comment for color channels": "Commento segnaposto per i canali di colore",
|
||||
"Placeholder comment for color picker": "Commento segnaposto per il selettore di colori",
|
||||
"Placeholder comment for color swatches": "Commento segnaposto per i campioni di colore",
|
||||
"Portable Network Graphics": "Grafica di rete portatile",
|
||||
"Portrait": "Ritratto",
|
||||
"Português": "Português",
|
||||
"Position:": "Posizione:",
|
||||
"Power:": "Energia:",
|
||||
"Powred by pixabay.com .": "Powred di pixabay.com.",
|
||||
"Pre-Blur:": "Pre-Blur:",
|
||||
"Preview": "Anteprima",
|
||||
"Previous": "Precedente",
|
||||
"Previous layer must be image, convert it to raster to apply this tool.": "Il livello precedente deve essere un'immagine, convertirlo in raster per applicare questo strumento.",
|
||||
@ -241,123 +333,168 @@
|
||||
"Quality:": "Qualità:",
|
||||
"Quick Load": "Carico rapido",
|
||||
"Quick Save": "Salvataggio veloce",
|
||||
"REMOVE.BG - Remove Image Background": "REMOVE.BG - Rimuovi lo sfondo dell'immagine",
|
||||
"Radial": "Radiale",
|
||||
"Radial gradient": "Gradiente radiale",
|
||||
"Radius:": "Raggio:",
|
||||
"Range:": "Gamma:",
|
||||
"Rectangle": "Rettangolo",
|
||||
"Red": "Rosso",
|
||||
"Red channel:": "Canale Rosso:",
|
||||
"Red:": "Rosso:",
|
||||
"Redo": "Rifare",
|
||||
"Remove all": "Rimuovi tutto",
|
||||
"Rename": "Rinominare",
|
||||
"Rename Layer": "Rinomina livello",
|
||||
"Rendered with errors.": "Resi con errori.",
|
||||
"Rendering...": "Rendering ...",
|
||||
"Replace Color": "Sostituisci colore",
|
||||
"Replace color": "Sostituisci colore",
|
||||
"Replacement:": "Sostituzione:",
|
||||
"Report Issues": "Segnala problemi",
|
||||
"Resample - Hermite": "Ricampionare - Hermite",
|
||||
"Reset": "Reset",
|
||||
"Reset zoom level": "Reimposta il livello di zoom",
|
||||
"Resize": "Ridimensiona",
|
||||
"Resize Boundary": "Ridimensiona confine",
|
||||
"Resize Layer": "Ridimensiona livello",
|
||||
"Resize Layers": "Ridimensiona i livelli",
|
||||
"Resize Text Layer": "Ridimensiona il livello del testo",
|
||||
"Resized as background": "Ridimensionato come sfondo",
|
||||
"Resized:": "Ridimensionato:",
|
||||
"Resolution:": "Risoluzione:",
|
||||
"Restore Alpha": "Ripristina alpha",
|
||||
"Right": "Destra",
|
||||
"Right angle:": "Angolo retto:",
|
||||
"Right to Left": "Da destra a sinistra",
|
||||
"Rotate": "Ruotare",
|
||||
"Rotate Layer": "Ruota livello",
|
||||
"Rotate is not supported on this type of object. Convert to raster?": "Ruota non è supportato su questo tipo di oggetto. Converti in raster?",
|
||||
"Rotate left": "Gira a sinistra",
|
||||
"Rotate:": "Ruotare:",
|
||||
"Russian": "russo",
|
||||
"Sat:": "Sat:",
|
||||
"Ruler": "Governate",
|
||||
"SQUOOSH - Compress and Compare Images": "SQUOOSH - Comprimi e confronta le immagini",
|
||||
"Saturate": "Saturare",
|
||||
"Saturation": "Saturazione",
|
||||
"Saturation:": "Saturazione:",
|
||||
"Save": "Salvare",
|
||||
"Save As": "Salva come",
|
||||
"Save As Data URL": "Salva come URL dei dati",
|
||||
"Save as": "Salva come",
|
||||
"Save as type:": "Salva come tipo:",
|
||||
"Save layers:": "Salva livelli:",
|
||||
"Save resolution:": "Salva risoluzione:",
|
||||
"Scaling up is not supported in Hermite, using Lanczos.": "L'aumento di scala non è supportato in Hermite, utilizzando Lanczos.",
|
||||
"Scroll down": "Scorri verso il basso",
|
||||
"Scroll up": "Scorrere verso l'alto",
|
||||
"Search": "Ricerca",
|
||||
"Search Images": "Cerca immagini",
|
||||
"Search for Font": "Cerca carattere",
|
||||
"Search:": "Ricerca:",
|
||||
"Select All": "Seleziona tutto",
|
||||
"Select Text Layer": "Seleziona Livello testo",
|
||||
"Select object tool": "Seleziona lo strumento oggetto",
|
||||
"Selected": "Selezionato",
|
||||
"Selection": "Selezione",
|
||||
"Selection Tool": "Strumento di selezione",
|
||||
"Sensitivity:": "sensibilità:",
|
||||
"Separated": "Separato",
|
||||
"Separated (original types)": "Separati (tipi originali)",
|
||||
"Sepia": "nero di seppia",
|
||||
"Set Image Size": "Imposta la dimensione dell'immagine",
|
||||
"Settings": "impostazioni",
|
||||
"Shadow": "Ombra",
|
||||
"Shadow:": "Ombra:",
|
||||
"Shapes": "Forme",
|
||||
"Shapes (H)": "Forme (H)",
|
||||
"Sharpen": "Affilare",
|
||||
"Sharpen tool": "Affila lo strumento",
|
||||
"Sharpen Tool": "Strumento di nitidezza",
|
||||
"Sharpen:": "Affilare:",
|
||||
"Shift + S": "Maiusc+S",
|
||||
"Shortcut Key:": "Tasto di scelta rapida:",
|
||||
"Show": "Spettacolo",
|
||||
"Show \/ Hide": "Mostra nascondi",
|
||||
"Show file size:": "Mostra la dimensione del file:",
|
||||
"Simple": "Semplice",
|
||||
"Size": "Dimensione",
|
||||
"Size is too big, max": "La dimensione è troppo grande, max",
|
||||
"Size:": "Dimensione:",
|
||||
"Skip - layer must be image.": "Salta: il livello deve essere un'immagine.",
|
||||
"Solarize": "solarizzare",
|
||||
"Sorry, cold not load getUserMedia() data:": "Spiacenti, non caricare i dati getUserMedia ():",
|
||||
"Sorry, image could not be loaded.": "Spiacenti, impossibile caricare l'immagine.",
|
||||
"Sorry, image could not be loaded. Try copy image and paste it.": "Spiacenti, l'immagine non può essere caricata. Prova a copiare l'immagine e incollarla.",
|
||||
"Sorry, image is too big, max 5 MB.": "Siamo spiacenti, l'immagine è troppo grande, max 5 MB.",
|
||||
"Source is empty, right click on image to save source position.": "L'origine è vuota, fare clic con il tasto destro sull'immagine per salvare la posizione della fonte.",
|
||||
"Source coordinates saved.": "Coordinate di origine salvate.",
|
||||
"Source is empty, right click on image or use long press to save source position.": "La sorgente è vuota, fare clic con il tasto destro sull'immagine o premere a lungo per salvare la posizione della sorgente.",
|
||||
"Sprites": "sprites",
|
||||
"Square": "Piazza",
|
||||
"Stream:": "Stream:",
|
||||
"Strength:": "Forza:",
|
||||
"Strict": "Rigoroso",
|
||||
"Stroke": "Ictus",
|
||||
"Stroke:": "Ictus:",
|
||||
"TINYPNG - Compress PNG and JPEG": "TINYPNG - Comprimi PNG e JPEG",
|
||||
"Tab": "Tab",
|
||||
"Tag Image File Format": "Etichetta il formato del file immagine",
|
||||
"Tahoma": "Tahoma",
|
||||
"Target:": "Bersaglio:",
|
||||
"Text": "Testo",
|
||||
"Text example": "Esempio di testo",
|
||||
"Text:": "Testo:",
|
||||
"The quick brown fox jumps over the lazy dog.": "La veloce volpe marrone salta sopra il cane pigro.",
|
||||
"There": "Là",
|
||||
"There are no layers behind.": "Non ci sono strati dietro.",
|
||||
"There is only 1 layer.": "C'è solo 1 strato.",
|
||||
"This layer must contain an image. Please convert it to raster to apply this tool.": "Il livello deve essere un'immagine, convertirlo in raster per applicare questo strumento.",
|
||||
"Tilt Shift": "Tilt Shift",
|
||||
"Times New Roman": "Times New Roman",
|
||||
"Toaster": "Tostapane",
|
||||
"Toggle": "Toggle",
|
||||
"Toggle Color Channels": "Attiva \/ disattiva i canali colore",
|
||||
"Toggle Color Picker": "Attiva \/ disattiva il selettore dei colori",
|
||||
"Toggle Menu": "Toggle Menu",
|
||||
"Toggle Swatches": "Attiva \/ disattiva campioni",
|
||||
"Tools": "Utensili",
|
||||
"Tools class not found:": "Classe di strumenti non trovata:",
|
||||
"Top": "Superiore",
|
||||
"Top to Bottom": "Dall'alto al basso",
|
||||
"Total pixels:": "Pixel totali:",
|
||||
"Translate": "Tradurre",
|
||||
"Translate Layer": "Traduci Layer",
|
||||
"Translate error, can not find dictionary:": "Traduci errore, impossibile trovare il dizionario:",
|
||||
"Transparency background:": "Sfondo della trasparenza:",
|
||||
"Transparent:": "Trasparente:",
|
||||
"Trim": "tagliare",
|
||||
"Trim everything:": "Taglia tutto:",
|
||||
"Trim Layers": "Livelli di taglio",
|
||||
"Trim borders:": "Taglia bordi:",
|
||||
"Trim layer:": "Strato di rifinitura:",
|
||||
"Trim white color?": "Tagliare il colore bianco?",
|
||||
"Turkish": "Turco",
|
||||
"Type:": "Tipo:",
|
||||
"Türkçe": "Türkçe",
|
||||
"Undo": "Disfare",
|
||||
"Undo disabled.": "Annulla disabilitato.",
|
||||
"Undo enabled.": "Annulla abilitato.",
|
||||
"Undo is not available.": "Annulla non è disponibile.",
|
||||
"Undo levels changed to 1.": "Annulla i livelli modificati in 1.",
|
||||
"Undo levels restored to": "Annulla i livelli ripristinati in",
|
||||
"Unique colors:": "Colori unici:",
|
||||
"Up": "Su",
|
||||
"Update": "Aggiornamento",
|
||||
"Update Brush Layer": "Aggiorna livello pennello",
|
||||
"Update Pencil Layer": "Aggiorna livello matita",
|
||||
"Update guides": "Guide di aggiornamento",
|
||||
"Use Ctrl+V keyboard shortcut to paste from Clipboard.": "Usa la scorciatoia da tastiera Ctrl + V per incollare dagli Appunti.",
|
||||
"V Radius:": "V raggio:",
|
||||
"V. Align:": "V. Allinea:",
|
||||
"Valencia": "Valencia",
|
||||
"Verdana": "Verdana",
|
||||
"Version:": "Versione:",
|
||||
"Vertical": "Verticale",
|
||||
"Vertical Alignment": "Allineamento verticale",
|
||||
"Vertical blur:": "Sfocatura verticale:",
|
||||
"Vertical:": "Verticale:",
|
||||
"Vibrance": "Vibrance",
|
||||
"View": "Visualizzazione",
|
||||
"Vignette": "vignette",
|
||||
"ViliusL": "ViliusL",
|
||||
"Vintage": "Vintage ▾",
|
||||
"Visible:": "Visibile:",
|
||||
"WEBP - Weppy File Format": "WEBP - Formato file Weppy",
|
||||
"Webcam": "Webcam",
|
||||
"Webcam #": "Webcam #",
|
||||
"Website:": "Sito web:",
|
||||
"Weppy File Format": "Formato file Weppy",
|
||||
"Width (%):": "Larghezza (%):",
|
||||
"Width:": "Larghezza:",
|
||||
"Windows Bitmap": "Bitmap di Windows",
|
||||
"Word": "parola",
|
||||
"Word + Letter": "Parola + Lettera",
|
||||
"Wrap At:": "Avvolgi a:",
|
||||
"Wrap:": "Avvolgere:",
|
||||
"Wrong dimensions": "Dimensioni sbagliate",
|
||||
"Wrong file type, must be image or json.": "Tipo di file errato, deve essere immagine o json.",
|
||||
"X end:": "X fine:",
|
||||
"X position:": "Posizione X:",
|
||||
"X start:": "X inizio:",
|
||||
"X-Pro II": "X-Pro II",
|
||||
"Y end:": "Fine Y:",
|
||||
"Y position:": "Posizione Y:",
|
||||
"Y start:": "Y inizio:",
|
||||
|
||||
@ -1,210 +1,291 @@
|
||||
{
|
||||
"2d": "2d",
|
||||
"480p": "480p",
|
||||
"About": "約",
|
||||
"A problem occurred while removing undo history. It": "元に戻す履歴の削除中に問題が発生しました。それ",
|
||||
"About": "開発者について",
|
||||
"Active": "アクティブ",
|
||||
"Aden": "アデン",
|
||||
"Advanced": "上級",
|
||||
"All": "すべて",
|
||||
"Alpha": "アルファ",
|
||||
"Alpha:": "アルファ:",
|
||||
"Anonymous": "匿名",
|
||||
"Anti aliasing": "アンチエイリアシング",
|
||||
"Application markup may have changed,": "アプリケーションのマークアップが変更されている可能性があります。",
|
||||
"Arial": "Arial",
|
||||
"Arrow": "矢印",
|
||||
"ArrowDown": "ArrowDown",
|
||||
"ArrowLeft": "ArrowLeft",
|
||||
"ArrowRight": "ArrowRight",
|
||||
"ArrowUp": "ArrowUp",
|
||||
"Author:": "著者:",
|
||||
"Auto Adjust Colors": "色を自動調整する",
|
||||
"Auto Kerning": "自動カーニング",
|
||||
"Average:": "平均:",
|
||||
"BMP - Windows Bitmap": "BMP - Windowsビットマップ",
|
||||
"Backspace": "バックスペース",
|
||||
"Base": "ベース",
|
||||
"Basic": "ベーシック",
|
||||
"Black and White": "黒と白",
|
||||
"Blue": "青",
|
||||
"Blue channel:": "ブルーチャンネル:",
|
||||
"Blue:": "青:",
|
||||
"Blueprint": "青写真",
|
||||
"Blur Radius:": "ぼかし半径:",
|
||||
"Blur Tool": "ぼかしツール",
|
||||
"Blur power:": "ぼかしパワー:",
|
||||
"Blur tool": "ぼかしツール",
|
||||
"Bold": "大胆な",
|
||||
"Bold Italic": "ボールドイタリック",
|
||||
"Borders": "罫線",
|
||||
"Bottom": "下",
|
||||
"Bottom to Top": "下から上へ",
|
||||
"Bounds:": "境界:",
|
||||
"Box": "ボックス",
|
||||
"Box Blur": "ボックスのぼかし",
|
||||
"Box blur": "ボックスボケ",
|
||||
"Brightness": "輝度",
|
||||
"Brightness:": "輝度:",
|
||||
"Brush": "みがきます",
|
||||
"Bulge\/Pinch tool": "バルジ\/ピンチツール",
|
||||
"Bulge\/Pinch Tool": "バルジ\/ピンチツール",
|
||||
"Burn": "燃やす",
|
||||
"CSS Filters": "CSSフィルタ",
|
||||
"Can not animate 1 layer.": "1つのレイヤーをアニメートできません。",
|
||||
"Can not find previous layer.": "以前のレイヤーが見つかりません。",
|
||||
"Can not use this tool on current layer: image already takes all area.": "現在のレイヤーではこのツールを使用できません: 画像がすでにすべての領域を占めています。",
|
||||
"Cancel": "キャンセル",
|
||||
"Canvas Size": "キャンバスサイズ",
|
||||
"Center": "センター",
|
||||
"Center x:": "センターx:",
|
||||
"Center y:": "センターy:",
|
||||
"Center:": "センター:",
|
||||
"Change Composition": "構成を変更する",
|
||||
"Change Layer Details": "レイヤーの詳細を変更する",
|
||||
"Change Opacity": "不透明度を変更する",
|
||||
"Channel:": "チャネル:",
|
||||
"Circle": "サークル",
|
||||
"Clarendon": "クラレンドン",
|
||||
"Clear": "クリア",
|
||||
"Clear Selection": "明確な選択",
|
||||
"Clone Tool": "クローンツール",
|
||||
"Clone count:": "クローン数:",
|
||||
"Clone tool": "クローンツール",
|
||||
"Clone tool disabled for resized image. Please rasterize first.": "サイズ変更された画像に対してクローン ツールが無効になりました。まずはラスタライズを行ってください。",
|
||||
"Cloned edges": "クローンエッジ",
|
||||
"Close": "近い",
|
||||
"Color #": "色 #",
|
||||
"Color Zoom": "カラーズーム",
|
||||
"Color alpha value can not be zero.": "色のアルファ値はゼロにすることはできません。",
|
||||
"Color Corrections": "色補正",
|
||||
"Color Palette": "カラーパレット",
|
||||
"Color Zoom": "カラーズーム",
|
||||
"Color alpha value can not be zero.": "色のアルファ値はゼロにすることはできません。",
|
||||
"Color to Alpha": "カラーからアルファ",
|
||||
"Color zoom": "カラーズーム",
|
||||
"Color:": "色:",
|
||||
"Colors": "色",
|
||||
"Colors:": "色:",
|
||||
"Composition": "組成",
|
||||
"Composition:": "組成:",
|
||||
"Common Filters": "共通フィルター",
|
||||
"Composition": "レイヤーの合成",
|
||||
"Composition:": "レイヤーの合成:",
|
||||
"Content Fill": "コンテンツの埋め込み",
|
||||
"Contrast": "コントラスト",
|
||||
"Contrast:": "コントラスト:",
|
||||
"Convert layer to raster": "レイヤーをラスターに変換",
|
||||
"Convert to Raster": "ラスタに変換する",
|
||||
"Copy Selection": "選択コピー",
|
||||
"Copy:": "コピー:",
|
||||
"Copy to Clipboard": "クリップボードにコピー",
|
||||
"Courier": "宅配便",
|
||||
"Crop": "作物",
|
||||
"Crop Tool": "切り抜きツール",
|
||||
"Crop on rotated layer is not supported. Convert it to raster to continue.": "回転したレイヤーでのトリミングはサポートされていません。続行するには、ラスターに変換してください。",
|
||||
"Ctrl + C": "Ctrl + C",
|
||||
"Ctrl+A": "Ctrl + A",
|
||||
"Ctrl+C": "Ctrl + C",
|
||||
"Ctrl+P": "Ctrl+P",
|
||||
"Ctrl+V": "Ctrl + V",
|
||||
"Ctrl-P": "Ctrl-P",
|
||||
"Ctrl+Y": "Ctrl + Y",
|
||||
"Ctrl+Z": "Ctrl + Z",
|
||||
"Current": "現在",
|
||||
"Curve": "曲線",
|
||||
"Current Color Preview": "現在のカラープレビュー",
|
||||
"Custom": "カスタム",
|
||||
"Data URL": "データURL",
|
||||
"Data URL:": "データURL:",
|
||||
"Decrease": "減少",
|
||||
"Decrease Color Depth": "色深度を減らす",
|
||||
"Default": "デフォルト",
|
||||
"Degree:": "度:",
|
||||
"Del": "デル",
|
||||
"Delete": "削除",
|
||||
"Delete Selection": "選択を削除する",
|
||||
"Denoise": "デノアーズ",
|
||||
"Desaturate": "不飽和化する",
|
||||
"Desaturate Tool": "彩度を下げるツール",
|
||||
"Description:": "説明:",
|
||||
"Deutsch": "ドイツ語",
|
||||
"Differences": "相違点",
|
||||
"Differences Down": "相違点",
|
||||
"Direction:": "方向:",
|
||||
"Dither": "ディザ",
|
||||
"Dithering:": "ディザリング:",
|
||||
"Dominant color:": "支配的な色:",
|
||||
"Dot Screen": "ドットスクリーン",
|
||||
"Down": "ダウン",
|
||||
"Duplicate": "重複",
|
||||
"Duplicate Layer": "重複レイヤー",
|
||||
"Duplicate layer": "レイヤーの複製",
|
||||
"Dynamic": "動的",
|
||||
"Edge": "エッジ",
|
||||
"Edit": "編集",
|
||||
"Edit text": "テキストを編集する",
|
||||
"Edit text...": "テキストを編集...",
|
||||
"Effect browser": "エフェクトブラウザ",
|
||||
"Effects": "エフェクト",
|
||||
"Effects browser": "エフェクトブラウザ",
|
||||
"Email:": "Eメール:",
|
||||
"Emboss": "エンボス",
|
||||
"Empty selection": "空の選択",
|
||||
"Empty selection or type not image.": "空の選択またはタイプではない画像。",
|
||||
"Enable autoresize:": "自動サイズ変更を有効にする:",
|
||||
"End": "終わり",
|
||||
"English": "英語",
|
||||
"English (UK)": "英語(イギリス)",
|
||||
"Enrich": "エンリッチ",
|
||||
"Erase": "消去する",
|
||||
"Erase on rotate object is disabled. Sorry.": "回転オブジェクトの消去が無効になっています。ごめんなさい。",
|
||||
"Enter": "入る",
|
||||
"Erase Tool": "消去ツール",
|
||||
"Erase on rotate object is disabled. Please rasterize first.": "オブジェクトの回転時の消去は無効になっています。まずはラスタライズを行ってください。",
|
||||
"Error": "エラー",
|
||||
"Error connecting to service.": "サービスに接続中にエラーが発生しました。",
|
||||
"Error: can not load image.": "エラー:画像を読み込めません。",
|
||||
"Error loading the list of fonts from Google.": "Google からフォントのリストをロード中にエラーが発生しました。",
|
||||
"Error registering service worker": "Service Worker の登録エラー",
|
||||
"Error: can not find filter:": "エラー:フィルターが見つかりません:",
|
||||
"Error: can not find layer with id:": "エラー:IDのレイヤーが見つかりません:",
|
||||
"Error: missing details event target": "エラー:詳細イベントターゲットがありません",
|
||||
"Error: unsupported attribute type:": "エラー:サポートされていない属性タイプ:",
|
||||
"Error: wrong key:": "エラー:間違ったキー:",
|
||||
"Error: unknown layer type:": "エラー:不明なレイヤータイプ:",
|
||||
"Error: unsupported attribute type:": "エラー: サポートされていない属性タイプ:",
|
||||
"Esc": "ESC",
|
||||
"Escape": "逃れる",
|
||||
"Español": "スペイン語",
|
||||
"Expand edges": "エッジを開く",
|
||||
"Exponent:": "指数:",
|
||||
"Export": "エクスポート",
|
||||
"External": "外部サイト",
|
||||
"Factor:": "因子:",
|
||||
"File": "ファイル",
|
||||
"File name:": "ファイル名:",
|
||||
"File size:": "ファイルサイズ:",
|
||||
"Fill": "塗りつぶす",
|
||||
"Fill Tool": "塗りつぶしツール",
|
||||
"Fit": "フィット",
|
||||
"Fit Window": "ウィンドウに合わせる",
|
||||
"Fit window": "ウィンドウにフィット",
|
||||
"Flatten Image": "画像を平ら",
|
||||
"Flip": "フリップ",
|
||||
"Flip": "反転",
|
||||
"FloydSteinberg-serpentine": "FloydSteinberg-蛇紋文字",
|
||||
"French": "フランス語",
|
||||
"Font": "フォント",
|
||||
"Français": "フランス語",
|
||||
"Full HD, 1080p": "フルHD、1080p",
|
||||
"GIF - Graphics Interchange Format": "GIF - グラフィックスインターチェンジ形式",
|
||||
"Full Screen": "全画面表示",
|
||||
"Full layers data": "フルレイヤーデータ",
|
||||
"Gap:": "ギャップ:",
|
||||
"Gaussian Blur": "ガウスぼかし",
|
||||
"German": "ドイツ人",
|
||||
"Gif delay:": "GIF遅延:",
|
||||
"Gingham": "ギンガム",
|
||||
"GitHub:": "GitHub:",
|
||||
"Gradient": "勾配",
|
||||
"Gradient Radius:": "勾配半径:",
|
||||
"Grains": "穀類",
|
||||
"Grains": "フィルムグレイン",
|
||||
"Graphics Interchange Format": "グラフィック交換フォーマット",
|
||||
"Gray": "グレー",
|
||||
"Grayscale": "グレースケール",
|
||||
"Greek": "ギリシャ語",
|
||||
"Green": "緑",
|
||||
"Green channel:": "グリーンチャネル:",
|
||||
"Green:": "緑:",
|
||||
"Greyscale:": "グレースケール:",
|
||||
"Grid": "グリッド",
|
||||
"Grid on\/off": "グリッドのオン\/オフ",
|
||||
"Guides": "ガイド",
|
||||
"Guides enabled.": "ガイドが有効になりました。",
|
||||
"H Radius:": "H半径:",
|
||||
"H. Align:": "H.整列:",
|
||||
"Heatmap": "ヒートマップ",
|
||||
"Height (%):": "高さ (%):",
|
||||
"Height:": "高さ:",
|
||||
"Help": "助けて",
|
||||
"Help": "Help",
|
||||
"Helvetica": "ヘルベチカ",
|
||||
"Hermite": "エルミート",
|
||||
"Hex:": "16進数:",
|
||||
"Hex": "16進数",
|
||||
"Hide": "隠れる",
|
||||
"Histogram": "ヒストグラム",
|
||||
"Histogram:": "ヒストグラム:",
|
||||
"Home": "ホーム",
|
||||
"Horizontal": "水平",
|
||||
"Horizontal Alignment": "水平方向の配置",
|
||||
"Horizontal blur:": "水平ブラー:",
|
||||
"Horizontal:": "水平:",
|
||||
"Hue": "色相",
|
||||
"Hue Rotate": "色相回転",
|
||||
"Hue:": "色相:",
|
||||
"Image": "画像",
|
||||
"Image data with multi-layers. Can be opened using miniPaint -": "マルチレイヤーの画像データ。 miniPaintを使用して開くことができます -",
|
||||
"Impact": "影響",
|
||||
"In proportion:": "比例して:",
|
||||
"Increase": "増加する",
|
||||
"Information": "情報",
|
||||
"Insert:": "インサート:",
|
||||
"Inkwell": "インク壺",
|
||||
"Insert": "追加",
|
||||
"Insert guides": "インサートガイド",
|
||||
"Insert new layer": "新しいレイヤーを挿入",
|
||||
"Instagram Filters": "Instagramフィルター",
|
||||
"Invalid Hex Code": "無効な16進コード",
|
||||
"Italiano": "イタリア語",
|
||||
"Italic": "イタリック",
|
||||
"JPG - JPG\/JPEG Format": "JPG - JPG \/ JPEG形式",
|
||||
"JPG, WEBP quality:": "JPG、WEBP品質:",
|
||||
"JSON - Full layers data": "JSON - フルレイヤーデータ",
|
||||
"Japanese": "日本語",
|
||||
"JPG\/JPEG Format": "JPG \/ JPEG形式",
|
||||
"Kerning:": "字詰め:",
|
||||
"Key-Points": "キーポイント",
|
||||
"KeyU": "キーユー",
|
||||
"Keyboard Shortcuts": "キーボードショートカット",
|
||||
"Keyword:": "キーワード:",
|
||||
"Korean": "韓国語",
|
||||
"Lanczos": "ランチョス",
|
||||
"Landscape": "風景",
|
||||
"Language": "言語",
|
||||
"Last modified": "最終更新日",
|
||||
"Layer": "レイヤー",
|
||||
"Layer details": "レイヤの詳細",
|
||||
"Layer is already image.": "レイヤは既に画像です。",
|
||||
"Layer must be image, convert it to raster to apply this tool.": "レイヤはイメージでなければならず、このツールを適用するにはラスタに変換する必要があります。",
|
||||
"Layer is empty.": "レイヤーが空です。",
|
||||
"Layer is not compatible with resize": "レイヤーはサイズ変更と互換性がありません",
|
||||
"Layer is vector, convert it to raster to apply this tool.": "レイヤーはベクターです。このツールを適用するには、レイヤーをラスターに変換してください。",
|
||||
"Layers": "レイヤー",
|
||||
"Layers:": "レイヤー:",
|
||||
"Layout:": "レイアウト:",
|
||||
"Left": "左",
|
||||
"Left to Right": "左から右へ",
|
||||
"Level:": "レベル:",
|
||||
"Levels:": "レベル:",
|
||||
"Lietuvių": "Lietuvių",
|
||||
"Line": "ライン",
|
||||
"Lum:": "Lum:",
|
||||
"Lo-fi": "ローファイ",
|
||||
"Luminance:": "輝度:",
|
||||
"Magic Wand Tool": "マジックワンドツール",
|
||||
"Luminosity": "光度",
|
||||
"Magic Eraser Tool": "魔法の消しゴムツール",
|
||||
"Merge Down": "マージダウン",
|
||||
"Merge Layers": "レイヤーをマージする",
|
||||
"Merged": "合併",
|
||||
"Metrics": "指標",
|
||||
"Middle": "中間",
|
||||
"Missing at least 1 size parameter.": "少なくとも1つのサイズパラメータがありません。",
|
||||
"Missing permissions to write to Clipboard.cc": "Clipboard.ccに書き込むためのアクセス許可がありません",
|
||||
"Mode:": "モード:",
|
||||
"Module function not found.": "モジュール機能が見つかりません。",
|
||||
"Modules class not found:": "モジュールクラスが見つかりません:",
|
||||
"Monospace": "モノスペース",
|
||||
"Mosaic": "モザイク",
|
||||
"Mouse:": "マウス:",
|
||||
"Move": "移動",
|
||||
"Move down": "下に移動",
|
||||
"Move up": "上がる",
|
||||
"Move Layer": "レイヤーを移動",
|
||||
"Move layer down": "レイヤーを下に移動します",
|
||||
"Move layer up": "レイヤーを上に移動",
|
||||
"Name:": "名:",
|
||||
"Needs at least 2 layers.": "少なくとも2つの層が必要です。",
|
||||
"Negative": "負",
|
||||
"New": "新しい",
|
||||
"New Bezier Layer": "新しいベジェ層",
|
||||
"New Brush Layer": "新しいブラシレイヤー",
|
||||
"New Ellipse Layer": "新しい楕円レイヤー",
|
||||
"New File": "新しいファイル",
|
||||
"New Gradient Layer": "新しいグラデーションレイヤー",
|
||||
"New Layer": "新しいレイヤー",
|
||||
"New Line Layer": "新しいラインレイヤー",
|
||||
"New Pencil Layer": "新しい鉛筆レイヤー",
|
||||
"New Polygon Layer": "新しいポリゴンレイヤー",
|
||||
"New Rectangle Layer": "新しい長方形レイヤー",
|
||||
"New Text Layer": "新しいテキストレイヤー",
|
||||
"New file": "新しいファイル",
|
||||
"New from Selection": "新しい選択から",
|
||||
"New layer": "新しいレイヤー",
|
||||
"New width can not be smaller then current width": "新しい幅は現在の幅より小さくすることはできません",
|
||||
"Normal": "ノーマル",
|
||||
"Next": "次",
|
||||
"Night Vision": "暗視ゴーグル 緑",
|
||||
"None": "なし",
|
||||
"Nothing is selected.": "何も選択されていません。",
|
||||
"Offset X:": "オフセットX:",
|
||||
"Offset Y:": "オフセットY:",
|
||||
@ -213,27 +294,38 @@
|
||||
"Online image editor.": "オンラインイメージエディタ。",
|
||||
"Opacity": "不透明度",
|
||||
"Opacity:": "不透明度:",
|
||||
"Open": "開いた",
|
||||
"Open": "開く",
|
||||
"Open Data URL": "公開データURL",
|
||||
"Open Directory": "オープンディレクトリ",
|
||||
"Open Directory": "ディレクトリを開く",
|
||||
"Open File": "ファイルを開く",
|
||||
"Open File Data URL": "ファイルデータのURLを開く",
|
||||
"Open File URL": "ファイルのURLを開く",
|
||||
"Open File Webcam": "ファイルWebカメラを開く",
|
||||
"Open Image": "画像を開く",
|
||||
"Open JSON File": "JSONファイルを開く",
|
||||
"Open Test Template": "テストテンプレートを開く",
|
||||
"Open URL": "URLを開く",
|
||||
"Open data URL": "公開データURL",
|
||||
"Open from Webcam": "ウェブカメラから開く",
|
||||
"Original Size": "オリジナルサイズ",
|
||||
"PNG - Portable Network Graphics": "PNG - ポータブルネットワークグラフィックス",
|
||||
"PNGTOSVG - Convert Image to SVG": "PNGTOSVG - 画像をSVGに変換",
|
||||
"PageDown": "ページダウン",
|
||||
"PageUp": "ページアップ",
|
||||
"Palette": "パレット",
|
||||
"Parameter #1:": "パラメータ#1:",
|
||||
"Parameter #2:": "パラメータ#2:",
|
||||
"Paste": "ペースト",
|
||||
"Pencil": "鉛筆",
|
||||
"Percentage:": "パーセンテージ:",
|
||||
"Pick Color": "ピックカラー",
|
||||
"Pixels:": "ピクセル:",
|
||||
"Play animation": "アニメーションを再生する",
|
||||
"Portuguese": "ポルトガル",
|
||||
"Placeholder comment for color channels": "カラーチャンネルのプレースホルダーコメント",
|
||||
"Placeholder comment for color picker": "カラーピッカーのプレースホルダーコメント",
|
||||
"Placeholder comment for color swatches": "色見本のプレースホルダーコメント",
|
||||
"Portable Network Graphics": "ポータブルネットワークグラフィックス",
|
||||
"Portrait": "肖像画",
|
||||
"Português": "ポルトガル語",
|
||||
"Position:": "位置:",
|
||||
"Power:": "力:",
|
||||
"Powred by pixabay.com .": "pixabay.comのPowred",
|
||||
"Pre-Blur:": "プリブラー:",
|
||||
"Preview": "プレビュー",
|
||||
"Previous": "前",
|
||||
"Previous layer must be image, convert it to raster to apply this tool.": "前のレイヤーはイメージでなければならず、このツールを適用するにはラスターに変換する必要があります。",
|
||||
@ -241,123 +333,168 @@
|
||||
"Quality:": "品質:",
|
||||
"Quick Load": "クイックロード",
|
||||
"Quick Save": "クイックセーブ",
|
||||
"REMOVE.BG - Remove Image Background": "REMOVE.BG - 画像の背景を削除する",
|
||||
"Radial": "ラジアル",
|
||||
"Radial gradient": "放射グラジエント",
|
||||
"Radius:": "半径:",
|
||||
"Range:": "範囲:",
|
||||
"Rectangle": "矩形",
|
||||
"Red": "赤",
|
||||
"Red channel:": "赤いチャンネル:",
|
||||
"Red:": "赤:",
|
||||
"Redo": "やり直し",
|
||||
"Remove all": "すべて削除する",
|
||||
"Rename": "名前を変更する",
|
||||
"Rename Layer": "レイヤーの名前を変更",
|
||||
"Rendered with errors.": "エラーでレンダリングされました。",
|
||||
"Rendering...": "レンダリング...",
|
||||
"Replace Color": "色を置き換える",
|
||||
"Replace color": "色を交換する",
|
||||
"Replacement:": "置換:",
|
||||
"Report Issues": "レポートの問題",
|
||||
"Resample - Hermite": "リサンプル - エルミート",
|
||||
"Reset": "リセット",
|
||||
"Reset zoom level": "ズームレベルのリセット",
|
||||
"Resize": "サイズを変更する",
|
||||
"Resize Boundary": "境界のサイズ変更",
|
||||
"Resize Layer": "レイヤーのサイズ変更",
|
||||
"Resize Layers": "レイヤーのサイズ変更",
|
||||
"Resize Text Layer": "テキストレイヤーのサイズ変更",
|
||||
"Resized as background": "背景としてサイズ変更",
|
||||
"Resolution:": "解決:",
|
||||
"Resized:": "サイズ変更:",
|
||||
"Resolution:": "解像度(ppi):",
|
||||
"Restore Alpha": "アルファを復元する",
|
||||
"Right": "右",
|
||||
"Right angle:": "直角:",
|
||||
"Right to Left": "右から左へ",
|
||||
"Rotate": "回転する",
|
||||
"Rotate Layer": "レイヤーを回転",
|
||||
"Rotate is not supported on this type of object. Convert to raster?": "このタイプのオブジェクトでは、回転はサポートされていません。ラスタに変換しますか?",
|
||||
"Rotate left": "左に回転",
|
||||
"Rotate:": "回転:",
|
||||
"Russian": "ロシア",
|
||||
"Sat:": "土:",
|
||||
"Ruler": "ルーラー",
|
||||
"SQUOOSH - Compress and Compare Images": "SQUOOSH - 画像を圧縮して比較する",
|
||||
"Saturate": "飽和",
|
||||
"Saturation": "飽和",
|
||||
"Saturation:": "飽和:",
|
||||
"Save": "セーブ",
|
||||
"Save As": "名前を付けて保存",
|
||||
"Save As Data URL": "データURLとして保存",
|
||||
"Save as": "名前を付けて保存",
|
||||
"Save as type:": "タイプとして保存:",
|
||||
"Save layers:": "レイヤーを保存:",
|
||||
"Save resolution:": "解像度を保存:",
|
||||
"Scaling up is not supported in Hermite, using Lanczos.": "ランチョスを使用したエルミートでは、スケールアップはサポートされていません。",
|
||||
"Scroll down": "下へスクロール",
|
||||
"Scroll up": "スクロールアップする",
|
||||
"Search": "サーチ",
|
||||
"Search Images": "画像を検索する",
|
||||
"Search for Font": "フォントの検索",
|
||||
"Search:": "検索:",
|
||||
"Select All": "すべて選択",
|
||||
"Select Text Layer": "テキストレイヤーを選択",
|
||||
"Select object tool": "オブジェクトツールを選択",
|
||||
"Selected": "選択された",
|
||||
"Selection": "選択",
|
||||
"Selection Tool": "選択ツール",
|
||||
"Sensitivity:": "感度:",
|
||||
"Separated": "分離",
|
||||
"Separated (original types)": "セパレート(オリジナルタイプ)",
|
||||
"Sepia": "セピア",
|
||||
"Set Image Size": "画像サイズを設定する",
|
||||
"Settings": "設定",
|
||||
"Shadow": "影",
|
||||
"Shadow:": "影:",
|
||||
"Shapes": "形",
|
||||
"Shapes (H)": "形状(H)",
|
||||
"Sharpen": "シャープ",
|
||||
"Sharpen tool": "シャープツール",
|
||||
"Sharpen Tool": "シャープツール",
|
||||
"Sharpen:": "シャープ:",
|
||||
"Shift + S": "Shift + S",
|
||||
"Shortcut Key:": "ショートカットキー:",
|
||||
"Show": "見せる",
|
||||
"Show \/ Hide": "表示\/非表示",
|
||||
"Show file size:": "ファイルサイズを表示:",
|
||||
"Simple": "シンプル",
|
||||
"Size": "サイズ",
|
||||
"Size is too big, max": "サイズが大きすぎます",
|
||||
"Size:": "サイズ:",
|
||||
"Skip - layer must be image.": "スキップ - レイヤはイメージでなければなりません。",
|
||||
"Solarize": "ソラリゼーション",
|
||||
"Sorry, cold not load getUserMedia() data:": "申し訳ありませんが、getUserMedia()データをロードしないでください:",
|
||||
"Sorry, image could not be loaded.": "申し訳ありませんが、画像を読み込めませんでした。",
|
||||
"Sorry, image could not be loaded. Try copy image and paste it.": "申し訳ありませんが、画像を読み込めませんでした。イメージをコピーして貼り付けてみてください。",
|
||||
"Sorry, image is too big, max 5 MB.": "申し訳ありませんが、イメージが大きすぎます(最大5 MB)。",
|
||||
"Source is empty, right click on image to save source position.": "ソースは空です。イメージを右クリックするとソースの位置が保存されます。",
|
||||
"Source coordinates saved.": "保存されたソース座標。",
|
||||
"Source is empty, right click on image or use long press to save source position.": "ソースが空です。画像を右クリックするか、長押ししてソースの位置を保存します。",
|
||||
"Sprites": "スプライト",
|
||||
"Square": "平方",
|
||||
"Stream:": "ストリーム:",
|
||||
"Strength:": "力:",
|
||||
"Strict": "厳格",
|
||||
"Stroke": "ストローク",
|
||||
"Stroke:": "ストローク:",
|
||||
"TINYPNG - Compress PNG and JPEG": "TINYPNG - PNGとJPEGを圧縮します",
|
||||
"Tab": "タブ",
|
||||
"Tag Image File Format": "タグ画像ファイル形式",
|
||||
"Tahoma": "タホマ",
|
||||
"Target:": "ターゲット:",
|
||||
"Text": "テキスト",
|
||||
"Text example": "テキストの例",
|
||||
"Text:": "テキスト:",
|
||||
"The quick brown fox jumps over the lazy dog.": "素早い茶色のキツネが怠惰な犬を飛び越えます。",
|
||||
"There": "そこ",
|
||||
"There are no layers behind.": "後ろに層がありません。",
|
||||
"There is only 1 layer.": "レイヤーは1つしかありません。",
|
||||
"This layer must contain an image. Please convert it to raster to apply this tool.": "レイヤはイメージでなければならず、このツールを適用するにはラスタに変換する必要があります。",
|
||||
"Tilt Shift": "チルトシフト",
|
||||
"Times New Roman": "Times New Roman",
|
||||
"Toaster": "トースター",
|
||||
"Toggle": "トグル",
|
||||
"Toggle Color Channels": "カラーチャンネルを切り替えます",
|
||||
"Toggle Color Picker": "トグルカラーピッカー",
|
||||
"Toggle Menu": "トグルメニュー",
|
||||
"Toggle Swatches": "トグルスウォッチ",
|
||||
"Tools": "ツール",
|
||||
"Tools class not found:": "ツールクラスが見つかりません:",
|
||||
"Top": "上",
|
||||
"Top to Bottom": "上から下へ",
|
||||
"Total pixels:": "合計ピクセル数:",
|
||||
"Translate": "翻訳",
|
||||
"Translate": "画像を移動",
|
||||
"Translate Layer": "翻訳レイヤー",
|
||||
"Translate error, can not find dictionary:": "翻訳エラー、辞書が見つかりません:",
|
||||
"Transparency background:": "透明性の背景:",
|
||||
"Transparent:": "トランスペアレント:",
|
||||
"Trim": "トリム",
|
||||
"Trim everything:": "すべてをトリム:",
|
||||
"Trim Layers": "レイヤーのトリム",
|
||||
"Trim borders:": "境界線をトリミングします。",
|
||||
"Trim layer:": "トリムレイヤー:",
|
||||
"Trim white color?": "白い色をトリム?",
|
||||
"Turkish": "トルコ語",
|
||||
"Type:": "タイプ:",
|
||||
"Türkçe": "Türkçe",
|
||||
"Undo": "元に戻す",
|
||||
"Undo disabled.": "元に戻すことはできません。",
|
||||
"Undo enabled.": "取り消しが有効になっています。",
|
||||
"Undo is not available.": "元に戻すことはできません。",
|
||||
"Undo levels changed to 1.": "元に戻すレベルが1に変更されました。",
|
||||
"Undo levels restored to": "元に戻すレベルを元に戻す",
|
||||
"Unique colors:": "ユニークな色:",
|
||||
"Up": "アップ",
|
||||
"Update": "アップデート",
|
||||
"Update Brush Layer": "ブラシレイヤーを更新する",
|
||||
"Update Pencil Layer": "鉛筆レイヤーを更新する",
|
||||
"Update guides": "アップデートガイド",
|
||||
"Use Ctrl+V keyboard shortcut to paste from Clipboard.": "Ctrl + Vキーボードショートカットを使用してクリップボードから貼り付けます。",
|
||||
"V Radius:": "V半径:",
|
||||
"V. Align:": "V.整列:",
|
||||
"Valencia": "バレンシア",
|
||||
"Verdana": "ヴェルダナ",
|
||||
"Version:": "バージョン:",
|
||||
"Vertical": "垂直",
|
||||
"Vertical Alignment": "垂直方向の配置",
|
||||
"Vertical blur:": "垂直方向のぼかし:",
|
||||
"Vertical:": "垂直:",
|
||||
"Vibrance": "バイブランス",
|
||||
"View": "ビュー",
|
||||
"Vignette": "ビネット",
|
||||
"ViliusL": "ViliusL",
|
||||
"Vintage": "ビンテージ",
|
||||
"Visible:": "表示:",
|
||||
"WEBP - Weppy File Format": "WEBP - ウィピーファイルフォーマット",
|
||||
"Webcam": "ウェブカメラ",
|
||||
"Webcam #": "ウェブカメラ #",
|
||||
"Website:": "ウェブサイト:",
|
||||
"Weppy File Format": "Weppyファイル形式",
|
||||
"Width (%):": "幅(%):",
|
||||
"Width:": "幅:",
|
||||
"Windows Bitmap": "Windowsビットマップ",
|
||||
"Word": "語",
|
||||
"Word + Letter": "単語+文字",
|
||||
"Wrap At:": "ラップ場所:",
|
||||
"Wrap:": "ラップ:",
|
||||
"Wrong dimensions": "間違った寸法",
|
||||
"Wrong file type, must be image or json.": "間違ったファイルタイプです。画像またはjsonでなければなりません。",
|
||||
"X end:": "X end:",
|
||||
"X position:": "X位置:",
|
||||
"X start:": "Xスタート:",
|
||||
"X-Pro II": "X-Pro II",
|
||||
"Y end:": "Y end:",
|
||||
"Y position:": "Y位置:",
|
||||
"Y start:": "Y開始:",
|
||||
|
||||
@ -1,210 +1,291 @@
|
||||
{
|
||||
"2d": "2d",
|
||||
"480p": "480p",
|
||||
"A problem occurred while removing undo history. It": "실행 취소 기록을 제거하는 동안 문제가 발생했습니다. 그것",
|
||||
"About": "약",
|
||||
"Active": "유효한",
|
||||
"Aden": "아덴",
|
||||
"Advanced": "많은",
|
||||
"All": "모든",
|
||||
"Alpha": "알파",
|
||||
"Alpha:": "알파 :",
|
||||
"Anonymous": "익명",
|
||||
"Anti aliasing": "안티 앨리어싱",
|
||||
"Application markup may have changed,": "애플리케이션 마크업이 변경되었을 수 있습니다.",
|
||||
"Arial": "Arial",
|
||||
"Arrow": "화살",
|
||||
"ArrowDown": "ArrowDown",
|
||||
"ArrowLeft": "ArrowLeft",
|
||||
"ArrowRight": "ArrowRight",
|
||||
"ArrowUp": "ArrowUp",
|
||||
"Author:": "저자:",
|
||||
"Auto Adjust Colors": "색상 자동 조정",
|
||||
"Auto Kerning": "자동 커닝",
|
||||
"Average:": "평균:",
|
||||
"BMP - Windows Bitmap": "BMP - Windows 비트 맵",
|
||||
"Backspace": "역행 키이",
|
||||
"Base": "베이스",
|
||||
"Basic": "기본",
|
||||
"Black and White": "검정색과 흰색",
|
||||
"Blue": "푸른",
|
||||
"Blue channel:": "파란색 채널 :",
|
||||
"Blue:": "푸른:",
|
||||
"Blueprint": "청사진",
|
||||
"Blur Radius:": "흐리게 반경 :",
|
||||
"Blur Tool": "블러 도구",
|
||||
"Blur power:": "흐림 효과 :",
|
||||
"Blur tool": "블러 도구",
|
||||
"Bold": "대담한",
|
||||
"Bold Italic": "굵은 기울임 꼴",
|
||||
"Borders": "테두리",
|
||||
"Bottom": "바닥",
|
||||
"Bottom to Top": "아래에서 위로",
|
||||
"Bounds:": "범위:",
|
||||
"Box": "상자",
|
||||
"Box Blur": "상자 흐림 효과",
|
||||
"Box blur": "상자 흐림 효과",
|
||||
"Brightness": "명도",
|
||||
"Brightness:": "명도:",
|
||||
"Brush": "브러시",
|
||||
"Bulge\/Pinch tool": "벌지 \/ 핀치 도구",
|
||||
"Bulge\/Pinch Tool": "벌지 \/ 핀치 도구",
|
||||
"Burn": "화상",
|
||||
"CSS Filters": "CSS 필터",
|
||||
"Can not animate 1 layer.": "1 개의 레이어를 애니메이션으로 만들 수 없습니다.",
|
||||
"Can not find previous layer.": "이전 레이어를 찾을 수 없습니다.",
|
||||
"Can not use this tool on current layer: image already takes all area.": "현재 레이어에서는 이 도구를 사용할 수 없습니다. 이미지가 이미 모든 영역을 차지하고 있습니다.",
|
||||
"Cancel": "취소",
|
||||
"Canvas Size": "캔버스 크기",
|
||||
"Center": "센터",
|
||||
"Center x:": "센터 x :",
|
||||
"Center y:": "센터 y :",
|
||||
"Center:": "센터:",
|
||||
"Change Composition": "구성 변경",
|
||||
"Change Layer Details": "레이어 세부 정보 변경",
|
||||
"Change Opacity": "불투명도 변경",
|
||||
"Channel:": "채널:",
|
||||
"Circle": "원",
|
||||
"Clarendon": "Clarendon",
|
||||
"Clear": "명확한",
|
||||
"Clear Selection": "명확한 선택",
|
||||
"Clone Tool": "복제 도구",
|
||||
"Clone count:": "클론 횟수 :",
|
||||
"Clone tool": "복제 도구",
|
||||
"Clone tool disabled for resized image. Please rasterize first.": "크기가 조정된 이미지에 대해 복제 도구가 비활성화되었습니다. 먼저 래스터화해 주세요.",
|
||||
"Cloned edges": "복제 된 가장자리",
|
||||
"Close": "닫다",
|
||||
"Color #": "색깔 #",
|
||||
"Color Zoom": "색상 확대 \/ 축소",
|
||||
"Color alpha value can not be zero.": "색상 알파 값은 0 일 수 없습니다.",
|
||||
"Color Corrections": "색상 보정",
|
||||
"Color Palette": "색상 팔레트",
|
||||
"Color Zoom": "색상 확대 \/ 축소",
|
||||
"Color alpha value can not be zero.": "색상 알파 값은 0 일 수 없습니다.",
|
||||
"Color to Alpha": "알파에서 색상으로",
|
||||
"Color zoom": "색상 확대 \/ 축소",
|
||||
"Color:": "색깔:",
|
||||
"Colors": "그림 물감",
|
||||
"Colors:": "그림 물감:",
|
||||
"Common Filters": "공통 필터",
|
||||
"Composition": "구성",
|
||||
"Composition:": "구성:",
|
||||
"Content Fill": "콘텐츠 채우기",
|
||||
"Contrast": "대조",
|
||||
"Contrast:": "대조:",
|
||||
"Convert layer to raster": "레이어를 래스터로 변환",
|
||||
"Convert to Raster": "래스터로 변환",
|
||||
"Copy Selection": "선택 항목 복사",
|
||||
"Copy:": "부:",
|
||||
"Copy to Clipboard": "클립 보드에 복사",
|
||||
"Courier": "급사",
|
||||
"Crop": "수확고",
|
||||
"Crop Tool": "자르기 도구",
|
||||
"Crop on rotated layer is not supported. Convert it to raster to continue.": "회전 된 레이어에서 자르기는 지원되지 않습니다. 계속하려면 래스터로 변환하십시오.",
|
||||
"Ctrl + C": "Ctrl + C",
|
||||
"Ctrl+A": "Ctrl + A",
|
||||
"Ctrl+C": "Ctrl + C",
|
||||
"Ctrl+P": "Ctrl+P",
|
||||
"Ctrl+V": "Ctrl + V",
|
||||
"Ctrl-P": "Ctrl-P",
|
||||
"Ctrl+Y": "Ctrl + Y",
|
||||
"Ctrl+Z": "Ctrl + Z",
|
||||
"Current": "흐름",
|
||||
"Curve": "곡선",
|
||||
"Current Color Preview": "현재 색상 미리보기",
|
||||
"Custom": "관습",
|
||||
"Data URL": "데이터 URL",
|
||||
"Data URL:": "데이터 URL :",
|
||||
"Decrease": "감소",
|
||||
"Decrease Color Depth": "색상 심도 감소",
|
||||
"Default": "태만",
|
||||
"Degree:": "정도:",
|
||||
"Del": "델",
|
||||
"Delete": "지우다",
|
||||
"Delete Selection": "선택 항목 삭제",
|
||||
"Denoise": "데니스 이스",
|
||||
"Desaturate": "불포화",
|
||||
"Desaturate Tool": "채도 제거 도구",
|
||||
"Description:": "기술:",
|
||||
"Deutsch": "Deutsch",
|
||||
"Differences": "차이점",
|
||||
"Differences Down": "차이점",
|
||||
"Direction:": "방향:",
|
||||
"Dither": "떨림",
|
||||
"Dithering:": "디더링 :",
|
||||
"Dominant color:": "주된 색깔 :",
|
||||
"Dot Screen": "도트 스크린",
|
||||
"Down": "하위",
|
||||
"Duplicate": "복제",
|
||||
"Duplicate Layer": "중복 레이어",
|
||||
"Duplicate layer": "레이어 복제",
|
||||
"Dynamic": "동적",
|
||||
"Edge": "가장자리",
|
||||
"Edit": "편집하다",
|
||||
"Edit text": "텍스트 수정",
|
||||
"Edit text...": "텍스트 수정 ...",
|
||||
"Effect browser": "효과 브라우저",
|
||||
"Effects": "효과",
|
||||
"Effects browser": "효과 브라우저",
|
||||
"Email:": "이메일:",
|
||||
"Emboss": "엠보싱",
|
||||
"Empty selection": "빈 선택",
|
||||
"Empty selection or type not image.": "이미지를 선택하지 않거나 입력하지 마십시오.",
|
||||
"Enable autoresize:": "자동 크기 조정 활성화:",
|
||||
"End": "종료",
|
||||
"English": "영어",
|
||||
"English (UK)": "영어(영국)",
|
||||
"Enrich": "높이다",
|
||||
"Erase": "삭제",
|
||||
"Erase on rotate object is disabled. Sorry.": "회전 객체에서 지우기가 비활성화됩니다. 죄송합니다.",
|
||||
"Enter": "시작하다",
|
||||
"Erase Tool": "지우기 도구",
|
||||
"Erase on rotate object is disabled. Please rasterize first.": "개체 회전 시 지우기가 비활성화됩니다. 먼저 래스터화해 주세요.",
|
||||
"Error": "오류",
|
||||
"Error connecting to service.": "서비스에 연결하는 중 오류가 발생했습니다.",
|
||||
"Error: can not load image.": "오류 : 이미지를로드 할 수 없습니다.",
|
||||
"Error loading the list of fonts from Google.": "Google에서 글꼴 목록을 로드하는 중에 오류가 발생했습니다.",
|
||||
"Error registering service worker": "서비스 워커 등록 오류",
|
||||
"Error: can not find filter:": "오류 : 필터를 찾을 수 없음 :",
|
||||
"Error: can not find layer with id:": "오류 : ID가있는 레이어를 찾을 수 없습니다.",
|
||||
"Error: missing details event target": "오류 : 세부 정보 이벤트 대상이 누락되었습니다.",
|
||||
"Error: unsupported attribute type:": "오류 : 지원되지 않는 속성 유형 :",
|
||||
"Error: wrong key:": "오류 : 잘못된 키 :",
|
||||
"Error: unknown layer type:": "오류 : 알 수없는 레이어 유형 :",
|
||||
"Error: unsupported attribute type:": "오류: 지원되지 않는 속성 유형:",
|
||||
"Esc": "Esc",
|
||||
"Escape": "탈출",
|
||||
"Español": "스페인어",
|
||||
"Expand edges": "가장자리 확장",
|
||||
"Exponent:": "멱지수:",
|
||||
"Export": "내보내다",
|
||||
"External": "외부",
|
||||
"Factor:": "인자:",
|
||||
"File": "파일",
|
||||
"File name:": "파일 이름:",
|
||||
"File size:": "파일 크기 :",
|
||||
"Fill": "가득 따르다",
|
||||
"Fill Tool": "채우기 도구",
|
||||
"Fit": "적당한",
|
||||
"Fit Window": "창에 맞추기",
|
||||
"Fit window": "창 맞추기",
|
||||
"Flatten Image": "납작한 이미지",
|
||||
"Flip": "튀기다",
|
||||
"FloydSteinberg-serpentine": "FloydSteinberg- 사문석",
|
||||
"French": "프랑스 국민",
|
||||
"Font": "폰트",
|
||||
"Français": "Français",
|
||||
"Full HD, 1080p": "풀 HD, 1080p",
|
||||
"GIF - Graphics Interchange Format": "GIF - 그래픽 교환 형식",
|
||||
"Full Screen": "전체 화면",
|
||||
"Full layers data": "전체 레이어 데이터",
|
||||
"Gap:": "갭:",
|
||||
"Gaussian Blur": "가우스 흐림",
|
||||
"German": "독일 사람",
|
||||
"Gif delay:": "GIF 지연 :",
|
||||
"Gingham": "깅엄",
|
||||
"GitHub:": "GitHub :",
|
||||
"Gradient": "구배",
|
||||
"Gradient Radius:": "기울기 반경 :",
|
||||
"Grains": "작살",
|
||||
"Graphics Interchange Format": "그래픽 교환 형식",
|
||||
"Gray": "회색",
|
||||
"Grayscale": "그레이 스케일",
|
||||
"Greek": "그리스 어",
|
||||
"Green": "녹색",
|
||||
"Green channel:": "녹색 통로:",
|
||||
"Green:": "녹색:",
|
||||
"Greyscale:": "그레이 스케일 :",
|
||||
"Grid": "그리드",
|
||||
"Grid on\/off": "그리드 켜기 \/ 끄기",
|
||||
"Guides": "가이드",
|
||||
"Guides enabled.": "가이드가 활성화되었습니다.",
|
||||
"H Radius:": "H 반경 :",
|
||||
"H. Align:": "H. 정렬 :",
|
||||
"Heatmap": "히트 맵",
|
||||
"Height (%):": "높이 (%) :",
|
||||
"Height:": "신장:",
|
||||
"Help": "도움",
|
||||
"Helvetica": "헬 베티 카",
|
||||
"Hermite": "허 마이트",
|
||||
"Hex:": "마녀:",
|
||||
"Hex": "마녀",
|
||||
"Hide": "숨다",
|
||||
"Histogram": "히스토그램",
|
||||
"Histogram:": "히스토그램 :",
|
||||
"Home": "집",
|
||||
"Horizontal": "수평",
|
||||
"Horizontal Alignment": "수평 정렬",
|
||||
"Horizontal blur:": "가로 흐리게 :",
|
||||
"Horizontal:": "수평의:",
|
||||
"Hue": "색조",
|
||||
"Hue Rotate": "색조 회전",
|
||||
"Hue:": "색조:",
|
||||
"Image": "영상",
|
||||
"Image data with multi-layers. Can be opened using miniPaint -": "다중 레이어가있는 이미지 데이터. miniPaint를 사용하여 열 수 있습니다 -",
|
||||
"Impact": "충격",
|
||||
"In proportion:": "비례:",
|
||||
"Increase": "증가하다",
|
||||
"Information": "정보",
|
||||
"Insert:": "끼워 넣다:",
|
||||
"Inkwell": "잉크 그릇",
|
||||
"Insert": "끼워 넣다",
|
||||
"Insert guides": "가이드 삽입",
|
||||
"Insert new layer": "새 레이어 삽입",
|
||||
"Instagram Filters": "Instagram 필터",
|
||||
"Invalid Hex Code": "잘못된 16 진수 코드",
|
||||
"Italiano": "이탈리아어",
|
||||
"Italic": "이탤릭체",
|
||||
"JPG - JPG\/JPEG Format": "JPG - JPG \/ JPEG 형식",
|
||||
"JPG, WEBP quality:": "JPG, WEBP 품질 :",
|
||||
"JSON - Full layers data": "JSON - 전체 레이어 데이터",
|
||||
"Japanese": "일본어",
|
||||
"JPG\/JPEG Format": "JPG \/ JPEG 형식",
|
||||
"Kerning:": "커닝 :",
|
||||
"Key-Points": "키 포인트",
|
||||
"KeyU": "키유",
|
||||
"Keyboard Shortcuts": "키보드 단축키",
|
||||
"Keyword:": "예어:",
|
||||
"Korean": "한국어",
|
||||
"Lanczos": "Lanczos",
|
||||
"Landscape": "풍경",
|
||||
"Language": "언어",
|
||||
"Last modified": "최종 수정일",
|
||||
"Layer": "층",
|
||||
"Layer details": "레이어 세부 정보",
|
||||
"Layer is already image.": "레이어는 이미 이미지입니다.",
|
||||
"Layer must be image, convert it to raster to apply this tool.": "레이어는 이미지 여야하며이 도구를 적용하려면 래스터로 변환해야합니다.",
|
||||
"Layer is empty.": "레이어가 비어 있습니다.",
|
||||
"Layer is not compatible with resize": "레이어는 크기 조정과 호환되지 않습니다.",
|
||||
"Layer is vector, convert it to raster to apply this tool.": "레이어는 벡터이므로 래스터로 변환하여이 도구를 적용합니다.",
|
||||
"Layers": "레이어",
|
||||
"Layers:": "레이어 :",
|
||||
"Layout:": "공들여 나열한 것:",
|
||||
"Left": "왼쪽",
|
||||
"Left to Right": "좌에서 우로",
|
||||
"Level:": "수평:",
|
||||
"Levels:": "레벨 :",
|
||||
"Lietuvių": "Lietuvių",
|
||||
"Line": "선",
|
||||
"Lum:": "Lum :",
|
||||
"Lo-fi": "Lo-Fi",
|
||||
"Luminance:": "휘도 :",
|
||||
"Magic Wand Tool": "마법 지팡이 도구",
|
||||
"Luminosity": "밝기",
|
||||
"Magic Eraser Tool": "매직 지우개 도구",
|
||||
"Merge Down": "병합",
|
||||
"Merge Layers": "계층을 병합하다",
|
||||
"Merged": "병합 됨",
|
||||
"Metrics": "지표",
|
||||
"Middle": "가운데",
|
||||
"Missing at least 1 size parameter.": "크기 매개 변수가 1 개 이상 누락되었습니다.",
|
||||
"Missing permissions to write to Clipboard.cc": "Clipboard.cc에 쓸 수있는 권한이 없습니다.",
|
||||
"Mode:": "방법:",
|
||||
"Module function not found.": "모듈 기능을 찾을 수 없습니다.",
|
||||
"Modules class not found:": "모듈 클래스를 찾을 수 없음 :",
|
||||
"Monospace": "고정 폭",
|
||||
"Mosaic": "모자이크",
|
||||
"Mouse:": "쥐:",
|
||||
"Move": "움직임",
|
||||
"Move down": "아래로 이동",
|
||||
"Move up": "이동",
|
||||
"Move Layer": "레이어 이동",
|
||||
"Move layer down": "레이어를 아래로 이동",
|
||||
"Move layer up": "레이어를 위로 이동",
|
||||
"Name:": "이름:",
|
||||
"Needs at least 2 layers.": "최소한 2 개의 레이어가 필요합니다.",
|
||||
"Negative": "부정",
|
||||
"New": "새로운",
|
||||
"New Bezier Layer": "새로운 베지어 레이어",
|
||||
"New Brush Layer": "새 브러시 레이어",
|
||||
"New Ellipse Layer": "새 타원 레이어",
|
||||
"New File": "새로운 파일",
|
||||
"New Gradient Layer": "새로운 그라디언트 레이어",
|
||||
"New Layer": "새 레이어",
|
||||
"New Line Layer": "새 라인 레이어",
|
||||
"New Pencil Layer": "새 연필 레이어",
|
||||
"New Polygon Layer": "새로운 폴리곤 레이어",
|
||||
"New Rectangle Layer": "새로운 직사각형 레이어",
|
||||
"New Text Layer": "새 텍스트 레이어",
|
||||
"New file": "새로운 파일",
|
||||
"New from Selection": "선택 항목의 새로운 기능",
|
||||
"New layer": "새 레이어",
|
||||
"New width can not be smaller then current width": "새 너비는 현재 너비보다 작을 수 없습니다.",
|
||||
"Normal": "표준",
|
||||
"Next": "다음",
|
||||
"Night Vision": "나이트 비전",
|
||||
"None": "없음",
|
||||
"Nothing is selected.": "아무것도 선택되지 않았습니다.",
|
||||
"Offset X:": "오프셋 X :",
|
||||
"Offset Y:": "오프셋 Y :",
|
||||
@ -217,23 +298,34 @@
|
||||
"Open Data URL": "공개 데이터 URL",
|
||||
"Open Directory": "오픈 디렉토리",
|
||||
"Open File": "파일 열기",
|
||||
"Open File Data URL": "파일 데이터 URL 열기",
|
||||
"Open File URL": "파일 URL 열기",
|
||||
"Open File Webcam": "파일 열기 웹캠",
|
||||
"Open Image": "이미지 열기",
|
||||
"Open JSON File": "JSON 파일 열기",
|
||||
"Open Test Template": "테스트 템플릿 열기",
|
||||
"Open URL": "URL 열기",
|
||||
"Open data URL": "공개 데이터 URL",
|
||||
"Open from Webcam": "웹캠에서 열기",
|
||||
"Original Size": "원본 크기",
|
||||
"PNG - Portable Network Graphics": "PNG - 휴대용 네트워크 그래픽",
|
||||
"PNGTOSVG - Convert Image to SVG": "PNGTOSVG-이미지를 SVG로 변환",
|
||||
"PageDown": "PageDown",
|
||||
"PageUp": "페이지 위로",
|
||||
"Palette": "팔레트",
|
||||
"Parameter #1:": "매개 변수 # 1 :",
|
||||
"Parameter #2:": "매개 변수 # 2 :",
|
||||
"Paste": "풀",
|
||||
"Pencil": "연필",
|
||||
"Percentage:": "백분율:",
|
||||
"Pick Color": "색상 선택",
|
||||
"Pixels:": "픽셀 :",
|
||||
"Play animation": "애니메이션 재생",
|
||||
"Portuguese": "포르투갈 인",
|
||||
"Placeholder comment for color channels": "색상 채널에 대한 자리 표시 자 주석",
|
||||
"Placeholder comment for color picker": "색상 선택기에 대한 자리 표시 자 주석",
|
||||
"Placeholder comment for color swatches": "색상 견본에 대한 자리 표시 자 주석",
|
||||
"Portable Network Graphics": "휴대용 네트워크 그래픽",
|
||||
"Portrait": "초상화",
|
||||
"Português": "Português",
|
||||
"Position:": "위치:",
|
||||
"Power:": "힘:",
|
||||
"Powred by pixabay.com .": "pixabay.com의 Powred.",
|
||||
"Pre-Blur:": "사전 흐림 효과 :",
|
||||
"Preview": "시사",
|
||||
"Previous": "너무 이른",
|
||||
"Previous layer must be image, convert it to raster to apply this tool.": "이전 레이어는 이미지 여야하며이 도구를 적용하려면 래스터로 변환해야합니다.",
|
||||
@ -241,123 +333,168 @@
|
||||
"Quality:": "품질:",
|
||||
"Quick Load": "빠른로드",
|
||||
"Quick Save": "빠른 저장",
|
||||
"REMOVE.BG - Remove Image Background": "REMOVE.BG-이미지 배경 제거",
|
||||
"Radial": "방사형",
|
||||
"Radial gradient": "방사형 그래디언트",
|
||||
"Radius:": "반지름:",
|
||||
"Range:": "범위:",
|
||||
"Rectangle": "구형",
|
||||
"Red": "빨간",
|
||||
"Red channel:": "적색 통로:",
|
||||
"Red:": "빨간:",
|
||||
"Redo": "다시 하다",
|
||||
"Remove all": "모두 제거",
|
||||
"Rename": "이름 바꾸기",
|
||||
"Rename Layer": "레이어 이름 변경",
|
||||
"Rendered with errors.": "오류와 함께 렌더링됩니다.",
|
||||
"Rendering...": "표현...",
|
||||
"Replace Color": "색상 바꾸기",
|
||||
"Replace color": "색상 바꾸기",
|
||||
"Replacement:": "바꿔 놓음:",
|
||||
"Report Issues": "문제 신고",
|
||||
"Resample - Hermite": "리 샘플 - Hermite",
|
||||
"Reset": "다시 놓기",
|
||||
"Reset zoom level": "확대 \/ 축소 레벨 재설정",
|
||||
"Resize": "크기 조정",
|
||||
"Resize Boundary": "경계 크기 조정",
|
||||
"Resize Layer": "레이어 크기 조정",
|
||||
"Resize Layers": "레이어 크기 조정",
|
||||
"Resize Text Layer": "텍스트 레이어 크기 조정",
|
||||
"Resized as background": "배경으로 크기 조정",
|
||||
"Resized:": "크기 조정됨:",
|
||||
"Resolution:": "해결:",
|
||||
"Restore Alpha": "알파 복원",
|
||||
"Right": "권리",
|
||||
"Right angle:": "직각:",
|
||||
"Right to Left": "오른쪽에서 왼쪽으로",
|
||||
"Rotate": "회전",
|
||||
"Rotate Layer": "레이어 회전",
|
||||
"Rotate is not supported on this type of object. Convert to raster?": "회전은이 유형의 객체에서 지원되지 않습니다. 래스터로 변환 하시겠습니까?",
|
||||
"Rotate left": "왼쪽으로 회전",
|
||||
"Rotate:": "회전 :",
|
||||
"Russian": "러시아인",
|
||||
"Sat:": "토 :",
|
||||
"Ruler": "자",
|
||||
"SQUOOSH - Compress and Compare Images": "SQUOOSH-이미지 압축 및 비교",
|
||||
"Saturate": "가득한",
|
||||
"Saturation": "포화",
|
||||
"Saturation:": "포화:",
|
||||
"Save": "구하다",
|
||||
"Save As": "다른 이름으로 저장",
|
||||
"Save As Data URL": "데이터 URL로 저장",
|
||||
"Save as": "다른 이름으로 저장",
|
||||
"Save as type:": "유형으로 저장 :",
|
||||
"Save layers:": "레이어 저장 :",
|
||||
"Save resolution:": "해상도 절약 :",
|
||||
"Scaling up is not supported in Hermite, using Lanczos.": "Lanczos를 사용하는 Hermite에서는 확장이 지원되지 않습니다.",
|
||||
"Scroll down": "아래로 스크롤",
|
||||
"Scroll up": "스크롤",
|
||||
"Search": "수색",
|
||||
"Search Images": "이미지 검색",
|
||||
"Search for Font": "글꼴 검색",
|
||||
"Search:": "찾다:",
|
||||
"Select All": "모두 선택",
|
||||
"Select Text Layer": "텍스트 레이어 선택",
|
||||
"Select object tool": "오브젝트 도구 선택",
|
||||
"Selected": "선택된",
|
||||
"Selection": "선택",
|
||||
"Selection Tool": "선택 도구",
|
||||
"Sensitivity:": "감광도:",
|
||||
"Separated": "분리됨",
|
||||
"Separated (original types)": "분리형(원본 유형)",
|
||||
"Sepia": "세피아",
|
||||
"Set Image Size": "이미지 크기 설정",
|
||||
"Settings": "설정",
|
||||
"Shadow": "그림자",
|
||||
"Shadow:": "그림자:",
|
||||
"Shapes": "모양",
|
||||
"Shapes (H)": "모양(H)",
|
||||
"Sharpen": "갈다",
|
||||
"Sharpen tool": "선명 도구",
|
||||
"Sharpen Tool": "선명 도구",
|
||||
"Sharpen:": "갈다:",
|
||||
"Shift + S": "쉬프트 + S",
|
||||
"Shortcut Key:": "바로 가기 키:",
|
||||
"Show": "보여주다",
|
||||
"Show \/ Hide": "표시 \/ 숨기기",
|
||||
"Show file size:": "파일 크기 표시 :",
|
||||
"Simple": "단순한",
|
||||
"Size": "크기",
|
||||
"Size is too big, max": "크기가 너무 큽니다.",
|
||||
"Size:": "크기:",
|
||||
"Skip - layer must be image.": "건너 뛰기 - 레이어가 이미지 여야합니다.",
|
||||
"Solarize": "솔라 이즈",
|
||||
"Sorry, cold not load getUserMedia() data:": "죄송합니다. getUserMedia () 데이터를로드하지 마세요.",
|
||||
"Sorry, image could not be loaded.": "죄송합니다. 이미지를로드 할 수 없습니다.",
|
||||
"Sorry, image could not be loaded. Try copy image and paste it.": "죄송합니다. 이미지를로드 할 수 없습니다. 이미지 복사 및 붙여 넣기를 시도하십시오.",
|
||||
"Sorry, image is too big, max 5 MB.": "죄송합니다. 이미지가 너무 크고 최대 5MB입니다.",
|
||||
"Source is empty, right click on image to save source position.": "소스가 비어 있습니다. 소스 위치를 저장하려면 이미지를 마우스 오른쪽 버튼으로 클릭하십시오.",
|
||||
"Source coordinates saved.": "소스 좌표가 저장되었습니다.",
|
||||
"Source is empty, right click on image or use long press to save source position.": "소스가 비어 있습니다. 이미지를 마우스 오른쪽 버튼으로 클릭하거나 길게 눌러 소스 위치를 저장하세요.",
|
||||
"Sprites": "스프라이트",
|
||||
"Square": "광장",
|
||||
"Stream:": "흐름:",
|
||||
"Strength:": "힘:",
|
||||
"Strict": "엄격한",
|
||||
"Stroke": "행정",
|
||||
"Stroke:": "행정:",
|
||||
"TINYPNG - Compress PNG and JPEG": "TINYPNG-PNG 및 JPEG 압축",
|
||||
"Tab": "탭",
|
||||
"Tag Image File Format": "태그 이미지 파일 형식",
|
||||
"Tahoma": "타호 마",
|
||||
"Target:": "목표:",
|
||||
"Text": "본문",
|
||||
"Text example": "텍스트 예제",
|
||||
"Text:": "본문:",
|
||||
"The quick brown fox jumps over the lazy dog.": "날렵한 갈색여우가 게으른 개를 뛰어넘습니다.",
|
||||
"There": "그곳에",
|
||||
"There are no layers behind.": "뒤에 레이어가 없습니다.",
|
||||
"There is only 1 layer.": "단 하나의 레이어가 있습니다.",
|
||||
"This layer must contain an image. Please convert it to raster to apply this tool.": "이 레이어에는 이미지가 있어야합니다. 이 도구를 적용하려면 래스터로 변환하십시오.",
|
||||
"Tilt Shift": "경사 변화",
|
||||
"Times New Roman": "Times New Roman",
|
||||
"Toaster": "토스터에",
|
||||
"Toggle": "비녀장",
|
||||
"Toggle Color Channels": "색상 채널 전환",
|
||||
"Toggle Color Picker": "색상 선택기 전환",
|
||||
"Toggle Menu": "토글 메뉴",
|
||||
"Toggle Swatches": "견본 전환",
|
||||
"Tools": "도구들",
|
||||
"Tools class not found:": "도구 클래스를 찾을 수 없음 :",
|
||||
"Top": "상단",
|
||||
"Top to Bottom": "위에서 아래로",
|
||||
"Total pixels:": "총 픽셀 수 :",
|
||||
"Translate": "옮기다",
|
||||
"Translate Layer": "레이어 번역",
|
||||
"Translate error, can not find dictionary:": "번역 오류, 사전을 찾을 수 없음 :",
|
||||
"Transparency background:": "투명도 배경 :",
|
||||
"Transparent:": "투명한:",
|
||||
"Trim": "손질",
|
||||
"Trim everything:": "모든 것을 다듬습니다 :",
|
||||
"Trim Layers": "레이어 트림",
|
||||
"Trim borders:": "테두리 자르기 :",
|
||||
"Trim layer:": "레이어 다듬기 :",
|
||||
"Trim white color?": "흰색을 다듬을까요?",
|
||||
"Turkish": "터키어",
|
||||
"Type:": "유형:",
|
||||
"Türkçe": "Türkçe",
|
||||
"Undo": "끄르다",
|
||||
"Undo disabled.": "실행 취소가 해제되었습니다.",
|
||||
"Undo enabled.": "실행 취소가 활성화되었습니다.",
|
||||
"Undo is not available.": "실행 취소를 사용할 수 없습니다.",
|
||||
"Undo levels changed to 1.": "실행 취소 수준이 1로 변경되었습니다.",
|
||||
"Undo levels restored to": "복원 된 실행 취소 수준",
|
||||
"Unique colors:": "독특한 색상 :",
|
||||
"Up": "쪽으로",
|
||||
"Update": "업데이트",
|
||||
"Update Brush Layer": "브러시 레이어 업데이트",
|
||||
"Update Pencil Layer": "연필 레이어 업데이트",
|
||||
"Update guides": "가이드 업데이트",
|
||||
"Use Ctrl+V keyboard shortcut to paste from Clipboard.": "Ctrl + V 키보드 단축키를 사용하여 클립 보드에서 붙여 넣기하십시오.",
|
||||
"V Radius:": "V 반경 :",
|
||||
"V. Align:": "V. 정렬 :",
|
||||
"Valencia": "발렌시아",
|
||||
"Verdana": "Verdana",
|
||||
"Version:": "번역:",
|
||||
"Vertical": "수직선",
|
||||
"Vertical Alignment": "수직 정렬",
|
||||
"Vertical blur:": "수직 흐림 효과 :",
|
||||
"Vertical:": "수직의:",
|
||||
"Vibrance": "활기찬",
|
||||
"View": "보다",
|
||||
"Vignette": "삽화",
|
||||
"ViliusL": "ViliusL",
|
||||
"Vintage": "포도 수확",
|
||||
"Visible:": "명백한:",
|
||||
"WEBP - Weppy File Format": "WEBP - 위피 파일 형식",
|
||||
"Webcam": "웹캠",
|
||||
"Webcam #": "웹캠 #",
|
||||
"Website:": "웹 사이트 :",
|
||||
"Weppy File Format": "Weppy 파일 형식",
|
||||
"Width (%):": "너비 (%) :",
|
||||
"Width:": "폭:",
|
||||
"Windows Bitmap": "Windows 비트 맵",
|
||||
"Word": "워드",
|
||||
"Word + Letter": "단어 + 문자",
|
||||
"Wrap At:": "줄 바꿈 :",
|
||||
"Wrap:": "싸다:",
|
||||
"Wrong dimensions": "잘못된 치수",
|
||||
"Wrong file type, must be image or json.": "잘못된 파일 유형. 이미지 또는 json이어야합니다.",
|
||||
"X end:": "X 끝 :",
|
||||
"X position:": "X 위치 :",
|
||||
"X start:": "X 시작 :",
|
||||
"X-Pro II": "X-Pro II",
|
||||
"Y end:": "Y 끝 :",
|
||||
"Y position:": "Y 위치 :",
|
||||
"Y start:": "Y 시작 :",
|
||||
|
||||
@ -1,210 +1,291 @@
|
||||
{
|
||||
"2d": "2d",
|
||||
"480p": "480p",
|
||||
"A problem occurred while removing undo history. It": "Pašalinant anuliavimo istoriją įvyko problema. Tai",
|
||||
"About": "Apie",
|
||||
"Active": "Aktyvus",
|
||||
"Aden": "Aden",
|
||||
"Advanced": "Pažangus",
|
||||
"All": "Visi",
|
||||
"Alpha": "Alfa",
|
||||
"Alpha:": "Alfa:",
|
||||
"Anonymous": "Anoniminis",
|
||||
"Anti aliasing": "Sulieti",
|
||||
"Application markup may have changed,": "Programos žymėjimas galėjo pasikeisti,",
|
||||
"Arial": "Arial",
|
||||
"Arrow": "Rodyklė",
|
||||
"ArrowDown": "Rodyklė žemyn",
|
||||
"ArrowLeft": "Rodyklė kairėn",
|
||||
"ArrowRight": "RodyklėDešinė",
|
||||
"ArrowUp": "„ArrowUp“",
|
||||
"Author:": "Autorius:",
|
||||
"Auto Adjust Colors": "Sureguliuoti spalvas",
|
||||
"Auto Kerning": "„Auto Kerning“",
|
||||
"Average:": "Vidurkis:",
|
||||
"BMP - Windows Bitmap": "BMP - Windows Bitmap",
|
||||
"Backspace": "Backspace",
|
||||
"Base": "Bazė",
|
||||
"Basic": "Paprastas",
|
||||
"Black and White": "Juoda ir balta",
|
||||
"Blue": "Mėlynas",
|
||||
"Blue channel:": "Mėlyna kanalas:",
|
||||
"Blue:": "Mėlyna:",
|
||||
"Blueprint": "Techninis piešinys",
|
||||
"Blur Radius:": "Migla spindulys:",
|
||||
"Blur Tool": "Neryškus įrankis",
|
||||
"Blur power:": "Blur stiprumas:",
|
||||
"Blur tool": "Migla įrankis",
|
||||
"Bold": "Bold",
|
||||
"Bold Italic": "Bold Italic",
|
||||
"Borders": "Ribojasi",
|
||||
"Bottom": "Apačia",
|
||||
"Bottom to Top": "Iš apačios į viršų",
|
||||
"Bounds:": "Ribos:",
|
||||
"Box": "Dėžė",
|
||||
"Box Blur": "Box Blur",
|
||||
"Box blur": "Langelis blur",
|
||||
"Brightness": "Ryškumas",
|
||||
"Brightness:": "Ryškumas:",
|
||||
"Brush": "Šepetys",
|
||||
"Bulge\/Pinch tool": "Bumbulas\/Žiupsnelis",
|
||||
"Bulge\/Pinch Tool": "Išsipūtimo \/ prispaudimo įrankis",
|
||||
"Burn": "Deginti",
|
||||
"CSS Filters": "CSS filtrai",
|
||||
"Can not animate 1 layer.": "Negalima animuoti 1 sluoksniu.",
|
||||
"Can not find previous layer.": "Negaliu rasti ankstesnio sluoksnio.",
|
||||
"Can not use this tool on current layer: image already takes all area.": "Negalima naudoti šio įrankio dabartiniame sluoksnyje: vaizdas jau užima visą plotą.",
|
||||
"Cancel": "Atšaukti",
|
||||
"Canvas Size": "Paveikslo Dydis",
|
||||
"Center": "Centras",
|
||||
"Center x:": "Centras x:",
|
||||
"Center y:": "Centras y:",
|
||||
"Center:": "Centras:",
|
||||
"Change Composition": "Keisti kompoziciją",
|
||||
"Change Layer Details": "Keisti išsamią informaciją",
|
||||
"Change Opacity": "Pakeiskite neskaidrumą",
|
||||
"Channel:": "Kanalas:",
|
||||
"Circle": "Ratas",
|
||||
"Clarendon": "Klarendonas",
|
||||
"Clear": "Aiškus",
|
||||
"Clear Selection": "Išvalyti pasirinkimą",
|
||||
"Clone Tool": "Klonų įrankis",
|
||||
"Clone count:": "Klonų skaičius:",
|
||||
"Clone tool": "Klonas įrankis",
|
||||
"Clone tool disabled for resized image. Please rasterize first.": "Klonavimo įrankis išjungtas norint pakeisti vaizdo dydį. Pirmiausia rastruokite.",
|
||||
"Cloned edges": "Klonuoti kraštai",
|
||||
"Close": "Uždaryti",
|
||||
"Color #": "Spalva #",
|
||||
"Color Zoom": "Spalvų mastelio keitimas",
|
||||
"Color alpha value can not be zero.": "Spalvų alfa vertė negali būti lygi nuliui.",
|
||||
"Color Corrections": "Spalvų korekcijos",
|
||||
"Color Palette": "Spalvų paletė",
|
||||
"Color Zoom": "Spalvų mastelio keitimas",
|
||||
"Color alpha value can not be zero.": "Spalvų alfa vertė negali būti lygi nuliui.",
|
||||
"Color to Alpha": "Spalva alfa",
|
||||
"Color zoom": "Spalvų priartinimas",
|
||||
"Color:": "Spalva:",
|
||||
"Colors": "Spalvos",
|
||||
"Colors:": "Spalvos:",
|
||||
"Common Filters": "Bendri filtrai",
|
||||
"Composition": "Kompozicija",
|
||||
"Composition:": "Sudėtis:",
|
||||
"Content Fill": "Turinio užpildymas",
|
||||
"Contrast": "Kontrastas",
|
||||
"Contrast:": "Kontrastas:",
|
||||
"Convert layer to raster": "Konvertuoti sluoksnį į rastrinį",
|
||||
"Convert to Raster": "Konvertuoti į rastrą",
|
||||
"Copy Selection": "Kopijuoti pasirinkimą",
|
||||
"Copy:": "Kopijuoti:",
|
||||
"Copy to Clipboard": "Nukopijuoti į iškarpinę",
|
||||
"Courier": "Courier",
|
||||
"Crop": "Iškirpti",
|
||||
"Ctrl+V": "Ctrl + v",
|
||||
"Ctrl-P": "Ctrl-p",
|
||||
"Crop Tool": "Apkarpymo įrankis",
|
||||
"Crop on rotated layer is not supported. Convert it to raster to continue.": "Apkarpyti pasuktą sluoksnį negalima. Konvertuokite jį į rastrą, kad galėtumėte tęsti.",
|
||||
"Ctrl + C": "Ctrl + C",
|
||||
"Ctrl+A": "Ctrl+A",
|
||||
"Ctrl+C": "Ctrl+C",
|
||||
"Ctrl+P": "Ctrl+P",
|
||||
"Ctrl+V": "Ctrl+V",
|
||||
"Ctrl+Y": "Ctrl+Y",
|
||||
"Ctrl+Z": "Ctrl+Z",
|
||||
"Current": "Dabartinis",
|
||||
"Curve": "Kreivė",
|
||||
"Current Color Preview": "Dabartinė spalvų peržiūra",
|
||||
"Custom": "Kitas",
|
||||
"Data URL": "Duomenų adresas",
|
||||
"Data URL:": "Duomenų adresas:",
|
||||
"Decrease": "Mažinti",
|
||||
"Decrease Color Depth": "Sumažinti spalvų gylį",
|
||||
"Default": "Numatytas",
|
||||
"Degree:": "Laipsnis:",
|
||||
"Del": "Del",
|
||||
"Delete": "Ištrinti",
|
||||
"Delete Selection": "Ištrinti pasirinkimą",
|
||||
"Denoise": "Sumažinti triukšmą",
|
||||
"Desaturate": "Sumažinti ryškumą",
|
||||
"Desaturate Tool": "Desaturato įrankis",
|
||||
"Description:": "Aprašymas:",
|
||||
"Deutsch": "Deutsch",
|
||||
"Differences": "Skirtumai",
|
||||
"Differences Down": "Skirtumai žemyn",
|
||||
"Direction:": "Kryptis:",
|
||||
"Dither": "Papildymas",
|
||||
"Dithering:": "Papildymu:",
|
||||
"Dominant color:": "Dominuojanti spalva:",
|
||||
"Dot Screen": "Taškų ekranas",
|
||||
"Down": "Žemyn",
|
||||
"Duplicate": "Pasikartojantis",
|
||||
"Duplicate Layer": "Pasikartojantis sluoksnis",
|
||||
"Duplicate layer": "Dubliuoti sluoksnį",
|
||||
"Dynamic": "Dinamiškas",
|
||||
"Edge": "Kraštas",
|
||||
"Edit": "Redaguoti",
|
||||
"Edit text": "Redaguoti tekstą",
|
||||
"Edit text...": "Redaguoti tekstą ...",
|
||||
"Effect browser": "Poveikio naršyklė",
|
||||
"Effects": "Efektai",
|
||||
"Effects browser": "Efektų naršyklė",
|
||||
"Email:": "El. paštas:",
|
||||
"Emboss": "Įspausti",
|
||||
"Empty selection": "Tuščias pasirinkimas",
|
||||
"Empty selection or type not image.": "Tuščias pasirinkimas arba įveskite ne vaizdą.",
|
||||
"Enable autoresize:": "Įjungti automatinį dydžio nustatymą:",
|
||||
"End": "Galas",
|
||||
"English": "Anglų",
|
||||
"English (UK)": "anglų (JK)",
|
||||
"Enrich": "Praturtinti",
|
||||
"Erase": "Ištrinti",
|
||||
"Erase on rotate object is disabled. Sorry.": "Ištrinti objektą pasukti yra išjungtas. atsiprašau",
|
||||
"Enter": "Įveskite",
|
||||
"Erase Tool": "Ištrinti įrankį",
|
||||
"Erase on rotate object is disabled. Please rasterize first.": "Ištrynimas sukant objektą išjungtas. Pirmiausia rastruokite.",
|
||||
"Error": "Klaida",
|
||||
"Error connecting to service.": "Klaida prisijungiant prie paslaugos.",
|
||||
"Error: can not load image.": "Klaida: negalima įkelti paveikslėlio.",
|
||||
"Error loading the list of fonts from Google.": "Įkeliant šriftų sąrašą iš „Google“ įvyko klaida.",
|
||||
"Error registering service worker": "Klaida registruojant aptarnavimo darbuotoją",
|
||||
"Error: can not find filter:": "Klaida: nepavyksta rasti filtro:",
|
||||
"Error: can not find layer with id:": "Klaida: nepavyksta rasti sluoksnio su ID:",
|
||||
"Error: missing details event target": "Klaida: trūksta detalių įvykio tikslo",
|
||||
"Error: unknown layer type:": "Klaida: nežinomas sluoksnio tipas:",
|
||||
"Error: unsupported attribute type:": "Klaida: nepalaikomas atributo tipas:",
|
||||
"Error: wrong key:": "Klaida: klaidingas raktas:",
|
||||
"Esc": "Esc",
|
||||
"Escape": "Pabegti",
|
||||
"Español": "Español",
|
||||
"Expand edges": "Išskleiskite kraštus",
|
||||
"Exponent:": "Eksponentė:",
|
||||
"Export": "Eksportuoti",
|
||||
"External": "Išorinis",
|
||||
"Factor:": "Veiksnys:",
|
||||
"File": "Failas",
|
||||
"File name:": "Failo pavadinimas:",
|
||||
"File size:": "Failo dydis:",
|
||||
"Fill": "Pildyti",
|
||||
"Fill Tool": "Užpildymo įrankis",
|
||||
"Fit": "Talpinti",
|
||||
"Fit Window": "Tinkamas langas",
|
||||
"Fit window": "Pritaikyti langą",
|
||||
"Flatten Image": "Išlyginti vaizdą",
|
||||
"Flip": "Apversti",
|
||||
"FloydSteinberg-serpentine": "Floydsteinberg-serpentinas",
|
||||
"French": "Prancūzų kalba",
|
||||
"Font": "Šriftas",
|
||||
"Français": "Français",
|
||||
"Full HD, 1080p": "Full HD, 1080p",
|
||||
"GIF - Graphics Interchange Format": "Gif - grafikos mainų formatas",
|
||||
"Full Screen": "Per visą ekraną",
|
||||
"Full layers data": "Visų sluoksnių duomenys",
|
||||
"Gap:": "Atotrūkis:",
|
||||
"Gaussian Blur": "Gauso suliejimo",
|
||||
"German": "Vokiečių kalba",
|
||||
"Gif delay:": "Gif delsimas:",
|
||||
"Gingham": "Gingamas",
|
||||
"GitHub:": "Github:",
|
||||
"Gradient": "Gradientas",
|
||||
"Gradient Radius:": "Gradientas spindulys:",
|
||||
"Grains": "Grūdėtumas",
|
||||
"Graphics Interchange Format": "Grafikos mainų formatas",
|
||||
"Gray": "Pilkas",
|
||||
"Grayscale": "Pelės skalė",
|
||||
"Greek": "graikų",
|
||||
"Green": "Žalias",
|
||||
"Green channel:": "Žalias kanalas:",
|
||||
"Green:": "Žalias:",
|
||||
"Greyscale:": "Pilkieji pustoniai:",
|
||||
"Grid": "Tinklelis",
|
||||
"Grid on\/off": "Tinklelis",
|
||||
"Guides": "Vadovai",
|
||||
"Guides enabled.": "Vadovai įjungti.",
|
||||
"H Radius:": "H spindulys:",
|
||||
"H. Align:": "H. Lygiuoti:",
|
||||
"Heatmap": "Spalvinė diagrama",
|
||||
"Height (%):": "Aukštis (%):",
|
||||
"Height:": "Aukštis:",
|
||||
"Help": "Pagalba",
|
||||
"Helvetica": "Helvetica",
|
||||
"Hermite": "Hermite",
|
||||
"Hex:": "Hex:",
|
||||
"Hex": "Hex",
|
||||
"Hide": "Slėpti",
|
||||
"Histogram": "Histograma",
|
||||
"Histogram:": "Histograma:",
|
||||
"Home": "Namai",
|
||||
"Horizontal": "Horizontali",
|
||||
"Horizontal Alignment": "Horizontalus išlyginimas",
|
||||
"Horizontal blur:": "Horizontalus miglotas vaizdas:",
|
||||
"Horizontal:": "Horizontalus:",
|
||||
"Hue": "Atspalvis",
|
||||
"Hue Rotate": "Atspalvis pasukti",
|
||||
"Hue:": "Atspalvis:",
|
||||
"Image": "Vaizdas",
|
||||
"Image data with multi-layers. Can be opened using miniPaint -": "Vaizdo duomenys su kelių sluoksnių. gali būti atidarytas naudojant minipaint -",
|
||||
"Impact": "Poveikis",
|
||||
"In proportion:": "Proporcingai:",
|
||||
"Increase": "Padidinti",
|
||||
"Information": "Informacija",
|
||||
"Insert:": "Įdėti:",
|
||||
"Inkwell": "Rašalo kasykla",
|
||||
"Insert": "Įdėti",
|
||||
"Insert guides": "Įdėkite vadovus",
|
||||
"Insert new layer": "Įdėkite naują sluoksnį",
|
||||
"Instagram Filters": "„Instagram“ filtrai",
|
||||
"Invalid Hex Code": "Netinkamas šešiakampis kodas",
|
||||
"Italiano": "Italų kalba",
|
||||
"Italic": "Italic",
|
||||
"JPG - JPG\/JPEG Format": "JPG - JPG\/JPEG formatas",
|
||||
"JPG, WEBP quality:": "Jpg, webp kokybės:",
|
||||
"JSON - Full layers data": "JSON - sluoksnių duomenys",
|
||||
"Japanese": "Japonų kalba",
|
||||
"JPG\/JPEG Format": "JPG \/ JPEG formatas",
|
||||
"Kerning:": "Kerningas:",
|
||||
"Key-Points": "Pagrindiniai klausimai",
|
||||
"KeyU": "KeyU",
|
||||
"Keyboard Shortcuts": "Klaviatūros nuorodos",
|
||||
"Keyword:": "Raktinis žodis:",
|
||||
"Korean": "Korėjiečių kalba",
|
||||
"Lanczos": "Lanczos",
|
||||
"Landscape": "Peizažas",
|
||||
"Language": "Kalba",
|
||||
"Last modified": "Paskutinį kartą keistas",
|
||||
"Layer": "Sluoksnis",
|
||||
"Layer details": "Sluoksnio detalės",
|
||||
"Layer is already image.": "Sluoksnis jau yra vaizdas.",
|
||||
"Layer must be image, convert it to raster to apply this tool.": "Sluoksnis turi būti įvaizdis, paversti jį rastru, kad pritaikytų šį įrankį.",
|
||||
"Layer is empty.": "Sluoksnis tuščias.",
|
||||
"Layer is not compatible with resize": "Sluoksnis nesuderinamas su dydžio keitimu",
|
||||
"Layer is vector, convert it to raster to apply this tool.": "Sluoksnis yra vektorius, konvertuokite jį į rastrą, kad pritaikytumėte šį įrankį.",
|
||||
"Layers": "Sluoksniai",
|
||||
"Layers:": "Sluoksniai:",
|
||||
"Layout:": "Išdėstymas:",
|
||||
"Left": "Kairėje",
|
||||
"Left to Right": "Iš kairės į dešinę",
|
||||
"Level:": "Lygis:",
|
||||
"Levels:": "Lygiais:",
|
||||
"Lietuvių": "Lietuvių",
|
||||
"Line": "Linija",
|
||||
"Lum:": "Lum:",
|
||||
"Lo-fi": "Lo-fi",
|
||||
"Luminance:": "Skaisčio:",
|
||||
"Magic Wand Tool": "Stebuklinga lazdelė",
|
||||
"Luminosity": "Šviesumas",
|
||||
"Magic Eraser Tool": "„Magic Eraser“ įrankis",
|
||||
"Merge Down": "Sujungti žemyn",
|
||||
"Merge Layers": "Sujungti sluoksnius",
|
||||
"Merged": "Sujungta",
|
||||
"Metrics": "Metrika",
|
||||
"Middle": "Vidurinis",
|
||||
"Missing at least 1 size parameter.": "Trūksta bent 1 dydžio parametro.",
|
||||
"Missing permissions to write to Clipboard.cc": "Trūksta leidimų rašyti į „Clipboard.cc“",
|
||||
"Mode:": "Režimas:",
|
||||
"Module function not found.": "Modulio funkcija nerasta.",
|
||||
"Modules class not found:": "Modulio klasė nerasta:",
|
||||
"Monospace": "Monospace",
|
||||
"Mosaic": "Mozaika",
|
||||
"Mouse:": "Pelė:",
|
||||
"Move": "Perkelti",
|
||||
"Move down": "Judėti žemyn",
|
||||
"Move up": "Perkelti",
|
||||
"Move Layer": "Perkelti sluoksnį",
|
||||
"Move layer down": "Perkelkite sluoksnį žemyn",
|
||||
"Move layer up": "Perkelti sluoksnį aukštyn",
|
||||
"Name:": "Vardas:",
|
||||
"Needs at least 2 layers.": "Reikia bent 2 sluoksnius.",
|
||||
"Negative": "Neigiamas",
|
||||
"New": "Naujas",
|
||||
"New Bezier Layer": "Naujas Bezier sluoksnis",
|
||||
"New Brush Layer": "Naujas teptuko sluoksnis",
|
||||
"New Ellipse Layer": "Naujas elipsės sluoksnis",
|
||||
"New File": "Naujas failas",
|
||||
"New Gradient Layer": "Naujas gradiento sluoksnis",
|
||||
"New Layer": "Naujas sluoksnis",
|
||||
"New Line Layer": "Naujas eilutės sluoksnis",
|
||||
"New Pencil Layer": "Naujas pieštukų sluoksnis",
|
||||
"New Polygon Layer": "Naujas daugiakampio sluoksnis",
|
||||
"New Rectangle Layer": "Naujas stačiakampio sluoksnis",
|
||||
"New Text Layer": "Naujas teksto sluoksnis",
|
||||
"New file": "Naujas failas",
|
||||
"New from Selection": "Nauja iš pasirinkimo",
|
||||
"New layer": "Nauja sluoksnis",
|
||||
"New width can not be smaller then current width": "Naujas plotis negali būti mažesnis nei dabartinis plotis",
|
||||
"Normal": "Normalus",
|
||||
"Next": "Kitas",
|
||||
"Night Vision": "Naktinis matymas",
|
||||
"None": "Nė vienas",
|
||||
"Nothing is selected.": "Niekas nėra pasirinktas.",
|
||||
"Offset X:": "Nuokrypis x:",
|
||||
"Offset Y:": "Kompensuoti:",
|
||||
@ -217,23 +298,34 @@
|
||||
"Open Data URL": "Atidaryti duomenų URL",
|
||||
"Open Directory": "Atidaryti katalogą",
|
||||
"Open File": "Atidaryti failą",
|
||||
"Open File Data URL": "Atidarykite failo duomenų URL",
|
||||
"Open File URL": "Atidarykite failo URL",
|
||||
"Open File Webcam": "Atidarykite „File Webcam“",
|
||||
"Open Image": "Atidarykite vaizdą",
|
||||
"Open JSON File": "Atidarykite JSON failą",
|
||||
"Open Test Template": "Atidarykite testavimo šabloną",
|
||||
"Open URL": "Atidaryti url",
|
||||
"Open data URL": "Atidaryti duomenų url",
|
||||
"Open from Webcam": "Atidarykite iš interneto kameros",
|
||||
"Original Size": "Originalus dydis",
|
||||
"PNG - Portable Network Graphics": "PNG - portable network graphics",
|
||||
"PNGTOSVG - Convert Image to SVG": "PNGTOSVG - konvertuoti vaizdą į SVG",
|
||||
"PageDown": "„PageDown“",
|
||||
"PageUp": "Į viršų",
|
||||
"Palette": "Paletė",
|
||||
"Parameter #1:": "Parametras Nr. 1:",
|
||||
"Parameter #2:": "Parametras # 2:",
|
||||
"Paste": "Įkelti",
|
||||
"Pencil": "Pieštukas",
|
||||
"Percentage:": "Procentas:",
|
||||
"Pick Color": "Pasirinkite spalvą",
|
||||
"Pixels:": "Taškai:",
|
||||
"Play animation": "Groti animaciją",
|
||||
"Portuguese": "Portugalų",
|
||||
"Placeholder comment for color channels": "Spalvotų kanalų vietos rezervatorius",
|
||||
"Placeholder comment for color picker": "Spalvų parinkiklio vietos komentaras",
|
||||
"Placeholder comment for color swatches": "Spalvų pavyzdžių vietos komentaras",
|
||||
"Portable Network Graphics": "Nešiojama tinklo grafika",
|
||||
"Portrait": "Portretas",
|
||||
"Português": "Português",
|
||||
"Position:": "Padėtis:",
|
||||
"Power:": "Galia:",
|
||||
"Powred by pixabay.com .": "Powred by pixabay.com.",
|
||||
"Pre-Blur:": "Migla:",
|
||||
"Preview": "Peržiūrėti",
|
||||
"Previous": "Ankstesnis",
|
||||
"Previous layer must be image, convert it to raster to apply this tool.": "Ankstesnis sluoksnis turi būti vaizdas, konvertuoti jį į rastrą, kad būtų taikomas šis įrankis.",
|
||||
@ -241,123 +333,168 @@
|
||||
"Quality:": "Kokybė:",
|
||||
"Quick Load": "Greitas įkrovimas",
|
||||
"Quick Save": "Greitas išsaugojimas",
|
||||
"REMOVE.BG - Remove Image Background": "REMOVE.BG - Pašalinti vaizdo foną",
|
||||
"Radial": "Radialinis",
|
||||
"Radial gradient": "Radialinis gradientas",
|
||||
"Radius:": "Spindulys:",
|
||||
"Range:": "Kategorijos:",
|
||||
"Rectangle": "Stačiakampis",
|
||||
"Red": "Raudonas",
|
||||
"Red channel:": "Raudonasis kanalas:",
|
||||
"Red:": "Raudona:",
|
||||
"Redo": "Perdaryti",
|
||||
"Remove all": "Pašalinti visus",
|
||||
"Rename": "Pervadinti",
|
||||
"Rename Layer": "Pervardyti sluoksnį",
|
||||
"Rendered with errors.": "Pateikta su klaidomis.",
|
||||
"Rendering...": "Perduodama ...",
|
||||
"Replace Color": "Pakeiskite spalvą",
|
||||
"Replace color": "Pakeiskite spalvą",
|
||||
"Replacement:": "Pakeitimas:",
|
||||
"Report Issues": "Pranešti apie problemas",
|
||||
"Resample - Hermite": "Resample - hermite",
|
||||
"Reset": "Atstatyti",
|
||||
"Reset zoom level": "Atstatyti mastelį",
|
||||
"Resize": "Keisti dydį",
|
||||
"Resize Boundary": "Keisti ribos dydį",
|
||||
"Resize Layer": "Keisti sluoksnio dydį",
|
||||
"Resize Layers": "Keisti sluoksnių dydį",
|
||||
"Resize Text Layer": "Keisti teksto sluoksnio dydį",
|
||||
"Resized as background": "Pakeista kaip fonas",
|
||||
"Resized:": "Pakeistas dydis:",
|
||||
"Resolution:": "Rezoliucija:",
|
||||
"Restore Alpha": "Atkurti alfa",
|
||||
"Right": "Teisingai",
|
||||
"Right angle:": "Dešinysis kampas:",
|
||||
"Right to Left": "Iš dešinės į kairę",
|
||||
"Rotate": "Sukti",
|
||||
"Rotate Layer": "Pasukti sluoksnį",
|
||||
"Rotate is not supported on this type of object. Convert to raster?": "Šio tipo objektuose nepavyksta pakeisti rotacijos. konvertuoti į rastrą?",
|
||||
"Rotate left": "Pasukti į kairę",
|
||||
"Rotate:": "Pasukti:",
|
||||
"Russian": "Rusų kalba",
|
||||
"Sat:": "Sat:",
|
||||
"Ruler": "Valdovas",
|
||||
"SQUOOSH - Compress and Compare Images": "SQUOOSH - suspauskite ir palyginkite vaizdus",
|
||||
"Saturate": "Saturate",
|
||||
"Saturation": "Sodrumas",
|
||||
"Saturation:": "Spalvingumas:",
|
||||
"Save": "Išsaugoti",
|
||||
"Save As": "Išsaugoti kaip",
|
||||
"Save As Data URL": "Išsaugoti kaip duomenų URL",
|
||||
"Save as": "Išsaugoti kaip",
|
||||
"Save as type:": "Išsaugoti kaip:",
|
||||
"Save layers:": "Išsaugoti sluoksnius:",
|
||||
"Save resolution:": "Išsaugoti rezoliuciją:",
|
||||
"Scaling up is not supported in Hermite, using Lanczos.": "„Hermite“, naudojant „Lanczos“, mastelio didinimas nepalaikomas.",
|
||||
"Scroll down": "Slinkti žemyn",
|
||||
"Scroll up": "Slinkite aukštyn",
|
||||
"Search": "Paieška",
|
||||
"Search Images": "Ieškoti vaizdų",
|
||||
"Search for Font": "Ieškoti šrifto",
|
||||
"Search:": "Paieška:",
|
||||
"Select All": "Pasirinkti viską",
|
||||
"Select Text Layer": "Pasirinkite Teksto sluoksnis",
|
||||
"Select object tool": "Pasirinkite objektas įrankis",
|
||||
"Selected": "Pasirinkti",
|
||||
"Selection": "Pasirinkimas",
|
||||
"Selection Tool": "Pasirinkimo įrankis",
|
||||
"Sensitivity:": "Jautrumas:",
|
||||
"Separated": "Atskirtas",
|
||||
"Separated (original types)": "Atskirti (originali tipai)",
|
||||
"Sepia": "Sepia",
|
||||
"Set Image Size": "Nustatykite vaizdo dydį",
|
||||
"Settings": "Nustatymai",
|
||||
"Shadow": "Šešėlis",
|
||||
"Shadow:": "Šešėlis:",
|
||||
"Shapes": "Formos",
|
||||
"Shapes (H)": "Formos (H)",
|
||||
"Sharpen": "Pagaląsti",
|
||||
"Sharpen tool": "Paryškinti nuorodą",
|
||||
"Sharpen Tool": "Aštrinimo įrankis",
|
||||
"Sharpen:": "Paryškinti:",
|
||||
"Show \/ Hide": "Rodyti Slėpti",
|
||||
"Shift + S": "Shift + S",
|
||||
"Shortcut Key:": "Spartusis klavišas:",
|
||||
"Show": "Rodyti",
|
||||
"Show \/ Hide": "Rodyti \/ Slėpti",
|
||||
"Show file size:": "Rodyti failo dydį:",
|
||||
"Simple": "Paprastas",
|
||||
"Size": "Dydis",
|
||||
"Size is too big, max": "Dydis yra per didelis, maks",
|
||||
"Size:": "Dydis:",
|
||||
"Skip - layer must be image.": "Praleisti - sluoksnis turi būti vaizdas.",
|
||||
"Solarize": "Soliarizacija",
|
||||
"Sorry, cold not load getUserMedia() data:": "Deja, šalta, neįkelkite „getUserMedia“ () duomenų:",
|
||||
"Sorry, image could not be loaded.": "Deja, nepavyko įkelti vaizdo.",
|
||||
"Sorry, image could not be loaded. Try copy image and paste it.": "Deja, vaizdas negali būti įkeltas. pabandykite kopijuoti nuotrauką ir įklijuoti ją.",
|
||||
"Sorry, image is too big, max 5 MB.": "Atsiprašome, vaizdas yra per didelis, daugiausiai 5 MB.",
|
||||
"Source is empty, right click on image to save source position.": "Šaltinis yra tuščias, dešiniuoju pelės mygtuku spustelėkite vaizdą, kad išsaugotumėte šaltinio poziciją.",
|
||||
"Source coordinates saved.": "Šaltinio koordinatės išsaugotos.",
|
||||
"Source is empty, right click on image or use long press to save source position.": "Šaltinis tuščias, dešiniuoju pelės mygtuku spustelėkite vaizdą arba naudokite ilgą paspaudimą, kad išsaugotumėte šaltinio padėtį.",
|
||||
"Sprites": "Sprites",
|
||||
"Square": "Langelis",
|
||||
"Stream:": "Srautas:",
|
||||
"Strength:": "Jėga:",
|
||||
"Strict": "Griežtas",
|
||||
"Stroke": "Insultas",
|
||||
"Stroke:": "Insultas:",
|
||||
"TINYPNG - Compress PNG and JPEG": "TINYPNG - suspausti PNG ir JPEG",
|
||||
"Tab": "Tab",
|
||||
"Tag Image File Format": "Žymės vaizdo failo formatas",
|
||||
"Tahoma": "Tahoma",
|
||||
"Target:": "Tikslas:",
|
||||
"Text": "Tekstas",
|
||||
"Text example": "Teksto pavyzdys",
|
||||
"Text:": "Tekstas:",
|
||||
"The quick brown fox jumps over the lazy dog.": "Greita rudoji lapė peršoka per tinginį šunį.",
|
||||
"There": "Ten",
|
||||
"There are no layers behind.": "Už sluoksnių nėra.",
|
||||
"There is only 1 layer.": "Yra tik 1 sluoksnis.",
|
||||
"This layer must contain an image. Please convert it to raster to apply this tool.": "Sluoksnis turi būti paveiksliukas, konvertuokite jį į rastrą, kad pritaikyti šį įrankį.",
|
||||
"Tilt Shift": "Tento perkelimas",
|
||||
"Times New Roman": "Times New Roman",
|
||||
"Toaster": "Skrudintuvas",
|
||||
"Toggle": "Perjungti",
|
||||
"Toggle Color Channels": "Perjungti spalvų kanalus",
|
||||
"Toggle Color Picker": "Perjungti spalvų rinkiklį",
|
||||
"Toggle Menu": "Perjungti meniu",
|
||||
"Toggle Swatches": "Perjungti pavyzdžius",
|
||||
"Tools": "Įrankiai",
|
||||
"Tools class not found:": "Įrankių klasė nerasta:",
|
||||
"Top": "Į viršų",
|
||||
"Top to Bottom": "Nuo viršaus iki apačios",
|
||||
"Total pixels:": "Iš viso taškų:",
|
||||
"Translate": "Versti",
|
||||
"Translate Layer": "Versti sluoksnį",
|
||||
"Translate error, can not find dictionary:": "Versti klaidą, negali rasti žodyną:",
|
||||
"Transparency background:": "Skaidrumo fonas:",
|
||||
"Transparent:": "Skaidri:",
|
||||
"Trim": "Apkarpyti",
|
||||
"Trim everything:": "Trim viską:",
|
||||
"Trim Layers": "Apdailos sluoksniai",
|
||||
"Trim borders:": "Apkirpti kraštus:",
|
||||
"Trim layer:": "Trim sluoksnis:",
|
||||
"Trim white color?": "Trim balta spalva?",
|
||||
"Turkish": "Turkų kalba",
|
||||
"Type:": "Tipas:",
|
||||
"Türkçe": "Türkçe",
|
||||
"Undo": "Anuliuoti",
|
||||
"Undo disabled.": "Atšaukti išjungta.",
|
||||
"Undo enabled.": "Atšaukti įjungta.",
|
||||
"Undo is not available.": "Atšaukti negalima.",
|
||||
"Undo levels changed to 1.": "Atšaukti lygiai pakeista į 1.",
|
||||
"Undo levels restored to": "Atšaukti lygius atkurti",
|
||||
"Unique colors:": "Unikalios spalvos:",
|
||||
"Up": "Aukštyn",
|
||||
"Update": "Atnaujinti",
|
||||
"Update Brush Layer": "Atnaujinti teptuko sluoksnį",
|
||||
"Update Pencil Layer": "Atnaujinkite pieštukų sluoksnį",
|
||||
"Update guides": "Atnaujinti vadovus",
|
||||
"Use Ctrl+V keyboard shortcut to paste from Clipboard.": "Naudokite \"ctrl + v\" spartieji klavišai, kuriuos norite įklijuoti iš iškarpinės.",
|
||||
"V Radius:": "V spindulys:",
|
||||
"V. Align:": "V. Sulyginti:",
|
||||
"Valencia": "Valensija",
|
||||
"Verdana": "Verdana",
|
||||
"Version:": "Versija:",
|
||||
"Vertical": "Vertikalus",
|
||||
"Vertical Alignment": "Vertikalus išlyginimas",
|
||||
"Vertical blur:": "Vertikalus plyšimas:",
|
||||
"Vertical:": "Vertikalus:",
|
||||
"Vibrance": "Rezonansas",
|
||||
"View": "Žiūrėti",
|
||||
"Vignette": "Vinjetė",
|
||||
"ViliusL": "Viliusl",
|
||||
"Vintage": "Senoviškas",
|
||||
"Visible:": "Matomas:",
|
||||
"WEBP - Weppy File Format": "WEBP - weppy failo formatas",
|
||||
"Webcam": "Internetinė kamera",
|
||||
"Webcam #": "Internetinė kamera #",
|
||||
"Website:": "Interneto svetainė:",
|
||||
"Weppy File Format": "Weppy failo formatas",
|
||||
"Width (%):": "Plotis (%):",
|
||||
"Width:": "Plotis:",
|
||||
"Windows Bitmap": "„Windows Bitmap“",
|
||||
"Word": "Žodis",
|
||||
"Word + Letter": "Žodis + laiškas",
|
||||
"Wrap At:": "Apvyniokite:",
|
||||
"Wrap:": "Apvyniojimas:",
|
||||
"Wrong dimensions": "Neteisingi matmenys",
|
||||
"Wrong file type, must be image or json.": "Neteisingas failo tipas, turi būti paveikslėlis arba json.",
|
||||
"X end:": "X pabaiga:",
|
||||
"X position:": "X pozicija:",
|
||||
"X start:": "X pradžia::",
|
||||
"X-Pro II": "„X-Pro II“",
|
||||
"Y end:": "Y pabaiga:",
|
||||
"Y position:": "Y pozicija:",
|
||||
"Y start:": "Y pradžia:",
|
||||
|
||||
514
src/js/languages/nl.json
Normal file
@ -0,0 +1,514 @@
|
||||
{
|
||||
"A problem occurred while removing undo history. It": "Er is een probleem opgetreden bij het verwijderen van de ongedaanmaakgeschiedenis. Het",
|
||||
"About": "Over",
|
||||
"Active": "Actief",
|
||||
"Aden": "Aden",
|
||||
"Advanced": "Geavanceerd",
|
||||
"All": "Alle",
|
||||
"Alpha": "Alpha",
|
||||
"Alpha:": "Alpha:",
|
||||
"Anonymous": "Anoniem",
|
||||
"Anti aliasing": "Anti-aliasing",
|
||||
"Application markup may have changed,": "De opmaak van de applicatie is mogelijk gewijzigd,",
|
||||
"Arial": "Arial",
|
||||
"Arrow": "Pijl",
|
||||
"ArrowDown": "ArrowDown",
|
||||
"ArrowLeft": "Pijl naar links",
|
||||
"ArrowRight": "Pijl naar rechts",
|
||||
"ArrowUp": "Pijl omhoog",
|
||||
"Author:": "Auteur:",
|
||||
"Auto Adjust Colors": "Automatisch kleuren aanpassen",
|
||||
"Auto Kerning": "Automatisch letterafstand aanpassen",
|
||||
"Average:": "Gemiddelde:",
|
||||
"Backspace": "Rugpijn",
|
||||
"Base": "Basis",
|
||||
"Basic": "BASIS",
|
||||
"Black and White": "Zwart en Wit",
|
||||
"Blue": "Blauw",
|
||||
"Blue channel:": "Blauw kanaal:",
|
||||
"Blueprint": "Blauwdruk",
|
||||
"Blur Radius:": "Vervagingsstraal:",
|
||||
"Blur Tool": "Vervagingsgereedschap",
|
||||
"Blur power:": "Vervagingskracht:",
|
||||
"Borders": "Randen",
|
||||
"Bottom": "Onderkant",
|
||||
"Bottom to Top": "Van onder naar boven",
|
||||
"Bounds:": "Grenzen:",
|
||||
"Box": "Doos",
|
||||
"Box Blur": "Doos vervagen",
|
||||
"Box blur": "Doos vervagen",
|
||||
"Brightness": "Helderheid",
|
||||
"Brightness:": "Helderheid:",
|
||||
"Bulge\/Pinch Tool": "Uitzetten\/knijpen gereedschap",
|
||||
"Burn": "Branden",
|
||||
"Can not animate 1 layer.": "Kan geen 1 laag animeren.",
|
||||
"Can not find previous layer.": "Kan de vorige laag niet vinden.",
|
||||
"Can not use this tool on current layer: image already takes all area.": "Kan dit gereedschap niet gebruiken op de huidige laag: de afbeelding neemt al het hele gebied in beslag.",
|
||||
"Cancel": "Annuleren",
|
||||
"Canvas Size": "Canvas grootte",
|
||||
"Center": "Midden",
|
||||
"Center x:": "Middelpunt x:",
|
||||
"Center y:": "Middelpunt y:",
|
||||
"Center:": "Midden:",
|
||||
"Change Composition": "Compositie wijzigen",
|
||||
"Change Layer Details": "Laagdetails wijzigen",
|
||||
"Change Opacity": "Wijzig de dekking",
|
||||
"Channel:": "Kanaal:",
|
||||
"Circle": "Cirkel",
|
||||
"Clarendon": "Clarendon",
|
||||
"Clear": "Wissen",
|
||||
"Clear Selection": "Selectie wissen",
|
||||
"Clone Tool": "Kloon gereedschap",
|
||||
"Clone count:": "Aantal klonen:",
|
||||
"Clone tool disabled for resized image. Please rasterize first.": "Kloontool uitgeschakeld voor afbeelding met gewijzigd formaat. Gelieve eerst te rasteren.",
|
||||
"Cloned edges": "Gekloonde randen",
|
||||
"Close": "Dichtbij",
|
||||
"Color #": "Kleur #",
|
||||
"Color Corrections": "Kleurcorrecties",
|
||||
"Color Palette": "Kleurenpalet",
|
||||
"Color Zoom": "Kleurzoom",
|
||||
"Color alpha value can not be zero.": "Kleur alfa-waarde kan niet nul zijn.",
|
||||
"Color to Alpha": "Kleur naar Alpha",
|
||||
"Color zoom": "Kleurzoom",
|
||||
"Color:": "Kleur:",
|
||||
"Colors": "Kleuren",
|
||||
"Colors:": "Kleuren:",
|
||||
"Common Filters": "Gemeenschappelijke filters",
|
||||
"Composition": "Samenstelling",
|
||||
"Composition:": "Samenstelling:",
|
||||
"Content Fill": "Inhoud vullen",
|
||||
"Contrast": "Contrast",
|
||||
"Contrast:": "Contrast:",
|
||||
"Convert layer to raster": "Converteer laag naar raster",
|
||||
"Convert to Raster": "Converteren naar raster",
|
||||
"Copy Selection": "Selectie kopiëren",
|
||||
"Copy to Clipboard": "Kopiëren naar klembord",
|
||||
"Courier": "Koerier",
|
||||
"Crop Tool": "Bijsnijdgereedschap",
|
||||
"Crop on rotated layer is not supported. Convert it to raster to continue.": "Bijsnijden op geroteerde laag wordt niet ondersteund. Converteer het naar raster om door te gaan.",
|
||||
"Ctrl + C": "Ctrl+C",
|
||||
"Ctrl+A": "Ctrl + A",
|
||||
"Ctrl+C": "Ctrl + C",
|
||||
"Ctrl+P": "Ctrl+P",
|
||||
"Ctrl+V": "Ctrl + V",
|
||||
"Ctrl+Y": "Ctrl + Y",
|
||||
"Ctrl+Z": "Ctrl + Z",
|
||||
"Current": "Huidige",
|
||||
"Current Color Preview": "Huidige kleurvoorbeeld",
|
||||
"Custom": "Aangepast",
|
||||
"Data URL": "Gegevens-URL",
|
||||
"Data URL:": "Gegevens-URL:",
|
||||
"Decrease": "Verminderen",
|
||||
"Decrease Color Depth": "Kleurdiepte verminderen",
|
||||
"Degree:": "Graad:",
|
||||
"Del": "Del",
|
||||
"Delete": "Verwijderen",
|
||||
"Delete Selection": "Selectie verwijderen",
|
||||
"Denoise": "Ruis verminderen",
|
||||
"Desaturate Tool": "Ontzadigen gereedschap",
|
||||
"Description:": "Beschrijving:",
|
||||
"Deutsch": "Duits",
|
||||
"Differences": "Verschillen",
|
||||
"Differences Down": "Verschillen omlaag",
|
||||
"Direction:": "Richting:",
|
||||
"Dither": "Dither",
|
||||
"Dithering:": "Dithering:",
|
||||
"Dominant color:": "Dominante kleur:",
|
||||
"Dot Screen": "Puntenscherm",
|
||||
"Down": "Omlaag",
|
||||
"Duplicate": "Dupliceren",
|
||||
"Duplicate Layer": "Dupliceer laag",
|
||||
"Duplicate layer": "Dubbele laag",
|
||||
"Dutch": "Nederlands",
|
||||
"Dynamic": "Dynamisch",
|
||||
"Edge": "Rand",
|
||||
"Edit": "Bewerken",
|
||||
"Edit text...": "Tekst bewerken...",
|
||||
"Effect browser": "Effectenbrowser",
|
||||
"Effects": "Effecten",
|
||||
"Effects browser": "Effectenbrowser",
|
||||
"Email:": "E-mail:",
|
||||
"Emboss": "In reliëf",
|
||||
"Empty selection": "Lege selectie",
|
||||
"Empty selection or type not image.": "Lege selectie of type geen afbeelding.",
|
||||
"Enable autoresize:": "Automatisch aanpassen van formaat inschakelen:",
|
||||
"End": "Einde",
|
||||
"English": "Engels",
|
||||
"English (UK)": "Engels (VK)",
|
||||
"Enrich": "Verrijken",
|
||||
"Enter": "Invoeren",
|
||||
"Erase Tool": "Wismiddel",
|
||||
"Erase on rotate object is disabled. Please rasterize first.": "Wissen bij roteren van object is uitgeschakeld. Gelieve eerst te rasteren.",
|
||||
"Error": "Fout",
|
||||
"Error connecting to service.": "Fout bij het verbinden met de service.",
|
||||
"Error loading the list of fonts from Google.": "Fout bij het laden van de lijst met lettertypen van Google.",
|
||||
"Error registering service worker": "Fout bij registreren van servicemedewerker",
|
||||
"Error: can not find filter:": "Fout: kan filter niet vinden:",
|
||||
"Error: can not find layer with id:": "Fout: kan laag met id niet vinden:",
|
||||
"Error: missing details event target": "Fout: ontbrekend doelevenementdoel",
|
||||
"Error: unknown layer type:": "Fout: onbekend laagtype:",
|
||||
"Error: unsupported attribute type:": "Fout: niet-ondersteund attribuuttype:",
|
||||
"Esc": "Esc",
|
||||
"Escape": "Ontsnappen",
|
||||
"Español": "Spaans",
|
||||
"Expand edges": "Randen uitbreiden",
|
||||
"Exponent:": "Exponent:",
|
||||
"Export": "Exporteren",
|
||||
"External": "Extern",
|
||||
"Factor:": "Factor:",
|
||||
"File": "Bestand",
|
||||
"File name:": "Bestandsnaam:",
|
||||
"File size:": "Bestandsgrootte:",
|
||||
"Fill": "Vullen",
|
||||
"Fill Tool": "Vulmiddel",
|
||||
"Fit": "Passend maken",
|
||||
"Fit Window": "Venster passend maken",
|
||||
"Fit window": "Venster passen",
|
||||
"Flatten Image": "Afbeelding afvlakken",
|
||||
"Flip": "Omdraaien",
|
||||
"FloydSteinberg-serpentine": "FloydSteinberg-serpentijn",
|
||||
"Font": "Lettertype",
|
||||
"Français": "Frans",
|
||||
"Full HD, 1080p": "Volledig HD, 1080p",
|
||||
"Full Screen": "Volledig scherm",
|
||||
"Full layers data": "Volledige laaggegevens",
|
||||
"Gap:": "Spleet:",
|
||||
"Gaussian Blur": "Gaussische vervaging",
|
||||
"Gif delay:": "Gif-vertraging:",
|
||||
"Gingham": "Gingham",
|
||||
"GitHub:": "GitHub:",
|
||||
"Gradient Radius:": "Gradiëntradius:",
|
||||
"Grains": "Korrels",
|
||||
"Graphics Interchange Format": "Grafische uitwisselingsformaat",
|
||||
"Gray": "Grijs",
|
||||
"Grayscale": "Grijstinten",
|
||||
"Greek": "Grieks",
|
||||
"Green": "Groen",
|
||||
"Green channel:": "Groen kanaal:",
|
||||
"Greyscale:": "Grijstinten:",
|
||||
"Grid": "Raster",
|
||||
"Grid on\/off": "Raster aan\/uit",
|
||||
"Guides": "Gidsen",
|
||||
"Guides enabled.": "Gidsen ingeschakeld.",
|
||||
"H Radius:": "H Radius:",
|
||||
"H. Align:": "H. Uitlijnen:",
|
||||
"Heatmap": "Warmtekaart",
|
||||
"Height (%):": "Hoogte (%):",
|
||||
"Height:": "Hoogte:",
|
||||
"Help": "Help",
|
||||
"Helvetica": "Helvetica",
|
||||
"Hermite": "Hermite",
|
||||
"Hex": "Hex",
|
||||
"Hide": "Verbergen",
|
||||
"Histogram": "Histogram",
|
||||
"Histogram:": "Histogram:",
|
||||
"Home": "Start",
|
||||
"Horizontal": "Horizontaal",
|
||||
"Horizontal Alignment": "Horizontale uitlijning",
|
||||
"Horizontal blur:": "Horizontale vervaging:",
|
||||
"Horizontal:": "Horizontaal:",
|
||||
"Hue": "Tint",
|
||||
"Hue Rotate": "Hue Rotate",
|
||||
"Hue:": "Tint:",
|
||||
"Image": "Afbeelding",
|
||||
"Image data with multi-layers. Can be opened using miniPaint -": "Afbeeldingsgegevens met meerdere lagen. Kan worden geopend met miniPaint -",
|
||||
"Impact": "Impact",
|
||||
"In proportion:": "In proportie:",
|
||||
"Increase": "Verhogen",
|
||||
"Information": "Informatie",
|
||||
"Inkwell": "Inktpot",
|
||||
"Insert": "Invoegen",
|
||||
"Insert guides": "Gidsen plaatsen",
|
||||
"Insert new layer": "Nieuwe laag invoegen",
|
||||
"Instagram Filters": "Instagram Filters",
|
||||
"Invalid Hex Code": "Ongeldige Hex Code",
|
||||
"Italiano": "Italiaans",
|
||||
"JPG\/JPEG Format": "JPG\/JPEG Formaat",
|
||||
"Kerning:": "Kerning:",
|
||||
"Key-Points": "Belangrijke Punten",
|
||||
"KeyU": "SleutelU",
|
||||
"Keyboard Shortcuts": "Sneltoetsen",
|
||||
"Keyword:": "Sleutelwoord:",
|
||||
"Lanczos": "Lanczos",
|
||||
"Landscape": "Landschap",
|
||||
"Language": "Taal",
|
||||
"Last modified": "Laatst gewijzigd",
|
||||
"Layer": "Laag",
|
||||
"Layer details": "Laagdetails",
|
||||
"Layer is empty.": "Laag is leeg.",
|
||||
"Layer is not compatible with resize": "Laag is niet compatibel met formaatwijziging",
|
||||
"Layer is vector, convert it to raster to apply this tool.": "Laag is vector, converteer deze naar raster om dit gereedschap toe te passen.",
|
||||
"Layers": "Lagen",
|
||||
"Layers:": "Lagen:",
|
||||
"Layout:": "Indeling:",
|
||||
"Left": "Links",
|
||||
"Left to Right": "Links naar Rechts",
|
||||
"Level:": "Niveau:",
|
||||
"Levels:": "Niveaus:",
|
||||
"Lietuvių": "Lietuvių",
|
||||
"Lo-fi": "Lo-fi",
|
||||
"Luminance:": "Luminantie:",
|
||||
"Luminosity": "Luminositeit",
|
||||
"Magic Eraser Tool": "Tovergummi",
|
||||
"Merge Down": "Samenvoegen Omlaag",
|
||||
"Merge Layers": "Lagen Samenvoegen",
|
||||
"Merged": "Samengevoegd",
|
||||
"Metrics": "Metrieken",
|
||||
"Middle": "Midden",
|
||||
"Missing at least 1 size parameter.": "Minstens 1 grootteparameter ontbreekt.",
|
||||
"Missing permissions to write to Clipboard.cc": "Machtigingen ontbreken om naar Clipboard.cc te schrijven",
|
||||
"Mode:": "Modus:",
|
||||
"Module function not found.": "Modulefunctie niet gevonden.",
|
||||
"Modules class not found:": "Modulesklasse niet gevonden:",
|
||||
"Monospace": "Monospace",
|
||||
"Mosaic": "Mozaïek",
|
||||
"Mouse:": "Muis:",
|
||||
"Move": "Verplaatsen",
|
||||
"Move Layer": "Laag Verplaatsen",
|
||||
"Move layer down": "Verplaats laag naar beneden",
|
||||
"Move layer up": "Verplaats laag naar boven",
|
||||
"Name:": "Naam:",
|
||||
"Negative": "Negatief",
|
||||
"New": "Nieuw",
|
||||
"New Bezier Layer": "Nieuwe Bezier-laag",
|
||||
"New Brush Layer": "Nieuwe Kwastlaag",
|
||||
"New Ellipse Layer": "Nieuwe Ellipslaag",
|
||||
"New File": "Nieuw Bestand",
|
||||
"New Gradient Layer": "Nieuwe Gradiëntlaag",
|
||||
"New Layer": "Nieuwe Laag",
|
||||
"New Line Layer": "Nieuwe Lijnlaag",
|
||||
"New Pencil Layer": "Nieuwe Potloodlaag",
|
||||
"New Polygon Layer": "Nieuwe veelhoeklaag",
|
||||
"New Rectangle Layer": "Nieuwe Rechthoekige Laag",
|
||||
"New Text Layer": "Nieuwe Tekstlaag",
|
||||
"New file": "Nieuw bestand",
|
||||
"New from Selection": "Nieuw vanuit Selectie",
|
||||
"New layer": "Nieuwe laag",
|
||||
"Next": "Volgende",
|
||||
"Night Vision": "Nachtkijker",
|
||||
"None": "Geen",
|
||||
"Nothing is selected.": "Niets is geselecteerd.",
|
||||
"Offset X:": "Verschuiving X:",
|
||||
"Offset Y:": "Verschuiving Y:",
|
||||
"Oil": "Olie",
|
||||
"Ok": "Oké",
|
||||
"Online image editor.": "Online afbeelding editor",
|
||||
"Opacity": "Dekking",
|
||||
"Opacity:": "Dekking:",
|
||||
"Open": "Openen",
|
||||
"Open Data URL": "Open Data-URL",
|
||||
"Open Directory": "Open Map",
|
||||
"Open File": "Open Bestand",
|
||||
"Open File Data URL": "Open Bestand Data-URL",
|
||||
"Open File URL": "Open Bestand-URL",
|
||||
"Open File Webcam": "Open Bestand Webcam",
|
||||
"Open Image": "Open Afbeelding",
|
||||
"Open JSON File": "Open JSON Bestand",
|
||||
"Open Test Template": "Open Test Sjabloon",
|
||||
"Open URL": "Open URL",
|
||||
"Open data URL": "Open data-URL",
|
||||
"Open from Webcam": "Open van Webcam",
|
||||
"Original Size": "Origineel Formaat",
|
||||
"PNGTOSVG - Convert Image to SVG": "PNGTOSVG - Afbeelding converteren naar SVG",
|
||||
"PageDown": "Pagina Omlaag",
|
||||
"PageUp": "Pagina Omhoog",
|
||||
"Palette": "Palet",
|
||||
"Parameter #1:": "Parameter #1:",
|
||||
"Parameter #2:": "Parameter #2:",
|
||||
"Paste": "Plakken",
|
||||
"Pencil": "Potlood",
|
||||
"Percentage:": "Percentage:",
|
||||
"Pixels:": "Pixels:",
|
||||
"Placeholder comment for color channels": "Plaatsvervangend commentaar voor kleurkanalen",
|
||||
"Placeholder comment for color picker": "Plaatsvervangend commentaar voor kleurkiezer",
|
||||
"Placeholder comment for color swatches": "Plaatsvervangend commentaar voor kleurenstaaltjes",
|
||||
"Portable Network Graphics": "Portable Network Graphics",
|
||||
"Portrait": "Portret",
|
||||
"Português": "Portugees",
|
||||
"Position:": "Positie:",
|
||||
"Power:": "Kracht:",
|
||||
"Preview": "Voorbeeld",
|
||||
"Previous": "Vorige",
|
||||
"Previous layer must be image, convert it to raster to apply this tool.": "De vorige laag moet een afbeelding zijn, zet deze om naar raster om deze tool toe te passen.",
|
||||
"Print": "Afdrukken",
|
||||
"Quality:": "Kwaliteit:",
|
||||
"Quick Load": "Snel laden",
|
||||
"Quick Save": "Snel opslaan",
|
||||
"REMOVE.BG - Remove Image Background": "REMOVE.BG - Verwijder Achtergrond van Afbeelding",
|
||||
"Radial": "Radiaal",
|
||||
"Radial gradient": "Radiale gradiënt",
|
||||
"Radius:": "Straal:",
|
||||
"Range:": "Bereik:",
|
||||
"Red": "Rood",
|
||||
"Red channel:": "Rood kanaal:",
|
||||
"Redo": "Opnieuw",
|
||||
"Remove all": "Verwijder alles",
|
||||
"Rename": "Hernoemen",
|
||||
"Rename Layer": "Laag hernoemen",
|
||||
"Rendered with errors.": "Weergegeven met fouten.",
|
||||
"Rendering...": "Renderen...",
|
||||
"Replace Color": "Kleur vervangen",
|
||||
"Replace color": "Kleur vervangen",
|
||||
"Replacement:": "Vervanging:",
|
||||
"Report Issues": "Problemen rapporteren",
|
||||
"Reset": "Resetten",
|
||||
"Resize": "Formaat wijzigen",
|
||||
"Resize Boundary": "Formaat van grens wijzigen",
|
||||
"Resize Layer": "Formaat van laag wijzigen",
|
||||
"Resize Layers": "Formaat van lagen wijzigen",
|
||||
"Resize Text Layer": "Formaat van tekstlaag wijzigen",
|
||||
"Resized as background": "Hernoemd als achtergrond",
|
||||
"Resized:": "Formaat gewijzigd:",
|
||||
"Resolution:": "Resolutie:",
|
||||
"Restore Alpha": "Alfa herstellen",
|
||||
"Right": "Rechts",
|
||||
"Right angle:": "Rechte hoek:",
|
||||
"Right to Left": "Van rechts naar links",
|
||||
"Rotate": "Roteren",
|
||||
"Rotate Layer": "Laag roteren",
|
||||
"Rotate is not supported on this type of object. Convert to raster?": "Roteren wordt niet ondersteund voor dit type object. Omzetten naar raster?",
|
||||
"Rotate left": "Links roteren",
|
||||
"Rotate:": "Roteren:",
|
||||
"Ruler": "Liniaal",
|
||||
"SQUOOSH - Compress and Compare Images": "SQUOOSH - Afbeeldingen comprimeren en vergelijken",
|
||||
"Saturate": "Verzadigen",
|
||||
"Saturation": "Verzadiging",
|
||||
"Saturation:": "Verzadiging:",
|
||||
"Save As": "Opslaan als",
|
||||
"Save As Data URL": "Opslaan als gegevens-URL",
|
||||
"Save as": "Opslaan als",
|
||||
"Save as type:": "Opslaan als type:",
|
||||
"Save layers:": "Lagen opslaan:",
|
||||
"Scaling up is not supported in Hermite, using Lanczos.": "Opschalen wordt niet ondersteund in Hermite, Lanczos wordt gebruikt.",
|
||||
"Scroll down": "Omlaag scrollen",
|
||||
"Scroll up": "Omhoog scrollen",
|
||||
"Search": "Zoeken",
|
||||
"Search Images": "Afbeeldingen zoeken",
|
||||
"Search for Font": "Zoek naar lettertype",
|
||||
"Search:": "Zoekopdracht:",
|
||||
"Select All": "Alles selecteren",
|
||||
"Select Text Layer": "Tekstlaag selecteren",
|
||||
"Select object tool": "Objectgereedschap selecteren",
|
||||
"Selected": "Geselecteerd",
|
||||
"Selection Tool": "Selectiegereedschap",
|
||||
"Sensitivity:": "Gevoeligheid:",
|
||||
"Separated": "Gescheiden",
|
||||
"Separated (original types)": "Gescheiden (originele typen)",
|
||||
"Sepia": "Sepia",
|
||||
"Set Image Size": "Afbeeldingsgrootte instellen",
|
||||
"Settings": "Instellingen",
|
||||
"Shadow": "Schaduw",
|
||||
"Shapes": "Vormen",
|
||||
"Shapes (H)": "Vormen (H)",
|
||||
"Sharpen": "Verscherpen",
|
||||
"Sharpen Tool": "Verscherpgereedschap",
|
||||
"Sharpen:": "Verscherpen:",
|
||||
"Shift + S": "Shift + S",
|
||||
"Shortcut Key:": "Sneltoets:",
|
||||
"Show": "Show",
|
||||
"Show \/ Hide": "Tonen \/ Verbergen",
|
||||
"Show file size:": "Toon bestandsgrootte:",
|
||||
"Simple": "Eenvoudig",
|
||||
"Size is too big, max": "Grootte is te groot, maximaal",
|
||||
"Size:": "Grootte:",
|
||||
"Skip - layer must be image.": "Overslaan - laag moet een afbeelding zijn.",
|
||||
"Solarize": "Solariseren",
|
||||
"Sorry, cold not load getUserMedia() data:": "Sorry, kon getUserMedia() gegevens niet laden:",
|
||||
"Sorry, image could not be loaded.": "Sorry, afbeelding kon niet worden geladen.",
|
||||
"Sorry, image could not be loaded. Try copy image and paste it.": "Sorry, afbeelding kon niet worden geladen. Probeer de afbeelding te kopiëren en te plakken.",
|
||||
"Sorry, image is too big, max 5 MB.": "Sorry, afbeelding is te groot, maximaal 5 MB.",
|
||||
"Source coordinates saved.": "Broncoördinaten opgeslagen.",
|
||||
"Source is empty, right click on image or use long press to save source position.": "Bron is leeg, klik met de rechtermuisknop op de afbeelding of gebruik een lange druk om de bronpositie op te slaan.",
|
||||
"Sprites": "Sprites",
|
||||
"Square": "Vierkant",
|
||||
"Stream:": "Stroom:",
|
||||
"Strength:": "Kracht:",
|
||||
"Strict": "Strikt",
|
||||
"TINYPNG - Compress PNG and JPEG": "TINYPNG - Comprimeer PNG en JPEG",
|
||||
"Tab": "Tabblad",
|
||||
"Tag Image File Format": "Tag afbeelding bestandsformaat",
|
||||
"Tahoma": "Tahoma",
|
||||
"Target:": "Doel:",
|
||||
"The quick brown fox jumps over the lazy dog.": "De snelle bruine vos springt over de luie hond heen.",
|
||||
"There": "Daar",
|
||||
"There are no layers behind.": "Er zijn geen lagen achter.",
|
||||
"There is only 1 layer.": "Er is slechts 1 laag.",
|
||||
"This layer must contain an image. Please convert it to raster to apply this tool.": "Deze laag moet een afbeelding bevatten. Converteer deze alstublieft naar raster om deze tool toe te passen.",
|
||||
"Tilt Shift": "Kantelverschuiving",
|
||||
"Times New Roman": "Times New Roman",
|
||||
"Toaster": "Broodrooster",
|
||||
"Toggle": "Schakelen",
|
||||
"Toggle Color Channels": "Schakel kleurkanalen",
|
||||
"Toggle Color Picker": "Schakel kleurkiezer",
|
||||
"Toggle Menu": "Schakel menu",
|
||||
"Toggle Swatches": "Schakel kleurstalen",
|
||||
"Tools": "Gereedschappen",
|
||||
"Top": "Bovenkant",
|
||||
"Top to Bottom": "Van boven naar beneden",
|
||||
"Total pixels:": "Totaal aantal pixels:",
|
||||
"Translate": "Vertalen",
|
||||
"Translate Layer": "Vertaal laag",
|
||||
"Translate error, can not find dictionary:": "Vertaalfout, kan woordenboek niet vinden:",
|
||||
"Transparent:": "Transparant:",
|
||||
"Trim": "Bijsnijden",
|
||||
"Trim Layers": "Bijsnijden van lagen",
|
||||
"Trim borders:": "Bijsnijden van randen:",
|
||||
"Trim layer:": "Bijsnijden van laag:",
|
||||
"Trim white color?": "Witte kleur bijsnijden?",
|
||||
"Type:": "Type:",
|
||||
"Türkçe": "Türkçe",
|
||||
"Undo": "Ongedaan maken",
|
||||
"Unique colors:": "Unieke kleuren:",
|
||||
"Up": "Omhoog",
|
||||
"Update": "Update",
|
||||
"Update Brush Layer": "Werk penseel laag bij",
|
||||
"Update Pencil Layer": "Werk potlood laag bij",
|
||||
"Update guides": "Gidsen bijwerken",
|
||||
"Use Ctrl+V keyboard shortcut to paste from Clipboard.": "Gebruik Ctrl+V sneltoets om te plakken vanaf het Klembord.",
|
||||
"V Radius:": "V Straal:",
|
||||
"V. Align:": "V. Uitlijnen:",
|
||||
"Valencia": "Valencia",
|
||||
"Verdana": "Verdana",
|
||||
"Version:": "Versie:",
|
||||
"Vertical": "Verticaal",
|
||||
"Vertical Alignment": "Verticale uitlijning",
|
||||
"Vertical blur:": "Verticaal vervagen:",
|
||||
"Vertical:": "Verticaal:",
|
||||
"Vibrance": "Levendigheid",
|
||||
"View": "Weergave",
|
||||
"Vignette": "Vignet",
|
||||
"ViliusL": "ViliusL",
|
||||
"Vintage": "Vintage",
|
||||
"Webcam": "Webcam",
|
||||
"Webcam #": "Webcam #",
|
||||
"Website:": "Website:",
|
||||
"Weppy File Format": "Weppy bestandsformaat",
|
||||
"Width (%):": "Breedte (%):",
|
||||
"Width:": "Breedte:",
|
||||
"Windows Bitmap": "Windows Bitmap",
|
||||
"Word": "Woord",
|
||||
"Word + Letter": "Woord + Letter",
|
||||
"Wrap At:": "Omzetten bij:",
|
||||
"Wrap:": "Omzetten:",
|
||||
"Wrong dimensions": "Verkeerde afmetingen",
|
||||
"Wrong file type, must be image or json.": "Verkeerd bestandstype, moet afbeelding of json zijn.",
|
||||
"X end:": "X eind:",
|
||||
"X position:": "X positie:",
|
||||
"X start:": "X start:",
|
||||
"X-Pro II": "X-Pro II",
|
||||
"Y end:": "Y eind:",
|
||||
"Y position:": "Y positie:",
|
||||
"Y start:": "Y start:",
|
||||
"You can also drag and drop items into browser.": "U kunt ook items naar de browser slepen en neerzetten.",
|
||||
"Your browser does not support canvas or JavaScript is not enabled.": "Uw browser ondersteunt geen canvas of JavaScript is niet ingeschakeld.",
|
||||
"Your browser does not support this format.": "Uw browser ondersteunt dit formaat niet.",
|
||||
"Your search did not match any images.": "Uw zoekopdracht leverde geen overeenkomende afbeeldingen op.",
|
||||
"Zoom": "Zoomen",
|
||||
"Zoom Blur": "Zoomvervaging",
|
||||
"Zoom In": "Inzoomen",
|
||||
"Zoom Out": "Uitzoomen",
|
||||
"Zoom blur": "Zoomvervaging",
|
||||
"Zoom in": "Inzoomen",
|
||||
"Zoom out": "Uitzoomen",
|
||||
"Zoom:": "Zoom:"
|
||||
}
|
||||
@ -1,376 +1,513 @@
|
||||
{
|
||||
"2d": "2d",
|
||||
"480p": "480p",
|
||||
"A problem occurred while removing undo history. It": "Ocorreu um problema ao remover o histórico de desfazer. isto",
|
||||
"About": "Sobre",
|
||||
"Active": "Ativo",
|
||||
"Aden": "Aden",
|
||||
"Advanced": "Avançado",
|
||||
"All": "Todos",
|
||||
"Alpha": "Alfa",
|
||||
"Alpha:": "Alfa:",
|
||||
"Anonymous": "Anônimo",
|
||||
"Anti aliasing": "Anti-aliasing",
|
||||
"Application markup may have changed,": "A marcação do aplicativo pode ter mudado,",
|
||||
"Arial": "Arial",
|
||||
"Arrow": "Flecha",
|
||||
"ArrowDown": "Seta para baixo",
|
||||
"ArrowLeft": "Seta para a esquerda",
|
||||
"ArrowRight": "Seta para a direita",
|
||||
"ArrowUp": "Seta para cima",
|
||||
"Author:": "Autor:",
|
||||
"Auto Adjust Colors": "Cores de ajuste automático",
|
||||
"Auto Kerning": "Auto Kerning",
|
||||
"Average:": "Média:",
|
||||
"BMP - Windows Bitmap": "BMP - Bitmap do Windows",
|
||||
"Backspace": "Backspace",
|
||||
"Base": "Base",
|
||||
"Basic": "Básico",
|
||||
"Black and White": "Preto e branco",
|
||||
"Blue": "Azul",
|
||||
"Blue channel:": "Canal azul:",
|
||||
"Blue:": "Azul:",
|
||||
"Blur Radius:": "Blur Radius:",
|
||||
"Blur power:": "Blur power:",
|
||||
"Blur tool": "Ferramenta de desfoque",
|
||||
"Bold": "Negrito",
|
||||
"Bold Italic": "Negrito itálico",
|
||||
"Borders": "Fronteiras",
|
||||
"Box Blur": "Borrão de caixa",
|
||||
"Box blur": "Borrão de caixa",
|
||||
"Blueprint": "Blueprint",
|
||||
"Blur Radius:": "Raio de desfoque:",
|
||||
"Blur Tool": "Ferramenta de desfoque",
|
||||
"Blur power:": "Intensidade do desfoque:",
|
||||
"Borders": "Bordas",
|
||||
"Bottom": "Inferior",
|
||||
"Bottom to Top": "De baixo para cima",
|
||||
"Bounds:": "Limites:",
|
||||
"Box": "Caixa",
|
||||
"Box Blur": "Desfoque de caixa",
|
||||
"Box blur": "Desfoque de caixa",
|
||||
"Brightness": "Brilho",
|
||||
"Brightness:": "Brilho:",
|
||||
"Brush": "Escova",
|
||||
"Bulge\/Pinch tool": "Ferramenta Bulge \/ Pinch",
|
||||
"Bulge\/Pinch Tool": "Ferramenta Bulge \/ Pinch",
|
||||
"Burn": "Queimar",
|
||||
"CSS Filters": "Filtros CSS",
|
||||
"Can not animate 1 layer.": "Não é possível animar 1 camada.",
|
||||
"Can not find previous layer.": "Não é possível encontrar a camada anterior.",
|
||||
"Can not use this tool on current layer: image already takes all area.": "Não é possível usar esta ferramenta na camada atual: a imagem já ocupa toda a área.",
|
||||
"Cancel": "Cancelar",
|
||||
"Canvas Size": "Tamanho da tela",
|
||||
"Center": "Centro",
|
||||
"Center x:": "Centro x:",
|
||||
"Center y:": "Centro y:",
|
||||
"Center:": "Centro:",
|
||||
"Change Composition": "Alterar composição",
|
||||
"Change Layer Details": "Alterar os detalhes da camada",
|
||||
"Change Opacity": "Alterar opacidade",
|
||||
"Channel:": "Canal:",
|
||||
"Circle": "Círculo",
|
||||
"Clear": "Claro",
|
||||
"Clarendon": "Clarendon",
|
||||
"Clear": "Limpar",
|
||||
"Clear Selection": "Limpar seleção",
|
||||
"Clone Tool": "Ferramenta Clone",
|
||||
"Clone count:": "Contagem de clones:",
|
||||
"Clone tool": "Ferramenta de clonagem",
|
||||
"Clone tool disabled for resized image. Please rasterize first.": "Ferramenta de clonagem desativada para imagem redimensionada. Por favor, rasterize primeiro.",
|
||||
"Cloned edges": "Bordas clonadas",
|
||||
"Close": "Fechar",
|
||||
"Color #": "Cor #",
|
||||
"Color Zoom": "Zoom de cor",
|
||||
"Color alpha value can not be zero.": "O valor alpha colorido não pode ser zero.",
|
||||
"Color Corrections": "Correções de cores",
|
||||
"Color Palette": "Paleta de cores",
|
||||
"Color Zoom": "Zoom de cor",
|
||||
"Color alpha value can not be zero.": "O valor alfa da cor não pode ser zero.",
|
||||
"Color to Alpha": "Cor para alfa",
|
||||
"Color zoom": "Zoom de cor",
|
||||
"Color:": "Cor:",
|
||||
"Colors": "Cores",
|
||||
"Colors:": "Cores:",
|
||||
"Common Filters": "Filtros Comuns",
|
||||
"Composition": "Composição",
|
||||
"Composition:": "Composição:",
|
||||
"Content Fill": "Preenchimento de conteúdo",
|
||||
"Contrast": "Contraste",
|
||||
"Contrast:": "Contraste:",
|
||||
"Convert to Raster": "Converter em raster",
|
||||
"Convert layer to raster": "Rasterizar camada",
|
||||
"Convert to Raster": "Rasterizar",
|
||||
"Copy Selection": "Seleção de cópia",
|
||||
"Copy:": "Cópia de:",
|
||||
"Courier": "Correio",
|
||||
"Crop": "Colheita",
|
||||
"Ctrl+V": "Ctrl + V",
|
||||
"Ctrl-P": "Ctrl-P",
|
||||
"Copy to Clipboard": "Copiar para área de transferência",
|
||||
"Courier": "Courier",
|
||||
"Crop Tool": "Ferramenta de corte",
|
||||
"Crop on rotated layer is not supported. Convert it to raster to continue.": "O corte na camada girada não é compatível. Rasterize a camada para continuar.",
|
||||
"Ctrl + C": "Ctrl + C",
|
||||
"Ctrl+A": "Ctrl+A",
|
||||
"Ctrl+C": "Ctrl+C",
|
||||
"Ctrl+P": "Ctrl+P",
|
||||
"Ctrl+V": "Ctrl+V",
|
||||
"Ctrl+Y": "Ctrl+Y",
|
||||
"Ctrl+Z": "Ctrl+Z",
|
||||
"Current": "Atual",
|
||||
"Curve": "Curva",
|
||||
"Custom": "personalizadas",
|
||||
"Current Color Preview": "Pré-visualização da cor atual",
|
||||
"Custom": "personalizado",
|
||||
"Data URL": "URL de dados",
|
||||
"Data URL:": "URL de dados:",
|
||||
"Decrease": "Diminuir",
|
||||
"Decrease Color Depth": "Diminuir a profundidade de cor",
|
||||
"Default": "Padrão",
|
||||
"Degree:": "Grau:",
|
||||
"Del": "Del",
|
||||
"Delete": "Excluir",
|
||||
"Delete Selection": "Eliminar seleção",
|
||||
"Denoise": "Denoise",
|
||||
"Desaturate": "Desaturar",
|
||||
"Delete Selection": "Excluir seleção",
|
||||
"Denoise": "Reduzir ruído",
|
||||
"Desaturate Tool": "Ferramenta de dessaturação",
|
||||
"Description:": "Descrição:",
|
||||
"Deutsch": "Deutsch",
|
||||
"Differences": "Diferenças",
|
||||
"Differences Down": "Diferenças para baixo",
|
||||
"Direction:": "Direção:",
|
||||
"Dither": "Dither",
|
||||
"Dithering:": "Dithering:",
|
||||
"Dominant color:": "Cor dominante:",
|
||||
"Dot Screen": "Tela de ponto",
|
||||
"Down": "Baixa",
|
||||
"Down": "Abaixo",
|
||||
"Duplicate": "Duplicado",
|
||||
"Edge": "Beira",
|
||||
"Duplicate Layer": "Duplicar Camada",
|
||||
"Duplicate layer": "Duplicar Camada",
|
||||
"Dynamic": "Dinâmico",
|
||||
"Edge": "Borda",
|
||||
"Edit": "Editar",
|
||||
"Edit text": "Editar texto",
|
||||
"Edit text...": "Editar texto...",
|
||||
"Effect browser": "Buscador de efeitos",
|
||||
"Effects": "Efeitos",
|
||||
"Email:": "O email:",
|
||||
"Effects browser": "Buscador de efeitos",
|
||||
"Email:": "Email:",
|
||||
"Emboss": "Em relevo",
|
||||
"Empty selection": "Seleção vazia",
|
||||
"Empty selection or type not image.": "Seleção vazia ou não digite imagem.",
|
||||
"English": "Inglês",
|
||||
"Empty selection or type not image.": "Seleção vazia ou tipo selecionado não é uma imagem.",
|
||||
"Enable autoresize:": "Ativar redimensionamento automático:",
|
||||
"End": "Fim",
|
||||
"English": "English",
|
||||
"English (UK)": "English (UK)",
|
||||
"Enrich": "Enriquecer",
|
||||
"Erase": "Apagar",
|
||||
"Erase on rotate object is disabled. Sorry.": "Apagar no objeto rotativo está desabilitado. Desculpa.",
|
||||
"Enter": "Entrar",
|
||||
"Erase Tool": "Ferramenta Apagar",
|
||||
"Erase on rotate object is disabled. Please rasterize first.": "Apagar ao girar o objeto está desativado. Por favor, rasterize o objeto primeiro.",
|
||||
"Error": "Erro",
|
||||
"Error connecting to service.": "Erro ao conectar-se ao serviço.",
|
||||
"Error: can not load image.": "Erro: não é possível carregar a imagem.",
|
||||
"Error: missing details event target": "Erro: detalhes faltantes alvo do evento",
|
||||
"Error loading the list of fonts from Google.": "Erro ao carregar a lista de fontes do Google.",
|
||||
"Error registering service worker": "Erro ao registrar o service worker",
|
||||
"Error: can not find filter:": "Erro: não foi possível encontrar o filtro:",
|
||||
"Error: can not find layer with id:": "Erro: não foi possível encontrar camada com id:",
|
||||
"Error: missing details event target": "Erro: faltam detalhes do alvo do evento",
|
||||
"Error: unknown layer type:": "Erro: tipo de camada desconhecido:",
|
||||
"Error: unsupported attribute type:": "Erro: tipo de atributo não suportado:",
|
||||
"Error: wrong key:": "Erro: chave errada:",
|
||||
"Esc": "Esc",
|
||||
"Escape": "Escapar",
|
||||
"Español": "Español",
|
||||
"Expand edges": "Expandir bordas",
|
||||
"Exponent:": "Expoente:",
|
||||
"Export": "Exportar",
|
||||
"External": "Externo",
|
||||
"Factor:": "Fator:",
|
||||
"File": "Arquivo",
|
||||
"File name:": "Nome do arquivo:",
|
||||
"File size:": "Tamanho do arquivo:",
|
||||
"Fill": "Preencher",
|
||||
"Fit": "Em forma",
|
||||
"Fit Window": "Janela de ajuste",
|
||||
"Fill Tool": "Ferramenta de Preenchimento",
|
||||
"Fit": "Ajustar",
|
||||
"Fit Window": "Ajuste de Janela",
|
||||
"Fit window": "Ajustar janela",
|
||||
"Flatten Image": "Achatar imagem",
|
||||
"Flip": "Giro",
|
||||
"FloydSteinberg-serpentine": "FloydSteinberg-serpentine",
|
||||
"French": "francês",
|
||||
"Font": "Fonte",
|
||||
"Français": "Français",
|
||||
"Full HD, 1080p": "Full HD, 1080p",
|
||||
"GIF - Graphics Interchange Format": "GIF - Graphics Interchange Format",
|
||||
"Gap:": "Gap:",
|
||||
"Gaussian Blur": "Gaussian Blur",
|
||||
"German": "alemão",
|
||||
"Gif delay:": "Retardo GIF:",
|
||||
"Full Screen": "Tela cheia",
|
||||
"Full layers data": "Dados de camadas completas",
|
||||
"Gap:": "Espaçamento:",
|
||||
"Gaussian Blur": "Desfoque Gaussiano",
|
||||
"Gif delay:": "Atraso do GIF:",
|
||||
"Gingham": "Tecido de algodão",
|
||||
"GitHub:": "GitHub:",
|
||||
"Gradient": "Gradiente",
|
||||
"Gradient Radius:": "Radiação de gradiente:",
|
||||
"Gradient Radius:": "Raio do Gradiente:",
|
||||
"Grains": "Grãos",
|
||||
"Gray": "cinzento",
|
||||
"Graphics Interchange Format": "Formato de intercâmbio de gráficos",
|
||||
"Gray": "Cinza",
|
||||
"Grayscale": "Escala de cinza",
|
||||
"Greek": "Ελληνικά (Greek)",
|
||||
"Green": "Verde",
|
||||
"Green channel:": "Canal verde:",
|
||||
"Green:": "Verde:",
|
||||
"Greyscale:": "Greyscale:",
|
||||
"Greyscale:": "Escala de cinza:",
|
||||
"Grid": "Grade",
|
||||
"Grid on\/off": "Grid on \/ off",
|
||||
"H Radius:": "H Radius:",
|
||||
"Grid on\/off": "Grades Ligado \/ Desligado",
|
||||
"Guides": "Guias",
|
||||
"Guides enabled.": "Guias ativados.",
|
||||
"H Radius:": "Raio H.",
|
||||
"H. Align:": "Alinhamento H.",
|
||||
"Heatmap": "Mapa de calor",
|
||||
"Height (%):": "Altura (%):",
|
||||
"Height:": "Altura:",
|
||||
"Help": "Socorro",
|
||||
"Helvetica": "helvética",
|
||||
"Help": "Ajuda",
|
||||
"Helvetica": "helvetica",
|
||||
"Hermite": "Hermite",
|
||||
"Hex:": "Hex:",
|
||||
"Hex": "Hex",
|
||||
"Hide": "Ocultar",
|
||||
"Histogram": "Histograma",
|
||||
"Histogram:": "Histograma:",
|
||||
"Home": "Início",
|
||||
"Horizontal": "Horizontal",
|
||||
"Horizontal Alignment": "Alinhamento horizontal",
|
||||
"Horizontal blur:": "Desfoque horizontal:",
|
||||
"Hue Rotate": "Hue Rotate",
|
||||
"Horizontal:": "Horizontal:",
|
||||
"Hue": "Matiz",
|
||||
"Hue Rotate": "Rotação de Matiz",
|
||||
"Hue:": "Matiz:",
|
||||
"Image": "Imagem",
|
||||
"Image data with multi-layers. Can be opened using miniPaint -": "Dados de imagem com várias camadas. Pode ser aberto usando o miniPaint -",
|
||||
"Impact": "Impacto",
|
||||
"Information": "Em formação",
|
||||
"Insert:": "Inserir:",
|
||||
"Impact": "Impact",
|
||||
"In proportion:": "Na proporção:",
|
||||
"Increase": "Aumentar",
|
||||
"Information": "Informação",
|
||||
"Inkwell": "Tinteiro",
|
||||
"Insert": "Inserir",
|
||||
"Insert guides": "Inserir guias",
|
||||
"Insert new layer": "Inserir nova camada",
|
||||
"Instagram Filters": "Filtros de Instagram",
|
||||
"Invalid Hex Code": "Código Hex inválido",
|
||||
"Italiano": "Italiano",
|
||||
"Italic": "itálico",
|
||||
"JPG - JPG\/JPEG Format": "JPG - Formato JPG \/ JPEG",
|
||||
"JPG, WEBP quality:": "JPG, qualidade WEBP:",
|
||||
"JSON - Full layers data": "JSON - Dados de camadas completas",
|
||||
"Japanese": "japonês",
|
||||
"Key-Points": "Pontos chave",
|
||||
"Keyboard Shortcuts": "Atalhos do teclado",
|
||||
"JPG\/JPEG Format": "Formato JPG \/ JPEG",
|
||||
"Kerning:": "Kerning:",
|
||||
"Key-Points": "Pontos-chave",
|
||||
"KeyU": "KeyU",
|
||||
"Keyboard Shortcuts": "Atalhos de teclado",
|
||||
"Keyword:": "Palavra-chave:",
|
||||
"Korean": "coreano",
|
||||
"Language": "Língua",
|
||||
"Lanczos": "Lanczos",
|
||||
"Landscape": "Paisagem",
|
||||
"Language": "Idioma",
|
||||
"Last modified": "Última modificação",
|
||||
"Layer": "Camada",
|
||||
"Layer details": "Detalhes da camada",
|
||||
"Layer is already image.": "Layer já é imagem.",
|
||||
"Layer must be image, convert it to raster to apply this tool.": "A camada deve ser imagem, converta-a em raster para aplicar esta ferramenta.",
|
||||
"Layer is empty.": "A camada está vazia.",
|
||||
"Layer is not compatible with resize": "Camada não é compatível com redimensionamento",
|
||||
"Layer is vector, convert it to raster to apply this tool.": "A camada é um vetor, rasterize-a para usar esta ferramenta.",
|
||||
"Layers": "Camadas",
|
||||
"Layers:": "Camadas:",
|
||||
"Layout:": "Disposição:",
|
||||
"Left": "Esquerda",
|
||||
"Left to Right": "Da esquerda para direita",
|
||||
"Level:": "Nível:",
|
||||
"Levels:": "Níveis:",
|
||||
"Lietuvių": "Lietuvių",
|
||||
"Line": "Linha",
|
||||
"Lum:": "Lum:",
|
||||
"Lo-fi": "Lo-fi",
|
||||
"Luminance:": "Luminância:",
|
||||
"Magic Wand Tool": "Varinha mágica",
|
||||
"Merge Down": "Fusionar",
|
||||
"Luminosity": "Luminosidade",
|
||||
"Magic Eraser Tool": "Ferramenta de borracha mágica",
|
||||
"Merge Down": "Mesclar para Baixo",
|
||||
"Merge Layers": "Mesclar Camadas",
|
||||
"Merged": "Mesclado",
|
||||
"Metrics": "Métricas",
|
||||
"Middle": "Meio",
|
||||
"Missing at least 1 size parameter.": "Falta pelo menos 1 parâmetro de tamanho.",
|
||||
"Missing permissions to write to Clipboard.cc": "Permissões ausentes para gravar em Clipboard.cc",
|
||||
"Mode:": "Modo:",
|
||||
"Module function not found.": "Função do módulo não encontrada.",
|
||||
"Modules class not found:": "Classe de módulos não encontrada:",
|
||||
"Monospace": "Monospace",
|
||||
"Mosaic": "mosaico",
|
||||
"Mouse:": "Rato:",
|
||||
"Mouse:": "Mouse:",
|
||||
"Move": "Mover",
|
||||
"Move down": "Mover para baixo",
|
||||
"Move up": "Subir",
|
||||
"Move Layer": "Mover Camada",
|
||||
"Move layer down": "Mover camada para baixo",
|
||||
"Move layer up": "Mover camada para cima",
|
||||
"Name:": "Nome:",
|
||||
"Needs at least 2 layers.": "Precisa de pelo menos 2 camadas.",
|
||||
"Negative": "Negativo",
|
||||
"New": "Novo",
|
||||
"New Bezier Layer": "Nova camada de Bézier",
|
||||
"New Brush Layer": "Nova Camada de Pincel",
|
||||
"New Ellipse Layer": "Nova Camada de Elipse",
|
||||
"New File": "Novo arquivo",
|
||||
"New Gradient Layer": "Nova Camada de Gradiente",
|
||||
"New Layer": "Nova camada",
|
||||
"New Line Layer": "Nova Camada de Linha",
|
||||
"New Pencil Layer": "Nova Camada de Lápis",
|
||||
"New Polygon Layer": "Nova camada de polígono",
|
||||
"New Rectangle Layer": "Nova Camada de Retângulo",
|
||||
"New Text Layer": "Nova Camada de Texto",
|
||||
"New file": "Novo arquivo",
|
||||
"New from Selection": "Novo da seleção",
|
||||
"New layer": "Nova camada",
|
||||
"New width can not be smaller then current width": "A nova largura não pode ser menor do que a largura atual",
|
||||
"Normal": "Normal",
|
||||
"Nothing is selected.": "Nada é selecionado.",
|
||||
"Offset X:": "Offset X:",
|
||||
"Offset Y:": "Offset Y:",
|
||||
"Next": "Próximo",
|
||||
"Night Vision": "Visão noturna",
|
||||
"None": "Nenhum",
|
||||
"Nothing is selected.": "Não há nada selecionado.",
|
||||
"Offset X:": "Deslocamento X:",
|
||||
"Offset Y:": "Deslocamento Y:",
|
||||
"Oil": "Óleo",
|
||||
"Ok": "Está bem",
|
||||
"Online image editor.": "Editor de imagens on-line.",
|
||||
"Ok": "Ok",
|
||||
"Online image editor.": "Editor de imagens online.",
|
||||
"Opacity": "Opacidade",
|
||||
"Opacity:": "Opacidade:",
|
||||
"Open": "Aberto",
|
||||
"Open Data URL": "Abrir URL de dados",
|
||||
"Open Directory": "Diretório aberto",
|
||||
"Open File": "Abrir arquivo",
|
||||
"Open URL": "Url aberta",
|
||||
"Open File Data URL": "URL de dados de arquivo aberta",
|
||||
"Open File URL": "URL do arquivo aberta",
|
||||
"Open File Webcam": "Abrir arquivo da webcam",
|
||||
"Open Image": "Abrir Imagem",
|
||||
"Open JSON File": "Abrir arquivo JSON",
|
||||
"Open Test Template": "Abrir modelo de teste",
|
||||
"Open URL": "Abrir URL",
|
||||
"Open data URL": "Abrir URL de dados",
|
||||
"Open from Webcam": "Abrir na webcam",
|
||||
"Original Size": "Tamanho original",
|
||||
"PNG - Portable Network Graphics": "PNG - Gráficos de rede portátil",
|
||||
"PNGTOSVG - Convert Image to SVG": "PNGTOSVG - Converter imagem para SVG",
|
||||
"PageDown": "PageDown",
|
||||
"PageUp": "PageUp",
|
||||
"Palette": "Paleta",
|
||||
"Parameter #1:": "Parâmetro # 1:",
|
||||
"Parameter #2:": "Parâmetro # 2:",
|
||||
"Parameter #1:": "Parâmetro #1:",
|
||||
"Parameter #2:": "Parâmetro #2:",
|
||||
"Paste": "Colar",
|
||||
"Pencil": "Lápis",
|
||||
"Percentage:": "Percentagem:",
|
||||
"Pick Color": "Escolha a cor",
|
||||
"Percentage:": "Porcentagem:",
|
||||
"Pixels:": "Píxeis:",
|
||||
"Play animation": "Jogue animação",
|
||||
"Portuguese": "Português",
|
||||
"Placeholder comment for color channels": "Comentário reservado para canais de cores",
|
||||
"Placeholder comment for color picker": "Comentário reservado para posição para o seletor de cores",
|
||||
"Placeholder comment for color swatches": "Comentário reservado para amostras de cores",
|
||||
"Portable Network Graphics": "Gráficos Portáteis de Rede",
|
||||
"Portrait": "Retrato",
|
||||
"Português": "Português",
|
||||
"Position:": "Posição:",
|
||||
"Power:": "Poder:",
|
||||
"Powred by pixabay.com .": "Powred by pixabay.com.",
|
||||
"Pre-Blur:": "Pré-borrão:",
|
||||
"Preview": "Visualização",
|
||||
"Preview": "Pré-visualização",
|
||||
"Previous": "Anterior",
|
||||
"Previous layer must be image, convert it to raster to apply this tool.": "A camada anterior deve ser imagem, convertê-la em raster para aplicar esta ferramenta.",
|
||||
"Print": "Impressão",
|
||||
"Previous layer must be image, convert it to raster to apply this tool.": "A camada anterior deve ser uma imagem, rasterize-a para aplicar esta ferramenta.",
|
||||
"Print": "Imprimir",
|
||||
"Quality:": "Qualidade:",
|
||||
"Quick Load": "Carga rápida",
|
||||
"Quick Save": "Salvamento rapido",
|
||||
"Quick Load": "Carregamento Rápido",
|
||||
"Quick Save": "Salvamento Rápido",
|
||||
"REMOVE.BG - Remove Image Background": "REMOVE.BG - Remover fundo da imagem",
|
||||
"Radial": "Radial",
|
||||
"Radial gradient": "Gradiente radial",
|
||||
"Radius:": "Raio:",
|
||||
"Range:": "Alcance:",
|
||||
"Rectangle": "Retângulo",
|
||||
"Red": "Vermelho",
|
||||
"Red channel:": "Canal vermelho:",
|
||||
"Red:": "Vermelho:",
|
||||
"Redo": "Refazer",
|
||||
"Remove all": "Remover tudo",
|
||||
"Rename": "Renomear",
|
||||
"Replace Color": "Substituir cor",
|
||||
"Replace color": "Substitua a cor",
|
||||
"Rename Layer": "Renomear Camada",
|
||||
"Rendered with errors.": "Renderizado com erros.",
|
||||
"Rendering...": "Renderizando...",
|
||||
"Replace Color": "Substituir Cor",
|
||||
"Replace color": "Substitua cor",
|
||||
"Replacement:": "Substituição:",
|
||||
"Report Issues": "Relatar problemas",
|
||||
"Resample - Hermite": "Resmplemento - Hermite",
|
||||
"Reset": "Restabelecer",
|
||||
"Reset zoom level": "Redefinir o nível de zoom",
|
||||
"Reset": "Redefinir",
|
||||
"Resize": "Redimensionar",
|
||||
"Resize Boundary": "Redimensionar limite",
|
||||
"Resize Layer": "Camada de redimensionamento",
|
||||
"Resize Layers": "Camadas de redimensionamento",
|
||||
"Resize Text Layer": "Redimensionar Camada de Texto",
|
||||
"Resized as background": "Redimensionado como plano de fundo",
|
||||
"Resized:": "Redimensionado:",
|
||||
"Resolution:": "Resolução:",
|
||||
"Restore Alpha": "Restaurar alfa",
|
||||
"Right": "Certo",
|
||||
"Right angle:": "Ângulo certo:",
|
||||
"Rotate": "Girar",
|
||||
"Rotate is not supported on this type of object. Convert to raster?": "Rotate não é suportado neste tipo de objeto. Converter em raster?",
|
||||
"Rotate left": "Vire à esquerda",
|
||||
"Rotate:": "Girar:",
|
||||
"Russian": "russo",
|
||||
"Sat:": "Sentou:",
|
||||
"Right": "Direita",
|
||||
"Right angle:": "Ângulo direito:",
|
||||
"Right to Left": "Direita para a esquerda",
|
||||
"Rotate": "Rotacionar",
|
||||
"Rotate Layer": "Rotacionar Camada",
|
||||
"Rotate is not supported on this type of object. Convert to raster?": "Rotacionar não é suportado neste tipo de objeto. Rasterizar objeto?",
|
||||
"Rotate left": "Rotacionar à esquerda",
|
||||
"Rotate:": "Rotacionar:",
|
||||
"Ruler": "Régua",
|
||||
"SQUOOSH - Compress and Compare Images": "SQUOOSH - Comprimir e comparar imagens",
|
||||
"Saturate": "Saturar",
|
||||
"Saturation": "Saturação",
|
||||
"Saturation:": "Saturação:",
|
||||
"Save": "Salve ",
|
||||
"Save As": "Salvar como",
|
||||
"Save As Data URL": "Salvar como URL de dados",
|
||||
"Save as": "Salvar como",
|
||||
"Save as type:": "Salvar como tipo:",
|
||||
"Save layers:": "Salvar camadas:",
|
||||
"Save resolution:": "Salvar resolução:",
|
||||
"Scroll down": "Rolar para baixo",
|
||||
"Scaling up is not supported in Hermite, using Lanczos.": "O aumento de escala não é compatível com Hermite, usando Lanczos.",
|
||||
"Scroll down": "Deslize para baixo",
|
||||
"Scroll up": "Deslize para cima",
|
||||
"Search": "Pesquisa",
|
||||
"Search Images": "Pesquisar imagens",
|
||||
"Search": "Pesquisar",
|
||||
"Search Images": "Pesquisar Imagens",
|
||||
"Search for Font": "Pesquisar Fonte",
|
||||
"Search:": "Pesquisar:",
|
||||
"Select All": "Selecionar tudo",
|
||||
"Select Text Layer": "Selecione Camada de Texto",
|
||||
"Select object tool": "Selecione a ferramenta de objeto",
|
||||
"Selected": "Selecionado",
|
||||
"Selection": "Seleção",
|
||||
"Selection Tool": "Ferramenta de Seleção",
|
||||
"Sensitivity:": "Sensibilidade:",
|
||||
"Separated": "Separados",
|
||||
"Separated (original types)": "Separados (tipos originais)",
|
||||
"Sepia": "Sépia",
|
||||
"Set Image Size": "Definir tamanho da imagem",
|
||||
"Settings": "Configurações",
|
||||
"Shadow": "Sombra",
|
||||
"Shadow:": "Sombra:",
|
||||
"Sharpen": "Sharpen",
|
||||
"Sharpen tool": "Ferramenta Sharpen",
|
||||
"Sharpen:": "Sharpen:",
|
||||
"Show \/ Hide": "Aparecer esconder",
|
||||
"Shapes": "Formas",
|
||||
"Shapes (H)": "Formas (H)",
|
||||
"Sharpen": "Afiar",
|
||||
"Sharpen Tool": "Ferramenta de Afiar",
|
||||
"Sharpen:": "Afiar:",
|
||||
"Shift + S": "Shift + S",
|
||||
"Shortcut Key:": "Tecla de atalho:",
|
||||
"Show": "Mostrar",
|
||||
"Show \/ Hide": "Mostrar \/ Ocultar",
|
||||
"Show file size:": "Mostrar tamanho do arquivo:",
|
||||
"Simple": "Simples",
|
||||
"Size": "Tamanho",
|
||||
"Size is too big, max": "O tamanho é muito grande, máximo",
|
||||
"Size:": "Tamanho:",
|
||||
"Skip - layer must be image.": "Skip - layer deve ser imagem.",
|
||||
"Skip - layer must be image.": "Pular - camada deve ser uma imagem.",
|
||||
"Solarize": "Solarize",
|
||||
"Sorry, image could not be loaded. Try copy image and paste it.": "Desculpe, a imagem não pôde ser carregada. Tente copiar imagem e cole-a.",
|
||||
"Sorry, image is too big, max 5 MB.": "Desculpe, a imagem é muito grande, no máximo 5 MB.",
|
||||
"Source is empty, right click on image to save source position.": "A fonte está vazia, clique com o botão direito do mouse na imagem para salvar a posição da fonte.",
|
||||
"Sorry, cold not load getUserMedia() data:": "Desculpe, não foi possível carregar dados de getUserMedia():",
|
||||
"Sorry, image could not be loaded.": "Desculpe, não foi possível carregar a imagem.",
|
||||
"Sorry, image could not be loaded. Try copy image and paste it.": "Desculpe, a imagem não pôde ser carregada. Tente copiar a imagem e cole-a.",
|
||||
"Sorry, image is too big, max 5 MB.": "Desculpe, a imagem é muito grande, ultrapassa o máximo permitido de 5 MB.",
|
||||
"Source coordinates saved.": "Coordenadas da fonte salvas.",
|
||||
"Source is empty, right click on image or use long press to save source position.": "A fonte está vazia, clique com o botão direito na imagem ou pressione e segure para salvar a posição da fonte.",
|
||||
"Sprites": "Sprites",
|
||||
"Square": "Quadrado",
|
||||
"Stream:": "Transmissão:",
|
||||
"Strength:": "Força:",
|
||||
"Strict": "Rigoroso",
|
||||
"Stroke": "Acidente vascular encefálico",
|
||||
"Stroke:": "Acidente vascular encefálico:",
|
||||
"Strict": "Estrito",
|
||||
"TINYPNG - Compress PNG and JPEG": "TINYPNG - Compactar PNG e JPEG",
|
||||
"Tab": "Aba",
|
||||
"Tag Image File Format": "Formato de Arquivo de Imagem Tag",
|
||||
"Tahoma": "Tahoma",
|
||||
"Target:": "Alvo:",
|
||||
"Text": "Texto",
|
||||
"Text example": "Exemplo de texto",
|
||||
"Text:": "Texto:",
|
||||
"The quick brown fox jumps over the lazy dog.": "A rápida raposa marrom salta sobre o cachorro preguiçoso.",
|
||||
"There": "Lá",
|
||||
"There are no layers behind.": "Não há camadas atrás.",
|
||||
"There is only 1 layer.": "Existe apenas uma camada.",
|
||||
"Tilt Shift": "Tilt Shift",
|
||||
"This layer must contain an image. Please convert it to raster to apply this tool.": "Esta camada deve ser uma imagem, rasterize-a para aplicar esta ferramenta.",
|
||||
"Tilt Shift": "Desvio de Inclinação",
|
||||
"Times New Roman": "Times New Roman",
|
||||
"Toggle": "Alternancia",
|
||||
"Toaster": "Torradeira",
|
||||
"Toggle": "Alternar",
|
||||
"Toggle Color Channels": "Alternar canais de cores",
|
||||
"Toggle Color Picker": "Alternar seletor de cores",
|
||||
"Toggle Menu": "Alternar menu",
|
||||
"Toggle Swatches": "Alternar amostras",
|
||||
"Tools": "Ferramentas",
|
||||
"Tools class not found:": "Classe de ferramentas não encontrada:",
|
||||
"Top": "Topo",
|
||||
"Top to Bottom": "De cima para baixo",
|
||||
"Total pixels:": "Total de pixels:",
|
||||
"Translate": "Traduzir",
|
||||
"Translate error, can not find dictionary:": "Traduzir erro, não encontrar dicionário:",
|
||||
"Transparency background:": "Fundo de transparência:",
|
||||
"Translate Layer": "Traduzir Camada",
|
||||
"Translate error, can not find dictionary:": "Erro de tradução, não foi possível encontrar dicionários:",
|
||||
"Transparent:": "Transparente:",
|
||||
"Trim": "aparar",
|
||||
"Trim everything:": "Apare tudo:",
|
||||
"Trim layer:": "Trim layer:",
|
||||
"Trim white color?": "Trim cor branca?",
|
||||
"Turkish": "turco",
|
||||
"Trim": "Aparar",
|
||||
"Trim Layers": "Aparar Camadas",
|
||||
"Trim borders:": "Aparar Bordas:",
|
||||
"Trim layer:": "Aparar camada:",
|
||||
"Trim white color?": "Aparar cor branca?",
|
||||
"Type:": "Tipo:",
|
||||
"Türkçe": "Türkçe",
|
||||
"Undo": "Desfazer",
|
||||
"Undo disabled.": "Desfazer desativado.",
|
||||
"Undo enabled.": "Desfazer habilitado.",
|
||||
"Undo is not available.": "Desfazer não está disponível.",
|
||||
"Undo levels changed to 1.": "Desfazer níveis alterados para 1.",
|
||||
"Undo levels restored to": "Desfazer níveis restaurados para",
|
||||
"Unique colors:": "Cores únicas:",
|
||||
"Up": "Acima",
|
||||
"Update": "Atualizar",
|
||||
"Update Brush Layer": "Atualizar Camada de Pincel",
|
||||
"Update Pencil Layer": "Atualizar Camada de Lápis",
|
||||
"Update guides": "Atualizar guias",
|
||||
"Use Ctrl+V keyboard shortcut to paste from Clipboard.": "Use o atalho de teclado Ctrl + V para colar da área de transferência.",
|
||||
"V Radius:": "V Radius:",
|
||||
"V Radius:": "Raio V.",
|
||||
"V. Align:": "Alinhamento V.",
|
||||
"Valencia": "Valencia",
|
||||
"Verdana": "Verdana",
|
||||
"Version:": "Versão:",
|
||||
"Vertical": "Vertical",
|
||||
"Vertical blur:": "Borrão vertical:",
|
||||
"Vertical Alignment": "Alinhamento vertical",
|
||||
"Vertical blur:": "Desfoque vertical:",
|
||||
"Vertical:": "Vertical:",
|
||||
"Vibrance": "Vibração",
|
||||
"View": "Visualizar",
|
||||
"Vignette": "Vinheta",
|
||||
"ViliusL": "ViliusL",
|
||||
"Vintage": "Vintage",
|
||||
"Visible:": "Visível:",
|
||||
"WEBP - Weppy File Format": "WEBP - Formato de Arquivo Weppy",
|
||||
"Website:": "Local na rede Internet:",
|
||||
"Webcam": "Webcam",
|
||||
"Webcam #": "Webcam #",
|
||||
"Website:": "Website:",
|
||||
"Weppy File Format": "Formato de arquivo Weppy",
|
||||
"Width (%):": "Largura (%):",
|
||||
"Width:": "Largura:",
|
||||
"Wrong file type, must be image or json.": "Tipo de arquivo errado, deve ser imagem ou json.",
|
||||
"Windows Bitmap": "Bitmap do Windows",
|
||||
"Word": "Palavra",
|
||||
"Word + Letter": "Palavra + Letra",
|
||||
"Wrap At:": "Embrulhar em:",
|
||||
"Wrap:": "Embrulho:",
|
||||
"Wrong dimensions": "Dimensões erradas",
|
||||
"Wrong file type, must be image or json.": "Tipo de arquivo errado, deve ser um arquivo do tipo imagem ou json.",
|
||||
"X end:": "X final:",
|
||||
"X position:": "Posição X:",
|
||||
"X start:": "X start:",
|
||||
"X start:": "X inicial:",
|
||||
"X-Pro II": "X-Pro II",
|
||||
"Y end:": "Y final:",
|
||||
"Y position:": "Posição Y:",
|
||||
"Y start:": "Y começar:",
|
||||
"Y start:": "Y inicial:",
|
||||
"You can also drag and drop items into browser.": "Você também pode arrastar e soltar itens no navegador.",
|
||||
"Your browser does not support canvas or JavaScript is not enabled.": "Seu navegador não é compatível com tela ou o JavaScript não está habilitado.",
|
||||
"Your browser does not support canvas or JavaScript is not enabled.": "Seu navegador não é compatível com o HTML CANVAS ou o JavaScript não está habilitado.",
|
||||
"Your browser does not support this format.": "Seu navegador não suporta este formato.",
|
||||
"Your search did not match any images.": "Sua pesquisa não corresponde a nenhuma imagem.",
|
||||
"Zoom": "Zoom",
|
||||
"Zoom Blur": "Zoom de zoom",
|
||||
"Zoom Blur": "Desfoque de zoom",
|
||||
"Zoom In": "Mais Zoom",
|
||||
"Zoom Out": "Reduzir o zoom",
|
||||
"Zoom blur": "Zoom de zoom",
|
||||
"Zoom Out": "Menos zoom",
|
||||
"Zoom blur": "Desfoque de zoom",
|
||||
"Zoom in": "Mais Zoom",
|
||||
"Zoom out": "Reduzir o zoom",
|
||||
"Zoom out": "Menos zoom",
|
||||
"Zoom:": "Zoom:"
|
||||
}
|
||||
@ -1,376 +1,513 @@
|
||||
{
|
||||
"2d": "2d",
|
||||
"480p": "480p",
|
||||
"About": "Около",
|
||||
"Active": "активный",
|
||||
"Advanced": "продвинутый",
|
||||
"A problem occurred while removing undo history. It": "Ошибка при удалении истории отмен. Это",
|
||||
"About": "О проекте",
|
||||
"Active": "Активный",
|
||||
"Aden": "Aden",
|
||||
"Advanced": "Продвинутый",
|
||||
"All": "Все",
|
||||
"Alpha": "Альфа",
|
||||
"Alpha:": "Альфа:",
|
||||
"Anonymous": "анонимное",
|
||||
"Anonymous": "Анонимное",
|
||||
"Anti aliasing": "Сглаживание",
|
||||
"Application markup may have changed,": "Разметка приложения могла измениться,",
|
||||
"Arial": "Arial",
|
||||
"Arrow": "Стрела",
|
||||
"Arrow": "Стрелка",
|
||||
"ArrowDown": "Стрелка вниз",
|
||||
"ArrowLeft": "Стрелка влево",
|
||||
"ArrowRight": "Стрелка вправо",
|
||||
"ArrowUp": "Стрелка вверх",
|
||||
"Author:": "Автор:",
|
||||
"Auto Adjust Colors": "Автоматическая настройка цветов",
|
||||
"Auto Adjust Colors": "Автоматическая настройка цвета",
|
||||
"Auto Kerning": "Автоматический кернинг",
|
||||
"Average:": "В среднем:",
|
||||
"BMP - Windows Bitmap": "BMP - битмап Windows",
|
||||
"Backspace": "Backspace",
|
||||
"Base": "База",
|
||||
"Basic": "основной",
|
||||
"Black and White": "Черное и белое",
|
||||
"Blue": "синий",
|
||||
"Blue channel:": "Голубой канал:",
|
||||
"Blue:": "Синий:",
|
||||
"Blur Radius:": "Радиус размытия:",
|
||||
"Blur power:": "Размытие:",
|
||||
"Blur tool": "Инструмент размытия",
|
||||
"Bold": "Жирный",
|
||||
"Bold Italic": "Жирный курсив",
|
||||
"Basic": "Основа",
|
||||
"Black and White": "Черный и Белый",
|
||||
"Blue": "Синий",
|
||||
"Blue channel:": "Синий канал:",
|
||||
"Blueprint": "Чертеж",
|
||||
"Blur Radius:": "Радиус Размытия:",
|
||||
"Blur Tool": "Инструмент Размытия",
|
||||
"Blur power:": "Сила размытия:",
|
||||
"Borders": "Границы",
|
||||
"Box Blur": "Размытие ящика",
|
||||
"Box blur": "Размытие коробки",
|
||||
"Brightness": "яркость",
|
||||
"Bottom": "Дно",
|
||||
"Bottom to Top": "Снизу вверх",
|
||||
"Bounds:": "Границы:",
|
||||
"Box": "Коробка",
|
||||
"Box Blur": "Размытие по рамке",
|
||||
"Box blur": "Размытие по рамке",
|
||||
"Brightness": "Яркость",
|
||||
"Brightness:": "Яркость:",
|
||||
"Brush": "Щетка",
|
||||
"Bulge\/Pinch tool": "Инструмент для выемки \/ зажима",
|
||||
"Burn": "жечь",
|
||||
"CSS Filters": "Фильтры CSS",
|
||||
"Can not animate 1 layer.": "Невозможно оживить 1 слой.",
|
||||
"Bulge\/Pinch Tool": "Вдавливание\/вытяжение",
|
||||
"Burn": "Выжигание",
|
||||
"Can not animate 1 layer.": "Невозможно анимировать 1 слой.",
|
||||
"Can not find previous layer.": "Не удается найти предыдущий слой.",
|
||||
"Can not use this tool on current layer: image already takes all area.": "Невозможно использовать этот инструмент на текущем слое: изображение уже занимает всю область.",
|
||||
"Cancel": "Отмена",
|
||||
"Canvas Size": "Размер холста",
|
||||
"Center": "Центр",
|
||||
"Center x:": "Центр x:",
|
||||
"Center y:": "Центр y:",
|
||||
"Center:": "Центр:",
|
||||
"Change Composition": "Изменить состав",
|
||||
"Change Layer Details": "Изменить сведения о слое",
|
||||
"Change Opacity": "Изменить непрозрачность",
|
||||
"Channel:": "Источник:",
|
||||
"Circle": "Круг",
|
||||
"Clarendon": "Clarendon",
|
||||
"Clear": "Очистить",
|
||||
"Clear Selection": "Очистить Выбор",
|
||||
"Clone Tool": "Инструмент клонирования",
|
||||
"Clone count:": "Количество клонов:",
|
||||
"Clone tool": "Инструмент клонирования",
|
||||
"Clone tool disabled for resized image. Please rasterize first.": "Инструмент клонирования отключен для изображения с измененным размером. Пожалуйста, сначала растрируйте.",
|
||||
"Cloned edges": "Клонированные края",
|
||||
"Close": "Закрывать",
|
||||
"Color #": "Цвет #",
|
||||
"Color Zoom": "Цветное увеличение",
|
||||
"Color alpha value can not be zero.": "Значение цветной альфа не может быть равно нулю.",
|
||||
"Color Corrections": "Коррекция цвета",
|
||||
"Color Palette": "Цветовая палитра",
|
||||
"Color to Alpha": "Цвет в альфа",
|
||||
"Color zoom": "Цветное увеличение",
|
||||
"Color Zoom": "Усиление цвета",
|
||||
"Color alpha value can not be zero.": "Значение цвета не может быть равно нулю.",
|
||||
"Color to Alpha": "Цвет в прозрачность",
|
||||
"Color zoom": "Усиление цвета",
|
||||
"Color:": "Цвет:",
|
||||
"Colors": "Цвета",
|
||||
"Colors:": "Цвета:",
|
||||
"Common Filters": "Обычные фильтры",
|
||||
"Composition": "Состав",
|
||||
"Composition:": "Состав:",
|
||||
"Content Fill": "Контент заполняется",
|
||||
"Contrast": "контрастировать",
|
||||
"Content Fill": "Заполнение содержимого",
|
||||
"Contrast": "Контраст",
|
||||
"Contrast:": "Контраст:",
|
||||
"Convert to Raster": "Преобразовать в растровый",
|
||||
"Copy Selection": "Выбор копии",
|
||||
"Copy:": "Копирование:",
|
||||
"Courier": "курьер",
|
||||
"Crop": "урожай",
|
||||
"Convert layer to raster": "Растрировать слой",
|
||||
"Convert to Raster": "Растрировать",
|
||||
"Copy Selection": "Копировать выделение",
|
||||
"Copy to Clipboard": "Скопировать в буфер",
|
||||
"Courier": "Courier",
|
||||
"Crop Tool": "Инструмент для Обрезки",
|
||||
"Crop on rotated layer is not supported. Convert it to raster to continue.": "Обрезка повернутого слоя не поддерживается. Растрируйте его, чтобы продолжить.",
|
||||
"Ctrl + C": "Ctrl + С",
|
||||
"Ctrl+A": "Ctrl + A",
|
||||
"Ctrl+C": "Ctrl + C",
|
||||
"Ctrl+P": "Ctrl+П",
|
||||
"Ctrl+V": "Ctrl + V,",
|
||||
"Ctrl-P": "Ctrl-P",
|
||||
"Current": "Текущий",
|
||||
"Curve": "кривая",
|
||||
"Custom": "изготовленный на заказ",
|
||||
"Data URL": "URL-адрес данных",
|
||||
"Data URL:": "URL-адрес данных:",
|
||||
"Ctrl+Y": "Ctrl + Y",
|
||||
"Ctrl+Z": "Ctrl + Z",
|
||||
"Current": "Выбранный",
|
||||
"Current Color Preview": "Выбранный цвет",
|
||||
"Custom": "Свой",
|
||||
"Data URL": "URL данных",
|
||||
"Data URL:": "URL данных:",
|
||||
"Decrease": "Уменьшить",
|
||||
"Decrease Color Depth": "Уменьшить глубину цвета",
|
||||
"Default": "По умолчанию",
|
||||
"Degree:": "Степень:",
|
||||
"Degree:": "Градус:",
|
||||
"Del": "Del",
|
||||
"Delete": "Удалить",
|
||||
"Delete Selection": "Удалить выделение",
|
||||
"Denoise": "Denoise",
|
||||
"Desaturate": "Обесцвечивание",
|
||||
"Denoise": "Шумоподавление",
|
||||
"Desaturate Tool": "Инструмент обесцвечивания",
|
||||
"Description:": "Описание:",
|
||||
"Deutsch": "Deutsch",
|
||||
"Differences": "Различия",
|
||||
"Differences Down": "Разница вниз",
|
||||
"Dither": "трястись",
|
||||
"Dithering:": "Смешение:",
|
||||
"Dominant color:": "Доминирующий цвет:",
|
||||
"Direction:": "Направление:",
|
||||
"Dither": "Сгладить",
|
||||
"Dithering:": "Сглаживание:",
|
||||
"Dominant color:": "Доминирующий:",
|
||||
"Dot Screen": "Точечный экран",
|
||||
"Down": "вниз",
|
||||
"Duplicate": "дублировать",
|
||||
"Edge": "край",
|
||||
"Edit": "редактировать",
|
||||
"Edit text": "Редактировать текст",
|
||||
"Down": "Вниз",
|
||||
"Duplicate": "Дублировать",
|
||||
"Duplicate Layer": "Дублировать слой",
|
||||
"Duplicate layer": "Дублировать слой",
|
||||
"Dynamic": "Динамический",
|
||||
"Edge": "Край",
|
||||
"Edit": "Редактировать",
|
||||
"Edit text...": "Редактировать текст...",
|
||||
"Effects": "Последствия",
|
||||
"Email:": "Эл. адрес:",
|
||||
"Emboss": "выбивать",
|
||||
"Effect browser": "Подборка фильтров",
|
||||
"Effects": "Фильтры",
|
||||
"Effects browser": "Подборка фильтров",
|
||||
"Email:": "Email:",
|
||||
"Emboss": "Тиснение",
|
||||
"Empty selection": "Пустой выбор",
|
||||
"Empty selection or type not image.": "Пустой выбор или введите не изображение.",
|
||||
"English": "английский",
|
||||
"Enrich": "обогащать",
|
||||
"Erase": "стирать",
|
||||
"Erase on rotate object is disabled. Sorry.": "Стереть объект поворота отключен. Сожалею.",
|
||||
"Error": "ошибка",
|
||||
"Enable autoresize:": "Автоматически увеличивать холст:",
|
||||
"End": "Конец",
|
||||
"English": "English",
|
||||
"English (UK)": "английский (Великобритания)",
|
||||
"Enrich": "Насытить",
|
||||
"Enter": "Войти",
|
||||
"Erase Tool": "Ластик",
|
||||
"Erase on rotate object is disabled. Please rasterize first.": "Стирание при повороте объекта отключено. Пожалуйста, сначала растрируйте.",
|
||||
"Error": "Ошибка",
|
||||
"Error connecting to service.": "Ошибка подключения к сервису.",
|
||||
"Error: can not load image.": "Ошибка: невозможно загрузить изображение.",
|
||||
"Error loading the list of fonts from Google.": "Ошибка загрузки списка шрифтов из Google.",
|
||||
"Error registering service worker": "Ошибка регистрации сервис-воркера",
|
||||
"Error: can not find filter:": "Ошибка: не удалось найти фильтр:",
|
||||
"Error: can not find layer with id:": "Ошибка: не удается найти слой с идентификатором:",
|
||||
"Error: missing details event target": "Ошибка: отсутствует цель события",
|
||||
"Error: unknown layer type:": "Ошибка: неизвестный тип слоя:",
|
||||
"Error: unsupported attribute type:": "Ошибка: неподдерживаемый тип атрибута:",
|
||||
"Error: wrong key:": "Ошибка: неправильный ключ:",
|
||||
"Esc": "Esc",
|
||||
"Escape": "ESC",
|
||||
"Español": "Español",
|
||||
"Expand edges": "Развернуть края",
|
||||
"Exponent:": "Экспонент:",
|
||||
"Factor:": "фактор:",
|
||||
"File": "файл",
|
||||
"Export": "Экспорт",
|
||||
"External": "Внешние инструменты",
|
||||
"Factor:": "Фактор:",
|
||||
"File": "Файл",
|
||||
"File name:": "Имя файла:",
|
||||
"File size:": "Размер файла:",
|
||||
"Fill": "заполнить",
|
||||
"Fit": "Поместиться",
|
||||
"Fit Window": "Окно для установки",
|
||||
"Fill": "Заливка",
|
||||
"Fill Tool": "Инструмент Заливки",
|
||||
"Fit": "Вписать",
|
||||
"Fit Window": "Вписать в окно",
|
||||
"Fit window": "Вписать в окно",
|
||||
"Flatten Image": "Свести изображение",
|
||||
"Flip": "кувырок",
|
||||
"FloydSteinberg-serpentine": "FloydSteinberg-змеевик",
|
||||
"French": "Французский",
|
||||
"Flip": "Отразить",
|
||||
"FloydSteinberg-serpentine": "FloydSteinberg-serpentine",
|
||||
"Font": "Шрифт",
|
||||
"Français": "Français",
|
||||
"Full HD, 1080p": "Full HD, 1080p",
|
||||
"GIF - Graphics Interchange Format": "GIF - формат обмена графикой",
|
||||
"Gap:": "Gap:",
|
||||
"Gaussian Blur": "Гауссовское размытие",
|
||||
"German": "Немецкий",
|
||||
"Full Screen": "Полноэкранный",
|
||||
"Full layers data": "Данные полных слоев",
|
||||
"Gap:": "Зазор:",
|
||||
"Gaussian Blur": "Гауссовское Размытие",
|
||||
"Gif delay:": "Задержка Gif:",
|
||||
"Gingham": "Зонтик",
|
||||
"GitHub:": "GitHub:",
|
||||
"Gradient": "градиент",
|
||||
"Gradient Radius:": "Радиус градиента:",
|
||||
"Grains": "зерна",
|
||||
"Grains": "Зерна",
|
||||
"Graphics Interchange Format": "Формат обмена графикой",
|
||||
"Gray": "Серый",
|
||||
"Grayscale": "Оттенки серого",
|
||||
"Green": "зеленый",
|
||||
"Green channel:": "Зеленый коридор:",
|
||||
"Green:": "Зеленый цвет:",
|
||||
"Greek": "Греческий",
|
||||
"Green": "Зеленый",
|
||||
"Green channel:": "Зеленый канал:",
|
||||
"Greyscale:": "Оттенки серого:",
|
||||
"Grid": "сетка",
|
||||
"Grid on\/off": "Включение \/ выключение сетки",
|
||||
"Grid": "Сетка",
|
||||
"Grid on\/off": "Сетка вкл\/выкл",
|
||||
"Guides": "Гайдлайны",
|
||||
"Guides enabled.": "Гайдлайны включены",
|
||||
"H Radius:": "H Радиус:",
|
||||
"H. Align:": "H. Выравнивание:",
|
||||
"Heatmap": "Тепловая карта",
|
||||
"Height (%):": "Высота (%):",
|
||||
"Height:": "Высота:",
|
||||
"Help": "Помогите",
|
||||
"Help": "Помощь",
|
||||
"Helvetica": "Helvetica",
|
||||
"Hermite": "Эрмита",
|
||||
"Hex:": "Hex:",
|
||||
"Hermite": "Hermite",
|
||||
"Hex": "Hex",
|
||||
"Hide": "Скрыть",
|
||||
"Histogram": "Гистограмма",
|
||||
"Histogram:": "Гистограмма:",
|
||||
"Horizontal": "горизонтальный",
|
||||
"Home": "Главная",
|
||||
"Horizontal": "Горизонтально",
|
||||
"Horizontal Alignment": "Горизонтальное выравнивание",
|
||||
"Horizontal blur:": "Горизонтальное размытие:",
|
||||
"Hue Rotate": "Оттенок",
|
||||
"Horizontal:": "Горизонтальный:",
|
||||
"Hue": "Оттенок",
|
||||
"Hue Rotate": "Вращение оттенка",
|
||||
"Hue:": "Оттенок:",
|
||||
"Image": "Образ",
|
||||
"Image": "Изображение",
|
||||
"Image data with multi-layers. Can be opened using miniPaint -": "Данные изображения с несколькими слоями. Может быть открыт с помощью miniPaint -",
|
||||
"Impact": "Влияние",
|
||||
"Impact": "Влиять",
|
||||
"In proportion:": "Сохранять пропорции:",
|
||||
"Increase": "Увеличить",
|
||||
"Information": "Информация",
|
||||
"Insert:": "Вставка:",
|
||||
"Inkwell": "Inkwell",
|
||||
"Insert": "Вставить",
|
||||
"Insert guides": "Добавить гайд",
|
||||
"Insert new layer": "Новый слой",
|
||||
"Instagram Filters": "Фильтры Instagram",
|
||||
"Invalid Hex Code": "Неверный HEX код",
|
||||
"Italiano": "Italiano",
|
||||
"Italic": "курсивный",
|
||||
"JPG - JPG\/JPEG Format": "JPG - формат JPG \/ JPEG",
|
||||
"JPG, WEBP quality:": "JPG, WEBP качество:",
|
||||
"JSON - Full layers data": "JSON - данные с полными слоями",
|
||||
"Japanese": "Японский",
|
||||
"Key-Points": "Ключевые пункты",
|
||||
"JPG\/JPEG Format": "JPG\/JPEG Формат",
|
||||
"Kerning:": "Интервал:",
|
||||
"Key-Points": "Ключевые точки",
|
||||
"KeyU": "КлючU",
|
||||
"Keyboard Shortcuts": "Горячие клавиши",
|
||||
"Keyword:": "Ключевое слово:",
|
||||
"Korean": "Корейский",
|
||||
"Language": "язык",
|
||||
"Lanczos": "Lanczos",
|
||||
"Landscape": "Альбомная",
|
||||
"Language": "Язык",
|
||||
"Last modified": "Последнее изменение",
|
||||
"Layer details": "Детали слоя",
|
||||
"Layer is already image.": "Слой уже является изображением.",
|
||||
"Layer must be image, convert it to raster to apply this tool.": "Слой должен быть изображением, преобразовать его в растр, чтобы применить этот инструмент.",
|
||||
"Layer": "Слой",
|
||||
"Layer details": "Активный слой",
|
||||
"Layer is empty.": "Слой пуст.",
|
||||
"Layer is not compatible with resize": "Слой несовместим с изменением размера",
|
||||
"Layer is vector, convert it to raster to apply this tool.": "Слой является векторным, преобразуйте его в растровый, чтобы применить этот инструмент.",
|
||||
"Layers": "Слои",
|
||||
"Layers:": "Слои:",
|
||||
"Left": "Оставил",
|
||||
"Layout:": "Ориентация:",
|
||||
"Left": "Слева",
|
||||
"Left to Right": "Слева направо",
|
||||
"Level:": "Уровень:",
|
||||
"Levels:": "Уровни:",
|
||||
"Lietuvių": "Lietuvių",
|
||||
"Line": "Линия",
|
||||
"Lum:": "Lum:",
|
||||
"Luminance:": "Luminance:",
|
||||
"Magic Wand Tool": "Инструмент волшебной палочки",
|
||||
"Merge Down": "Слить",
|
||||
"Lo-fi": "Lo-fi",
|
||||
"Luminance:": "Освещенность:",
|
||||
"Luminosity": "Освещенность",
|
||||
"Magic Eraser Tool": "Волшебный ластик",
|
||||
"Merge Down": "Соединить вниз",
|
||||
"Merge Layers": "Соединить слои",
|
||||
"Merged": "Объединенное",
|
||||
"Metrics": "Метрики",
|
||||
"Middle": "Средний",
|
||||
"Missing at least 1 size parameter.": "Отсутствует хотя бы 1 параметр размера.",
|
||||
"Missing permissions to write to Clipboard.cc": "Отсутствуют разрешения на запись в Clipboard.cc",
|
||||
"Mode:": "Режим:",
|
||||
"Module function not found.": "Функция модуля не найдена.",
|
||||
"Modules class not found:": "Класс модулей не найден:",
|
||||
"Mosaic": "мозаика",
|
||||
"Monospace": "Моноширинный",
|
||||
"Mosaic": "Мозаика",
|
||||
"Mouse:": "Мышь:",
|
||||
"Move": "Переехать",
|
||||
"Move down": "Переместить вниз",
|
||||
"Move up": "Переместить вверх",
|
||||
"Move": "Переместить",
|
||||
"Move Layer": "Переместить слой",
|
||||
"Move layer down": "Опустить слой ниже",
|
||||
"Move layer up": "Поднять слой выше",
|
||||
"Name:": "Имя:",
|
||||
"Needs at least 2 layers.": "Требуется не менее 2 слоев.",
|
||||
"Negative": "отрицательный",
|
||||
"New": "новый",
|
||||
"Negative": "Негатив",
|
||||
"New": "Новый",
|
||||
"New Bezier Layer": "Новый слой Безье",
|
||||
"New Brush Layer": "Новый слой Кисти",
|
||||
"New Ellipse Layer": "Новый слой Эллипса",
|
||||
"New File": "Новый файл",
|
||||
"New Gradient Layer": "Новый слой Градиента",
|
||||
"New Layer": "Новый слой",
|
||||
"New Line Layer": "Новый слой Линии",
|
||||
"New Pencil Layer": "Новый слой Карандаша",
|
||||
"New Polygon Layer": "Новый полигональный слой",
|
||||
"New Rectangle Layer": "Новый слой Прямоугольника",
|
||||
"New Text Layer": "Новый Текстовый слой",
|
||||
"New file": "Новый файл",
|
||||
"New from Selection": "Новое от выбора",
|
||||
"New from Selection": "Новое из выделения",
|
||||
"New layer": "Новый слой",
|
||||
"New width can not be smaller then current width": "Новая ширина не может быть меньше текущей ширины",
|
||||
"Normal": "Нормальный",
|
||||
"Next": "Следующий",
|
||||
"Night Vision": "Ночное видение",
|
||||
"None": "Ничего",
|
||||
"Nothing is selected.": "Ничего не выбрано.",
|
||||
"Offset X:": "Смещение X:",
|
||||
"Offset Y:": "Смещение Y:",
|
||||
"Oil": "масло",
|
||||
"Oil": "Масло",
|
||||
"Ok": "ОК",
|
||||
"Online image editor.": "Редактор онлайн-изображений.",
|
||||
"Opacity": "помутнение",
|
||||
"Opacity:": "Непрозрачность:",
|
||||
"Open": "открыто",
|
||||
"Open Data URL": "Открыть URL-адрес данных",
|
||||
"Online image editor.": "Онлайн редактор изображений.",
|
||||
"Opacity": "Непрозрачность",
|
||||
"Opacity:": "Прозрачность:",
|
||||
"Open": "Открыть",
|
||||
"Open Data URL": "Открыть URL-адрес",
|
||||
"Open Directory": "Открыть каталог",
|
||||
"Open File": "Открыть файл",
|
||||
"Open URL": "Открыть URL-адрес",
|
||||
"Open data URL": "Открыть URL-адрес данных",
|
||||
"Open File Data URL": "URL-адрес файла",
|
||||
"Open File URL": "Открыть URL-адрес",
|
||||
"Open File Webcam": "Изображение с веб-камеры",
|
||||
"Open Image": "Открыть файл",
|
||||
"Open JSON File": "Открыть Файл JSON",
|
||||
"Open Test Template": "Шаблон открытого теста",
|
||||
"Open URL": "Открыть URL",
|
||||
"Open data URL": "Открыть URL-адрес",
|
||||
"Open from Webcam": "Изображение с веб-камеры",
|
||||
"Original Size": "Оригинальный размер",
|
||||
"PNG - Portable Network Graphics": "PNG - портативная сетевая графика",
|
||||
"Palette": "палитра",
|
||||
"Parameter #1:": "Параметр №1:",
|
||||
"Parameter #2:": "Параметр №2:",
|
||||
"PNGTOSVG - Convert Image to SVG": "PNGTOSVG - Конвертировать изображение в SVG",
|
||||
"PageDown": "Листать вниз",
|
||||
"PageUp": "Листать вверх",
|
||||
"Palette": "Палитра",
|
||||
"Parameter #1:": "Параметр #1:",
|
||||
"Parameter #2:": "Параметр #2:",
|
||||
"Paste": "Вставить",
|
||||
"Pencil": "Карандаш",
|
||||
"Percentage:": "Процент:",
|
||||
"Pick Color": "Выберите цвет",
|
||||
"Pixels:": "Пиксели:",
|
||||
"Play animation": "Игровая анимация",
|
||||
"Portuguese": "португальский",
|
||||
"Power:": "Мощность:",
|
||||
"Powred by pixabay.com .": "Поражается pixabay.com.",
|
||||
"Pre-Blur:": "Pre-Размытие:",
|
||||
"Preview": "предварительный просмотр",
|
||||
"Previous": "предыдущий",
|
||||
"Previous layer must be image, convert it to raster to apply this tool.": "Предыдущий слой должен быть изображением, преобразовать его в растр, чтобы применить этот инструмент.",
|
||||
"Placeholder comment for color channels": "Комментарий-заполнитель для цветовых каналов",
|
||||
"Placeholder comment for color picker": "Комментарий-заполнитель для палитры цветов",
|
||||
"Placeholder comment for color swatches": "Комментарий-заполнитель для образцов цвета",
|
||||
"Portable Network Graphics": "Портативная Сетевая Графика",
|
||||
"Portrait": "Портретная",
|
||||
"Português": "Português",
|
||||
"Position:": "Позиция:",
|
||||
"Power:": "Сила:",
|
||||
"Preview": "Навигация",
|
||||
"Previous": "Предыдущий",
|
||||
"Previous layer must be image, convert it to raster to apply this tool.": "Предыдущий слой должен быть изображением, растрируйте его, чтобы применить этот инструмент.",
|
||||
"Print": "Распечатать",
|
||||
"Quality:": "Качественный:",
|
||||
"Quick Load": "Быстрая нагрузка",
|
||||
"Quality:": "Качество:",
|
||||
"Quick Load": "Быстрое открытие",
|
||||
"Quick Save": "Быстрое сохранение",
|
||||
"Radial": "радиальный",
|
||||
"REMOVE.BG - Remove Image Background": "REMOVE.BG - Удалить Фон Изображения",
|
||||
"Radial": "Радиальный",
|
||||
"Radial gradient": "Радиальный градиент",
|
||||
"Radius:": "Радиус:",
|
||||
"Range:": "Ассортимент:",
|
||||
"Rectangle": "Прямоугольник",
|
||||
"Red": "красный",
|
||||
"Range:": "Диапазон:",
|
||||
"Red": "Красный",
|
||||
"Red channel:": "Красный канал:",
|
||||
"Red:": "Красный:",
|
||||
"Rename": "переименовывать",
|
||||
"Redo": "Повторить",
|
||||
"Remove all": "Удалить все",
|
||||
"Rename": "Переименовать",
|
||||
"Rename Layer": "Переименовать слой",
|
||||
"Rendered with errors.": "Отрисовано с ошибками.",
|
||||
"Rendering...": "Отрисовка ...",
|
||||
"Replace Color": "Заменить цвет",
|
||||
"Replace color": "Заменить цвет",
|
||||
"Replacement:": "Замена:",
|
||||
"Report Issues": "Проблемы с отчетами",
|
||||
"Resample - Hermite": "Resample - Эрмит",
|
||||
"Report Issues": "Сообщить о проблемах",
|
||||
"Reset": "Сброс",
|
||||
"Reset zoom level": "Сбросить уровень масштабирования",
|
||||
"Resize": "Изменение размера",
|
||||
"Resized as background": "Изменилось в качестве фона",
|
||||
"Resize": "Изменить размер",
|
||||
"Resize Boundary": "Изменить размер границы",
|
||||
"Resize Layer": "Изменить размер слоя",
|
||||
"Resize Layers": "Изменить размер слоев",
|
||||
"Resize Text Layer": "Изменить размер текстового слоя",
|
||||
"Resized as background": "Изменено в качестве фона",
|
||||
"Resized:": "Изменён размер:",
|
||||
"Resolution:": "Разрешение:",
|
||||
"Restore Alpha": "Восстановить альфа",
|
||||
"Right": "Правильно",
|
||||
"Restore Alpha": "Восстановить прозрачность",
|
||||
"Right": "Вправо",
|
||||
"Right angle:": "Прямой угол:",
|
||||
"Rotate": "Поворот",
|
||||
"Rotate is not supported on this type of object. Convert to raster?": "Поворот на этом типе объекта не поддерживается. Конвертировать в растр?",
|
||||
"Rotate left": "Поверните влево",
|
||||
"Right to Left": "Справа налево",
|
||||
"Rotate": "Повернуть",
|
||||
"Rotate Layer": "Повернуть слой",
|
||||
"Rotate is not supported on this type of object. Convert to raster?": "Поворот на этом типе объекта не поддерживается. Растрировать?",
|
||||
"Rotate left": "Повернуть влево",
|
||||
"Rotate:": "Поворот:",
|
||||
"Russian": "русский",
|
||||
"Sat:": "Сидел:",
|
||||
"Saturate": "насыщать",
|
||||
"Ruler": "Линейки",
|
||||
"SQUOOSH - Compress and Compare Images": "SQUOOSH - Сжатие и сравнение изображений",
|
||||
"Saturate": "Насытить",
|
||||
"Saturation": "Насыщенность",
|
||||
"Saturation:": "Насыщенность:",
|
||||
"Save": "Сохранить",
|
||||
"Save As": "Сохранить как",
|
||||
"Save As Data URL": "Сохранить как URL-адрес данных",
|
||||
"Save As Data URL": "Сохранить как base64",
|
||||
"Save as": "Сохранить как",
|
||||
"Save as type:": "Сохранить как тип:",
|
||||
"Save layers:": "Сохранить слои:",
|
||||
"Save resolution:": "Сохранить разрешение:",
|
||||
"Scaling up is not supported in Hermite, using Lanczos.": "В Hermite с использованием Lanczos масштабирование не поддерживается.",
|
||||
"Scroll down": "Прокрутить вниз",
|
||||
"Scroll up": "Прокрутка вверх",
|
||||
"Search": "Поиск",
|
||||
"Search Images": "Поиск изображений",
|
||||
"Search for Font": "Поиск шрифта",
|
||||
"Search:": "Поиск:",
|
||||
"Select All": "Выбрать все",
|
||||
"Select object tool": "Выберите инструмент объекта",
|
||||
"Selected": "выбранный",
|
||||
"Selection": "выбор",
|
||||
"Select Text Layer": "Выбрать текстовый слой",
|
||||
"Select object tool": "Выбор объекта",
|
||||
"Selected": "Выбранный",
|
||||
"Selection Tool": "Инструмент выделения",
|
||||
"Sensitivity:": "Чувствительность:",
|
||||
"Separated": "Отдельно",
|
||||
"Separated (original types)": "Отдельно (оригинальный формат)",
|
||||
"Sepia": "Сепия",
|
||||
"Settings": "настройки",
|
||||
"Set Image Size": "Установить размер изображения",
|
||||
"Settings": "Настройки",
|
||||
"Shadow": "Тень",
|
||||
"Shadow:": "Тень:",
|
||||
"Sharpen": "точить",
|
||||
"Sharpen tool": "Инструмент «Резкость»",
|
||||
"Sharpen:": "Резкость:",
|
||||
"Show \/ Hide": "Показать спрятать",
|
||||
"Show file size:": "Показать размер файла:",
|
||||
"Simple": "просто",
|
||||
"Size": "Размер",
|
||||
"Size is too big, max": "Размер слишком большой, макс.",
|
||||
"Shapes": "Фигуры",
|
||||
"Shapes (H)": "Фигуры (H)",
|
||||
"Sharpen": "Резкость",
|
||||
"Sharpen Tool": "Инструмент резкости",
|
||||
"Sharpen:": "Повысить четкость:",
|
||||
"Shift + S": "Шифт + С",
|
||||
"Shortcut Key:": "Быстрая клавиша:",
|
||||
"Show": "Показывать",
|
||||
"Show \/ Hide": "Показать \/ Спрятать",
|
||||
"Show file size:": "Считать размер:",
|
||||
"Simple": "Простой",
|
||||
"Size is too big, max": "Размер слишком большой, максимум",
|
||||
"Size:": "Размер:",
|
||||
"Skip - layer must be image.": "Пропуск - слой должен быть изображением.",
|
||||
"Solarize": "передержать",
|
||||
"Solarize": "Высветлить",
|
||||
"Sorry, cold not load getUserMedia() data:": "К сожалению, не удалось загрузить данные getUserMedia():",
|
||||
"Sorry, image could not be loaded.": "К сожалению, изображение не может быть загружено.",
|
||||
"Sorry, image could not be loaded. Try copy image and paste it.": "К сожалению, изображение не может быть загружено. Попробуйте скопировать изображение и вставьте его.",
|
||||
"Sorry, image is too big, max 5 MB.": "К сожалению, изображение слишком велико, не более 5 МБ.",
|
||||
"Source is empty, right click on image to save source position.": "Источник пуст, щелкните правой кнопкой мыши по изображению, чтобы сохранить исходную позицию.",
|
||||
"Sorry, image is too big, max 5 MB.": "К сожалению, изображение слишком большое, максимум 5 МБ.",
|
||||
"Source coordinates saved.": "Исходные координаты сохранены.",
|
||||
"Source is empty, right click on image or use long press to save source position.": "Источник пуст, щелкните изображение правой кнопкой мыши или нажмите и удерживайте, чтобы сохранить исходное положение.",
|
||||
"Sprites": "Спрайты",
|
||||
"Square": "Квадрат",
|
||||
"Stream:": "Поток:",
|
||||
"Strength:": "Прочность:",
|
||||
"Strict": "строгий",
|
||||
"Stroke": "Инсульт",
|
||||
"Stroke:": "Инсульт:",
|
||||
"Strict": "Строго",
|
||||
"TINYPNG - Compress PNG and JPEG": "TINYPNG - Сжатие PNG и JPEG",
|
||||
"Tab": "Вкладка",
|
||||
"Tag Image File Format": "Формат файла изображения тега",
|
||||
"Tahoma": "Tahoma",
|
||||
"Target:": "Цель:",
|
||||
"Text": "Текст",
|
||||
"Text example": "Пример текста",
|
||||
"Text:": "Текст:",
|
||||
"The quick brown fox jumps over the lazy dog.": "Быстрая коричневая лиса прыгает через ленивую собаку.",
|
||||
"There": "Там",
|
||||
"There are no layers behind.": "Позади нет слоев.",
|
||||
"There is only 1 layer.": "Есть только 1 слой.",
|
||||
"Tilt Shift": "Сдвиг наклона",
|
||||
"This layer must contain an image. Please convert it to raster to apply this tool.": "Слой должен содержать изображение, растрируйте его, чтобы применить этот инструмент.",
|
||||
"Tilt Shift": "Tilt Shift",
|
||||
"Times New Roman": "Times New Roman",
|
||||
"Toggle": "тумблер",
|
||||
"Tools": "инструменты",
|
||||
"Tools class not found:": "Класс инструментов не найден:",
|
||||
"Toaster": "Toaster",
|
||||
"Toggle": " ",
|
||||
"Toggle Color Channels": "Цветовые каналы",
|
||||
"Toggle Color Picker": "Цветовая палитра",
|
||||
"Toggle Menu": "Меню",
|
||||
"Toggle Swatches": "Коллекция цветов",
|
||||
"Tools": "Инструменты",
|
||||
"Top": "Вверх",
|
||||
"Top to Bottom": "Сверху вниз",
|
||||
"Total pixels:": "Всего пикселей:",
|
||||
"Translate": "Переведите",
|
||||
"Translate error, can not find dictionary:": "Перевести ошибку, не найти словарь:",
|
||||
"Transparency background:": "Прозрачный фон:",
|
||||
"Transparent:": "Прозрачный:",
|
||||
"Trim": "Отделка",
|
||||
"Trim everything:": "Обрежьте все:",
|
||||
"Translate": "Сдвинуть",
|
||||
"Translate Layer": "Сдвинуть слой",
|
||||
"Translate error, can not find dictionary:": "Ошибка перевода, не удалось найти словарь:",
|
||||
"Transparent:": "Прозрачность:",
|
||||
"Trim": "Обрезать",
|
||||
"Trim Layers": "Обрезать слои",
|
||||
"Trim borders:": "Обрезать границы:",
|
||||
"Trim layer:": "Обрезной слой:",
|
||||
"Trim white color?": "Обрезать белый цвет?",
|
||||
"Turkish": "турецкий",
|
||||
"Undo": "расстегивать",
|
||||
"Undo disabled.": "Отменить.",
|
||||
"Undo enabled.": "Отменить.",
|
||||
"Undo is not available.": "Отмена недоступна.",
|
||||
"Undo levels changed to 1.": "Уровни отмены отменены на 1.",
|
||||
"Undo levels restored to": "Уровни отмены отменены",
|
||||
"Type:": "Тип:",
|
||||
"Türkçe": "Türkçe",
|
||||
"Undo": "Отменить",
|
||||
"Unique colors:": "Уникальные цвета:",
|
||||
"Up": "вверх",
|
||||
"Up": "Вверх",
|
||||
"Update": "Обновить",
|
||||
"Update Brush Layer": "Обновить слой Кисти",
|
||||
"Update Pencil Layer": "Обновить слой карандаша",
|
||||
"Update guides": "Обновить руководства",
|
||||
"Use Ctrl+V keyboard shortcut to paste from Clipboard.": "Используйте комбинацию клавиш Ctrl + V для вставки из буфера обмена.",
|
||||
"V Radius:": "V Радиус:",
|
||||
"V Radius:": "В радиус:",
|
||||
"V. Align:": "В. Выровнять:",
|
||||
"Valencia": "Valencia",
|
||||
"Verdana": "Verdana",
|
||||
"Version:": "Версия:",
|
||||
"Vertical": "вертикальный",
|
||||
"Vertical": "Вертикально",
|
||||
"Vertical Alignment": "Вертикальное Выравнивание",
|
||||
"Vertical blur:": "Вертикальное размытие:",
|
||||
"Vibrance": "вибрация",
|
||||
"Vertical:": "Вертикальное:",
|
||||
"Vibrance": "Вибрация",
|
||||
"View": "Вид",
|
||||
"Vignette": "Виньетка",
|
||||
"ViliusL": "ViliusL",
|
||||
"Vintage": "марочный",
|
||||
"Visible:": "Видимых:",
|
||||
"WEBP - Weppy File Format": "WEBP - Формат файла Weppy",
|
||||
"Vintage": "Винтаж",
|
||||
"Webcam": "Веб-камера",
|
||||
"Webcam #": "Веб-камера #",
|
||||
"Website:": "Веб-сайт:",
|
||||
"Weppy File Format": "Формат файла Weppy",
|
||||
"Width (%):": "Ширина (%):",
|
||||
"Width:": "Ширина:",
|
||||
"Wrong file type, must be image or json.": "Неверный тип файла должен быть изображением или json.",
|
||||
"Windows Bitmap": "Растровое изображение Windows",
|
||||
"Word": "Слово",
|
||||
"Word + Letter": "Слово + Буква",
|
||||
"Wrap At:": "Обернуть в:",
|
||||
"Wrap:": "Обвернуть:",
|
||||
"Wrong dimensions": "Неправильные размеры",
|
||||
"Wrong file type, must be image or json.": "Неверный тип файла, тип файла должен быть изображением или json.",
|
||||
"X end:": "X конец:",
|
||||
"X position:": "X позиция:",
|
||||
"X start:": "Начало X:",
|
||||
"X start:": "X начало:",
|
||||
"X-Pro II": "X-Pro II",
|
||||
"Y end:": "Y конец:",
|
||||
"Y position:": "Y позиция:",
|
||||
"Y start:": "Начало работы:",
|
||||
"Y start:": "Y начало:",
|
||||
"You can also drag and drop items into browser.": "Вы также можете перетаскивать элементы в браузер.",
|
||||
"Your browser does not support canvas or JavaScript is not enabled.": "Ваш браузер не поддерживает холст или JavaScript не включен.",
|
||||
"Your browser does not support this format.": "Ваш браузер не поддерживает этот формат.",
|
||||
"Your search did not match any images.": "Ваш поиск не соответствовал изображениям.",
|
||||
"Zoom": "Увеличить",
|
||||
"Zoom Blur": "Zoom Blur",
|
||||
"Zoom": "Приблизить",
|
||||
"Zoom Blur": "Размытие Приближения",
|
||||
"Zoom In": "Приблизить",
|
||||
"Zoom Out": "Уменьшить",
|
||||
"Zoom Out": "Отдалить",
|
||||
"Zoom blur": "Масштабирование",
|
||||
"Zoom in": "Приблизить",
|
||||
"Zoom out": "Уменьшить",
|
||||
"Zoom:": "Zoom:"
|
||||
"Zoom out": "Отдалить",
|
||||
"Zoom:": "Приблизить:"
|
||||
}
|
||||
@ -1,210 +1,291 @@
|
||||
{
|
||||
"2d": "2d",
|
||||
"480p": "480p",
|
||||
"A problem occurred while removing undo history. It": "Geri alma geçmişini kaldırırken bir sorun oluştu. O",
|
||||
"About": "hakkında",
|
||||
"Active": "Aktif",
|
||||
"Aden": "Aden",
|
||||
"Advanced": "ileri",
|
||||
"All": "Herşey",
|
||||
"Alpha": "Alfa",
|
||||
"Alpha:": "Alfa:",
|
||||
"Anonymous": "Anonim",
|
||||
"Anti aliasing": "Örtüşme önleme",
|
||||
"Application markup may have changed,": "Uygulama işaretlemesi değişmiş olabilir,",
|
||||
"Arial": "Arial",
|
||||
"Arrow": "Ok",
|
||||
"ArrowDown": "Aşağı ok",
|
||||
"ArrowLeft": "ArrowLeft",
|
||||
"ArrowRight": "ArrowRight",
|
||||
"ArrowUp": "Yukarı ok",
|
||||
"Author:": "Yazar:",
|
||||
"Auto Adjust Colors": "Renkleri otomatik ayarla",
|
||||
"Auto Kerning": "Otomatik Karakter Aralığı",
|
||||
"Average:": "Ortalama:",
|
||||
"BMP - Windows Bitmap": "BMP - Windows Bitmap",
|
||||
"Backspace": "Geri tuşu",
|
||||
"Base": "baz",
|
||||
"Basic": "Temel",
|
||||
"Black and White": "Siyah ve beyaz",
|
||||
"Blue": "Mavi",
|
||||
"Blue channel:": "Mavi kanal:",
|
||||
"Blue:": "Mavi:",
|
||||
"Blueprint": "Taslak",
|
||||
"Blur Radius:": "Bulanıklaştırma Yarıçapı:",
|
||||
"Blur Tool": "Bulanıklık aracı",
|
||||
"Blur power:": "Blur gücü:",
|
||||
"Blur tool": "Bulanıklık aracı",
|
||||
"Bold": "cesur",
|
||||
"Bold Italic": "Kalın italik",
|
||||
"Borders": "Sınırlar",
|
||||
"Bottom": "Alt",
|
||||
"Bottom to Top": "Alttan Üste",
|
||||
"Bounds:": "Sınırlar:",
|
||||
"Box": "Kutu",
|
||||
"Box Blur": "Kutu bulanıklığı",
|
||||
"Box blur": "Kutu bulanıklığı",
|
||||
"Brightness": "Parlaklık",
|
||||
"Brightness:": "Parlaklık:",
|
||||
"Brush": "Fırça",
|
||||
"Bulge\/Pinch tool": "Bulge \/ Sıkma aleti",
|
||||
"Bulge\/Pinch Tool": "Bulge \/ Kıstırma Aracı",
|
||||
"Burn": "Yanmak",
|
||||
"CSS Filters": "CSS filtreleri",
|
||||
"Can not animate 1 layer.": "1 katmana canlandırma yapılamıyor.",
|
||||
"Can not find previous layer.": "Önceki katmanı bulamıyorum.",
|
||||
"Can not use this tool on current layer: image already takes all area.": "Bu araç geçerli katmanda kullanılamıyor: görüntü zaten tüm alanı kaplıyor.",
|
||||
"Cancel": "İptal etmek",
|
||||
"Canvas Size": "Tuval Boyutu",
|
||||
"Center": "merkez",
|
||||
"Center x:": "Merkez x:",
|
||||
"Center y:": "Merkez y:",
|
||||
"Center:": "merkez:",
|
||||
"Change Composition": "Kompozisyonu Değiştir",
|
||||
"Change Layer Details": "Katman Ayrıntılarını Değiştir",
|
||||
"Change Opacity": "Opaklığı Değiştir",
|
||||
"Channel:": "Kanal:",
|
||||
"Circle": "Daire",
|
||||
"Clarendon": "Clarendon",
|
||||
"Clear": "Açık",
|
||||
"Clear Selection": "Seçimi Temizle",
|
||||
"Clone Tool": "Klonlama Aracı",
|
||||
"Clone count:": "Klon sayısı:",
|
||||
"Clone tool": "Klon aracı",
|
||||
"Clone tool disabled for resized image. Please rasterize first.": "Yeniden boyutlandırılan resim için klonlama aracı devre dışı bırakıldı. Lütfen önce rasterleştirin.",
|
||||
"Cloned edges": "Klonlanmış kenarlar",
|
||||
"Close": "Kapalı",
|
||||
"Color #": "Renk #",
|
||||
"Color Zoom": "Renkli Zoom",
|
||||
"Color alpha value can not be zero.": "Renkli alfa değeri sıfır olamaz.",
|
||||
"Color Corrections": "Renk düzeltmeleri",
|
||||
"Color Palette": "Renk paleti",
|
||||
"Color Zoom": "Renkli Zoom",
|
||||
"Color alpha value can not be zero.": "Renkli alfa değeri sıfır olamaz.",
|
||||
"Color to Alpha": "Alfanın renkleri",
|
||||
"Color zoom": "Renkli yakınlaştırma",
|
||||
"Color:": "Renk:",
|
||||
"Colors": "Renkler",
|
||||
"Colors:": "Renkler:",
|
||||
"Common Filters": "Ortak Filtreler",
|
||||
"Composition": "bileştirme, kompozisyon",
|
||||
"Composition:": "Bileştirme, kompozisyon:",
|
||||
"Content Fill": "İçerik doldurma",
|
||||
"Contrast": "Kontrast",
|
||||
"Contrast:": "Kontrast:",
|
||||
"Convert layer to raster": "Katmanı raster'a dönüştür",
|
||||
"Convert to Raster": "Rastera dönüştürün",
|
||||
"Copy Selection": "Seçimi kopyala",
|
||||
"Copy:": "Kopya:",
|
||||
"Copy to Clipboard": "Panoya kopyala",
|
||||
"Courier": "Kurye",
|
||||
"Crop": "ekin",
|
||||
"Crop Tool": "Kırpma aracı",
|
||||
"Crop on rotated layer is not supported. Convert it to raster to continue.": "Döndürülmüş katmanda kırpma desteklenmez. Devam etmek için raster'e dönüştürün.",
|
||||
"Ctrl + C": "Ctrl + C",
|
||||
"Ctrl+A": "Ctrl + A",
|
||||
"Ctrl+C": "Ctrl + C",
|
||||
"Ctrl+P": "Ctrl+P",
|
||||
"Ctrl+V": "Ctrl + V",
|
||||
"Ctrl-P": "Ctrl-P",
|
||||
"Ctrl+Y": "Ctrl + Y",
|
||||
"Ctrl+Z": "Ctrl + Z",
|
||||
"Current": "şimdiki",
|
||||
"Curve": "eğri",
|
||||
"Current Color Preview": "Mevcut Renk Önizlemesi",
|
||||
"Custom": "görenek",
|
||||
"Data URL": "Veri URL'si",
|
||||
"Data URL:": "Veri URL'si:",
|
||||
"Decrease": "Azaltmak",
|
||||
"Decrease Color Depth": "Renk derinliğini azalt",
|
||||
"Default": "Varsayılan",
|
||||
"Degree:": "Derece:",
|
||||
"Del": "Del",
|
||||
"Delete": "silmek",
|
||||
"Delete Selection": "Seçimi sil",
|
||||
"Denoise": "Denoise",
|
||||
"Desaturate": "Desaturate",
|
||||
"Desaturate Tool": "Doygunluğu Azaltma Aracı",
|
||||
"Description:": "Açıklama:",
|
||||
"Deutsch": "Deutsch",
|
||||
"Differences": "farklılıklar",
|
||||
"Differences Down": "Farklar Aşağı",
|
||||
"Direction:": "Yön:",
|
||||
"Dither": "titreme",
|
||||
"Dithering:": "taklidi:",
|
||||
"Dominant color:": "Hakim renk:",
|
||||
"Dot Screen": "Nokta Ekranı",
|
||||
"Down": "Aşağı",
|
||||
"Duplicate": "Çift",
|
||||
"Duplicate Layer": "Yinelenen katman",
|
||||
"Duplicate layer": "Yinelenen katman",
|
||||
"Dynamic": "Dinamik",
|
||||
"Edge": "kenar",
|
||||
"Edit": "Düzenle",
|
||||
"Edit text": "Metni düzenle",
|
||||
"Edit text...": "Metni düzenle...",
|
||||
"Effect browser": "Efekt tarayıcısı",
|
||||
"Effects": "Etkileri",
|
||||
"Effects browser": "Efekt tarayıcısı",
|
||||
"Email:": "E-posta:",
|
||||
"Emboss": "kabartma yapmak",
|
||||
"Empty selection": "Boş seçim",
|
||||
"Empty selection or type not image.": "Boş seçim veya resim değil yazın.",
|
||||
"Enable autoresize:": "Otomatik yeniden boyutlandırmayı etkinleştir:",
|
||||
"End": "Son",
|
||||
"English": "ingilizce",
|
||||
"English (UK)": "İngilizce (İngiltere)",
|
||||
"Enrich": "Zenginleştirmek",
|
||||
"Erase": "silmek",
|
||||
"Erase on rotate object is disabled. Sorry.": "Döndürme nesnesinde silme devre dışı. Afedersiniz.",
|
||||
"Enter": "Giriş",
|
||||
"Erase Tool": "Silme Aracı",
|
||||
"Erase on rotate object is disabled. Please rasterize first.": "Nesneyi döndürürken silme devre dışı bırakılır. Lütfen önce rasterleştirin.",
|
||||
"Error": "Hata",
|
||||
"Error connecting to service.": "Hizmete bağlanırken hata oluştu.",
|
||||
"Error: can not load image.": "Hata: resim yüklenemiyor.",
|
||||
"Error loading the list of fonts from Google.": "Google'dan yazı tipi listesi yüklenirken hata oluştu.",
|
||||
"Error registering service worker": "Hizmet çalışanı kaydedilirken hata oluştu",
|
||||
"Error: can not find filter:": "Hata: filtre bulunamıyor:",
|
||||
"Error: can not find layer with id:": "Hata: kimliğine sahip katman bulunamıyor:",
|
||||
"Error: missing details event target": "Hata: eksik olan ayrıntılar etkinlik hedefi",
|
||||
"Error: unknown layer type:": "Hata: bilinmeyen katman türü:",
|
||||
"Error: unsupported attribute type:": "Hata: desteklenmeyen özellik türü:",
|
||||
"Error: wrong key:": "Hata: yanlış anahtar:",
|
||||
"Esc": "ESC",
|
||||
"Escape": "Kaçış",
|
||||
"Español": "Español",
|
||||
"Expand edges": "Kenarları genişlet",
|
||||
"Exponent:": "Üs:",
|
||||
"Export": "İhracat",
|
||||
"External": "Harici",
|
||||
"Factor:": "Faktör:",
|
||||
"File": "Dosya",
|
||||
"File name:": "Dosya adı:",
|
||||
"File size:": "Dosya boyutu:",
|
||||
"Fill": "doldurmak",
|
||||
"Fill Tool": "Doldurma Aracı",
|
||||
"Fit": "Fit",
|
||||
"Fit Window": "Pencereye sığdır",
|
||||
"Fit window": "Pencereyi sığdır",
|
||||
"Flatten Image": "Resmi Düzleştir",
|
||||
"Flip": "fiske",
|
||||
"FloydSteinberg-serpentine": "FloydSteinberg-serpantin",
|
||||
"French": "Fransızca",
|
||||
"Font": "Yazı tipi",
|
||||
"Français": "Français",
|
||||
"Full HD, 1080p": "Tam HD, 1080p",
|
||||
"GIF - Graphics Interchange Format": "GIF - Grafik Değişim Biçimi",
|
||||
"Full Screen": "Tam ekran",
|
||||
"Full layers data": "Tam katman verileri",
|
||||
"Gap:": "boşluk:",
|
||||
"Gaussian Blur": "Gauss Bulanıklığı",
|
||||
"German": "Almanca",
|
||||
"Gif delay:": "Gif gecikmesi:",
|
||||
"Gingham": "Şemsiye",
|
||||
"GitHub:": "GitHub:",
|
||||
"Gradient": "meyil",
|
||||
"Gradient Radius:": "Gradyan Yarıçapı:",
|
||||
"Grains": "Taneler",
|
||||
"Graphics Interchange Format": "Grafik Değişim Biçimi",
|
||||
"Gray": "Gri",
|
||||
"Grayscale": "Gri tonlama",
|
||||
"Greek": "Yunan",
|
||||
"Green": "Yeşil",
|
||||
"Green channel:": "Yeşil kanal:",
|
||||
"Green:": "Yeşil:",
|
||||
"Greyscale:": "Gri tonlama:",
|
||||
"Grid": "Kafes",
|
||||
"Grid on\/off": "Izgara açık \/ kapalı",
|
||||
"Guides": "Kılavuzlar",
|
||||
"Guides enabled.": "Kılavuzlar etkinleştirildi.",
|
||||
"H Radius:": "H Radius:",
|
||||
"H. Align:": "H. Hizala:",
|
||||
"Heatmap": "Sıcaklık haritası",
|
||||
"Height (%):": "Yükseklik (%):",
|
||||
"Height:": "Yükseklik:",
|
||||
"Help": "yardım et",
|
||||
"Helvetica": "Helvetica",
|
||||
"Hermite": "Hermite",
|
||||
"Hex:": "hex:",
|
||||
"Hex": "Hex",
|
||||
"Hide": "Saklamak",
|
||||
"Histogram": "Histogram",
|
||||
"Histogram:": "Histogram:",
|
||||
"Home": "Ev",
|
||||
"Horizontal": "Yatay",
|
||||
"Horizontal Alignment": "Yatay hizalama",
|
||||
"Horizontal blur:": "Yatay bulanıklık:",
|
||||
"Horizontal:": "Yatay:",
|
||||
"Hue": "Ton",
|
||||
"Hue Rotate": "Ton Döndür",
|
||||
"Hue:": "Ton:",
|
||||
"Image": "görüntü",
|
||||
"Image data with multi-layers. Can be opened using miniPaint -": "Çok katmanlı görüntü verileri. MiniPaint ile açılabilir -",
|
||||
"Impact": "darbe",
|
||||
"In proportion:": "Orantılı olarak:",
|
||||
"Increase": "Artırmak",
|
||||
"Information": "Bilgi",
|
||||
"Insert:": "ekle:",
|
||||
"Inkwell": "Inkwell",
|
||||
"Insert": "Sokmak",
|
||||
"Insert guides": "Kılavuzları ekle",
|
||||
"Insert new layer": "Yeni katman ekle",
|
||||
"Instagram Filters": "Instagram Filtreleri",
|
||||
"Invalid Hex Code": "Geçersiz Hex Kodu",
|
||||
"Italiano": "Italiano",
|
||||
"Italic": "İtalik",
|
||||
"JPG - JPG\/JPEG Format": "JPG - JPG \/ JPEG Biçimi",
|
||||
"JPG, WEBP quality:": "JPG, WEBP kalitesi:",
|
||||
"JSON - Full layers data": "JSON - Tam katmanlı veriler",
|
||||
"Japanese": "Japonca",
|
||||
"JPG\/JPEG Format": "JPG \/ JPEG Biçimi",
|
||||
"Kerning:": "Karakter aralığı:",
|
||||
"Key-Points": "Anahtar noktaları",
|
||||
"KeyU": "KeyU",
|
||||
"Keyboard Shortcuts": "Klavye kısayolları",
|
||||
"Keyword:": "Anahtar kelime:",
|
||||
"Korean": "Koreli",
|
||||
"Lanczos": "Lanczos",
|
||||
"Landscape": "Manzara",
|
||||
"Language": "Dil",
|
||||
"Last modified": "Son düzenleme",
|
||||
"Layer": "Katman",
|
||||
"Layer details": "Katman ayrıntıları",
|
||||
"Layer is already image.": "Tabaka zaten görüntü.",
|
||||
"Layer must be image, convert it to raster to apply this tool.": "Katman görüntü olmalı, onu uygulamak için rastgele dönüştürmelidir.",
|
||||
"Layer is empty.": "Katman boş.",
|
||||
"Layer is not compatible with resize": "Katman yeniden boyutlandırmayla uyumlu değil",
|
||||
"Layer is vector, convert it to raster to apply this tool.": "Katman vektördür, bu aracı uygulamak için onu raster'e dönüştürün.",
|
||||
"Layers": "Katmanlar",
|
||||
"Layers:": "Katmanlar:",
|
||||
"Layout:": "Düzen:",
|
||||
"Left": "Ayrıldı",
|
||||
"Left to Right": "Soldan sağa",
|
||||
"Level:": "Seviye:",
|
||||
"Levels:": "Seviyeleri:",
|
||||
"Lietuvių": "Litvanya",
|
||||
"Line": "Hat",
|
||||
"Lum:": "Lum:",
|
||||
"Lo-fi": "Lo-fi",
|
||||
"Luminance:": "Parlaklık:",
|
||||
"Magic Wand Tool": "Sihirli değnek aracı",
|
||||
"Luminosity": "Parlaklık",
|
||||
"Magic Eraser Tool": "Sihirli Silgi Aracı",
|
||||
"Merge Down": "Aşağı Birleştir",
|
||||
"Merge Layers": "Katmanları birleştirmek",
|
||||
"Merged": "Birleştirilmiş",
|
||||
"Metrics": "Metrikler",
|
||||
"Middle": "Orta",
|
||||
"Missing at least 1 size parameter.": "En az 1 boyut parametresi eksik.",
|
||||
"Missing permissions to write to Clipboard.cc": "Clipboard.cc'ye yazma izinleri eksik",
|
||||
"Mode:": "Mod:",
|
||||
"Module function not found.": "Modül işlevi bulunamadı.",
|
||||
"Modules class not found:": "Modüller sınıf bulunamadı:",
|
||||
"Monospace": "Tek aralıklı",
|
||||
"Mosaic": "Mozaik",
|
||||
"Mouse:": "Fare:",
|
||||
"Move": "Hareket",
|
||||
"Move down": "Aşağı inmek",
|
||||
"Move up": "Yukarı çık",
|
||||
"Move Layer": "Katmanı Taşı",
|
||||
"Move layer down": "Katmanı aşağı taşı",
|
||||
"Move layer up": "Katmanı yukarı taşı",
|
||||
"Name:": "Adı:",
|
||||
"Needs at least 2 layers.": "En az 2 kat gerekir.",
|
||||
"Negative": "Negatif",
|
||||
"New": "Yeni",
|
||||
"New Bezier Layer": "Yeni Bezier Katmanı",
|
||||
"New Brush Layer": "Yeni Fırça Katmanı",
|
||||
"New Ellipse Layer": "Yeni Elips Katmanı",
|
||||
"New File": "Yeni dosya",
|
||||
"New Gradient Layer": "Yeni Gradyan Katmanı",
|
||||
"New Layer": "Yeni tabaka",
|
||||
"New Line Layer": "Yeni Çizgi Katmanı",
|
||||
"New Pencil Layer": "Yeni Kalem Katmanı",
|
||||
"New Polygon Layer": "Yeni Çokgen Katmanı",
|
||||
"New Rectangle Layer": "Yeni Dikdörtgen Katman",
|
||||
"New Text Layer": "Yeni Metin Katmanı",
|
||||
"New file": "Yeni dosya",
|
||||
"New from Selection": "Seçimden yeni",
|
||||
"New layer": "Yeni katman",
|
||||
"New width can not be smaller then current width": "Yeni genişlik o andaki genişlikten daha küçük olamaz",
|
||||
"Normal": "Normal",
|
||||
"Next": "Sonraki",
|
||||
"Night Vision": "Gece görüşü",
|
||||
"None": "Yok",
|
||||
"Nothing is selected.": "Hiçbir şey seçilmedi.",
|
||||
"Offset X:": "Ofset X:",
|
||||
"Offset Y:": "Ofset Y:",
|
||||
@ -217,23 +298,34 @@
|
||||
"Open Data URL": "Açık Veri URL'si",
|
||||
"Open Directory": "Açık sözlük",
|
||||
"Open File": "Açık dosya",
|
||||
"Open File Data URL": "Dosya Verileri URL'sini Aç",
|
||||
"Open File URL": "Dosya URL'sini Aç",
|
||||
"Open File Webcam": "Dosya Web Kamerasını Aç",
|
||||
"Open Image": "Resmi Aç",
|
||||
"Open JSON File": "JSON Dosyasını Aç",
|
||||
"Open Test Template": "Test Şablonunu Aç",
|
||||
"Open URL": "Link aç",
|
||||
"Open data URL": "Açık veri URL'si",
|
||||
"Open from Webcam": "Web Kamerasından Aç",
|
||||
"Original Size": "Orijinal boyut",
|
||||
"PNG - Portable Network Graphics": "PNG - Taşınabilir Ağ Grafikleri",
|
||||
"PNGTOSVG - Convert Image to SVG": "PNGTOSVG - Resmi SVG'ye Dönüştür",
|
||||
"PageDown": "PageDown",
|
||||
"PageUp": "Sayfa yukarı",
|
||||
"Palette": "palet",
|
||||
"Parameter #1:": "Parametre # 1:",
|
||||
"Parameter #2:": "Parametre # 2:",
|
||||
"Paste": "Yapıştırmak",
|
||||
"Pencil": "Kalem",
|
||||
"Percentage:": "Yüzde:",
|
||||
"Pick Color": "Renk seç",
|
||||
"Pixels:": "Piksel:",
|
||||
"Play animation": "Animasyonu oynat",
|
||||
"Portuguese": "Portekizce",
|
||||
"Placeholder comment for color channels": "Renk kanalları için yer tutucu yorumu",
|
||||
"Placeholder comment for color picker": "Renk seçici için yer tutucu yorumu",
|
||||
"Placeholder comment for color swatches": "Renk örnekleri için yer tutucu yorumu",
|
||||
"Portable Network Graphics": "taşınabilir Ağ Grafikleri",
|
||||
"Portrait": "Vesika",
|
||||
"Português": "Português",
|
||||
"Position:": "Konum:",
|
||||
"Power:": "Güç:",
|
||||
"Powred by pixabay.com .": "Pixabay.com tarafından çekildi.",
|
||||
"Pre-Blur:": "Ön Bulanıklık:",
|
||||
"Preview": "Ön izleme",
|
||||
"Previous": "Önceki",
|
||||
"Previous layer must be image, convert it to raster to apply this tool.": "Önceki katman resim olmalıdır, bu aracı uygulamak için raster haline getirin.",
|
||||
@ -241,123 +333,168 @@
|
||||
"Quality:": "Kalite:",
|
||||
"Quick Load": "Hızlı yükleme",
|
||||
"Quick Save": "Hızlı kaydet",
|
||||
"REMOVE.BG - Remove Image Background": "REMOVE.BG - Resim Arka Planını Kaldır",
|
||||
"Radial": "Radyal",
|
||||
"Radial gradient": "Radyal degrade",
|
||||
"Radius:": "radius:",
|
||||
"Range:": "aralık:",
|
||||
"Rectangle": "Dikdörtgen",
|
||||
"Red": "Kırmızı",
|
||||
"Red channel:": "Kırmızı kanal:",
|
||||
"Red:": "Kırmızı:",
|
||||
"Redo": "Yeniden yap",
|
||||
"Remove all": "Hepsini kaldır",
|
||||
"Rename": "Adını değiştirmek",
|
||||
"Rename Layer": "Katmanı Yeniden Adlandır",
|
||||
"Rendered with errors.": "Hatalarla oluşturuldu.",
|
||||
"Rendering...": "Oluşturuluyor ...",
|
||||
"Replace Color": "Renk Değiştir",
|
||||
"Replace color": "Rengi değiştir",
|
||||
"Replacement:": "Değiştirme:",
|
||||
"Report Issues": "Sorunları bildir",
|
||||
"Resample - Hermite": "Resample - Hermite",
|
||||
"Reset": "Reset",
|
||||
"Reset zoom level": "Zum düzeyini sıfırla",
|
||||
"Resize": "yeniden boyutlandırma",
|
||||
"Resize Boundary": "Sınırı Yeniden Boyutlandır",
|
||||
"Resize Layer": "Katmanı Yeniden Boyutlandır",
|
||||
"Resize Layers": "Katmanları Yeniden Boyutlandır",
|
||||
"Resize Text Layer": "Metin Katmanını Yeniden Boyutlandır",
|
||||
"Resized as background": "Arka plan olarak yeniden boyutlandırıldı",
|
||||
"Resized:": "Yeniden boyutlandırıldı:",
|
||||
"Resolution:": "Çözüm:",
|
||||
"Restore Alpha": "Alfa geri yükle",
|
||||
"Right": "Sağ",
|
||||
"Right angle:": "Doğru açı:",
|
||||
"Right to Left": "Sağdan sola",
|
||||
"Rotate": "Döndürme",
|
||||
"Rotate Layer": "Katmanı Döndür",
|
||||
"Rotate is not supported on this type of object. Convert to raster?": "Döndürme, bu tür nesne üzerinde desteklenmiyor. Rastere dönüştürün?",
|
||||
"Rotate left": "Sola dön",
|
||||
"Rotate:": "Dönüşümlü:",
|
||||
"Russian": "Rusça",
|
||||
"Sat:": "Oturdu:",
|
||||
"Ruler": "Cetvel",
|
||||
"SQUOOSH - Compress and Compare Images": "SQUOOSH - Resimleri Sıkıştır ve Karşılaştır",
|
||||
"Saturate": "bombalamak",
|
||||
"Saturation": "Doyma",
|
||||
"Saturation:": "Doyma:",
|
||||
"Save": "Kayıt etmek",
|
||||
"Save As": "Farklı kaydet",
|
||||
"Save As Data URL": "Veri URL'si olarak kaydet",
|
||||
"Save as": "Farklı kaydet",
|
||||
"Save as type:": "Türünü kaydet:",
|
||||
"Save layers:": "Katmanları kaydet:",
|
||||
"Save resolution:": "Çözünürlüğü kaydet:",
|
||||
"Scaling up is not supported in Hermite, using Lanczos.": "Lanczos kullanılarak Hermite'de ölçek büyütme desteklenmez.",
|
||||
"Scroll down": "Aşağı kaydır",
|
||||
"Scroll up": "Yukarı kaydırmak",
|
||||
"Search": "Arama",
|
||||
"Search Images": "Resimleri ara",
|
||||
"Search for Font": "Yazı Tipi Ara",
|
||||
"Search:": "Aramak:",
|
||||
"Select All": "Hepsini seç",
|
||||
"Select Text Layer": "Metin Katmanı Seçin",
|
||||
"Select object tool": "Nesne aracını seçin",
|
||||
"Selected": "seçilmiş",
|
||||
"Selection": "seçim",
|
||||
"Selection Tool": "Seçim aracı",
|
||||
"Sensitivity:": "Duyarlılık:",
|
||||
"Separated": "Ayrılmış",
|
||||
"Separated (original types)": "Ayrılmış (orijinal türler)",
|
||||
"Sepia": "Sepya",
|
||||
"Set Image Size": "Görüntü Boyutunu Ayarla",
|
||||
"Settings": "Ayarlar",
|
||||
"Shadow": "Gölge",
|
||||
"Shadow:": "Gölge:",
|
||||
"Shapes": "Şekiller",
|
||||
"Shapes (H)": "Şekiller (H)",
|
||||
"Sharpen": "keskinleştirmek",
|
||||
"Sharpen tool": "Aleti keskinleştir",
|
||||
"Sharpen Tool": "Aleti keskinleştir",
|
||||
"Sharpen:": "keskinleştir:",
|
||||
"Shift + S": "Üst Karakter + S",
|
||||
"Shortcut Key:": "Kısayol tuşu:",
|
||||
"Show": "Göstermek",
|
||||
"Show \/ Hide": "Göster \/ gizle",
|
||||
"Show file size:": "Dosya boyutunu göster:",
|
||||
"Simple": "Basit",
|
||||
"Size": "Boyut",
|
||||
"Size is too big, max": "Boyut çok büyük, maks.",
|
||||
"Size:": "Boyut:",
|
||||
"Skip - layer must be image.": "Atlama - katman resim olmalıdır.",
|
||||
"Solarize": "güneşte bırakmak",
|
||||
"Sorry, cold not load getUserMedia() data:": "Maalesef getUserMedia () verilerini yükleme değil:",
|
||||
"Sorry, image could not be loaded.": "Maalesef resim yüklenemedi.",
|
||||
"Sorry, image could not be loaded. Try copy image and paste it.": "Üzgünüz, resim yüklenemedi. Resmi kopyala ve yapıştırmayı deneyin.",
|
||||
"Sorry, image is too big, max 5 MB.": "Maalesef, resim çok büyük, maksimum 5 MB.",
|
||||
"Source is empty, right click on image to save source position.": "Kaynak boş, kaynağı konumunu kaydetmek için görüntüye sağ tıklayın.",
|
||||
"Source coordinates saved.": "Kaynak koordinatlar kaydedildi.",
|
||||
"Source is empty, right click on image or use long press to save source position.": "Kaynak boş, görüntüye sağ tıklayın veya kaynak konumunu kaydetmek için uzun basın.",
|
||||
"Sprites": "Spritelar",
|
||||
"Square": "Kare",
|
||||
"Stream:": "Akış:",
|
||||
"Strength:": "Sertlik:",
|
||||
"Strict": "sıkı",
|
||||
"Stroke": "inme",
|
||||
"Stroke:": "İnme:",
|
||||
"TINYPNG - Compress PNG and JPEG": "TINYPNG - PNG ve JPEG'i sıkıştır",
|
||||
"Tab": "Sekme",
|
||||
"Tag Image File Format": "Etiket Görüntüsü Dosya Formatı",
|
||||
"Tahoma": "Tahoma",
|
||||
"Target:": "Hedef:",
|
||||
"Text": "Metin",
|
||||
"Text example": "Tipik örnek",
|
||||
"Text:": "Metin:",
|
||||
"The quick brown fox jumps over the lazy dog.": "Hızlı kahverengi tilki tembel köpeğin üzerinden atlıyor.",
|
||||
"There": "Orada",
|
||||
"There are no layers behind.": "Arkada hiçbir katman yok.",
|
||||
"There is only 1 layer.": "Sadece bir tabaka var.",
|
||||
"This layer must contain an image. Please convert it to raster to apply this tool.": "Katman görüntü olmalı, onu uygulamak için rastgele dönüştürmelidir.",
|
||||
"Tilt Shift": "Eğim Kaydırma",
|
||||
"Times New Roman": "Times New Roman",
|
||||
"Toaster": "Tost makinası",
|
||||
"Toggle": "geçiş",
|
||||
"Toggle Color Channels": "Renk Kanallarını Değiştir",
|
||||
"Toggle Color Picker": "Renk Seçiciyi Değiştir",
|
||||
"Toggle Menu": "Menüyü Değiştir",
|
||||
"Toggle Swatches": "Renk Örneklerini Aç \/ Kapat",
|
||||
"Tools": "Araçlar",
|
||||
"Tools class not found:": "Araçlar sınıfı bulunamadı:",
|
||||
"Top": "Üst",
|
||||
"Top to Bottom": "Yukarıdan Aşağıya",
|
||||
"Total pixels:": "Toplam piksel:",
|
||||
"Translate": "Çevirmek",
|
||||
"Translate Layer": "Katmanı Çevir",
|
||||
"Translate error, can not find dictionary:": "Çeviri hatası, sözlük bulunamadı:",
|
||||
"Transparency background:": "Şeffaflık arka planı:",
|
||||
"Transparent:": "Şeffaf:",
|
||||
"Trim": "düzeltmek",
|
||||
"Trim everything:": "Her şeyi silmelisin:",
|
||||
"Trim Layers": "Katmanları Kırp",
|
||||
"Trim borders:": "Kenarlıkları kırp:",
|
||||
"Trim layer:": "Döşeme tabakası:",
|
||||
"Trim white color?": "Beyaz rengini keser misin?",
|
||||
"Turkish": "Türk",
|
||||
"Type:": "Tip:",
|
||||
"Türkçe": "Türkçe",
|
||||
"Undo": "Geri alma",
|
||||
"Undo disabled.": "Geri alınıyor devre dışı.",
|
||||
"Undo enabled.": "Devre dışı bırakıldı.",
|
||||
"Undo is not available.": "Geri al mevcut değil.",
|
||||
"Undo levels changed to 1.": "Geri alma seviyeleri 1 olarak değiştirildi.",
|
||||
"Undo levels restored to": "Geri yüklenen geri alma seviyeleri",
|
||||
"Unique colors:": "Eşsiz renkler:",
|
||||
"Up": "yukarı",
|
||||
"Update": "Güncelleme",
|
||||
"Update Brush Layer": "Fırça Katmanını Güncelle",
|
||||
"Update Pencil Layer": "Kalem Katmanını Güncelle",
|
||||
"Update guides": "Kılavuzları güncelleyin",
|
||||
"Use Ctrl+V keyboard shortcut to paste from Clipboard.": "Pano'dan yapıştırmak için Ctrl + V klavye kısayolunu kullanın.",
|
||||
"V Radius:": "V Yarıçapı:",
|
||||
"V. Align:": "V. Hizala:",
|
||||
"Valencia": "Valencia",
|
||||
"Verdana": "Verdana",
|
||||
"Version:": "Versiyon:",
|
||||
"Vertical": "Dikey",
|
||||
"Vertical Alignment": "Dikey hizalama",
|
||||
"Vertical blur:": "Dikey bulanıklık:",
|
||||
"Vertical:": "Dikey:",
|
||||
"Vibrance": "Titreşim",
|
||||
"View": "Görüş",
|
||||
"Vignette": "skeç",
|
||||
"ViliusL": "ViliusL",
|
||||
"Vintage": "bağbozumu",
|
||||
"Visible:": "Gözle görülür:",
|
||||
"WEBP - Weppy File Format": "WEBP - Weppy Dosya Biçimi",
|
||||
"Webcam": "Web kamerası",
|
||||
"Webcam #": "Web kamerası #",
|
||||
"Website:": "Web sitesi:",
|
||||
"Weppy File Format": "Weppy Dosya Biçimi",
|
||||
"Width (%):": "Genişlik (%):",
|
||||
"Width:": "Genişlik:",
|
||||
"Windows Bitmap": "Windows Bit Eşlem",
|
||||
"Word": "Kelime",
|
||||
"Word + Letter": "Kelime + Harf",
|
||||
"Wrap At:": "Şuraya Sar:",
|
||||
"Wrap:": "Paketlemek:",
|
||||
"Wrong dimensions": "Yanlış boyutlar",
|
||||
"Wrong file type, must be image or json.": "Yanlış dosya türü, resim veya json olmalı.",
|
||||
"X end:": "X sonu:",
|
||||
"X position:": "X konumu:",
|
||||
"X start:": "X start:",
|
||||
"X-Pro II": "X-Pro II",
|
||||
"Y end:": "Sonum:",
|
||||
"Y position:": "Y pozisyonu:",
|
||||
"Y start:": "Y başlatın:",
|
||||
|
||||
507
src/js/languages/uk.json
Normal file
@ -0,0 +1,507 @@
|
||||
{
|
||||
"24-Points star": "",
|
||||
"A problem occurred while removing undo history. It": "Sorry, a problem occurred while removing the undo history.",
|
||||
"About": "",
|
||||
"Active": "",
|
||||
"Add Borders": "",
|
||||
"Aden": "",
|
||||
"Advanced": "",
|
||||
"All": "",
|
||||
"Alpha": "",
|
||||
"Alpha:": "",
|
||||
"Anonymous": "",
|
||||
"Anti aliasing": "",
|
||||
"Application markup may have changed,": "The application markup may have changed",
|
||||
"Arial": "",
|
||||
"Arrow": "",
|
||||
"ArrowDown": "",
|
||||
"ArrowLeft": "",
|
||||
"ArrowRight": "",
|
||||
"ArrowUp": "",
|
||||
"Author:": "",
|
||||
"Auto Adjust Colors": "Auto Adjust the Colours",
|
||||
"Auto Kerning": "",
|
||||
"Average:": "",
|
||||
"Backspace": "",
|
||||
"Base": "",
|
||||
"Basic": "",
|
||||
"Black and White": "",
|
||||
"Blue": "",
|
||||
"Blue channel:": "",
|
||||
"Blueprint": "",
|
||||
"Blur Radius:": "",
|
||||
"Blur Tool": "",
|
||||
"Blur power:": "",
|
||||
"Borders": "",
|
||||
"Bottom": "",
|
||||
"Bottom to Top": "",
|
||||
"Bounds:": "",
|
||||
"Box": "",
|
||||
"Box Blur": "",
|
||||
"Box blur": "",
|
||||
"Brightness": "",
|
||||
"Brightness:": "",
|
||||
"Bulge\/Pinch Tool": "",
|
||||
"Burn": "",
|
||||
"Can not animate 1 layer.": "Sorry, you can not animate just 1 layer, you need at least 2 layers.",
|
||||
"Can not find previous layer.": "Sorry, I can not find the previous layer.",
|
||||
"Cancel": "",
|
||||
"Canvas Size": "",
|
||||
"Canvas size": "",
|
||||
"Center": "Centre",
|
||||
"Center x:": "Centre x:",
|
||||
"Center y:": "Centre y:",
|
||||
"Center:": "Centre:",
|
||||
"Change Composition": "",
|
||||
"Change Layer Details": "",
|
||||
"Change Opacity": "",
|
||||
"Channel:": "",
|
||||
"Circle": "",
|
||||
"Clarendon": "",
|
||||
"Clear": "",
|
||||
"Clear Selection": "",
|
||||
"Clone Tool": "",
|
||||
"Clone count:": "",
|
||||
"Clone tool disabled for resized image. Sorry.": "Sorry, the clone tool is disabled for use on a resized asset (image). Undo the resize, clone the asset (image) then resize it again.",
|
||||
"Cloned edges": "",
|
||||
"Color #": "Colour #",
|
||||
"Color Corrections": "Colour Corrections",
|
||||
"Color Palette": "Colour Palette",
|
||||
"Color Zoom": "Colour Zoom",
|
||||
"Color alpha value can not be zero.": "The colour alpha value can not be zero. Please change it.",
|
||||
"Color to Alpha": "Colour to Alpha",
|
||||
"Color zoom": "Colour zoom",
|
||||
"Color:": "Colour:",
|
||||
"Colors": "Colours",
|
||||
"Colors:": "Colours:",
|
||||
"Common Filters": "",
|
||||
"Composition": "",
|
||||
"Composition:": "",
|
||||
"Content Fill": "",
|
||||
"Contrast": "",
|
||||
"Contrast:": "",
|
||||
"Convert to Raster": "Convert to a Raster",
|
||||
"Copy Selection": "",
|
||||
"Copy to Clipboard": "",
|
||||
"Copy:": "",
|
||||
"Courier": "",
|
||||
"Crop Tool": "",
|
||||
"Crop on rotated layer is not supported. Convert it to raster to continue.": "You can not crop a rotated layer. Please convert it to a raster to continue.",
|
||||
"Ctrl+A": "",
|
||||
"Ctrl+C": "",
|
||||
"Ctrl+V": "",
|
||||
"Ctrl+Y": "",
|
||||
"Ctrl+Z": "",
|
||||
"Ctrl-P": "",
|
||||
"Current": "",
|
||||
"Current Color Preview": "Current Colour Preview",
|
||||
"Custom": "",
|
||||
"Data URL": "",
|
||||
"Data URL:": "",
|
||||
"Decrease": "",
|
||||
"Decrease Color Depth": "Decrease Colour Depth",
|
||||
"Degree:": "",
|
||||
"Del": "",
|
||||
"Delete": "",
|
||||
"Delete Selection": "",
|
||||
"Denoise": "",
|
||||
"Desaturate Tool": "",
|
||||
"Description:": "",
|
||||
"Deutsch": "",
|
||||
"Differences": "",
|
||||
"Differences Down": "",
|
||||
"Direction:": "",
|
||||
"Dither": "",
|
||||
"Dithering:": "",
|
||||
"Dominant color:": "Dominant colour:",
|
||||
"Dot Screen": "",
|
||||
"Down": "",
|
||||
"Duplicate": "",
|
||||
"Duplicate Layer": "",
|
||||
"Dynamic": "",
|
||||
"Edge": "",
|
||||
"Edit": "",
|
||||
"Edit text...": "",
|
||||
"Effect browser": "",
|
||||
"Effects": "",
|
||||
"Effects browser": "",
|
||||
"Email:": "",
|
||||
"Emboss": "",
|
||||
"Empty selection": "",
|
||||
"Empty selection or type not image.": "You have selected nothing or the asset is not an image.",
|
||||
"Enable guides:": "",
|
||||
"Enable snap:": "",
|
||||
"End": "",
|
||||
"English": "English UK",
|
||||
"Enrich": "",
|
||||
"Enter": "",
|
||||
"Erase Tool": "",
|
||||
"Erase on rotate object is disabled. Sorry.": "Sorry you can not erase on rotated asset (object). Remove the rotation then you can delete it.",
|
||||
"Error": "",
|
||||
"Error connecting to service.": "",
|
||||
"Error loading the list of fonts from Google.": "There is an error loading the list of fonts from Google. Please report this.",
|
||||
"Error registering service worker": "",
|
||||
"Error: can not find filter:": "",
|
||||
"Error: can not find layer with id:": "",
|
||||
"Error: missing details event target": "",
|
||||
"Error: unknown layer type:": "",
|
||||
"Esc": "",
|
||||
"Escape": "",
|
||||
"Español": "",
|
||||
"Exit confirmation:": "",
|
||||
"Expand edges": "",
|
||||
"Exponent:": "",
|
||||
"Export": "",
|
||||
"External": "",
|
||||
"Factor:": "",
|
||||
"File": "",
|
||||
"File name:": "",
|
||||
"File size:": "",
|
||||
"Fill": "",
|
||||
"Fill Tool": "",
|
||||
"Fit": "",
|
||||
"Fit Window": "",
|
||||
"Flatten Image": "",
|
||||
"Flip": "",
|
||||
"FloydSteinberg-serpentine": "",
|
||||
"Font": "",
|
||||
"Français": "",
|
||||
"Full HD, 1080p": "",
|
||||
"Full Screen": "",
|
||||
"Full layers data": "",
|
||||
"Gap:": "",
|
||||
"Gaussian Blur": "",
|
||||
"Gif delay:": "",
|
||||
"Gingham": "",
|
||||
"GitHub:": "",
|
||||
"Gradient Radius:": "",
|
||||
"Grains": "",
|
||||
"Graphics Interchange Format": "",
|
||||
"Gray": "",
|
||||
"Grayscale": "",
|
||||
"Greek": "",
|
||||
"Green": "",
|
||||
"Green channel:": "",
|
||||
"Greyscale:": "",
|
||||
"Grid": "",
|
||||
"Grid on\/off": "",
|
||||
"Guides": "",
|
||||
"Guides enabled.": "",
|
||||
"H Radius:": "",
|
||||
"H. Align:": "",
|
||||
"Heatmap": "",
|
||||
"Height (%):": "",
|
||||
"Height:": "",
|
||||
"Help": "",
|
||||
"Helvetica": "",
|
||||
"Hermite": "",
|
||||
"Hex": "",
|
||||
"Histogram": "",
|
||||
"Histogram:": "",
|
||||
"Home": "",
|
||||
"Horizontal": "",
|
||||
"Horizontal Alignment": "",
|
||||
"Horizontal blur:": "",
|
||||
"Horizontal:": "",
|
||||
"Hue": "",
|
||||
"Hue Rotate": "",
|
||||
"Hue:": "",
|
||||
"Image": "",
|
||||
"Image data with multi-layers. Can be opened using miniPaint -": "You can open asset (image) data with multi-layers using miniPaint. -",
|
||||
"Impact": "",
|
||||
"Increase": "",
|
||||
"Information": "",
|
||||
"Inkwell": "",
|
||||
"Insert": "",
|
||||
"Insert guides": "",
|
||||
"Insert:": "",
|
||||
"Instagram Filters": "",
|
||||
"Invalid Hex Code": "",
|
||||
"Italiano": "",
|
||||
"JPG\/JPEG Format": "",
|
||||
"Kerning:": "",
|
||||
"Key-Points": "",
|
||||
"KeyU": "",
|
||||
"Keyboard Shortcuts": "",
|
||||
"Keyword:": "",
|
||||
"Lanczos": "",
|
||||
"Language": "",
|
||||
"Last modified": "",
|
||||
"Layer": "",
|
||||
"Layer details": "",
|
||||
"Layer is not compatible with resize": "Sorry, this layer is not compatible with resize",
|
||||
"Layer is vector, convert it to raster to apply this tool.": "Sorry this layer is a vector, please convert it to a raster to apply this tool. (Layer, Convert to a Raster)",
|
||||
"Layers": "",
|
||||
"Layers:": "",
|
||||
"Left": "",
|
||||
"Left to Right": "",
|
||||
"Level:": "",
|
||||
"Levels:": "",
|
||||
"Lietuvių": "",
|
||||
"Lo-fi": "",
|
||||
"Luminance:": "",
|
||||
"Luminosity": "",
|
||||
"Magic Eraser Tool": "",
|
||||
"Merge Down": "",
|
||||
"Merge Layers": "",
|
||||
"Merged": "",
|
||||
"Metrics": "",
|
||||
"Middle": "",
|
||||
"Missing at least 1 size parameter.": "Sorry, you are missing at least 1 size parameter.",
|
||||
"Missing permissions to write to Clipboard.cc": "",
|
||||
"Mode:": "",
|
||||
"Module function not found.": "",
|
||||
"Modules class not found:": "",
|
||||
"Monospace": "",
|
||||
"Mosaic": "",
|
||||
"Mouse:": "",
|
||||
"Move": "",
|
||||
"Move Layer": "",
|
||||
"Move down": "",
|
||||
"Move up": "",
|
||||
"Name:": "",
|
||||
"Needs at least 2 layers.": "You need at least 2 layers. Please make another layer using Layer, New or dragging a new asset (image) into the browser.",
|
||||
"Negative": "",
|
||||
"New": "",
|
||||
"New Brush Layer": "",
|
||||
"New Ellipse Layer": "",
|
||||
"New File": "",
|
||||
"New Gradient Layer": "",
|
||||
"New Layer": "",
|
||||
"New Line Layer": "",
|
||||
"New Pencil Layer": "",
|
||||
"New Rectangle Layer": "",
|
||||
"New Text Layer": "",
|
||||
"New file": "",
|
||||
"New from Selection": "",
|
||||
"New layer": "",
|
||||
"New width can not be smaller then current width": "You can not make the new width smaller then current width.",
|
||||
"Night Vision": "",
|
||||
"None": "",
|
||||
"Nothing is selected.": "Sorry, you have not selected anything, please try again.",
|
||||
"Offset X:": "",
|
||||
"Offset Y:": "",
|
||||
"Oil": "",
|
||||
"Ok": "",
|
||||
"Online image editor.": "",
|
||||
"Opacity": "",
|
||||
"Opacity:": "",
|
||||
"Open": "",
|
||||
"Open Data URL": "",
|
||||
"Open Directory": "",
|
||||
"Open File": "",
|
||||
"Open File Data URL": "",
|
||||
"Open File URL": "",
|
||||
"Open File Webcam": "",
|
||||
"Open Image": "",
|
||||
"Open JSON File": "",
|
||||
"Open Test Template": "",
|
||||
"Open URL": "",
|
||||
"Open data URL": "",
|
||||
"Open from Webcam": "",
|
||||
"Original Size": "",
|
||||
"PNGTOSVG - Convert Image to SVG": "",
|
||||
"PageDown": "",
|
||||
"PageUp": "",
|
||||
"Palette": "",
|
||||
"Parameter #1:": "",
|
||||
"Parameter #2:": "",
|
||||
"Paste": "",
|
||||
"Pencil": "",
|
||||
"Percentage:": "",
|
||||
"Pixels:": "",
|
||||
"Placeholder comment for color channels": "Placeholder comment for colour channels",
|
||||
"Placeholder comment for color picker": "Placeholder comment for colour picker",
|
||||
"Placeholder comment for color swatches": "Placeholder comment for colour swatches",
|
||||
"Portable Network Graphics": "",
|
||||
"Português": "",
|
||||
"Position:": "",
|
||||
"Power:": "",
|
||||
"Preview": "",
|
||||
"Previous": "",
|
||||
"Previous layer must be image, convert it to raster to apply this tool.": "The previous layer must be an asset (image), please convert it to a raster to apply this tool.",
|
||||
"Print": "",
|
||||
"Quality:": "",
|
||||
"Quick Load": "",
|
||||
"Quick Save": "",
|
||||
"REMOVE.BG - Remove Image Background": "",
|
||||
"Radial": "",
|
||||
"Radial gradient": "",
|
||||
"Radius:": "",
|
||||
"Range:": "",
|
||||
"Red": "",
|
||||
"Red channel:": "",
|
||||
"Redo": "",
|
||||
"Remove all": "",
|
||||
"Rename": "",
|
||||
"Rename Layer": "",
|
||||
"Rendered with errors.": "",
|
||||
"Rendering...": "",
|
||||
"Replace Color": "Replace Colour",
|
||||
"Replace color": "Replace colour",
|
||||
"Replacement:": "",
|
||||
"Report Issues": "",
|
||||
"Reset": "",
|
||||
"Resize": "",
|
||||
"Resize Boundary": "",
|
||||
"Resize Layer": "",
|
||||
"Resize Layers": "",
|
||||
"Resize Text Layer": "",
|
||||
"Resized as background": "",
|
||||
"Resized:": "",
|
||||
"Resolution:": "",
|
||||
"Restore Alpha": "",
|
||||
"Right": "",
|
||||
"Right angle:": "",
|
||||
"Right to Left": "",
|
||||
"Rotate": "",
|
||||
"Rotate Layer": "",
|
||||
"Rotate is not supported on this type of object. Convert to raster?": "Sorry, rotate is not supported on this type of asset (object), would you like to convert it to a raster?",
|
||||
"Rotate left": "",
|
||||
"Rotate:": "",
|
||||
"Ruler": "",
|
||||
"SQUOOSH - Compress and Compare Images": "",
|
||||
"Safe search:": "",
|
||||
"Saturate": "",
|
||||
"Saturation": "",
|
||||
"Saturation:": "",
|
||||
"Save (Export)": "",
|
||||
"Save As": "",
|
||||
"Save As Data URL": "",
|
||||
"Save as": "",
|
||||
"Save as type:": "",
|
||||
"Save layers:": "",
|
||||
"Scaling up is not supported in Hermite, using Lanczos.": "",
|
||||
"Scroll down": "",
|
||||
"Scroll up": "",
|
||||
"Search": "",
|
||||
"Search Images": "",
|
||||
"Search for Font": "",
|
||||
"Select All": "",
|
||||
"Select Text Layer": "",
|
||||
"Select object tool": "",
|
||||
"Selected": "",
|
||||
"Selection Tool": "",
|
||||
"Sensitivity:": "",
|
||||
"Separated": "",
|
||||
"Separated (original types)": "",
|
||||
"Sepia": "",
|
||||
"Set Image Size": "",
|
||||
"Settings": "",
|
||||
"Shadow": "",
|
||||
"Shadow:": "",
|
||||
"Shapes": "",
|
||||
"Sharpen": "",
|
||||
"Sharpen Tool": "",
|
||||
"Sharpen:": "",
|
||||
"Shortcut Key:": "",
|
||||
"Show \/ Hide": "",
|
||||
"Show file size:": "",
|
||||
"Simple": "",
|
||||
"Size is too big, max": "",
|
||||
"Size:": "",
|
||||
"Skip - layer must be image.": "Skip - layer must be an asset (image).",
|
||||
"Solarize": "",
|
||||
"Sorry, cold not load getUserMedia() data:": "Sorry, I could not load getUserMedia() data:",
|
||||
"Sorry, image could not be loaded.": "Sorry, the asset (image) could not be loaded.",
|
||||
"Sorry, image could not be loaded. Try copy image and paste it.": "Sorry, the asset (image) could not be loaded. Try copying the image and pasting it.",
|
||||
"Sorry, image is too big, max 5 MB.": "Sorry, the asset (image) is too big, max size is 5 MB.",
|
||||
"Source coordinates saved.": "",
|
||||
"Source is empty, right click on image or use long press to save source position.": "Sorry, the source is empty, right click on the asset (image) or use a long press to save source position.",
|
||||
"Sprites": "",
|
||||
"Square": "",
|
||||
"Stream:": "",
|
||||
"Strength:": "",
|
||||
"Strict": "",
|
||||
"TINYPNG - Compress PNG and JPEG": "",
|
||||
"Tab": "",
|
||||
"Tag Image File Format": "",
|
||||
"Tahoma": "",
|
||||
"Target:": "",
|
||||
"The quick brown fox jumps over the lazy dog.": "",
|
||||
"Theme": "",
|
||||
"There": "",
|
||||
"There are no layers behind.": "",
|
||||
"There is only 1 layer.": "",
|
||||
"Thick guides:": "",
|
||||
"This layer must contain an image. Please convert it to raster to apply this tool.": "Sorry, this layer must contain an asset (image). Please convert it to a raster to apply this tool.",
|
||||
"Tilt Shift": "",
|
||||
"Times New Roman": "",
|
||||
"Toaster": "",
|
||||
"Toggle": "",
|
||||
"Toggle Color Channels": "Toggle Colour Channels",
|
||||
"Toggle Color Picker": "Toggle Colour Picker",
|
||||
"Toggle Menu": "",
|
||||
"Toggle Swatches": "",
|
||||
"Tools": "",
|
||||
"Top": "",
|
||||
"Top to Bottom": "",
|
||||
"Total pixels:": "",
|
||||
"Translate": "",
|
||||
"Translate Layer": "",
|
||||
"Translate error, can not find dictionary:": "Translate error, I can not find the dictionary:",
|
||||
"Transparency background:": "",
|
||||
"Transparent:": "",
|
||||
"Trim": "",
|
||||
"Trim Layers": "",
|
||||
"Trim borders:": "",
|
||||
"Trim layer:": "",
|
||||
"Trim white color?": "Trim white colour?",
|
||||
"Type:": "",
|
||||
"Türkçe": "",
|
||||
"Undo": "",
|
||||
"Unique colors:": "Unique colours:",
|
||||
"Units": "",
|
||||
"Up": "",
|
||||
"Update": "",
|
||||
"Update Brush Layer": "",
|
||||
"Update Pencil Layer": "",
|
||||
"Update guides": "",
|
||||
"Use Ctrl+V keyboard shortcut to paste from Clipboard.": "You can use Ctrl+V on the keyboard shortcut to paste from the Clipboard.",
|
||||
"V Radius:": "",
|
||||
"V. Align:": "",
|
||||
"Valencia": "",
|
||||
"Verdana": "",
|
||||
"Version:": "",
|
||||
"Vertical": "",
|
||||
"Vertical Alignment": "",
|
||||
"Vertical blur:": "",
|
||||
"Vertical:": "",
|
||||
"Vibrance": "",
|
||||
"View": "",
|
||||
"Vignette": "",
|
||||
"ViliusL": "",
|
||||
"Vintage": "",
|
||||
"Webcam": "",
|
||||
"Webcam #": "",
|
||||
"Website:": "",
|
||||
"Weppy File Format": "",
|
||||
"Width (%):": "",
|
||||
"Width:": "",
|
||||
"Windows Bitmap": "",
|
||||
"Word": "",
|
||||
"Word + Letter": "",
|
||||
"Wrap At:": "",
|
||||
"Wrap:": "",
|
||||
"Wrong dimensions": "",
|
||||
"Wrong file type, must be image or json.": "This is the wrong file type, it must be an asset (image) or json.",
|
||||
"X end:": "",
|
||||
"X position:": "",
|
||||
"X start:": "",
|
||||
"X-Pro II": "",
|
||||
"Y end:": "",
|
||||
"Y position:": "",
|
||||
"Y start:": "",
|
||||
"You can also drag and drop items into browser.": "You can also drag and drop assets (items) into browser.",
|
||||
"Your browser does not support canvas or JavaScript is not enabled.": "",
|
||||
"Your browser does not support this format.": "",
|
||||
"Your search did not match any images.": "Your search did not match any assets (images).",
|
||||
"Zoom": "",
|
||||
"Zoom Blur": "",
|
||||
"Zoom In": "",
|
||||
"Zoom Out": "",
|
||||
"Zoom blur": "",
|
||||
"Zoom in": "",
|
||||
"Zoom out": "",
|
||||
"Zoom:": ""
|
||||
}
|
||||
@ -1,376 +1,535 @@
|
||||
{
|
||||
"2d": "2D",
|
||||
"480p": "480P",
|
||||
"A problem occurred while removing undo history. It": "删除撤销历史记录时发生问题。它",
|
||||
"About": "关于",
|
||||
"Active": "活性",
|
||||
"Active": "活动",
|
||||
"Aden": "Aden",
|
||||
"Advanced": "高级",
|
||||
"All": "所有",
|
||||
"Alpha:": "Α:",
|
||||
"All": "全部",
|
||||
"Alpha": "透明度",
|
||||
"Alpha:": "透明度:",
|
||||
"Animation": "动画",
|
||||
"Anonymous": "匿名",
|
||||
"Anti aliasing": "消除锯齿",
|
||||
"Arial": "宋体",
|
||||
"Anti aliasing": "抗锯齿",
|
||||
"Application markup may have changed,": "应用标记可能已更改,",
|
||||
"Arial": "Arial",
|
||||
"Arrow": "箭头",
|
||||
"ArrowDown": "向下箭头",
|
||||
"ArrowLeft": "向左箭头",
|
||||
"ArrowRight": "向右箭头",
|
||||
"ArrowUp": "向上箭头",
|
||||
"Author:": "作者:",
|
||||
"Auto Adjust Colors": "自动调整颜色",
|
||||
"Average:": "平均:",
|
||||
"BMP - Windows Bitmap": "BMP - Windows位图",
|
||||
"Auto Kerning": "自动紧排",
|
||||
"Auto select": "自动选择",
|
||||
"Average:": "平均值:",
|
||||
"Backspace": "退格键",
|
||||
"Base": "基础",
|
||||
"Basic": "基本",
|
||||
"Black and White": "黑与白",
|
||||
"Black and White": "黑白",
|
||||
"Blue": "蓝色",
|
||||
"Blue channel:": "蓝色通道:",
|
||||
"Blue:": "蓝色:",
|
||||
"Blueprint": "蓝图",
|
||||
"Blur": "模糊工具",
|
||||
"Blur Radius:": "模糊半径:",
|
||||
"Blur power:": "模糊力量:",
|
||||
"Blur tool": "模糊工具",
|
||||
"Bold": "胆大",
|
||||
"Bold Italic": "加粗斜体",
|
||||
"Borders": "国界",
|
||||
"Box Blur": "框模糊",
|
||||
"Box blur": "框模糊",
|
||||
"Blur Tool": "模糊工具",
|
||||
"Blur power:": "模糊强度:",
|
||||
"Borders": "边框",
|
||||
"Bottom": "底部",
|
||||
"Bottom to Top": "从底部到顶部",
|
||||
"Bounds:": "边界:",
|
||||
"Box": "方框",
|
||||
"Box Blur": "方框模糊",
|
||||
"Box blur": "方框模糊",
|
||||
"Brightness": "亮度",
|
||||
"Brightness:": "亮度:",
|
||||
"Brush": "刷",
|
||||
"Bulge\/Pinch tool": "凸出\/捏合工具",
|
||||
"Burn": "烧伤",
|
||||
"CSS Filters": "CSS过滤器",
|
||||
"Can not animate 1 layer.": "不能动画1层。",
|
||||
"Can not find previous layer.": "找不到以前的图层。",
|
||||
"Brush": "刷子工具",
|
||||
"Bulge": "凸出",
|
||||
"Bulge/Pinch Tool": "凸出/收缩工具",
|
||||
"Burn": "加深",
|
||||
"Can not animate 1 layer.": "无法对1个图层进行动画。",
|
||||
"Can not find previous layer.": "找不到上一个图层。",
|
||||
"Can not use this tool on current layer: image already takes all area.": "无法在当前图层上使用此工具:图像已覆盖整个区域。",
|
||||
"Cancel": "取消",
|
||||
"Center": "中央",
|
||||
"Canvas Size": "画布尺寸",
|
||||
"Center": "中心",
|
||||
"Center x:": "中心x:",
|
||||
"Center y:": "中心y:",
|
||||
"Center:": "中央:",
|
||||
"Channel:": "渠道:",
|
||||
"Circle": "圈",
|
||||
"Clear": "明确",
|
||||
"Clone count:": "克隆数:",
|
||||
"Clone tool": "克隆工具",
|
||||
"Cloned edges": "克隆的边缘",
|
||||
"Color #": "颜色#",
|
||||
"Center:": "中心:",
|
||||
"Change Composition": "更改合成",
|
||||
"Change Layer Details": "更改图层详情",
|
||||
"Change Opacity": "更改不透明度",
|
||||
"Channel:": "通道:",
|
||||
"Circle": "圆圈",
|
||||
"Clarendon": "Clarendon",
|
||||
"Clear": "清除",
|
||||
"Clear Selection": "清除选区",
|
||||
"Clone": "克隆工具",
|
||||
"Clone Tool": "克隆工具",
|
||||
"Clone count:": "克隆数量:",
|
||||
"Clone tool disabled for resized image. Please rasterize first.": "对已调整大小的图像禁用克隆工具。请先栅格化。",
|
||||
"Cloned edges": "克隆边缘",
|
||||
"Close": "关闭",
|
||||
"Color 1:": "颜色 1:",
|
||||
"Color 2:": "颜色 2:",
|
||||
"Color #": "颜色 #",
|
||||
"Color Corrections": "颜色校正",
|
||||
"Color Palette": "颜色调色板",
|
||||
"Color Zoom": "颜色缩放",
|
||||
"Color alpha value can not be zero.": "颜色alpha值不能为零。",
|
||||
"Color Corrections": "颜色更正",
|
||||
"Color Palette": "调色板",
|
||||
"Color to Alpha": "颜色到阿尔法",
|
||||
"Color zoom": "彩色变焦",
|
||||
"Color alpha value can not be zero.": "颜色的 alpha 值不能为零。",
|
||||
"Color to Alpha": "颜色转换为透明",
|
||||
"Color zoom": "颜色缩放",
|
||||
"Color:": "颜色:",
|
||||
"Colors": "颜色",
|
||||
"Colors:": "颜色:",
|
||||
"Composition": "组成",
|
||||
"Composition:": "组成:",
|
||||
"Content Fill": "内容填写",
|
||||
"Contrast": "对比",
|
||||
"Contrast:": "对比:",
|
||||
"Convert to Raster": "转换为光栅",
|
||||
"Copy Selection": "复制选择",
|
||||
"Copy:": "复制:",
|
||||
"Courier": "信使",
|
||||
"Crop": "作物",
|
||||
"Ctrl+V": "按Ctrl + V",
|
||||
"Ctrl-P": "按Ctrl-P",
|
||||
"Common Filters": "常见滤镜",
|
||||
"Composition": "合成",
|
||||
"Composition:": "合成:",
|
||||
"Content Fill": "内容填充",
|
||||
"Contiguous": "连续",
|
||||
"Contrast": "对比度",
|
||||
"Contrast:": "对比度:",
|
||||
"Convert layer to raster": "将图层转换为栅格图",
|
||||
"Convert to Raster": "转换为栅格图",
|
||||
"Copy Selection": "复制选区",
|
||||
"Copy to Clipboard": "复制到剪贴板",
|
||||
"Courier": "Courier",
|
||||
"Crop": "裁剪工具",
|
||||
"Crop Tool": "裁剪工具",
|
||||
"Crop on rotated layer is not supported. Convert it to raster to continue.": "不支持旋转图层上的裁剪。请将其转换为位图以继续。",
|
||||
"Ctrl + C": "Ctrl + C",
|
||||
"Ctrl+A": "Ctrl+A",
|
||||
"Ctrl+C": "Ctrl+C",
|
||||
"Ctrl+P": "Ctrl+P",
|
||||
"Ctrl+V": "Ctrl+V",
|
||||
"Ctrl+Y": "Ctrl+Y",
|
||||
"Ctrl+Z": "Ctrl+Z",
|
||||
"Current": "当前",
|
||||
"Curve": "曲线",
|
||||
"Custom": "习惯",
|
||||
"Data URL": "数据网址",
|
||||
"Data URL:": "数据网址:",
|
||||
"Decrease Color Depth": "减少颜色深度",
|
||||
"Default": "默认",
|
||||
"Degree:": "度:",
|
||||
"Del": "德尔",
|
||||
"Current Color Preview": "当前颜色预览",
|
||||
"Custom": "自定义",
|
||||
"Data URL": "数据 URL",
|
||||
"Data URL:": "数据 URL:",
|
||||
"Decrease": "减少",
|
||||
"Decrease Color Depth": "减少色彩深度",
|
||||
"Degree:": "角度:",
|
||||
"Del": "删除",
|
||||
"Delay:": "延迟:",
|
||||
"Delete": "删除",
|
||||
"Delete Selection": "删除选择",
|
||||
"Delete Selection": "删除选区",
|
||||
"Denoise": "降噪",
|
||||
"Desaturate": "去色",
|
||||
"Desaturate Tool": "去色工具",
|
||||
"Description:": "描述:",
|
||||
"Deutsch": "德语",
|
||||
"Differences": "差异",
|
||||
"Differences Down": "差异下降",
|
||||
"Differences Down": "差异缩小",
|
||||
"Direction:": "方向:",
|
||||
"Dither": "抖动",
|
||||
"Dithering:": "抖动:",
|
||||
"Dominant color:": "主色:",
|
||||
"Dot Screen": "点屏幕",
|
||||
"Down": "下",
|
||||
"Duplicate": "重复",
|
||||
"Dominant color:": "主色调:",
|
||||
"Dot Screen": "点阵",
|
||||
"Down": "向下",
|
||||
"Duplicate": "复制",
|
||||
"Duplicate Layer": "复制图层",
|
||||
"Duplicate layer": "复制图层",
|
||||
"Dynamic": "动态",
|
||||
"Edge": "边缘",
|
||||
"Edit": "编辑",
|
||||
"Edit text": "编辑文字",
|
||||
"Edit text...": "编辑文字...",
|
||||
"Effects": "效果",
|
||||
"Email:": "电子邮件:",
|
||||
"Edit text...": "编辑文本...",
|
||||
"Effect browser": "特效浏览器",
|
||||
"Effects": "特效",
|
||||
"Effects browser": "特效浏览器",
|
||||
"Email:": "邮箱:",
|
||||
"Emboss": "浮雕",
|
||||
"Empty selection": "空的选择",
|
||||
"Empty selection or type not image.": "空的选择或输入不是图像。",
|
||||
"Empty selection": "空选区",
|
||||
"Empty selection or type not image.": "空选区或未输入图像。",
|
||||
"Enable autoresize:": "启用自动调整大小:",
|
||||
"End": "结束",
|
||||
"English": "英语",
|
||||
"Enrich": "丰富",
|
||||
"Erase": "抹去",
|
||||
"Erase on rotate object is disabled. Sorry.": "旋转对象上的擦除被禁用。抱歉。",
|
||||
"English (UK)": "英语(英国)",
|
||||
"Enrich": "增强",
|
||||
"Enter": "输入",
|
||||
"Erase Tool": "橡皮擦工具",
|
||||
"Erase on rotate object is disabled. Please rasterize first.": "禁用旋转对象上的橡皮擦。请先栅格化。",
|
||||
"Error": "错误",
|
||||
"Error connecting to service.": "连接到服务时出错。",
|
||||
"Error: can not load image.": "错误:无法加载图像。",
|
||||
"Error loading the list of fonts from Google.": "加载 Google 字体列表时出错。",
|
||||
"Error registering service worker": "注册服务工作者时出错",
|
||||
"Error: can not find filter:": "错误:无法找到滤镜:",
|
||||
"Error: can not find layer with id:": "错误:无法找到带有 ID 的图层:",
|
||||
"Error: missing details event target": "错误:缺少详细信息事件目标",
|
||||
"Error: unknown layer type:": "错误:未知的图层类型:",
|
||||
"Error: unsupported attribute type:": "错误:不支持的属性类型:",
|
||||
"Error: wrong key:": "错误:错误的键:",
|
||||
"Esc": "退出",
|
||||
"Escape": "逃脱",
|
||||
"Español": "西班牙语",
|
||||
"Expand edges": "展开边缘",
|
||||
"Expand edges": "扩展边缘",
|
||||
"Exponent:": "指数:",
|
||||
"Export": "导出",
|
||||
"External": "外部",
|
||||
"Erase": "橡皮擦工具",
|
||||
"Factor:": "因子:",
|
||||
"File": "文件",
|
||||
"File name:": "文件名:",
|
||||
"File size:": "文件大小:",
|
||||
"Fill": "填",
|
||||
"Fit": "适合",
|
||||
"Fit Window": "适合的窗口",
|
||||
"Flatten Image": "拼合图像",
|
||||
"Flip": "翻动",
|
||||
"FloydSteinberg-serpentine": "FloydSteinberg蛇形",
|
||||
"French": "法国",
|
||||
"Full HD, 1080p": "全高清,1080p",
|
||||
"GIF - Graphics Interchange Format": "GIF - 图形交换格式",
|
||||
"Gap:": "间隙:",
|
||||
"Fill": "填充",
|
||||
"Fill:": "填充:",
|
||||
"Fill Tool": "填充工具",
|
||||
"Fit": "适应",
|
||||
"Fit Window": "适应窗口",
|
||||
"Fit window": "适应窗口",
|
||||
"Flatten Image": "图像拉平",
|
||||
"Flip": "翻转",
|
||||
"FloydSteinberg-serpentine": "FloydSteinberg-蛇形",
|
||||
"Font": "字体",
|
||||
"Font:": "字体:",
|
||||
"Français": "法语",
|
||||
"Full HD, 1080p": " 全高清,1080p",
|
||||
"Full Screen": "全屏",
|
||||
"Full layers data": "全层数据",
|
||||
"Gap:": "间距:",
|
||||
"Gaussian Blur": "高斯模糊",
|
||||
"German": "德语",
|
||||
"Gif delay:": "Gif延迟:",
|
||||
"GitHub:": "GitHub的:",
|
||||
"Gradient": "梯度",
|
||||
"Gif delay:": "动图延迟:",
|
||||
"Gingham": "方格",
|
||||
"GitHub:": "GitHub:",
|
||||
"Gradient": "渐变工具",
|
||||
"Gradient Radius:": "渐变半径:",
|
||||
"Grains": "谷物",
|
||||
"Grains": "颗粒",
|
||||
"Graphics Interchange Format": "图形交换格式",
|
||||
"Gray": "灰色",
|
||||
"Grayscale": "灰度",
|
||||
"Greek": "希腊语",
|
||||
"Green": "绿色",
|
||||
"Green channel:": "绿色通道:",
|
||||
"Green:": "绿色:",
|
||||
"Greyscale:": "灰度:",
|
||||
"Grid": "格",
|
||||
"Grid on\/off": "网格开\/关",
|
||||
"H Radius:": "H半径:",
|
||||
"Heatmap": "热图",
|
||||
"Height (%):": "身高(%):",
|
||||
"Grid": "网格",
|
||||
"Grid on/off": "打开/关闭网格",
|
||||
"Guides": "参考线",
|
||||
"Guides enabled.": "参考线已启用。",
|
||||
"H Radius:": "水平半径:",
|
||||
"H. Align:": "水平对齐:",
|
||||
"Heatmap": "热力图",
|
||||
"Height (%):": "高度(%):",
|
||||
"Height:": "高度:",
|
||||
"Help": "帮帮我",
|
||||
"Help": "帮助",
|
||||
"Helvetica": "黑体",
|
||||
"Hermite": "埃尔米特",
|
||||
"Hex:": "十六进制:",
|
||||
"Hermite": "Hermite",
|
||||
"Hex": "十六进制",
|
||||
"Hide": "隐藏",
|
||||
"Histogram": "直方图",
|
||||
"Histogram:": "柱状图:",
|
||||
"Horizontal": "横",
|
||||
"Histogram:": "直方图:",
|
||||
"Home": "主页",
|
||||
"Horizontal": "水平",
|
||||
"Horizontal Alignment": "水平对齐",
|
||||
"Horizontal blur:": "水平模糊:",
|
||||
"Horizontal:": "水平:",
|
||||
"Hue": "色调",
|
||||
"Hue Rotate": "色调旋转",
|
||||
"Hue:": "色调:",
|
||||
"Image": "图片",
|
||||
"Image data with multi-layers. Can be opened using miniPaint -": "图像数据与多层。可以使用miniPaint打开 -",
|
||||
"Impact": "碰撞",
|
||||
"Image data with multi-layers. Can be opened using miniPaint -": "图像数据带有多层。可使用miniPaint打开 -",
|
||||
"Impact": "影响",
|
||||
"In proportion:": "按比例:",
|
||||
"Increase": "增加",
|
||||
"Information": "信息",
|
||||
"Insert:": "插:",
|
||||
"Inkwell": "墨井",
|
||||
"Insert": "插入",
|
||||
"Insert guides": "插入参考线",
|
||||
"Insert new layer": "插入新图层",
|
||||
"Instagram Filters": "Instagram 滤镜",
|
||||
"Invalid Hex Code": "无效的十六进制代码",
|
||||
"Italiano": "意大利语",
|
||||
"Italic": "斜体",
|
||||
"JPG - JPG\/JPEG Format": "JPG - JPG \/ JPEG格式",
|
||||
"JPG, WEBP quality:": "JPG,WEBP质量:",
|
||||
"JSON - Full layers data": "JSON - 全层数据",
|
||||
"Japanese": "日本",
|
||||
"JPG/JPEG Format": "JPG / JPEG格式",
|
||||
"Kerning:": "字距:",
|
||||
"Key-Points": "关键点",
|
||||
"KeyU": "键 U",
|
||||
"Keyboard Shortcuts": "键盘快捷键",
|
||||
"Keyword:": "关键词:",
|
||||
"Korean": "朝鲜的",
|
||||
"Keyword:": "关键字:",
|
||||
"Lanczos": "Lanczos",
|
||||
"Landscape": "横向",
|
||||
"Language": "语言",
|
||||
"Last modified": "上一次更改",
|
||||
"Layer details": "图层细节",
|
||||
"Layer is already image.": "图层已经是图像。",
|
||||
"Layer must be image, convert it to raster to apply this tool.": "图层必须是图像,将其转换为栅格来应用此工具。",
|
||||
"Last modified": "上次修改",
|
||||
"Layer": "图层",
|
||||
"Layer details": "图层详情",
|
||||
"Layer is empty.": "图层为空。",
|
||||
"Layer is not compatible with resize": "图层不兼容调整大小",
|
||||
"Layer is vector, convert it to raster to apply this tool.": "图层为矢量,转换为栅格以应用此工具。",
|
||||
"Layers": "图层",
|
||||
"Layers:": "图层:",
|
||||
"Left": "剩下",
|
||||
"Level:": "水平:",
|
||||
"Levels:": "级别:",
|
||||
"Lietuvių": "立陶宛ų",
|
||||
"Line": "线",
|
||||
"Lum:": "绥:",
|
||||
"Layout:": "布局:",
|
||||
"Leading:": "行距:",
|
||||
"Left": "左",
|
||||
"Left to Right": "左到右",
|
||||
"Level:": "层级:",
|
||||
"Levels:": "层级:",
|
||||
"Lietuvių": "立陶宛语",
|
||||
"Lo-fi": "低保真",
|
||||
"Luminance:": "亮度:",
|
||||
"Magic Wand Tool": "魔术棒工具",
|
||||
"Merge Down": "合并下来",
|
||||
"Merged": "合并的",
|
||||
"Luminosity": "亮度",
|
||||
"Magic Eraser Tool": "魔术橡皮擦工具",
|
||||
"Merge Down": "向下合并",
|
||||
"Merge Layers": "合并图层",
|
||||
"Merged": "已合并",
|
||||
"Metrics": "指标",
|
||||
"Middle": "居中",
|
||||
"Missing at least 1 size parameter.": "至少缺少1个尺寸参数。",
|
||||
"Missing permissions to write to Clipboard.cc": "缺少写入Clipboard.cc的权限",
|
||||
"Mode:": "模式:",
|
||||
"Module function not found.": "找不到模块功能。",
|
||||
"Modules class not found:": "找不到模块类:",
|
||||
"Mosaic": "镶嵌",
|
||||
"Mouse:": "坐标:",
|
||||
"Module function not found.": "未找到模块功能。",
|
||||
"Modules class not found:": "未找到模块类:",
|
||||
"Monospace": "等宽字体",
|
||||
"Mosaic": "马赛克",
|
||||
"Mouse:": "鼠标:",
|
||||
"Move": "移动",
|
||||
"Move down": "下移",
|
||||
"Move up": "提升",
|
||||
"Move Layer": "移动图层",
|
||||
"Move layer down": "向下移动图层",
|
||||
"Move layer up": "向上移动图层",
|
||||
"Name:": "名称:",
|
||||
"Needs at least 2 layers.": "至少需要2层。",
|
||||
"Negative": "负",
|
||||
"New": "新",
|
||||
"New file": "新文件",
|
||||
"New from Selection": "新的选择",
|
||||
"New layer": "新的图层",
|
||||
"New width can not be smaller then current width": "新的宽度不能小于当前的宽度",
|
||||
"Normal": "正常",
|
||||
"Nothing is selected.": "没有选择。",
|
||||
"Offset X:": "偏移量X:",
|
||||
"Offset Y:": "偏移Y:",
|
||||
"Oil": "油",
|
||||
"Ok": "好",
|
||||
"Negative": "负片",
|
||||
"New": "新建",
|
||||
"New Bezier Layer": "新贝塞尔曲线图层",
|
||||
"New Brush Layer": "新画笔图层",
|
||||
"New Ellipse Layer": "新椭圆图层",
|
||||
"New File": "新建文件",
|
||||
"New Gradient Layer": "新渐变图层",
|
||||
"New Layer": "新建图层",
|
||||
"New Line Layer": "新线条图层",
|
||||
"New Pencil Layer": "新铅笔图层",
|
||||
"New Polygon Layer": "新多边形图层",
|
||||
"New Rectangle Layer": "新矩形图层",
|
||||
"New Text Layer": "新文本图层",
|
||||
"New file": "新建文件",
|
||||
"New from Selection": "从选择新建",
|
||||
"New layer": "新建图层",
|
||||
"Next": "下一个",
|
||||
"Night Vision": "夜视",
|
||||
"None": "无",
|
||||
"Nothing is selected.": "未选择任何内容。",
|
||||
"Offset X:": "X偏移:",
|
||||
"Offset Y:": "Y偏移:",
|
||||
"Oil": "油画",
|
||||
"Ok": "确定",
|
||||
"Online image editor.": "在线图像编辑器。",
|
||||
"Opacity": "不透明度",
|
||||
"Opacity:": "不透明度:",
|
||||
"Open": "打开",
|
||||
"Open Data URL": "打开数据网址",
|
||||
"Open Data URL": "打开数据URL",
|
||||
"Open Directory": "打开目录",
|
||||
"Open File": "打开文件",
|
||||
"Open File Data URL": "打开数据URL文件",
|
||||
"Open File URL": "打开文件网址",
|
||||
"Open File Webcam": "打开网络摄像头文件",
|
||||
"Open Image": "打开图像",
|
||||
"Open JSON File": "打开JSON文件",
|
||||
"Open Test Template": "打开测试模板",
|
||||
"Open URL": "打开网址",
|
||||
"Open data URL": "打开数据网址",
|
||||
"Original Size": "原始尺寸",
|
||||
"PNG - Portable Network Graphics": "PNG - 便携式网络图形",
|
||||
"Open data URL": "打开数据URL",
|
||||
"Open from Webcam": "从摄像头打开",
|
||||
"Original Size": "原始大小",
|
||||
"PNGTOSVG - Convert Image to SVG": "PNGTOSVG - 将图像转换为SVG格式",
|
||||
"PageDown": "下一页",
|
||||
"PageUp": "上一页",
|
||||
"Palette": "调色板",
|
||||
"Parameter #1:": "参数#1:",
|
||||
"Parameter #2:": "参数#2:",
|
||||
"Paste": "糊",
|
||||
"Pencil": "铅笔",
|
||||
"Parameter #1:": "参数1:",
|
||||
"Parameter #2:": "参数2:",
|
||||
"Paste": "粘贴",
|
||||
"Pencil": "铅笔工具",
|
||||
"Percentage:": "百分比:",
|
||||
"Pick Color": "选择颜色",
|
||||
"Pick color": "吸管工具",
|
||||
"Pixels:": "像素:",
|
||||
"Play animation": "播放动画",
|
||||
"Portuguese": "葡萄牙语",
|
||||
"Placeholder comment for color channels": "颜色通道的占位符注释",
|
||||
"Placeholder comment for color picker": "颜色选择器的占位符注释",
|
||||
"Placeholder comment for color swatches": "颜色样本的占位符注释",
|
||||
"Play": "播放",
|
||||
"Portable Network Graphics": "便携式网络图形",
|
||||
"Portrait": "纵向",
|
||||
"Português": "葡萄牙语",
|
||||
"Position:": "位置:",
|
||||
"Power:": "功率:",
|
||||
"Powred by pixabay.com .": "pixabay.com粉丝。",
|
||||
"Pre-Blur:": "预模糊:",
|
||||
"Preview": "预览",
|
||||
"Previous": "以前",
|
||||
"Previous layer must be image, convert it to raster to apply this tool.": "上一层必须是图像,将其转换为栅格来应用此工具。",
|
||||
"Previous": "上一个",
|
||||
"Previous layer must be image, convert it to raster to apply this tool.": "前一图层必须为图像,将其转换为栅格以应用此工具。",
|
||||
"Print": "打印",
|
||||
"Quality:": "质量:",
|
||||
"Quick Load": "快速加载",
|
||||
"Quick Save": "快速保存",
|
||||
"REMOVE.BG - Remove Image Background": "REMOVE.BG - 移除图像背景",
|
||||
"Radial": "径向",
|
||||
"Radial gradient": "径向渐变",
|
||||
"Radius:": "半径:",
|
||||
"Range:": "范围:",
|
||||
"Rectangle": "长方形",
|
||||
"Red": "红",
|
||||
"Red": "红色",
|
||||
"Red channel:": "红色通道:",
|
||||
"Red:": "红:",
|
||||
"Rename": "改名",
|
||||
"Redo": "重做",
|
||||
"Remove all": "移除全部",
|
||||
"Rename": "重命名",
|
||||
"Rename Layer": "重命名图层",
|
||||
"Rendered with errors.": "渲染出现错误。",
|
||||
"Rendering...": "渲染中...",
|
||||
"Replace Color": "替换颜色",
|
||||
"Replace color": "替换颜色",
|
||||
"Replacement:": "替代:",
|
||||
"Replacement:": "替换:",
|
||||
"Report Issues": "报告问题",
|
||||
"Resample - Hermite": "重新取样 - Hermite",
|
||||
"Reset": "重启",
|
||||
"Reset zoom level": "重置缩放级别",
|
||||
"Resize": "调整",
|
||||
"Reset": "重置",
|
||||
"Resize": "调整大小",
|
||||
"Resize Boundary": "调整边界",
|
||||
"Resize Layer": "调整图层大小",
|
||||
"Resize Layers": "调整图层大小",
|
||||
"Resize Text Layer": "调整文本图层大小",
|
||||
"Resized as background": "调整为背景",
|
||||
"Resolution:": "解析度:",
|
||||
"Restore Alpha": "恢复阿尔法",
|
||||
"Right": "对",
|
||||
"Resized:": "调整大小:",
|
||||
"Resolution:": "分辨率:",
|
||||
"Restore Alpha": "恢复透明度",
|
||||
"Right": "右",
|
||||
"Right angle:": "直角:",
|
||||
"Right to Left": "从右到左",
|
||||
"Rotate": "旋转",
|
||||
"Rotate is not supported on this type of object. Convert to raster?": "这种类型的对象不支持旋转。转换为光栅?",
|
||||
"Rotate Layer": "旋转图层",
|
||||
"Rotate is not supported on this type of object. Convert to raster?": "此类型对象不支持旋转。转换为栅格图?",
|
||||
"Rotate left": "向左旋转",
|
||||
"Rotate:": "旋转:",
|
||||
"Russian": "俄语",
|
||||
"Sat:": "星期六:",
|
||||
"Saturate": "饱和",
|
||||
"Saturation:": "饱和:",
|
||||
"Save": "保存",
|
||||
"Ruler": "标尺",
|
||||
"SQUOOSH - Compress and Compare Images": "SQUOOSH - 压缩和比较图像",
|
||||
"Saturate": "饱和度",
|
||||
"Saturation": "饱和度",
|
||||
"Saturation:": "饱和度:",
|
||||
"Save As": "另存为",
|
||||
"Save As Data URL": "另存为数据网址",
|
||||
"Save As Data URL": "另存为数据URL",
|
||||
"Save as": "另存为",
|
||||
"Save as type:": "另存为类型:",
|
||||
"Save layers:": "保存图层:",
|
||||
"Save resolution:": "保存分辨率:",
|
||||
"Scaling up is not supported in Hermite, using Lanczos.": "Hermite不支持放大,请使用Lanczos。",
|
||||
"Scroll down": "向下滚动",
|
||||
"Scroll up": "向上滑动",
|
||||
"Scroll up": "向上滚动",
|
||||
"Search": "搜索",
|
||||
"Search Images": "搜索图片",
|
||||
"Search Images": "搜索图像",
|
||||
"Search for Font": "搜索字体",
|
||||
"Search:": "搜索:",
|
||||
"Select All": "全选",
|
||||
"Select Text Layer": "选择文本图层",
|
||||
"Select object tool": "选择对象工具",
|
||||
"Selected": "选",
|
||||
"Selection": "选择",
|
||||
"Selected": "已选择",
|
||||
"Selection": "选择工具",
|
||||
"Selection Tool": "选择工具",
|
||||
"Sensitivity:": "灵敏度:",
|
||||
"Sepia": "乌贼",
|
||||
"Separated": "分离",
|
||||
"Separated (original types)": "分离(原始类型)",
|
||||
"Sepia": "棕褐色",
|
||||
"Set Image Size": "设置图像尺寸",
|
||||
"Settings": "设置",
|
||||
"Shadow": "阴影",
|
||||
"Shadow:": "阴影:",
|
||||
"Sharpen": "削尖",
|
||||
"Sharpen tool": "锐化工具",
|
||||
"Shapes": "形状",
|
||||
"Shapes (H)": "形状 (H)",
|
||||
"Sharpen": "锐化",
|
||||
"Sharpen Tool": "锐化工具",
|
||||
"Sharpen:": "锐化:",
|
||||
"Show \/ Hide": "显示隐藏",
|
||||
"Shift + S": "Shift + S",
|
||||
"Shortcut Key:": "快捷键:",
|
||||
"Show": "显示",
|
||||
"Show \/ Hide": "显示 \/ 隐藏",
|
||||
"Show file size:": "显示文件大小:",
|
||||
"Simple": "简单",
|
||||
"Size": "尺寸",
|
||||
"Size is too big, max": "尺寸太大,最大",
|
||||
"Size is too big, max": "尺寸太大,最大值为",
|
||||
"Size:": "尺寸:",
|
||||
"Skip - layer must be image.": "跳过 - 图层必须是图像。",
|
||||
"Solarize": "曝光过度",
|
||||
"Sorry, image could not be loaded. Try copy image and paste it.": "对不起,图片无法加载。尝试复制图像并粘贴。",
|
||||
"Sorry, image is too big, max 5 MB.": "对不起,图片太大,最大5 MB。",
|
||||
"Source is empty, right click on image to save source position.": "源是空的,右键点击图像保存源位置。",
|
||||
"Sprites": "精灵",
|
||||
"Square": "广场",
|
||||
"Solarize": "曝光反转",
|
||||
"Sorry, cold not load getUserMedia() data:": "抱歉,无法加载 getUserMedia() 数据:",
|
||||
"Sorry, image could not be loaded.": "抱歉,无法加载图片。",
|
||||
"Sorry, image could not be loaded. Try copy image and paste it.": "抱歉,图片无法加载。尝试复制图像并粘贴。",
|
||||
"Sorry, image is too big, max 5 MB.": "抱歉,图片太大,最大值为5 MB。",
|
||||
"Source coordinates saved.": "源坐标已保存。",
|
||||
"Source is empty, right click on image or use long press to save source position.": "源为空,右键单击图像或长按保存源位置。",
|
||||
"Source layer:": "源图层:",
|
||||
"Sprites": "图像精灵",
|
||||
"Square": "正方形",
|
||||
"Stream:": "流:",
|
||||
"Strength:": "强度:",
|
||||
"Strict": "严格",
|
||||
"Stroke": "行程",
|
||||
"Stroke:": "行程:",
|
||||
"Stroke size:": "线条粗细:",
|
||||
"TINYPNG - Compress PNG and JPEG": "TINYPNG - 压缩PNG和JPEG",
|
||||
"Tab": "标签",
|
||||
"Tag Image File Format": "标记图像文件格式",
|
||||
"Tahoma": "Tahoma",
|
||||
"Target:": "目标:",
|
||||
"Text": "文本",
|
||||
"Text example": "文本示例",
|
||||
"Text:": "文本:",
|
||||
"There are no layers behind.": "背后没有层。",
|
||||
"There is only 1 layer.": "只有1层。",
|
||||
"Tilt Shift": "倾斜移位",
|
||||
"Times New Roman": "英语字体格式一种",
|
||||
"The quick brown fox jumps over the lazy dog.": "敏捷的棕色狐狸跳过了懒狗。",
|
||||
"There": "那里",
|
||||
"There are no layers behind.": "背后没有图层。",
|
||||
"There is only 1 layer.": "只有1个图层。",
|
||||
"This layer must contain an image. Please convert it to raster to apply this tool.": "此图层必须包含图像。请将其转换为光栅以应用此工具。",
|
||||
"Tilt Shift": "视角移位",
|
||||
"Times New Roman": "Times New Roman",
|
||||
"Toaster": "Toaster",
|
||||
"Toggle": "切换",
|
||||
"Toggle Color Channels": "切换颜色通道",
|
||||
"Toggle Color Picker": "切换颜色选择器",
|
||||
"Toggle Menu": "切换菜单",
|
||||
"Toggle Swatches": "切换样本",
|
||||
"Tools": "工具",
|
||||
"Tools class not found:": "找不到工具类:",
|
||||
"Top": "顶部",
|
||||
"Top to Bottom": "从上到下",
|
||||
"Total pixels:": "总像素数:",
|
||||
"Translate": "翻译",
|
||||
"Translate Layer": "翻译图层",
|
||||
"Translate error, can not find dictionary:": "翻译错误,找不到字典:",
|
||||
"Transparency background:": "透明背景:",
|
||||
"Transparent:": "透明:",
|
||||
"Trim": "修剪",
|
||||
"Trim everything:": "修剪一切:",
|
||||
"Trim layer:": "修剪图层:",
|
||||
"Trim white color?": "修剪白色的颜色?",
|
||||
"Turkish": "土耳其",
|
||||
"Undo": "解开",
|
||||
"Undo disabled.": "撤消禁用。",
|
||||
"Undo enabled.": "撤消启用。",
|
||||
"Undo is not available.": "撤消不可用。",
|
||||
"Undo levels changed to 1.": "撤消级别更改为1。",
|
||||
"Undo levels restored to": "撤消级别恢复到",
|
||||
"Unique colors:": "独特的颜色:",
|
||||
"Trim": "裁剪",
|
||||
"Trim Layers": "裁剪图层",
|
||||
"Trim borders:": "裁剪边框:",
|
||||
"Trim layer:": "裁剪图层:",
|
||||
"Trim white color?": "裁剪白色吗?",
|
||||
"Text": " 文本工具",
|
||||
"Type:": "类型:",
|
||||
"Türkçe": "土耳其语",
|
||||
"Undo": "撤销",
|
||||
"Unique colors:": "唯一颜色:",
|
||||
"Up": "向上",
|
||||
"Use Ctrl+V keyboard shortcut to paste from Clipboard.": "使用Ctrl + V键盘快捷键从剪贴板粘贴。",
|
||||
"V Radius:": "V半径:",
|
||||
"Verdana": "宋体",
|
||||
"Version:": "版:",
|
||||
"Update": "更新",
|
||||
"Update Brush Layer": "更新画笔图层",
|
||||
"Update Pencil Layer": "更新铅笔图层",
|
||||
"Update guides": "更新指南",
|
||||
"Use Ctrl+V keyboard shortcut to paste from Clipboard.": "使用 Ctrl+V 快捷键从剪贴板粘贴。",
|
||||
"V Radius:": "垂直半径:",
|
||||
"V. Align:": "垂直对齐:",
|
||||
"Valencia": "Valencia",
|
||||
"Verdana": "Verdana",
|
||||
"Version:": "版本:",
|
||||
"Vertical": "垂直",
|
||||
"Vertical blur:": "垂直迷离:",
|
||||
"Vibrance": "鲜艳",
|
||||
"Vignette": "小插图",
|
||||
"Vertical Alignment": "垂直对齐",
|
||||
"Vertical blur:": "垂直模糊:",
|
||||
"Vertical:": "垂直:",
|
||||
"Vibrance": "饱和度",
|
||||
"View": "视图",
|
||||
"Vignette": "晕影",
|
||||
"ViliusL": "ViliusL",
|
||||
"Vintage": "酿酒",
|
||||
"Visible:": "可见:",
|
||||
"WEBP - Weppy File Format": "WEBP - Weppy文件格式",
|
||||
"Vintage": "复古",
|
||||
"Webcam": "摄像头",
|
||||
"Webcam #": "摄像头 #",
|
||||
"Website:": "网站:",
|
||||
"Width (%):": "宽度(%):",
|
||||
"Weppy File Format": "Weppy文件格式",
|
||||
"Width (%):": "宽度(%):",
|
||||
"Width:": "宽度:",
|
||||
"Wrong file type, must be image or json.": "错误的文件类型,必须是图像或JSON。",
|
||||
"X end:": "X结束:",
|
||||
"X position:": "X位置:",
|
||||
"X start:": "X开始:",
|
||||
"Y end:": "Y结束:",
|
||||
"Y position:": "Y位置:",
|
||||
"Y start:": "Y开始:",
|
||||
"Windows Bitmap": "Windows位图",
|
||||
"Word": "词",
|
||||
"Word + Letter": "词 + 字母",
|
||||
"Wrap At:": "在此处换行:",
|
||||
"Wrap:": "自动换行:",
|
||||
"Wrong dimensions": "尺寸错误",
|
||||
"Wrong file type, must be image or json.": "文件类型错误,必须是图像或JSON。",
|
||||
"X end:": "X 结束:",
|
||||
"X position:": "X 位置:",
|
||||
"X start:": "X 开始:",
|
||||
"X-Pro II": "X-Pro II",
|
||||
"Y end:": "Y 结束:",
|
||||
"Y position:": "Y 位置:",
|
||||
"Y start:": "Y 开始:",
|
||||
"You can also drag and drop items into browser.": "您也可以将项目拖放到浏览器中。",
|
||||
"Your browser does not support canvas or JavaScript is not enabled.": "您的浏览器不支持画布或JavaScript未启用。",
|
||||
"Your browser does not support this format.": "您的浏览器不支持这种格式。",
|
||||
"Your search did not match any images.": "您的搜索与任何图片都不匹配。",
|
||||
"Zoom": "放大",
|
||||
"Zoom Blur": "变焦模糊",
|
||||
"Your browser does not support this format.": "您的浏览器不支持此格式。",
|
||||
"Your search did not match any images.": "您的搜索未匹配任何图片。",
|
||||
"Zoom": "缩放",
|
||||
"Zoom Blur": "缩放模糊",
|
||||
"Zoom In": "放大",
|
||||
"Zoom Out": "缩小",
|
||||
"Zoom blur": "变焦模糊",
|
||||
"Zoom blur": "缩放模糊",
|
||||
"Zoom in": "放大",
|
||||
"Zoom out": "缩小",
|
||||
"Zoom:": "放大:"
|
||||
}
|
||||
"Zoom:": "缩放:"
|
||||
}
|
||||
309
src/js/libs/canvastotiff.js
Normal file
@ -0,0 +1,309 @@
|
||||
/*!
|
||||
canvas-to-tiff version 1.0.0
|
||||
By Epistemex (c) 2015-2016
|
||||
www.epistemex.com
|
||||
MIT License (this header required)
|
||||
*/
|
||||
|
||||
/**
|
||||
* Static helper object that can convert a CORS-compliant canvas element
|
||||
* to a 32-bits TIFF file (buffer, Blob and data-URI). The TIFF is by
|
||||
* default saved in big-endian format with interleaved RGBA data.
|
||||
*
|
||||
* @type {{toArrayBuffer: Function, toBlob: Function, toDataURL: Function}}
|
||||
* @namespace
|
||||
*/
|
||||
var CanvasToTIFF = {
|
||||
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
_dly: 9,
|
||||
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
_error: null,
|
||||
|
||||
/**
|
||||
* Add error handler (function) in case of any error
|
||||
* @param fn
|
||||
*/
|
||||
setErrorHandler: function(fn) {
|
||||
this._error = fn
|
||||
},
|
||||
|
||||
/**
|
||||
* Convert a canvas element to ArrayBuffer containing a TIFF file
|
||||
* with support for alpha. The call is asynchronous
|
||||
* so a callback must be provided.
|
||||
*
|
||||
* Note that CORS requirement must be fulfilled.
|
||||
*
|
||||
* @param {HTMLCanvasElement} canvas - the canvas element to convert
|
||||
* @param {function} callback - called when conversion is done. Argument is ArrayBuffer
|
||||
* @param {object} [options] - an option object
|
||||
* @param {boolean} [options.littleEndian=false] - set to true to produce a little-endian based TIFF
|
||||
* @param {number} [options.dpi=96] - DPI for both X and Y directions. Default 96 DPI (PPI).
|
||||
* @param {number} [options.dpiX=96] - DPI for X directions (overrides options.dpi).
|
||||
* @param {number} [options.dpiY=96] - DPI for Y directions (overrides options.dpi).
|
||||
* @static
|
||||
*/
|
||||
toArrayBuffer: function(canvas, callback, options) {
|
||||
|
||||
options = options || {};
|
||||
|
||||
var me = this;
|
||||
|
||||
try {
|
||||
var w = canvas.width,
|
||||
h = canvas.height,
|
||||
offset = 0,
|
||||
iOffset = 258, // todo calc based on offset field length, add to final offset when compiled
|
||||
//iOffsetPtr,
|
||||
entries = 0,
|
||||
offsetList = [],
|
||||
idfOffset,
|
||||
sid = "\x63\x61\x6e\x76\x61\x73\x2d\x74\x6f\x2d\x74\x69\x66\x66\x20\x30\x2e\x34\0",
|
||||
lsb = !!options.littleEndian,
|
||||
dpiX = +(options.dpiX || options.dpi || 96)|0,
|
||||
dpiY = +(options.dpiY || options.dpi || 96)|0,
|
||||
idata = canvas.getContext("2d").getImageData(0, 0, w, h),
|
||||
length = idata.data.length,
|
||||
fileLength = iOffset + length,
|
||||
file = new ArrayBuffer(fileLength),
|
||||
file8 = new Uint8Array(file),
|
||||
view = new DataView(file),
|
||||
pos = 0,
|
||||
date = new Date(),
|
||||
dateStr;
|
||||
|
||||
// Header
|
||||
set16(lsb ? 0x4949 : 0x4d4d); // II or MM
|
||||
set16(42); // magic 42
|
||||
set32(8); // offset to first IFD
|
||||
|
||||
// IFD
|
||||
addIDF(); // IDF start
|
||||
addEntry(0xfe, 4, 1, 0); // NewSubfileType
|
||||
addEntry(0x100, 4, 1, w); // ImageWidth
|
||||
addEntry(0x101, 4, 1, h); // ImageLength (height)
|
||||
addEntry(0x102, 3, 4, offset, 8); // BitsPerSample
|
||||
addEntry(0x103, 3, 1, 1); // Compression
|
||||
addEntry(0x106, 3, 1, 2); // PhotometricInterpretation: RGB
|
||||
addEntry(0x111, 4, 1, iOffset, 0); // StripOffsets
|
||||
addEntry(0x115, 3, 1, 4); // SamplesPerPixel
|
||||
addEntry(0x117, 4, 1, length); // StripByteCounts
|
||||
addEntry(0x11a, 5, 1, offset, 8); // XResolution
|
||||
addEntry(0x11b, 5, 1, offset, 8); // YResolution
|
||||
addEntry(0x128, 3, 1, 2); // ResolutionUnit: inch
|
||||
addEntry(0x131, 2, sid.length, offset, getStrLen(sid)); // sid
|
||||
addEntry(0x132, 2, 0x14, offset, 0x14); // Datetime
|
||||
addEntry(0x152, 3, 1, 2); // ExtraSamples
|
||||
endIDF();
|
||||
|
||||
// Fields section > long ---------------------------
|
||||
|
||||
// BitsPerSample (2x4), 8,8,8,8
|
||||
set32(0x00080008);
|
||||
set32(0x00080008);
|
||||
|
||||
// StripOffset to bitmap data
|
||||
//set32(iOffset);
|
||||
|
||||
// StripByteCounts
|
||||
//set32(length);
|
||||
|
||||
// XRes PPI
|
||||
set32(dpiX);
|
||||
set32(1);
|
||||
|
||||
// YRes PPI
|
||||
set32(dpiY);
|
||||
set32(1);
|
||||
|
||||
// sid
|
||||
setStr(sid);
|
||||
|
||||
// date
|
||||
dateStr = date.getFullYear() + ":" + pad2(date.getMonth() + 1) + ":" + pad2(date.getDate()) + " ";
|
||||
dateStr += pad2(date.getHours()) + ":" + pad2(date.getMinutes()) + ":" + pad2(date.getSeconds());
|
||||
setStr(dateStr);
|
||||
|
||||
// Image data here (todo if very large, split into block based copy)
|
||||
file8.set(idata.data, iOffset);
|
||||
|
||||
// make actual async
|
||||
setTimeout(function() { callback(file) }, me._dly);
|
||||
}
|
||||
catch(err) {
|
||||
if (me._error) me._error(err.toString())
|
||||
}
|
||||
|
||||
function pad2(str) {
|
||||
str += "";
|
||||
return str.length === 1 ? "0" + str : str
|
||||
}
|
||||
|
||||
// helper method to move current buffer position
|
||||
function set16(data) {
|
||||
view.setUint16(pos, data, lsb);
|
||||
pos += 2
|
||||
}
|
||||
|
||||
function set32(data) {
|
||||
view.setUint32(pos, data, lsb);
|
||||
pos += 4
|
||||
}
|
||||
|
||||
function setStr(str) {
|
||||
var i = 0;
|
||||
while(i < str.length) view.setUint8(pos++, str.charCodeAt(i++) & 0xff, lsb);
|
||||
if (pos & 1) pos++
|
||||
}
|
||||
|
||||
function getStrLen(str) {
|
||||
var l = str.length;
|
||||
return l & 1 ? l + 1 : l
|
||||
}
|
||||
|
||||
function addEntry(tag, type, count, value, dltOffset) {
|
||||
set16(tag);
|
||||
set16(type);
|
||||
set32(count);
|
||||
|
||||
if (dltOffset) {
|
||||
//if (tag === 0x111) iOffsetPtr = pos;
|
||||
//iOffset += dltOffset;
|
||||
offset += dltOffset;
|
||||
offsetList.push(pos);
|
||||
}
|
||||
|
||||
if (count === 1 && type === 3 && !dltOffset) {
|
||||
set16(value);
|
||||
set16(0); // pad
|
||||
}
|
||||
else {
|
||||
set32(value);
|
||||
}
|
||||
|
||||
entries++
|
||||
}
|
||||
|
||||
function addIDF(offset) {
|
||||
idfOffset = offset || pos;
|
||||
pos += 2;
|
||||
}
|
||||
|
||||
function endIDF() {
|
||||
view.setUint16(idfOffset, entries, lsb);
|
||||
set32(0);
|
||||
|
||||
var delta = 14 + entries * 12; // 14 = offset to IDF (8) + IDF count (2) + end pointer (4)
|
||||
|
||||
// compile offsets
|
||||
for(var i = 0, p, o; i < offsetList.length; i++) {
|
||||
p = offsetList[i];
|
||||
o = view.getUint32(p, lsb);
|
||||
view.setUint32(p, o + delta, lsb);
|
||||
}
|
||||
|
||||
//view.setUint32(iOffsetPtr, iOffset + delta, lsb);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Converts a canvas to TIFF file, returns a Blob representing the
|
||||
* file. This can be used with URL.createObjectURL(). The call is
|
||||
* asynchronous so a callback must be provided.
|
||||
*
|
||||
* Note that CORS requirement must be fulfilled.
|
||||
*
|
||||
* @param {HTMLCanvasElement} canvas - the canvas element to convert
|
||||
* @param {function} callback - called when conversion is done. Argument is a Blob
|
||||
* @param {object} [options] - an option object - see toArrayBuffer for details
|
||||
* @static
|
||||
*/
|
||||
toBlob: function(canvas, callback, options) {
|
||||
this.toArrayBuffer(canvas, function(file) {
|
||||
callback(new Blob([file], {type: "image/tiff"}));
|
||||
}, options || {});
|
||||
},
|
||||
|
||||
/**
|
||||
* Converts a canvas to TIFF file, returns an ObjectURL (for Blob)
|
||||
* representing the file. The call is asynchronous so a callback
|
||||
* must be provided.
|
||||
*
|
||||
* **Important**: To avoid memory-leakage you must revoke the returned
|
||||
* ObjectURL when no longer needed:
|
||||
*
|
||||
* var _URL = self.URL || self.webkitURL || self;
|
||||
* _URL.revokeObjectURL(url);
|
||||
*
|
||||
* Note that CORS requirement must be fulfilled.
|
||||
*
|
||||
* @param {HTMLCanvasElement} canvas - the canvas element to convert
|
||||
* @param {function} callback - called when conversion is done. Argument is a Blob
|
||||
* @param {object} [options] - an option object - see toArrayBuffer for details
|
||||
* @static
|
||||
*/
|
||||
toObjectURL: function(canvas, callback, options) {
|
||||
this.toBlob(canvas, function(blob) {
|
||||
var url = self.URL || self.webkitURL || self;
|
||||
callback(url.createObjectURL(blob))
|
||||
}, options || {});
|
||||
},
|
||||
|
||||
/**
|
||||
* Converts the canvas to a data-URI representing a BMP file. The
|
||||
* call is asynchronous so a callback must be provided.
|
||||
*
|
||||
* Note that CORS requirement must be fulfilled.
|
||||
*
|
||||
* @param {HTMLCanvasElement} canvas - the canvas element to convert
|
||||
* @param {function} callback - called when conversion is done. Argument is an data-URI (string)
|
||||
* @param {object} [options] - an option object - see toArrayBuffer for details
|
||||
* @static
|
||||
*/
|
||||
toDataURL: function(canvas, callback, options) {
|
||||
|
||||
var me = this;
|
||||
|
||||
me.toArrayBuffer(canvas, function(file) {
|
||||
var buffer = new Uint8Array(file),
|
||||
blockSize = 1<<20,
|
||||
block = blockSize,
|
||||
bs = "", base64 = "", i = 0, l = buffer.length;
|
||||
|
||||
// This is a necessary step before we can use btoa. We can
|
||||
// replace this later with a direct byte-buffer to Base-64 routine.
|
||||
// Will do for now, impacts only with very large bitmaps (in which
|
||||
// case toBlob should be used).
|
||||
(function prepBase64() {
|
||||
while(i < l && block-- > 0) bs += String.fromCharCode(buffer[i++]);
|
||||
|
||||
if (i < l) {
|
||||
block = blockSize;
|
||||
setTimeout(prepBase64, me._dly);
|
||||
}
|
||||
else {
|
||||
// convert string to Base-64
|
||||
i = 0;
|
||||
l = bs.length;
|
||||
block = 180000; // must be divisible by 3
|
||||
|
||||
(function toBase64() {
|
||||
base64 += btoa(bs.substr(i, block));
|
||||
i += block;
|
||||
(i < l)
|
||||
? setTimeout(toBase64, me._dly)
|
||||
: callback("data:image/tiff;base64," + base64);
|
||||
})();
|
||||
}
|
||||
})();
|
||||
}, options || {});
|
||||
}
|
||||
};
|
||||
|
||||
export default CanvasToTIFF;
|
||||