mirror of
https://github.com/Orama-Interactive/Pixelorama.git
synced 2025-02-12 16:53:07 +00:00
Compare commits
92 commits
8b0d30be01
...
47626a3c74
Author | SHA1 | Date | |
---|---|---|---|
|
47626a3c74 | ||
|
2747775086 | ||
|
b39089ab02 | ||
|
37f347d8b8 | ||
|
c694a97cce | ||
|
be592f5a74 | ||
|
473f86ebe1 | ||
|
71ea009d6b | ||
|
39ca52bda7 | ||
|
7939ff4e7d | ||
|
1744e3ca31 | ||
|
0d79ce3d9f | ||
|
db73efcc0a | ||
|
6545c28eb4 | ||
|
69f2d2faec | ||
|
bfe45fc3f8 | ||
|
7b275d68c7 | ||
|
de8b1c8415 | ||
|
45ac281879 | ||
|
b3c7854e46 | ||
|
c7c4c42d09 | ||
|
8e7d2ed82b | ||
|
a7c51874a5 | ||
|
e02da1dc26 | ||
|
6526e84bd0 | ||
|
3990c877f2 | ||
|
004b419815 | ||
|
31b44245a3 | ||
|
e4a90da75c | ||
|
55af0591b2 | ||
|
af84b37e54 | ||
|
2c8086e4a9 | ||
|
fbd6d7b228 | ||
|
1fb888bce7 | ||
|
149eb18f78 | ||
|
e2891d5437 | ||
|
03b12fdbc8 | ||
|
864bb8b417 | ||
|
228f870aa1 | ||
|
fc8e0b8d9d | ||
|
7725351950 | ||
|
ded1639993 | ||
|
18ad66074b | ||
|
8edf7f51a5 | ||
|
e693927beb | ||
|
d71273fb01 | ||
|
211c29c907 | ||
|
4dc3d45156 | ||
|
ebcc2b996f | ||
|
a098751dae | ||
|
4700863d73 | ||
|
201ae69e22 | ||
|
0b2d2f74f4 | ||
|
dddef36f29 | ||
|
5fd140747c | ||
|
c1545b7da8 | ||
|
323a3b287c | ||
|
35f003c306 | ||
|
e51544363a | ||
|
f533be6fc9 | ||
|
763783f2f1 | ||
|
e10b0d1b08 | ||
|
26d618b99a | ||
|
8153c0a8a8 | ||
|
d2a12b4fb5 | ||
|
2de1334f06 | ||
|
8f3d0e98fe | ||
|
9146a51e5d | ||
|
90f1ed275d | ||
|
94735fc08b | ||
|
8077262b32 | ||
|
0d6b140dea | ||
|
dec698024c | ||
|
785d8cfc83 | ||
|
4c7d7da5e7 | ||
|
36329efaf6 | ||
|
7c1435e95f | ||
|
ad77d98f42 | ||
|
2600180736 | ||
|
5739a8b28e | ||
|
ce738f02c2 | ||
|
b0b1361722 | ||
|
5fa97988b5 | ||
|
af703d486e | ||
|
d2892358e3 | ||
|
ec17e970e0 | ||
|
8beb79a33b | ||
|
e2971a8fe9 | ||
|
6863adf957 | ||
|
dafc2fb1d5 | ||
|
2d9a582f21 | ||
|
aa59f73e65 |
31
CHANGELOG.md
31
CHANGELOG.md
|
@ -4,6 +4,33 @@ All notable changes to this project will be documented in this file.
|
|||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). All the dates are in YYYY-MM-DD format.
|
||||
<br><br>
|
||||
|
||||
## [v1.0.5] - Unreleased
|
||||
This update has been brought to you by the contributions of:
|
||||
Fayez Akhtar ([@Variable-ind](https://github.com/Variable-ind))
|
||||
|
||||
Built using Godot 4.3
|
||||
|
||||
### Added
|
||||
- Add density to the square & circle brushes. 100% density means that the brush gets completely drawn. Anything less leaves gaps inside the brush, acting like a spray tool.
|
||||
- Selection expanding, shrinking and borders have been added as options in the Select menu.
|
||||
- Mouse buttons can now be used as menu shortcuts. [#1070](https://github.com/Orama-Interactive/Pixelorama/issues/1070)
|
||||
- Added confirm and cancel buttons in the selection tool options to confirm/cancel an active transformation.
|
||||
- OKHSL Lightness sorting in palettes has been implemented. [#1126](https://github.com/Orama-Interactive/Pixelorama/pull/1126)
|
||||
|
||||
### Changed
|
||||
- The brush size no longer changes by <kbd>Control</kbd> + Mouse Wheel when resizing the timeline cels or the palette swatches.
|
||||
- The Recorder panel now automatically records for the current project. This also allows for multiple projects to be recorded at the same time.
|
||||
|
||||
### Fixed
|
||||
- Panels no longer get scrolled when using the mouse wheel over a slider.
|
||||
- Fixed layer effect slider values being rounded to the nearest integer.
|
||||
- Fixed memory leak where the project remained referenced by a drawing tool, even when its tab was closed.
|
||||
- Fixed memory leak where the first project remained forever references in memory by the Recorder panel.
|
||||
- Slightly optimize circle brushes by only calling the ellipse algorithms once while drawing
|
||||
|
||||
### Removed
|
||||
- The Recorder panel has been removed from the Web version. It wasn't functional anyway in a way that was useful, and it's unsure if we can find a way to make it work.
|
||||
|
||||
## [v1.0.4] - 2024-10-25
|
||||
This update has been brought to you by the contributions of:
|
||||
Fayez Akhtar ([@Variable-ind](https://github.com/Variable-ind)), Mariano Semelman ([@msemelman](https://github.com/msemelman))
|
||||
|
@ -15,10 +42,10 @@ Built using Godot 4.3
|
|||
- Added a new "color replace" mode to the Shading tool, that uses the colors of the palette to apply shading. [#1107](https://github.com/Orama-Interactive/Pixelorama/pull/1107)
|
||||
- Added a new Erase blend mode. [#1117](https://github.com/Orama-Interactive/Pixelorama/pull/1117)
|
||||
- It is now possible to change the font, depth and line spacing of 3D text.
|
||||
- Implemented the ability to change the font of the interface from the properties.
|
||||
- Implemented the ability to change the font of the interface from the preferences.
|
||||
- Clipping to selection during export is now possible. [#1113](https://github.com/Orama-Interactive/Pixelorama/pull/1113)
|
||||
- Added a preference to share options between tools. [#1120](https://github.com/Orama-Interactive/Pixelorama/pull/1120)
|
||||
- Added an option to quickly center the canvas in the View menu. Mapped to <kbd>Control + C</kbd> by default. [#1123](https://github.com/Orama-Interactive/Pixelorama/pull/1123)
|
||||
- Added an option to quickly center the canvas in the View menu. Mapped to <kbd>Shift + C</kbd> by default. [#1123](https://github.com/Orama-Interactive/Pixelorama/pull/1123)
|
||||
- Added hotkeys to switch between tabs. <kbd>Control+Tab</kbd> to go to the next project tab, and <kbd>Control+Shift+Tab</kbd> to go to the previous. [#1109](https://github.com/Orama-Interactive/Pixelorama/pull/1109)
|
||||
- Added menus next to each of the two mirroring buttons in the Global Tool Options, that allow users to automatically move the symmetry guides to the center of the canvas, or the view center.
|
||||
- A new Reset category has been added to the Preferences that lets users easily restore certain options.
|
||||
|
|
|
@ -205,6 +205,43 @@ msgstr ""
|
|||
msgid "Invert"
|
||||
msgstr ""
|
||||
|
||||
msgid "Modify"
|
||||
msgstr ""
|
||||
|
||||
#. Found under the Select menu, in the Modify submenu. When selected, it shows a window that lets users expand the active selection.
|
||||
msgid "Expand"
|
||||
msgstr ""
|
||||
|
||||
#. Title of a window that lets users expand the active selection.
|
||||
msgid "Expand Selection"
|
||||
msgstr ""
|
||||
|
||||
#. Found under the Select menu, in the Modify submenu. When selected, it shows a window that lets users shrink the active selection.
|
||||
msgid "Shrink"
|
||||
msgstr ""
|
||||
|
||||
#. Title of a window that lets users shrink the active selection.
|
||||
msgid "Shrink Selection"
|
||||
msgstr ""
|
||||
|
||||
#. Found under the Select menu, in the Modify submenu. When selected, it shows a window that lets users create a border of the active selection.
|
||||
msgid "Border"
|
||||
msgstr ""
|
||||
|
||||
#. Title of a window that lets users create a border of the active selection.
|
||||
msgid "Border Selection"
|
||||
msgstr ""
|
||||
|
||||
#. Refers to a diamond-like shape.
|
||||
msgid "Diamond"
|
||||
msgstr ""
|
||||
|
||||
msgid "Circle"
|
||||
msgstr ""
|
||||
|
||||
msgid "Square"
|
||||
msgstr ""
|
||||
|
||||
msgid "Grayscale View"
|
||||
msgstr ""
|
||||
|
||||
|
@ -230,19 +267,16 @@ msgstr ""
|
|||
msgid "Tile Mode Offsets"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis x:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "X-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis y:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "Y-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis x:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis y:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Tile Mask"
|
||||
#. Found under "Tile Mode Offsets". It's a button that when pressed, enables masking for tile mode. Masking essentially limits drawing to the visible pixels of the image, thus preventing from drawing on transparent pixels.
|
||||
msgid "Masking:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reset"
|
||||
|
@ -1865,6 +1899,10 @@ msgstr ""
|
|||
msgid "Fills the drawn shape with color, instead of drawing a hollow shape"
|
||||
msgstr ""
|
||||
|
||||
#. Found in the tool options of the Pencil, Eraser and Shading tools. It is a percentage of how dense the brush is. 100% density means that the brush gets completely drawn, anything less leaves gaps inside the brush, acting like a spray tool.
|
||||
msgid "Density:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Brush color from"
|
||||
msgstr ""
|
||||
|
||||
|
@ -2808,6 +2846,10 @@ msgstr ""
|
|||
msgid "Sort by value"
|
||||
msgstr ""
|
||||
|
||||
#. An option of the Sort palette button found in the palette panel. When selected, the colors of the palette are being sorted based on their OKHSL Lightness.
|
||||
msgid "Sort by lightness"
|
||||
msgstr ""
|
||||
|
||||
#. An option of the Sort palette button found in the palette panel. When selected, the colors of the palette are being sorted based on their red channel value.
|
||||
msgid "Sort by red"
|
||||
msgstr ""
|
||||
|
|
|
@ -10,7 +10,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Language-Team: Afrikaans\n"
|
||||
"Language: af_ZA\n"
|
||||
"PO-Revision-Date: 2024-11-15 00:55\n"
|
||||
"PO-Revision-Date: 2024-11-15 17:30\n"
|
||||
|
||||
msgid "OK"
|
||||
msgstr "Goed"
|
||||
|
@ -278,19 +278,16 @@ msgstr ""
|
|||
msgid "Tile Mode Offsets"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis x:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "X-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis y:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "Y-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis x:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis y:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Tile Mask"
|
||||
#. Found under "Tile Mode Offsets". It's a button that when pressed, enables masking for tile mode. Masking essentially limits drawing to the visible pixels of the image, thus preventing from drawing on transparent pixels.
|
||||
msgid "Masking:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reset"
|
||||
|
|
|
@ -10,7 +10,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Language-Team: Arabic\n"
|
||||
"Language: ar_SA\n"
|
||||
"PO-Revision-Date: 2024-11-15 00:55\n"
|
||||
"PO-Revision-Date: 2024-11-15 17:30\n"
|
||||
|
||||
msgid "OK"
|
||||
msgstr "حسنا"
|
||||
|
@ -278,19 +278,16 @@ msgstr "وضع البلاط"
|
|||
msgid "Tile Mode Offsets"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis x:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "X-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis y:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "Y-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis x:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis y:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Tile Mask"
|
||||
#. Found under "Tile Mode Offsets". It's a button that when pressed, enables masking for tile mode. Masking essentially limits drawing to the visible pixels of the image, thus preventing from drawing on transparent pixels.
|
||||
msgid "Masking:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reset"
|
||||
|
|
|
@ -10,7 +10,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Language-Team: Belarusian\n"
|
||||
"Language: be_BY\n"
|
||||
"PO-Revision-Date: 2024-11-15 00:55\n"
|
||||
"PO-Revision-Date: 2024-11-15 17:30\n"
|
||||
|
||||
msgid "OK"
|
||||
msgstr "OK"
|
||||
|
@ -278,21 +278,18 @@ msgstr "Бясшоўны рэжым"
|
|||
msgid "Tile Mode Offsets"
|
||||
msgstr "Зрух бясшоўнага рэжыму"
|
||||
|
||||
msgid "X-basis x:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "X-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis y:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "Y-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis x:"
|
||||
#. Found under "Tile Mode Offsets". It's a button that when pressed, enables masking for tile mode. Masking essentially limits drawing to the visible pixels of the image, thus preventing from drawing on transparent pixels.
|
||||
msgid "Masking:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis y:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Tile Mask"
|
||||
msgstr "Тайлавая маска"
|
||||
|
||||
msgid "Reset"
|
||||
msgstr "Скід"
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Language-Team: Bulgarian\n"
|
||||
"Language: bg_BG\n"
|
||||
"PO-Revision-Date: 2024-11-15 00:55\n"
|
||||
"PO-Revision-Date: 2024-11-15 17:30\n"
|
||||
|
||||
msgid "OK"
|
||||
msgstr ""
|
||||
|
@ -278,19 +278,16 @@ msgstr ""
|
|||
msgid "Tile Mode Offsets"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis x:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "X-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis y:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "Y-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis x:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis y:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Tile Mask"
|
||||
#. Found under "Tile Mode Offsets". It's a button that when pressed, enables masking for tile mode. Masking essentially limits drawing to the visible pixels of the image, thus preventing from drawing on transparent pixels.
|
||||
msgid "Masking:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reset"
|
||||
|
|
|
@ -10,7 +10,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Language-Team: Catalan\n"
|
||||
"Language: ca_ES\n"
|
||||
"PO-Revision-Date: 2024-11-15 00:55\n"
|
||||
"PO-Revision-Date: 2024-11-15 17:30\n"
|
||||
|
||||
msgid "OK"
|
||||
msgstr "D'acord"
|
||||
|
@ -278,19 +278,16 @@ msgstr "Mode Tile"
|
|||
msgid "Tile Mode Offsets"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis x:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "X-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis y:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "Y-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis x:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis y:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Tile Mask"
|
||||
#. Found under "Tile Mode Offsets". It's a button that when pressed, enables masking for tile mode. Masking essentially limits drawing to the visible pixels of the image, thus preventing from drawing on transparent pixels.
|
||||
msgid "Masking:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reset"
|
||||
|
|
|
@ -10,7 +10,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Language-Team: Czech\n"
|
||||
"Language: cs_CZ\n"
|
||||
"PO-Revision-Date: 2024-11-15 00:55\n"
|
||||
"PO-Revision-Date: 2024-11-15 17:30\n"
|
||||
|
||||
msgid "OK"
|
||||
msgstr "OK"
|
||||
|
@ -278,19 +278,16 @@ msgstr "Dlaždicový režim"
|
|||
msgid "Tile Mode Offsets"
|
||||
msgstr "Odsazení dlaždicového režimu"
|
||||
|
||||
msgid "X-basis x:"
|
||||
msgstr "X na bázi X:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "X-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis y:"
|
||||
msgstr "Y na bázi X:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "Y-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis x:"
|
||||
msgstr "X na bázi Y:"
|
||||
|
||||
msgid "Y-basis y:"
|
||||
msgstr "Y na bázi Y:"
|
||||
|
||||
msgid "Tile Mask"
|
||||
#. Found under "Tile Mode Offsets". It's a button that when pressed, enables masking for tile mode. Masking essentially limits drawing to the visible pixels of the image, thus preventing from drawing on transparent pixels.
|
||||
msgid "Masking:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reset"
|
||||
|
|
|
@ -10,7 +10,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Language-Team: Welsh\n"
|
||||
"Language: cy_GB\n"
|
||||
"PO-Revision-Date: 2024-11-15 00:56\n"
|
||||
"PO-Revision-Date: 2024-11-15 17:31\n"
|
||||
|
||||
msgid "OK"
|
||||
msgstr ""
|
||||
|
@ -278,19 +278,16 @@ msgstr ""
|
|||
msgid "Tile Mode Offsets"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis x:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "X-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis y:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "Y-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis x:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis y:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Tile Mask"
|
||||
#. Found under "Tile Mode Offsets". It's a button that when pressed, enables masking for tile mode. Masking essentially limits drawing to the visible pixels of the image, thus preventing from drawing on transparent pixels.
|
||||
msgid "Masking:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reset"
|
||||
|
|
|
@ -10,7 +10,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Language-Team: Danish\n"
|
||||
"Language: da_DK\n"
|
||||
"PO-Revision-Date: 2024-11-15 00:55\n"
|
||||
"PO-Revision-Date: 2024-11-15 17:30\n"
|
||||
|
||||
msgid "OK"
|
||||
msgstr "OK"
|
||||
|
@ -278,20 +278,17 @@ msgstr "Felt-tilstand"
|
|||
msgid "Tile Mode Offsets"
|
||||
msgstr "Tile Mode Offsets"
|
||||
|
||||
msgid "X-basis x:"
|
||||
msgstr "X-grundlag x:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "X-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis y:"
|
||||
msgstr "X-grundlag y:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "Y-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis x:"
|
||||
msgstr "Y-grundlag x:"
|
||||
|
||||
msgid "Y-basis y:"
|
||||
msgstr "Y-grundlag y:"
|
||||
|
||||
msgid "Tile Mask"
|
||||
msgstr "Flise maske"
|
||||
#. Found under "Tile Mode Offsets". It's a button that when pressed, enables masking for tile mode. Masking essentially limits drawing to the visible pixels of the image, thus preventing from drawing on transparent pixels.
|
||||
msgid "Masking:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reset"
|
||||
msgstr "Nulstil"
|
||||
|
|
|
@ -10,7 +10,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Language-Team: German\n"
|
||||
"Language: de_DE\n"
|
||||
"PO-Revision-Date: 2024-11-15 00:55\n"
|
||||
"PO-Revision-Date: 2024-11-15 17:30\n"
|
||||
|
||||
msgid "OK"
|
||||
msgstr "OK"
|
||||
|
@ -280,20 +280,17 @@ msgstr "Kachelmodus"
|
|||
msgid "Tile Mode Offsets"
|
||||
msgstr "Tile-Modus Offsets"
|
||||
|
||||
msgid "X-basis x:"
|
||||
msgstr "X-Basis x:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "X-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis y:"
|
||||
msgstr "X-Basis y:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "Y-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis x:"
|
||||
msgstr "Y-Basis x:"
|
||||
|
||||
msgid "Y-basis y:"
|
||||
msgstr "Y-Basis y:"
|
||||
|
||||
msgid "Tile Mask"
|
||||
msgstr "Tile-Maske"
|
||||
#. Found under "Tile Mode Offsets". It's a button that when pressed, enables masking for tile mode. Masking essentially limits drawing to the visible pixels of the image, thus preventing from drawing on transparent pixels.
|
||||
msgid "Masking:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reset"
|
||||
msgstr "Zurücksetzen"
|
||||
|
|
|
@ -10,7 +10,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Language-Team: Greek\n"
|
||||
"Language: el_GR\n"
|
||||
"PO-Revision-Date: 2024-11-15 02:05\n"
|
||||
"PO-Revision-Date: 2024-11-15 17:30\n"
|
||||
|
||||
msgid "OK"
|
||||
msgstr "Εντάξει"
|
||||
|
@ -280,20 +280,17 @@ msgstr "Λειτουργία μοτίβου"
|
|||
msgid "Tile Mode Offsets"
|
||||
msgstr "Μετατόπιση λειτουργίας μοτίβου"
|
||||
|
||||
msgid "X-basis x:"
|
||||
msgstr "Χ-βάση x:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "X-basis:"
|
||||
msgstr "Βάση Χ:"
|
||||
|
||||
msgid "X-basis y:"
|
||||
msgstr "Χ-βάση y:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "Y-basis:"
|
||||
msgstr "Βάση Υ:"
|
||||
|
||||
msgid "Y-basis x:"
|
||||
msgstr "Y-βάση x:"
|
||||
|
||||
msgid "Y-basis y:"
|
||||
msgstr "Y-βάση y:"
|
||||
|
||||
msgid "Tile Mask"
|
||||
msgstr "Μάσκα μοτίβου"
|
||||
#. Found under "Tile Mode Offsets". It's a button that when pressed, enables masking for tile mode. Masking essentially limits drawing to the visible pixels of the image, thus preventing from drawing on transparent pixels.
|
||||
msgid "Masking:"
|
||||
msgstr "Μάσκα:"
|
||||
|
||||
msgid "Reset"
|
||||
msgstr "Επαναφορά"
|
||||
|
|
|
@ -10,7 +10,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Language-Team: Pirate English\n"
|
||||
"Language: en_PT\n"
|
||||
"PO-Revision-Date: 2024-11-15 00:56\n"
|
||||
"PO-Revision-Date: 2024-11-15 17:31\n"
|
||||
|
||||
msgid "OK"
|
||||
msgstr ""
|
||||
|
@ -278,19 +278,16 @@ msgstr ""
|
|||
msgid "Tile Mode Offsets"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis x:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "X-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis y:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "Y-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis x:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis y:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Tile Mask"
|
||||
#. Found under "Tile Mode Offsets". It's a button that when pressed, enables masking for tile mode. Masking essentially limits drawing to the visible pixels of the image, thus preventing from drawing on transparent pixels.
|
||||
msgid "Masking:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reset"
|
||||
|
|
|
@ -10,7 +10,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Language-Team: Esperanto\n"
|
||||
"Language: eo_UY\n"
|
||||
"PO-Revision-Date: 2024-11-15 00:56\n"
|
||||
"PO-Revision-Date: 2024-11-15 17:31\n"
|
||||
|
||||
msgid "OK"
|
||||
msgstr "Bone"
|
||||
|
@ -278,19 +278,16 @@ msgstr "Kahela reĝimo"
|
|||
msgid "Tile Mode Offsets"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis x:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "X-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis y:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "Y-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis x:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis y:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Tile Mask"
|
||||
#. Found under "Tile Mode Offsets". It's a button that when pressed, enables masking for tile mode. Masking essentially limits drawing to the visible pixels of the image, thus preventing from drawing on transparent pixels.
|
||||
msgid "Masking:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reset"
|
||||
|
|
|
@ -10,7 +10,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Language-Team: Spanish\n"
|
||||
"Language: es_ES\n"
|
||||
"PO-Revision-Date: 2024-11-15 00:55\n"
|
||||
"PO-Revision-Date: 2024-11-15 17:30\n"
|
||||
|
||||
msgid "OK"
|
||||
msgstr "OK"
|
||||
|
@ -278,20 +278,17 @@ msgstr "Modo mosaico"
|
|||
msgid "Tile Mode Offsets"
|
||||
msgstr "Desplazamiento del modo mosaico"
|
||||
|
||||
msgid "X-basis x:"
|
||||
msgstr "X de la base X:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "X-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis y:"
|
||||
msgstr "Y de la base X:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "Y-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis x:"
|
||||
msgstr "X de la base Y:"
|
||||
|
||||
msgid "Y-basis y:"
|
||||
msgstr "Y de la base Y:"
|
||||
|
||||
msgid "Tile Mask"
|
||||
msgstr "Máscara de mosaicos"
|
||||
#. Found under "Tile Mode Offsets". It's a button that when pressed, enables masking for tile mode. Masking essentially limits drawing to the visible pixels of the image, thus preventing from drawing on transparent pixels.
|
||||
msgid "Masking:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reset"
|
||||
msgstr "Reiniciar"
|
||||
|
|
|
@ -10,7 +10,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Language-Team: Estonian\n"
|
||||
"Language: et_EE\n"
|
||||
"PO-Revision-Date: 2024-11-15 00:56\n"
|
||||
"PO-Revision-Date: 2024-11-15 17:31\n"
|
||||
|
||||
msgid "OK"
|
||||
msgstr ""
|
||||
|
@ -278,19 +278,16 @@ msgstr ""
|
|||
msgid "Tile Mode Offsets"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis x:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "X-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis y:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "Y-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis x:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis y:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Tile Mask"
|
||||
#. Found under "Tile Mode Offsets". It's a button that when pressed, enables masking for tile mode. Masking essentially limits drawing to the visible pixels of the image, thus preventing from drawing on transparent pixels.
|
||||
msgid "Masking:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reset"
|
||||
|
|
|
@ -10,7 +10,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Language-Team: Finnish\n"
|
||||
"Language: fi_FI\n"
|
||||
"PO-Revision-Date: 2024-11-15 00:55\n"
|
||||
"PO-Revision-Date: 2024-11-15 17:30\n"
|
||||
|
||||
msgid "OK"
|
||||
msgstr "OK"
|
||||
|
@ -278,19 +278,16 @@ msgstr ""
|
|||
msgid "Tile Mode Offsets"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis x:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "X-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis y:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "Y-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis x:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis y:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Tile Mask"
|
||||
#. Found under "Tile Mode Offsets". It's a button that when pressed, enables masking for tile mode. Masking essentially limits drawing to the visible pixels of the image, thus preventing from drawing on transparent pixels.
|
||||
msgid "Masking:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reset"
|
||||
|
|
|
@ -10,7 +10,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Language-Team: Filipino\n"
|
||||
"Language: fil_PH\n"
|
||||
"PO-Revision-Date: 2024-11-15 00:56\n"
|
||||
"PO-Revision-Date: 2024-11-15 17:31\n"
|
||||
|
||||
msgid "OK"
|
||||
msgstr ""
|
||||
|
@ -278,19 +278,16 @@ msgstr ""
|
|||
msgid "Tile Mode Offsets"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis x:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "X-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis y:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "Y-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis x:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis y:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Tile Mask"
|
||||
#. Found under "Tile Mode Offsets". It's a button that when pressed, enables masking for tile mode. Masking essentially limits drawing to the visible pixels of the image, thus preventing from drawing on transparent pixels.
|
||||
msgid "Masking:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reset"
|
||||
|
|
|
@ -10,7 +10,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Language-Team: French\n"
|
||||
"Language: fr_FR\n"
|
||||
"PO-Revision-Date: 2024-11-15 00:55\n"
|
||||
"PO-Revision-Date: 2024-11-15 17:30\n"
|
||||
|
||||
msgid "OK"
|
||||
msgstr "OK"
|
||||
|
@ -279,20 +279,17 @@ msgstr "Mode tuile"
|
|||
msgid "Tile Mode Offsets"
|
||||
msgstr "Mode Tuiles Décalées"
|
||||
|
||||
msgid "X-basis x:"
|
||||
msgstr "X-base x:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "X-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis y:"
|
||||
msgstr "X-base y:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "Y-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis x:"
|
||||
msgstr "Y-base x:"
|
||||
|
||||
msgid "Y-basis y:"
|
||||
msgstr "Y-base y:"
|
||||
|
||||
msgid "Tile Mask"
|
||||
msgstr "Masque de Tuile"
|
||||
#. Found under "Tile Mode Offsets". It's a button that when pressed, enables masking for tile mode. Masking essentially limits drawing to the visible pixels of the image, thus preventing from drawing on transparent pixels.
|
||||
msgid "Masking:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reset"
|
||||
msgstr "Réinitialiser"
|
||||
|
|
|
@ -10,7 +10,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Language-Team: Irish\n"
|
||||
"Language: ga_IE\n"
|
||||
"PO-Revision-Date: 2024-11-15 00:55\n"
|
||||
"PO-Revision-Date: 2024-11-15 17:30\n"
|
||||
|
||||
msgid "OK"
|
||||
msgstr ""
|
||||
|
@ -278,19 +278,16 @@ msgstr ""
|
|||
msgid "Tile Mode Offsets"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis x:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "X-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis y:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "Y-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis x:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis y:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Tile Mask"
|
||||
#. Found under "Tile Mode Offsets". It's a button that when pressed, enables masking for tile mode. Masking essentially limits drawing to the visible pixels of the image, thus preventing from drawing on transparent pixels.
|
||||
msgid "Masking:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reset"
|
||||
|
|
|
@ -10,7 +10,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Language-Team: Ancient Greek\n"
|
||||
"Language: grc\n"
|
||||
"PO-Revision-Date: 2024-11-15 00:56\n"
|
||||
"PO-Revision-Date: 2024-11-15 17:31\n"
|
||||
|
||||
msgid "OK"
|
||||
msgstr "Ἐντάξει"
|
||||
|
@ -278,19 +278,16 @@ msgstr ""
|
|||
msgid "Tile Mode Offsets"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis x:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "X-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis y:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "Y-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis x:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis y:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Tile Mask"
|
||||
#. Found under "Tile Mode Offsets". It's a button that when pressed, enables masking for tile mode. Masking essentially limits drawing to the visible pixels of the image, thus preventing from drawing on transparent pixels.
|
||||
msgid "Masking:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reset"
|
||||
|
|
|
@ -10,7 +10,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Language-Team: Hebrew\n"
|
||||
"Language: he_IL\n"
|
||||
"PO-Revision-Date: 2024-11-15 00:55\n"
|
||||
"PO-Revision-Date: 2024-11-15 17:30\n"
|
||||
|
||||
msgid "OK"
|
||||
msgstr "אישור"
|
||||
|
@ -278,19 +278,16 @@ msgstr "מצב אריח"
|
|||
msgid "Tile Mode Offsets"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis x:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "X-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis y:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "Y-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis x:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis y:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Tile Mask"
|
||||
#. Found under "Tile Mode Offsets". It's a button that when pressed, enables masking for tile mode. Masking essentially limits drawing to the visible pixels of the image, thus preventing from drawing on transparent pixels.
|
||||
msgid "Masking:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reset"
|
||||
|
|
|
@ -10,7 +10,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Language-Team: Hindi\n"
|
||||
"Language: hi_IN\n"
|
||||
"PO-Revision-Date: 2024-11-15 00:56\n"
|
||||
"PO-Revision-Date: 2024-11-15 17:31\n"
|
||||
|
||||
msgid "OK"
|
||||
msgstr "ठीक है"
|
||||
|
@ -278,19 +278,16 @@ msgstr ""
|
|||
msgid "Tile Mode Offsets"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis x:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "X-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis y:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "Y-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis x:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis y:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Tile Mask"
|
||||
#. Found under "Tile Mode Offsets". It's a button that when pressed, enables masking for tile mode. Masking essentially limits drawing to the visible pixels of the image, thus preventing from drawing on transparent pixels.
|
||||
msgid "Masking:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reset"
|
||||
|
|
|
@ -10,7 +10,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Language-Team: Croatian\n"
|
||||
"Language: hr_HR\n"
|
||||
"PO-Revision-Date: 2024-11-15 00:56\n"
|
||||
"PO-Revision-Date: 2024-11-15 17:31\n"
|
||||
|
||||
msgid "OK"
|
||||
msgstr ""
|
||||
|
@ -278,19 +278,16 @@ msgstr ""
|
|||
msgid "Tile Mode Offsets"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis x:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "X-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis y:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "Y-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis x:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis y:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Tile Mask"
|
||||
#. Found under "Tile Mode Offsets". It's a button that when pressed, enables masking for tile mode. Masking essentially limits drawing to the visible pixels of the image, thus preventing from drawing on transparent pixels.
|
||||
msgid "Masking:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reset"
|
||||
|
|
|
@ -10,7 +10,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Language-Team: Hungarian\n"
|
||||
"Language: hu_HU\n"
|
||||
"PO-Revision-Date: 2024-11-15 00:55\n"
|
||||
"PO-Revision-Date: 2024-11-15 17:30\n"
|
||||
|
||||
msgid "OK"
|
||||
msgstr "Ok"
|
||||
|
@ -278,19 +278,16 @@ msgstr "Csempe mód"
|
|||
msgid "Tile Mode Offsets"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis x:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "X-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis y:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "Y-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis x:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis y:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Tile Mask"
|
||||
#. Found under "Tile Mode Offsets". It's a button that when pressed, enables masking for tile mode. Masking essentially limits drawing to the visible pixels of the image, thus preventing from drawing on transparent pixels.
|
||||
msgid "Masking:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reset"
|
||||
|
|
|
@ -10,7 +10,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Language-Team: Indonesian\n"
|
||||
"Language: id_ID\n"
|
||||
"PO-Revision-Date: 2024-11-15 00:56\n"
|
||||
"PO-Revision-Date: 2024-11-15 17:31\n"
|
||||
|
||||
msgid "OK"
|
||||
msgstr "Oke"
|
||||
|
@ -280,20 +280,17 @@ msgstr "Mode Petak"
|
|||
msgid "Tile Mode Offsets"
|
||||
msgstr "Offset Mode Petak"
|
||||
|
||||
msgid "X-basis x:"
|
||||
msgstr "X berdasar-x:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "X-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis y:"
|
||||
msgstr "Y berdasar-x:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "Y-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis x:"
|
||||
msgstr "X berdasar-y:"
|
||||
|
||||
msgid "Y-basis y:"
|
||||
msgstr "Y berdasar-y:"
|
||||
|
||||
msgid "Tile Mask"
|
||||
msgstr "Mask Petak"
|
||||
#. Found under "Tile Mode Offsets". It's a button that when pressed, enables masking for tile mode. Masking essentially limits drawing to the visible pixels of the image, thus preventing from drawing on transparent pixels.
|
||||
msgid "Masking:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reset"
|
||||
msgstr "Atur ulang"
|
||||
|
|
|
@ -10,7 +10,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Language-Team: Icelandic\n"
|
||||
"Language: is_IS\n"
|
||||
"PO-Revision-Date: 2024-11-15 00:56\n"
|
||||
"PO-Revision-Date: 2024-11-15 17:31\n"
|
||||
|
||||
msgid "OK"
|
||||
msgstr ""
|
||||
|
@ -278,19 +278,16 @@ msgstr ""
|
|||
msgid "Tile Mode Offsets"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis x:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "X-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis y:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "Y-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis x:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis y:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Tile Mask"
|
||||
#. Found under "Tile Mode Offsets". It's a button that when pressed, enables masking for tile mode. Masking essentially limits drawing to the visible pixels of the image, thus preventing from drawing on transparent pixels.
|
||||
msgid "Masking:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reset"
|
||||
|
|
|
@ -10,7 +10,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Language-Team: Italian\n"
|
||||
"Language: it_IT\n"
|
||||
"PO-Revision-Date: 2024-11-15 00:55\n"
|
||||
"PO-Revision-Date: 2024-11-15 17:31\n"
|
||||
|
||||
msgid "OK"
|
||||
msgstr "OK"
|
||||
|
@ -219,41 +219,41 @@ msgid "Invert"
|
|||
msgstr "Inverti"
|
||||
|
||||
msgid "Modify"
|
||||
msgstr ""
|
||||
msgstr "Modifica"
|
||||
|
||||
#. Found under the Select menu, in the Modify submenu. When selected, it shows a window that lets users expand the active selection.
|
||||
msgid "Expand"
|
||||
msgstr ""
|
||||
msgstr "Espandi"
|
||||
|
||||
#. Title of a window that lets users expand the active selection.
|
||||
msgid "Expand Selection"
|
||||
msgstr ""
|
||||
msgstr "Espandi Selezione"
|
||||
|
||||
#. Found under the Select menu, in the Modify submenu. When selected, it shows a window that lets users shrink the active selection.
|
||||
msgid "Shrink"
|
||||
msgstr ""
|
||||
msgstr "Riduci"
|
||||
|
||||
#. Title of a window that lets users shrink the active selection.
|
||||
msgid "Shrink Selection"
|
||||
msgstr ""
|
||||
msgstr "Riduci La Selezione"
|
||||
|
||||
#. Found under the Select menu, in the Modify submenu. When selected, it shows a window that lets users create a border of the active selection.
|
||||
msgid "Border"
|
||||
msgstr ""
|
||||
msgstr "Corníce"
|
||||
|
||||
#. Title of a window that lets users create a border of the active selection.
|
||||
msgid "Border Selection"
|
||||
msgstr ""
|
||||
msgstr "Selezione Bordo"
|
||||
|
||||
#. Refers to a diamond-like shape.
|
||||
msgid "Diamond"
|
||||
msgstr ""
|
||||
msgstr "Diamante"
|
||||
|
||||
msgid "Circle"
|
||||
msgstr ""
|
||||
msgstr "Cerchio"
|
||||
|
||||
msgid "Square"
|
||||
msgstr ""
|
||||
msgstr "Quadrato"
|
||||
|
||||
msgid "Grayscale View"
|
||||
msgstr "Visualizzazione Scala Di Grigio"
|
||||
|
@ -280,20 +280,17 @@ msgstr "Modalità Tile"
|
|||
msgid "Tile Mode Offsets"
|
||||
msgstr "Scostamenti Modalità Piastrelle"
|
||||
|
||||
msgid "X-basis x:"
|
||||
msgstr "X-base x:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "X-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis y:"
|
||||
msgstr "X base y:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "Y-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis x:"
|
||||
msgstr "Y base x:"
|
||||
|
||||
msgid "Y-basis y:"
|
||||
msgstr "Y-base y:"
|
||||
|
||||
msgid "Tile Mask"
|
||||
msgstr "Maschera Piastrelle"
|
||||
#. Found under "Tile Mode Offsets". It's a button that when pressed, enables masking for tile mode. Masking essentially limits drawing to the visible pixels of the image, thus preventing from drawing on transparent pixels.
|
||||
msgid "Masking:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reset"
|
||||
msgstr "Azzera"
|
||||
|
@ -2929,7 +2926,7 @@ msgstr "Ordina per valore"
|
|||
|
||||
#. An option of the Sort palette button found in the palette panel. When selected, the colors of the palette are being sorted based on their OKHSL Lightness.
|
||||
msgid "Sort by lightness"
|
||||
msgstr ""
|
||||
msgstr "Ordina per luminosità"
|
||||
|
||||
#. An option of the Sort palette button found in the palette panel. When selected, the colors of the palette are being sorted based on their red channel value.
|
||||
msgid "Sort by red"
|
||||
|
|
|
@ -10,7 +10,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Language-Team: Japanese\n"
|
||||
"Language: ja_JP\n"
|
||||
"PO-Revision-Date: 2024-11-15 02:05\n"
|
||||
"PO-Revision-Date: 2024-11-15 17:31\n"
|
||||
|
||||
msgid "OK"
|
||||
msgstr "OK"
|
||||
|
@ -280,20 +280,17 @@ msgstr "タイルモード"
|
|||
msgid "Tile Mode Offsets"
|
||||
msgstr "タイルモードのオフセット"
|
||||
|
||||
msgid "X-basis x:"
|
||||
msgstr "X基底 x:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "X-basis:"
|
||||
msgstr "X基底:"
|
||||
|
||||
msgid "X-basis y:"
|
||||
msgstr "X基底 y:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "Y-basis:"
|
||||
msgstr "Y基底:"
|
||||
|
||||
msgid "Y-basis x:"
|
||||
msgstr "Y基底 x:"
|
||||
|
||||
msgid "Y-basis y:"
|
||||
msgstr "Y基底 y:"
|
||||
|
||||
msgid "Tile Mask"
|
||||
msgstr "タイルマスク"
|
||||
#. Found under "Tile Mode Offsets". It's a button that when pressed, enables masking for tile mode. Masking essentially limits drawing to the visible pixels of the image, thus preventing from drawing on transparent pixels.
|
||||
msgid "Masking:"
|
||||
msgstr "マスキング:"
|
||||
|
||||
msgid "Reset"
|
||||
msgstr "初期化"
|
||||
|
|
3330
Translations/kk_KZ.po
Normal file
3330
Translations/kk_KZ.po
Normal file
File diff suppressed because it is too large
Load diff
|
@ -10,7 +10,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Language-Team: Korean\n"
|
||||
"Language: ko_KR\n"
|
||||
"PO-Revision-Date: 2024-11-15 00:55\n"
|
||||
"PO-Revision-Date: 2024-11-15 17:31\n"
|
||||
|
||||
msgid "OK"
|
||||
msgstr "예"
|
||||
|
@ -278,19 +278,16 @@ msgstr "타일 모드"
|
|||
msgid "Tile Mode Offsets"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis x:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "X-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis y:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "Y-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis x:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis y:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Tile Mask"
|
||||
#. Found under "Tile Mode Offsets". It's a button that when pressed, enables masking for tile mode. Masking essentially limits drawing to the visible pixels of the image, thus preventing from drawing on transparent pixels.
|
||||
msgid "Masking:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reset"
|
||||
|
|
|
@ -10,7 +10,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Language-Team: Latin\n"
|
||||
"Language: la_LA\n"
|
||||
"PO-Revision-Date: 2024-11-15 00:56\n"
|
||||
"PO-Revision-Date: 2024-11-15 17:31\n"
|
||||
|
||||
msgid "OK"
|
||||
msgstr ""
|
||||
|
@ -278,19 +278,16 @@ msgstr ""
|
|||
msgid "Tile Mode Offsets"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis x:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "X-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis y:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "Y-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis x:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis y:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Tile Mask"
|
||||
#. Found under "Tile Mode Offsets". It's a button that when pressed, enables masking for tile mode. Masking essentially limits drawing to the visible pixels of the image, thus preventing from drawing on transparent pixels.
|
||||
msgid "Masking:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reset"
|
||||
|
|
|
@ -10,7 +10,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Language-Team: Lithuanian\n"
|
||||
"Language: lt_LT\n"
|
||||
"PO-Revision-Date: 2024-11-15 00:55\n"
|
||||
"PO-Revision-Date: 2024-11-15 17:31\n"
|
||||
|
||||
msgid "OK"
|
||||
msgstr ""
|
||||
|
@ -278,19 +278,16 @@ msgstr ""
|
|||
msgid "Tile Mode Offsets"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis x:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "X-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis y:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "Y-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis x:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis y:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Tile Mask"
|
||||
#. Found under "Tile Mode Offsets". It's a button that when pressed, enables masking for tile mode. Masking essentially limits drawing to the visible pixels of the image, thus preventing from drawing on transparent pixels.
|
||||
msgid "Masking:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reset"
|
||||
|
|
|
@ -10,7 +10,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Language-Team: Latvian\n"
|
||||
"Language: lv_LV\n"
|
||||
"PO-Revision-Date: 2024-11-15 00:56\n"
|
||||
"PO-Revision-Date: 2024-11-15 17:31\n"
|
||||
|
||||
msgid "OK"
|
||||
msgstr "Labi"
|
||||
|
@ -278,19 +278,16 @@ msgstr "Flīžu režīms"
|
|||
msgid "Tile Mode Offsets"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis x:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "X-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis y:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "Y-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis x:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis y:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Tile Mask"
|
||||
#. Found under "Tile Mode Offsets". It's a button that when pressed, enables masking for tile mode. Masking essentially limits drawing to the visible pixels of the image, thus preventing from drawing on transparent pixels.
|
||||
msgid "Masking:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reset"
|
||||
|
|
3330
Translations/mi_NZ.po
Normal file
3330
Translations/mi_NZ.po
Normal file
File diff suppressed because it is too large
Load diff
|
@ -10,7 +10,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Language-Team: Macedonian\n"
|
||||
"Language: mk_MK\n"
|
||||
"PO-Revision-Date: 2024-11-15 00:55\n"
|
||||
"PO-Revision-Date: 2024-11-15 17:31\n"
|
||||
|
||||
msgid "OK"
|
||||
msgstr ""
|
||||
|
@ -278,19 +278,16 @@ msgstr ""
|
|||
msgid "Tile Mode Offsets"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis x:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "X-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis y:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "Y-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis x:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis y:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Tile Mask"
|
||||
#. Found under "Tile Mode Offsets". It's a button that when pressed, enables masking for tile mode. Masking essentially limits drawing to the visible pixels of the image, thus preventing from drawing on transparent pixels.
|
||||
msgid "Masking:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reset"
|
||||
|
|
|
@ -10,7 +10,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Language-Team: Malayalam\n"
|
||||
"Language: ml_IN\n"
|
||||
"PO-Revision-Date: 2024-11-15 00:56\n"
|
||||
"PO-Revision-Date: 2024-11-15 17:31\n"
|
||||
|
||||
msgid "OK"
|
||||
msgstr "ഓക്കേ"
|
||||
|
@ -278,19 +278,16 @@ msgstr ""
|
|||
msgid "Tile Mode Offsets"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis x:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "X-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis y:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "Y-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis x:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis y:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Tile Mask"
|
||||
#. Found under "Tile Mode Offsets". It's a button that when pressed, enables masking for tile mode. Masking essentially limits drawing to the visible pixels of the image, thus preventing from drawing on transparent pixels.
|
||||
msgid "Masking:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reset"
|
||||
|
|
|
@ -10,7 +10,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Language-Team: Marathi\n"
|
||||
"Language: mr_IN\n"
|
||||
"PO-Revision-Date: 2024-11-15 00:56\n"
|
||||
"PO-Revision-Date: 2024-11-15 17:31\n"
|
||||
|
||||
msgid "OK"
|
||||
msgstr ""
|
||||
|
@ -278,19 +278,16 @@ msgstr ""
|
|||
msgid "Tile Mode Offsets"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis x:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "X-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis y:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "Y-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis x:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis y:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Tile Mask"
|
||||
#. Found under "Tile Mode Offsets". It's a button that when pressed, enables masking for tile mode. Masking essentially limits drawing to the visible pixels of the image, thus preventing from drawing on transparent pixels.
|
||||
msgid "Masking:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reset"
|
||||
|
|
|
@ -10,7 +10,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Language-Team: Malay\n"
|
||||
"Language: ms_MY\n"
|
||||
"PO-Revision-Date: 2024-11-15 00:56\n"
|
||||
"PO-Revision-Date: 2024-11-15 17:31\n"
|
||||
|
||||
msgid "OK"
|
||||
msgstr ""
|
||||
|
@ -278,19 +278,16 @@ msgstr ""
|
|||
msgid "Tile Mode Offsets"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis x:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "X-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis y:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "Y-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis x:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis y:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Tile Mask"
|
||||
#. Found under "Tile Mode Offsets". It's a button that when pressed, enables masking for tile mode. Masking essentially limits drawing to the visible pixels of the image, thus preventing from drawing on transparent pixels.
|
||||
msgid "Masking:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reset"
|
||||
|
|
|
@ -10,7 +10,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Language-Team: Norwegian Bokmal\n"
|
||||
"Language: nb_NO\n"
|
||||
"PO-Revision-Date: 2024-11-15 00:56\n"
|
||||
"PO-Revision-Date: 2024-11-15 17:31\n"
|
||||
|
||||
msgid "OK"
|
||||
msgstr "OK"
|
||||
|
@ -278,19 +278,16 @@ msgstr "Flismodus"
|
|||
msgid "Tile Mode Offsets"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis x:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "X-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis y:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "Y-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis x:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis y:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Tile Mask"
|
||||
#. Found under "Tile Mode Offsets". It's a button that when pressed, enables masking for tile mode. Masking essentially limits drawing to the visible pixels of the image, thus preventing from drawing on transparent pixels.
|
||||
msgid "Masking:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reset"
|
||||
|
|
|
@ -10,7 +10,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Language-Team: Dutch\n"
|
||||
"Language: nl_NL\n"
|
||||
"PO-Revision-Date: 2024-11-15 00:55\n"
|
||||
"PO-Revision-Date: 2024-11-15 17:31\n"
|
||||
|
||||
msgid "OK"
|
||||
msgstr "Oké"
|
||||
|
@ -278,19 +278,16 @@ msgstr "Tegelmodus"
|
|||
msgid "Tile Mode Offsets"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis x:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "X-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis y:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "Y-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis x:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis y:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Tile Mask"
|
||||
#. Found under "Tile Mode Offsets". It's a button that when pressed, enables masking for tile mode. Masking essentially limits drawing to the visible pixels of the image, thus preventing from drawing on transparent pixels.
|
||||
msgid "Masking:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reset"
|
||||
|
|
|
@ -10,7 +10,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Language-Team: Polish\n"
|
||||
"Language: pl_PL\n"
|
||||
"PO-Revision-Date: 2024-11-15 00:55\n"
|
||||
"PO-Revision-Date: 2024-11-15 17:31\n"
|
||||
|
||||
msgid "OK"
|
||||
msgstr "OK"
|
||||
|
@ -280,20 +280,17 @@ msgstr "Tryb kafelkowy"
|
|||
msgid "Tile Mode Offsets"
|
||||
msgstr "Przesunięcia trybu kafelkowego"
|
||||
|
||||
msgid "X-basis x:"
|
||||
msgstr "Baza X.x:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "X-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis y:"
|
||||
msgstr "Baza X.y:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "Y-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis x:"
|
||||
msgstr "Baza Y.x:"
|
||||
|
||||
msgid "Y-basis y:"
|
||||
msgstr "Baza Y.y:"
|
||||
|
||||
msgid "Tile Mask"
|
||||
msgstr "Maska kafelków"
|
||||
#. Found under "Tile Mode Offsets". It's a button that when pressed, enables masking for tile mode. Masking essentially limits drawing to the visible pixels of the image, thus preventing from drawing on transparent pixels.
|
||||
msgid "Masking:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reset"
|
||||
msgstr "Zresetuj"
|
||||
|
|
|
@ -10,7 +10,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Language-Team: Portuguese, Brazilian\n"
|
||||
"Language: pt_BR\n"
|
||||
"PO-Revision-Date: 2024-11-15 00:56\n"
|
||||
"PO-Revision-Date: 2024-11-15 17:31\n"
|
||||
|
||||
msgid "OK"
|
||||
msgstr "OK"
|
||||
|
@ -280,20 +280,17 @@ msgstr "Modo de Tile"
|
|||
msgid "Tile Mode Offsets"
|
||||
msgstr "Deslocamentos do Modo de Tile"
|
||||
|
||||
msgid "X-basis x:"
|
||||
msgstr "X-base x:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "X-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis y:"
|
||||
msgstr "X-base y:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "Y-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis x:"
|
||||
msgstr "Y-base x:"
|
||||
|
||||
msgid "Y-basis y:"
|
||||
msgstr "Y-base y:"
|
||||
|
||||
msgid "Tile Mask"
|
||||
msgstr "Máscara de Tile"
|
||||
#. Found under "Tile Mode Offsets". It's a button that when pressed, enables masking for tile mode. Masking essentially limits drawing to the visible pixels of the image, thus preventing from drawing on transparent pixels.
|
||||
msgid "Masking:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reset"
|
||||
msgstr "Redefinir"
|
||||
|
|
|
@ -10,7 +10,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Language-Team: Portuguese\n"
|
||||
"Language: pt_PT\n"
|
||||
"PO-Revision-Date: 2024-11-15 00:55\n"
|
||||
"PO-Revision-Date: 2024-11-15 17:31\n"
|
||||
|
||||
msgid "OK"
|
||||
msgstr "OK"
|
||||
|
@ -278,21 +278,18 @@ msgstr "Modo de Azuleijo"
|
|||
msgid "Tile Mode Offsets"
|
||||
msgstr "Desvios do Modo Mosaico"
|
||||
|
||||
msgid "X-basis x:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "X-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis y:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "Y-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis x:"
|
||||
#. Found under "Tile Mode Offsets". It's a button that when pressed, enables masking for tile mode. Masking essentially limits drawing to the visible pixels of the image, thus preventing from drawing on transparent pixels.
|
||||
msgid "Masking:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis y:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Tile Mask"
|
||||
msgstr "Máscara de mosaico"
|
||||
|
||||
msgid "Reset"
|
||||
msgstr "Repor"
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Language-Team: Romanian\n"
|
||||
"Language: ro_RO\n"
|
||||
"PO-Revision-Date: 2024-11-15 00:55\n"
|
||||
"PO-Revision-Date: 2024-11-15 17:30\n"
|
||||
|
||||
msgid "OK"
|
||||
msgstr "OK"
|
||||
|
@ -217,41 +217,41 @@ msgid "Invert"
|
|||
msgstr "Inversare"
|
||||
|
||||
msgid "Modify"
|
||||
msgstr ""
|
||||
msgstr "Modificare"
|
||||
|
||||
#. Found under the Select menu, in the Modify submenu. When selected, it shows a window that lets users expand the active selection.
|
||||
msgid "Expand"
|
||||
msgstr ""
|
||||
msgstr "Extindere"
|
||||
|
||||
#. Title of a window that lets users expand the active selection.
|
||||
msgid "Expand Selection"
|
||||
msgstr ""
|
||||
msgstr "Extindere selecție"
|
||||
|
||||
#. Found under the Select menu, in the Modify submenu. When selected, it shows a window that lets users shrink the active selection.
|
||||
msgid "Shrink"
|
||||
msgstr ""
|
||||
msgstr "Micșorare"
|
||||
|
||||
#. Title of a window that lets users shrink the active selection.
|
||||
msgid "Shrink Selection"
|
||||
msgstr ""
|
||||
msgstr "Micșorare selecție"
|
||||
|
||||
#. Found under the Select menu, in the Modify submenu. When selected, it shows a window that lets users create a border of the active selection.
|
||||
msgid "Border"
|
||||
msgstr ""
|
||||
msgstr "Margine"
|
||||
|
||||
#. Title of a window that lets users create a border of the active selection.
|
||||
msgid "Border Selection"
|
||||
msgstr ""
|
||||
msgstr "Selecție margine"
|
||||
|
||||
#. Refers to a diamond-like shape.
|
||||
msgid "Diamond"
|
||||
msgstr ""
|
||||
msgstr "Diamant"
|
||||
|
||||
msgid "Circle"
|
||||
msgstr ""
|
||||
msgstr "Cerc"
|
||||
|
||||
msgid "Square"
|
||||
msgstr ""
|
||||
msgstr "Pătrat"
|
||||
|
||||
msgid "Grayscale View"
|
||||
msgstr "Vizualizare în tonuri de gri"
|
||||
|
@ -278,20 +278,17 @@ msgstr "Mod mozaic"
|
|||
msgid "Tile Mode Offsets"
|
||||
msgstr "Decalaje mod mozaic"
|
||||
|
||||
msgid "X-basis x:"
|
||||
msgstr "Bază X x:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "X-basis:"
|
||||
msgstr "Bază X:"
|
||||
|
||||
msgid "X-basis y:"
|
||||
msgstr "Bază X y:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "Y-basis:"
|
||||
msgstr "Bază Y:"
|
||||
|
||||
msgid "Y-basis x:"
|
||||
msgstr "Bază Y x:"
|
||||
|
||||
msgid "Y-basis y:"
|
||||
msgstr "Bază Y y:"
|
||||
|
||||
msgid "Tile Mask"
|
||||
msgstr "Mască mozaic"
|
||||
#. Found under "Tile Mode Offsets". It's a button that when pressed, enables masking for tile mode. Masking essentially limits drawing to the visible pixels of the image, thus preventing from drawing on transparent pixels.
|
||||
msgid "Masking:"
|
||||
msgstr "Mascare:"
|
||||
|
||||
msgid "Reset"
|
||||
msgstr "Resetare"
|
||||
|
@ -1976,7 +1973,7 @@ msgstr "În locul desenării unei forme goale, forma desenată este umplută cu
|
|||
|
||||
#. Found in the tool options of the Pencil, Eraser and Shading tools. It is a percentage of how dense the brush is. 100% density means that the brush gets completely drawn, anything less leaves gaps inside the brush, acting like a spray tool.
|
||||
msgid "Density:"
|
||||
msgstr ""
|
||||
msgstr "Densitate:"
|
||||
|
||||
msgid "Brush color from"
|
||||
msgstr "Culoarea pensulei de la"
|
||||
|
|
|
@ -10,7 +10,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Language-Team: Russian\n"
|
||||
"Language: ru_RU\n"
|
||||
"PO-Revision-Date: 2024-11-15 00:55\n"
|
||||
"PO-Revision-Date: 2024-11-15 17:30\n"
|
||||
|
||||
msgid "OK"
|
||||
msgstr "OK"
|
||||
|
@ -249,10 +249,10 @@ msgid "Diamond"
|
|||
msgstr ""
|
||||
|
||||
msgid "Circle"
|
||||
msgstr ""
|
||||
msgstr "Круг"
|
||||
|
||||
msgid "Square"
|
||||
msgstr ""
|
||||
msgstr "Квадрат"
|
||||
|
||||
msgid "Grayscale View"
|
||||
msgstr "Вид в оттенках серого"
|
||||
|
@ -279,20 +279,17 @@ msgstr "Режим тайла"
|
|||
msgid "Tile Mode Offsets"
|
||||
msgstr "Сдвиг в бесшовном режиме"
|
||||
|
||||
msgid "X-basis x:"
|
||||
msgstr "X для X-базиса:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "X-basis:"
|
||||
msgstr "X-базиса:"
|
||||
|
||||
msgid "X-basis y:"
|
||||
msgstr "Y для X-базиса:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "Y-basis:"
|
||||
msgstr "Y-базиса:"
|
||||
|
||||
msgid "Y-basis x:"
|
||||
msgstr "X для Y-базиса:"
|
||||
|
||||
msgid "Y-basis y:"
|
||||
msgstr "Y для Y-базиса:"
|
||||
|
||||
msgid "Tile Mask"
|
||||
msgstr "Тайловая маска"
|
||||
#. Found under "Tile Mode Offsets". It's a button that when pressed, enables masking for tile mode. Masking essentially limits drawing to the visible pixels of the image, thus preventing from drawing on transparent pixels.
|
||||
msgid "Masking:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reset"
|
||||
msgstr "Сброс"
|
||||
|
|
|
@ -10,7 +10,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Language-Team: Sinhala\n"
|
||||
"Language: si_LK\n"
|
||||
"PO-Revision-Date: 2024-11-15 00:56\n"
|
||||
"PO-Revision-Date: 2024-11-15 17:31\n"
|
||||
|
||||
msgid "OK"
|
||||
msgstr "හරි"
|
||||
|
@ -278,19 +278,16 @@ msgstr ""
|
|||
msgid "Tile Mode Offsets"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis x:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "X-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis y:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "Y-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis x:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis y:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Tile Mask"
|
||||
#. Found under "Tile Mode Offsets". It's a button that when pressed, enables masking for tile mode. Masking essentially limits drawing to the visible pixels of the image, thus preventing from drawing on transparent pixels.
|
||||
msgid "Masking:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reset"
|
||||
|
|
|
@ -10,7 +10,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Language-Team: Slovak\n"
|
||||
"Language: sk_SK\n"
|
||||
"PO-Revision-Date: 2024-11-15 00:55\n"
|
||||
"PO-Revision-Date: 2024-11-15 17:31\n"
|
||||
|
||||
msgid "OK"
|
||||
msgstr ""
|
||||
|
@ -278,19 +278,16 @@ msgstr ""
|
|||
msgid "Tile Mode Offsets"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis x:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "X-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis y:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "Y-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis x:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis y:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Tile Mask"
|
||||
#. Found under "Tile Mode Offsets". It's a button that when pressed, enables masking for tile mode. Masking essentially limits drawing to the visible pixels of the image, thus preventing from drawing on transparent pixels.
|
||||
msgid "Masking:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reset"
|
||||
|
|
|
@ -10,7 +10,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Language-Team: Slovenian\n"
|
||||
"Language: sl_SI\n"
|
||||
"PO-Revision-Date: 2024-11-15 00:55\n"
|
||||
"PO-Revision-Date: 2024-11-15 17:31\n"
|
||||
|
||||
msgid "OK"
|
||||
msgstr ""
|
||||
|
@ -278,19 +278,16 @@ msgstr ""
|
|||
msgid "Tile Mode Offsets"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis x:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "X-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis y:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "Y-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis x:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis y:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Tile Mask"
|
||||
#. Found under "Tile Mode Offsets". It's a button that when pressed, enables masking for tile mode. Masking essentially limits drawing to the visible pixels of the image, thus preventing from drawing on transparent pixels.
|
||||
msgid "Masking:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reset"
|
||||
|
|
|
@ -10,7 +10,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Language-Team: Albanian\n"
|
||||
"Language: sq_AL\n"
|
||||
"PO-Revision-Date: 2024-11-15 00:55\n"
|
||||
"PO-Revision-Date: 2024-11-15 17:31\n"
|
||||
|
||||
msgid "OK"
|
||||
msgstr "Ne rregull"
|
||||
|
@ -278,19 +278,16 @@ msgstr ""
|
|||
msgid "Tile Mode Offsets"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis x:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "X-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis y:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "Y-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis x:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis y:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Tile Mask"
|
||||
#. Found under "Tile Mode Offsets". It's a button that when pressed, enables masking for tile mode. Masking essentially limits drawing to the visible pixels of the image, thus preventing from drawing on transparent pixels.
|
||||
msgid "Masking:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reset"
|
||||
|
|
|
@ -10,7 +10,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Language-Team: Serbian (Cyrillic)\n"
|
||||
"Language: sr_SP\n"
|
||||
"PO-Revision-Date: 2024-11-15 00:55\n"
|
||||
"PO-Revision-Date: 2024-11-15 17:31\n"
|
||||
|
||||
msgid "OK"
|
||||
msgstr "ОК"
|
||||
|
@ -278,19 +278,16 @@ msgstr "Бешавни режим"
|
|||
msgid "Tile Mode Offsets"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis x:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "X-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis y:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "Y-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis x:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis y:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Tile Mask"
|
||||
#. Found under "Tile Mode Offsets". It's a button that when pressed, enables masking for tile mode. Masking essentially limits drawing to the visible pixels of the image, thus preventing from drawing on transparent pixels.
|
||||
msgid "Masking:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reset"
|
||||
|
|
|
@ -10,7 +10,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Language-Team: Swedish\n"
|
||||
"Language: sv_SE\n"
|
||||
"PO-Revision-Date: 2024-11-15 00:55\n"
|
||||
"PO-Revision-Date: 2024-11-15 17:31\n"
|
||||
|
||||
msgid "OK"
|
||||
msgstr "Okej"
|
||||
|
@ -278,19 +278,16 @@ msgstr ""
|
|||
msgid "Tile Mode Offsets"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis x:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "X-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis y:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "Y-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis x:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis y:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Tile Mask"
|
||||
#. Found under "Tile Mode Offsets". It's a button that when pressed, enables masking for tile mode. Masking essentially limits drawing to the visible pixels of the image, thus preventing from drawing on transparent pixels.
|
||||
msgid "Masking:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reset"
|
||||
|
|
|
@ -10,7 +10,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Language-Team: Swahili\n"
|
||||
"Language: sw_KE\n"
|
||||
"PO-Revision-Date: 2024-11-15 00:56\n"
|
||||
"PO-Revision-Date: 2024-11-15 17:31\n"
|
||||
|
||||
msgid "OK"
|
||||
msgstr ""
|
||||
|
@ -278,19 +278,16 @@ msgstr ""
|
|||
msgid "Tile Mode Offsets"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis x:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "X-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis y:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "Y-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis x:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis y:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Tile Mask"
|
||||
#. Found under "Tile Mode Offsets". It's a button that when pressed, enables masking for tile mode. Masking essentially limits drawing to the visible pixels of the image, thus preventing from drawing on transparent pixels.
|
||||
msgid "Masking:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reset"
|
||||
|
|
|
@ -10,7 +10,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Language-Team: Tamil\n"
|
||||
"Language: ta_IN\n"
|
||||
"PO-Revision-Date: 2024-11-15 00:56\n"
|
||||
"PO-Revision-Date: 2024-11-15 17:31\n"
|
||||
|
||||
msgid "OK"
|
||||
msgstr ""
|
||||
|
@ -278,19 +278,16 @@ msgstr ""
|
|||
msgid "Tile Mode Offsets"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis x:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "X-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis y:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "Y-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis x:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis y:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Tile Mask"
|
||||
#. Found under "Tile Mode Offsets". It's a button that when pressed, enables masking for tile mode. Masking essentially limits drawing to the visible pixels of the image, thus preventing from drawing on transparent pixels.
|
||||
msgid "Masking:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reset"
|
||||
|
|
|
@ -10,7 +10,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Language-Team: Thai\n"
|
||||
"Language: th_TH\n"
|
||||
"PO-Revision-Date: 2024-11-15 00:56\n"
|
||||
"PO-Revision-Date: 2024-11-15 17:31\n"
|
||||
|
||||
msgid "OK"
|
||||
msgstr ""
|
||||
|
@ -278,19 +278,16 @@ msgstr ""
|
|||
msgid "Tile Mode Offsets"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis x:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "X-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis y:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "Y-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis x:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis y:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Tile Mask"
|
||||
#. Found under "Tile Mode Offsets". It's a button that when pressed, enables masking for tile mode. Masking essentially limits drawing to the visible pixels of the image, thus preventing from drawing on transparent pixels.
|
||||
msgid "Masking:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reset"
|
||||
|
|
|
@ -10,7 +10,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Language-Team: Klingon\n"
|
||||
"Language: tlh_AA\n"
|
||||
"PO-Revision-Date: 2024-11-15 00:56\n"
|
||||
"PO-Revision-Date: 2024-11-15 17:31\n"
|
||||
|
||||
msgid "OK"
|
||||
msgstr ""
|
||||
|
@ -278,19 +278,16 @@ msgstr ""
|
|||
msgid "Tile Mode Offsets"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis x:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "X-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis y:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "Y-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis x:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis y:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Tile Mask"
|
||||
#. Found under "Tile Mode Offsets". It's a button that when pressed, enables masking for tile mode. Masking essentially limits drawing to the visible pixels of the image, thus preventing from drawing on transparent pixels.
|
||||
msgid "Masking:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reset"
|
||||
|
|
|
@ -10,7 +10,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Language-Team: Turkish\n"
|
||||
"Language: tr_TR\n"
|
||||
"PO-Revision-Date: 2024-11-15 00:56\n"
|
||||
"PO-Revision-Date: 2024-11-15 17:31\n"
|
||||
|
||||
msgid "OK"
|
||||
msgstr "Tamam"
|
||||
|
@ -219,41 +219,41 @@ msgid "Invert"
|
|||
msgstr "Ters Çevir"
|
||||
|
||||
msgid "Modify"
|
||||
msgstr ""
|
||||
msgstr "Değiştir"
|
||||
|
||||
#. Found under the Select menu, in the Modify submenu. When selected, it shows a window that lets users expand the active selection.
|
||||
msgid "Expand"
|
||||
msgstr ""
|
||||
msgstr "Genişlet"
|
||||
|
||||
#. Title of a window that lets users expand the active selection.
|
||||
msgid "Expand Selection"
|
||||
msgstr ""
|
||||
msgstr "Seçimi Genişlet"
|
||||
|
||||
#. Found under the Select menu, in the Modify submenu. When selected, it shows a window that lets users shrink the active selection.
|
||||
msgid "Shrink"
|
||||
msgstr ""
|
||||
msgstr "Küçült"
|
||||
|
||||
#. Title of a window that lets users shrink the active selection.
|
||||
msgid "Shrink Selection"
|
||||
msgstr ""
|
||||
msgstr "Seçimi Daralt"
|
||||
|
||||
#. Found under the Select menu, in the Modify submenu. When selected, it shows a window that lets users create a border of the active selection.
|
||||
msgid "Border"
|
||||
msgstr ""
|
||||
msgstr "Kenarlık"
|
||||
|
||||
#. Title of a window that lets users create a border of the active selection.
|
||||
msgid "Border Selection"
|
||||
msgstr ""
|
||||
msgstr "Kenarlık Seçimi"
|
||||
|
||||
#. Refers to a diamond-like shape.
|
||||
msgid "Diamond"
|
||||
msgstr ""
|
||||
msgstr "Karo"
|
||||
|
||||
msgid "Circle"
|
||||
msgstr ""
|
||||
msgstr "Daire"
|
||||
|
||||
msgid "Square"
|
||||
msgstr ""
|
||||
msgstr "Kare"
|
||||
|
||||
msgid "Grayscale View"
|
||||
msgstr "Gri Tonlamalı Görünüm"
|
||||
|
@ -280,20 +280,17 @@ msgstr "Döşeme Kipi"
|
|||
msgid "Tile Mode Offsets"
|
||||
msgstr "Döşeme Kipi Uzaklıkları"
|
||||
|
||||
msgid "X-basis x:"
|
||||
msgstr "X-tabanlı x:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "X-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis y:"
|
||||
msgstr "Y-tabanlı y:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "Y-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis x:"
|
||||
msgstr "Y-tabanlı x:"
|
||||
|
||||
msgid "Y-basis y:"
|
||||
msgstr "Y-tabanlı y:"
|
||||
|
||||
msgid "Tile Mask"
|
||||
msgstr "Döşeme Maskesi"
|
||||
#. Found under "Tile Mode Offsets". It's a button that when pressed, enables masking for tile mode. Masking essentially limits drawing to the visible pixels of the image, thus preventing from drawing on transparent pixels.
|
||||
msgid "Masking:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reset"
|
||||
msgstr "Sıfırla"
|
||||
|
@ -2929,7 +2926,7 @@ msgstr "Değere göre sırala"
|
|||
|
||||
#. An option of the Sort palette button found in the palette panel. When selected, the colors of the palette are being sorted based on their OKHSL Lightness.
|
||||
msgid "Sort by lightness"
|
||||
msgstr ""
|
||||
msgstr "Aydınlığa göre sırala"
|
||||
|
||||
#. An option of the Sort palette button found in the palette panel. When selected, the colors of the palette are being sorted based on their red channel value.
|
||||
msgid "Sort by red"
|
||||
|
|
|
@ -10,7 +10,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Language-Team: Ukrainian\n"
|
||||
"Language: uk_UA\n"
|
||||
"PO-Revision-Date: 2024-11-15 00:55\n"
|
||||
"PO-Revision-Date: 2024-11-15 17:30\n"
|
||||
|
||||
msgid "OK"
|
||||
msgstr "Гаразд"
|
||||
|
@ -280,20 +280,17 @@ msgstr "Безшовний режим"
|
|||
msgid "Tile Mode Offsets"
|
||||
msgstr "Зміщення в безшовному режимі"
|
||||
|
||||
msgid "X-basis x:"
|
||||
msgstr "X для X-базису:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "X-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis y:"
|
||||
msgstr "Y для X-базису:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "Y-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis x:"
|
||||
msgstr "X для Y-базису:"
|
||||
|
||||
msgid "Y-basis y:"
|
||||
msgstr "Y для Y-базису:"
|
||||
|
||||
msgid "Tile Mask"
|
||||
msgstr "Тайлова маска"
|
||||
#. Found under "Tile Mode Offsets". It's a button that when pressed, enables masking for tile mode. Masking essentially limits drawing to the visible pixels of the image, thus preventing from drawing on transparent pixels.
|
||||
msgid "Masking:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reset"
|
||||
msgstr "Скинути"
|
||||
|
|
|
@ -10,7 +10,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Language-Team: Vietnamese\n"
|
||||
"Language: vi_VN\n"
|
||||
"PO-Revision-Date: 2024-11-15 00:56\n"
|
||||
"PO-Revision-Date: 2024-11-15 17:31\n"
|
||||
|
||||
msgid "OK"
|
||||
msgstr "OK"
|
||||
|
@ -278,19 +278,16 @@ msgstr ""
|
|||
msgid "Tile Mode Offsets"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis x:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "X-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis y:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "Y-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis x:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis y:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Tile Mask"
|
||||
#. Found under "Tile Mode Offsets". It's a button that when pressed, enables masking for tile mode. Masking essentially limits drawing to the visible pixels of the image, thus preventing from drawing on transparent pixels.
|
||||
msgid "Masking:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reset"
|
||||
|
|
|
@ -10,7 +10,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Language-Team: Chinese Simplified\n"
|
||||
"Language: zh_CN\n"
|
||||
"PO-Revision-Date: 2024-11-15 00:56\n"
|
||||
"PO-Revision-Date: 2024-11-15 17:31\n"
|
||||
|
||||
msgid "OK"
|
||||
msgstr "确定"
|
||||
|
@ -280,20 +280,17 @@ msgstr "平铺模式"
|
|||
msgid "Tile Mode Offsets"
|
||||
msgstr "平铺模式偏移"
|
||||
|
||||
msgid "X-basis x:"
|
||||
msgstr "X-基准 x:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "X-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis y:"
|
||||
msgstr "X-基准 y:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "Y-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis x:"
|
||||
msgstr "Y-基准 x:"
|
||||
|
||||
msgid "Y-basis y:"
|
||||
msgstr "Y-基准 y:"
|
||||
|
||||
msgid "Tile Mask"
|
||||
msgstr "平铺蒙版"
|
||||
#. Found under "Tile Mode Offsets". It's a button that when pressed, enables masking for tile mode. Masking essentially limits drawing to the visible pixels of the image, thus preventing from drawing on transparent pixels.
|
||||
msgid "Masking:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reset"
|
||||
msgstr "重置"
|
||||
|
|
|
@ -10,7 +10,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Language-Team: Chinese Traditional\n"
|
||||
"Language: zh_TW\n"
|
||||
"PO-Revision-Date: 2024-11-15 00:56\n"
|
||||
"PO-Revision-Date: 2024-11-15 17:31\n"
|
||||
|
||||
msgid "OK"
|
||||
msgstr "確定"
|
||||
|
@ -278,19 +278,16 @@ msgstr "拼圖模式"
|
|||
msgid "Tile Mode Offsets"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis x:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "X-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "X-basis y:"
|
||||
#. Found under "Tile Mode Offsets". Basis is a linear algebra term. https://en.wikipedia.org/wiki/Basis_(linear_algebra)
|
||||
msgid "Y-basis:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis x:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Y-basis y:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Tile Mask"
|
||||
#. Found under "Tile Mode Offsets". It's a button that when pressed, enables masking for tile mode. Masking essentially limits drawing to the visible pixels of the image, thus preventing from drawing on transparent pixels.
|
||||
msgid "Masking:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reset"
|
||||
|
|
BIN
assets/graphics/misc/check_plain.png
Normal file
BIN
assets/graphics/misc/check_plain.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 176 B |
34
assets/graphics/misc/check_plain.png.import
Normal file
34
assets/graphics/misc/check_plain.png.import
Normal file
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://d267xalp3p7ru"
|
||||
path="res://.godot/imported/check_plain.png-6f37534ee70be1593b3b1be7b4c80f23.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/graphics/misc/check_plain.png"
|
||||
dest_files=["res://.godot/imported/check_plain.png-6f37534ee70be1593b3b1be7b4c80f23.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
BIN
assets/graphics/misc/close.png
Normal file
BIN
assets/graphics/misc/close.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 153 B |
34
assets/graphics/misc/close.png.import
Normal file
34
assets/graphics/misc/close.png.import
Normal file
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bnc78807k1xjv"
|
||||
path="res://.godot/imported/close.png-5725622e3d74d3527ee26e70390098f4.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/graphics/misc/close.png"
|
||||
dest_files=["res://.godot/imported/close.png-5725622e3d74d3527ee26e70390098f4.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
|
@ -83,8 +83,8 @@ application/modify_resources=true
|
|||
application/icon="res://assets/graphics/icons/icon.ico"
|
||||
application/console_wrapper_icon=""
|
||||
application/icon_interpolation=4
|
||||
application/file_version="1.0.4.0"
|
||||
application/product_version="1.0.4.0"
|
||||
application/file_version="1.0.5.0"
|
||||
application/product_version="1.0.5.0"
|
||||
application/company_name="Orama Interactive"
|
||||
application/product_name="Pixelorama"
|
||||
application/file_description="Pixelorama - Your free & open-source sprite editor"
|
||||
|
@ -198,8 +198,8 @@ application/modify_resources=true
|
|||
application/icon="res://assets/graphics/icons/icon.ico"
|
||||
application/console_wrapper_icon=""
|
||||
application/icon_interpolation=4
|
||||
application/file_version="1.0.4.0"
|
||||
application/product_version="1.0.4.0"
|
||||
application/file_version="1.0.5.0"
|
||||
application/product_version="1.0.5.0"
|
||||
application/company_name="Orama Interactive"
|
||||
application/product_name="Pixelorama"
|
||||
application/file_description="Pixelorama - Your free & open-source sprite editor"
|
||||
|
@ -402,8 +402,8 @@ application/icon_interpolation=4
|
|||
application/bundle_identifier="com.orama-interactive.pixelorama"
|
||||
application/signature=""
|
||||
application/app_category="Graphics-design"
|
||||
application/short_version="1.0.4"
|
||||
application/version="1.0.4"
|
||||
application/short_version="1.0.5"
|
||||
application/version="1.0.5"
|
||||
application/copyright="Orama Interactive and contributors 2019-present"
|
||||
application/copyright_localized={}
|
||||
application/min_macos_version="10.12"
|
||||
|
@ -657,7 +657,7 @@ architectures/arm64-v8a=true
|
|||
architectures/x86=false
|
||||
architectures/x86_64=false
|
||||
version/code=1
|
||||
version/name="1.0.4"
|
||||
version/name="1.0.5"
|
||||
package/unique_name="com.orama_interactive.pixelorama"
|
||||
package/name="Pixelorama"
|
||||
package/signed=true
|
||||
|
@ -749,13 +749,13 @@ permissions/install_location_provider=false
|
|||
permissions/install_packages=false
|
||||
permissions/install_shortcut=false
|
||||
permissions/internal_system_window=false
|
||||
permissions/internet=false
|
||||
permissions/internet=true
|
||||
permissions/kill_background_processes=false
|
||||
permissions/location_hardware=false
|
||||
permissions/manage_accounts=false
|
||||
permissions/manage_app_tokens=false
|
||||
permissions/manage_documents=false
|
||||
permissions/manage_external_storage=false
|
||||
permissions/manage_external_storage=true
|
||||
permissions/master_clear=false
|
||||
permissions/media_content_control=false
|
||||
permissions/modify_audio_settings=false
|
||||
|
|
69
installer/po/kk-KZ.po
Normal file
69
installer/po/kk-KZ.po
Normal file
|
@ -0,0 +1,69 @@
|
|||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: pixelorama\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-05-07 04:44\n"
|
||||
"PO-Revision-Date: 2024-11-15 13:41\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Kazakh\n"
|
||||
"Language: kk_KZ\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Crowdin-Project: pixelorama\n"
|
||||
"X-Crowdin-Project-ID: 385497\n"
|
||||
"X-Crowdin-Language: kk\n"
|
||||
"X-Crowdin-File: /master/installer/installer.pot\n"
|
||||
"X-Crowdin-File-ID: 10\n"
|
||||
|
||||
#. SecInstall
|
||||
#: ..\pixelorama.nsi:84
|
||||
msgid "Install ${APPNAME}"
|
||||
msgstr ""
|
||||
|
||||
#. SecStartmenu
|
||||
#: ..\pixelorama.nsi:85
|
||||
msgid "Create Start Menu shortcuts (optional)"
|
||||
msgstr ""
|
||||
|
||||
#. SecDesktop
|
||||
#: ..\pixelorama.nsi:86
|
||||
msgid "Create shortcut on Desktop (optional)"
|
||||
msgstr ""
|
||||
|
||||
#. un.SecUninstall
|
||||
#: ..\pixelorama.nsi:87
|
||||
msgid "Uninstall ${APPNAME} ${APPVERSION}"
|
||||
msgstr ""
|
||||
|
||||
#. un.SecConfig
|
||||
#: ..\pixelorama.nsi:88
|
||||
msgid "Remove configuration files (optional)"
|
||||
msgstr ""
|
||||
|
||||
#. DESC_SecInstall
|
||||
#: ..\pixelorama.nsi:200
|
||||
msgid "Installs ${APPNAME} ${APPVERSION}."
|
||||
msgstr ""
|
||||
|
||||
#. DESC_SecStartmenu
|
||||
#: ..\pixelorama.nsi:201
|
||||
msgid "Creates Start Menu shortcuts for ${APPNAME}."
|
||||
msgstr ""
|
||||
|
||||
#. DESC_SecDesktop
|
||||
#: ..\pixelorama.nsi:202
|
||||
msgid "Creates a Desktop shortcut for ${APPNAME}."
|
||||
msgstr ""
|
||||
|
||||
#. DESC_un.SecUninstall
|
||||
#: ..\pixelorama.nsi:203
|
||||
msgid "Uninstalls ${APPNAME} ${APPVERSION} and removes all shortcuts."
|
||||
msgstr ""
|
||||
|
||||
#. DESC_un.SecConfig
|
||||
#: ..\pixelorama.nsi:204
|
||||
msgid "Removes configuration files for ${APPNAME}."
|
||||
msgstr ""
|
||||
|
69
installer/po/mi-NZ.po
Normal file
69
installer/po/mi-NZ.po
Normal file
|
@ -0,0 +1,69 @@
|
|||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: pixelorama\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-05-07 04:44\n"
|
||||
"PO-Revision-Date: 2024-11-15 13:41\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Maori\n"
|
||||
"Language: mi_NZ\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Crowdin-Project: pixelorama\n"
|
||||
"X-Crowdin-Project-ID: 385497\n"
|
||||
"X-Crowdin-Language: mi\n"
|
||||
"X-Crowdin-File: /master/installer/installer.pot\n"
|
||||
"X-Crowdin-File-ID: 10\n"
|
||||
|
||||
#. SecInstall
|
||||
#: ..\pixelorama.nsi:84
|
||||
msgid "Install ${APPNAME}"
|
||||
msgstr ""
|
||||
|
||||
#. SecStartmenu
|
||||
#: ..\pixelorama.nsi:85
|
||||
msgid "Create Start Menu shortcuts (optional)"
|
||||
msgstr ""
|
||||
|
||||
#. SecDesktop
|
||||
#: ..\pixelorama.nsi:86
|
||||
msgid "Create shortcut on Desktop (optional)"
|
||||
msgstr ""
|
||||
|
||||
#. un.SecUninstall
|
||||
#: ..\pixelorama.nsi:87
|
||||
msgid "Uninstall ${APPNAME} ${APPVERSION}"
|
||||
msgstr ""
|
||||
|
||||
#. un.SecConfig
|
||||
#: ..\pixelorama.nsi:88
|
||||
msgid "Remove configuration files (optional)"
|
||||
msgstr ""
|
||||
|
||||
#. DESC_SecInstall
|
||||
#: ..\pixelorama.nsi:200
|
||||
msgid "Installs ${APPNAME} ${APPVERSION}."
|
||||
msgstr ""
|
||||
|
||||
#. DESC_SecStartmenu
|
||||
#: ..\pixelorama.nsi:201
|
||||
msgid "Creates Start Menu shortcuts for ${APPNAME}."
|
||||
msgstr ""
|
||||
|
||||
#. DESC_SecDesktop
|
||||
#: ..\pixelorama.nsi:202
|
||||
msgid "Creates a Desktop shortcut for ${APPNAME}."
|
||||
msgstr ""
|
||||
|
||||
#. DESC_un.SecUninstall
|
||||
#: ..\pixelorama.nsi:203
|
||||
msgid "Uninstalls ${APPNAME} ${APPVERSION} and removes all shortcuts."
|
||||
msgstr ""
|
||||
|
||||
#. DESC_un.SecConfig
|
||||
#: ..\pixelorama.nsi:204
|
||||
msgid "Removes configuration files for ${APPNAME}."
|
||||
msgstr ""
|
||||
|
|
@ -12,7 +12,7 @@ config_version=5
|
|||
|
||||
config/name="Pixelorama"
|
||||
config/description="Unleash your creativity with Pixelorama, a powerful and accessible open-source pixel art multitool. Whether you want to create sprites, tiles, animations, or just express yourself in the language of pixel art, this software will realize your pixel-perfect dreams with a vast toolbox of features."
|
||||
config/version="v1.0.4-stable"
|
||||
config/version="v1.0.5-dev"
|
||||
run/main_scene="res://src/Main.tscn"
|
||||
config/use_custom_user_dir=true
|
||||
config/custom_user_dir_name="pixelorama"
|
||||
|
@ -266,12 +266,14 @@ quit={
|
|||
undo={
|
||||
"deadzone": 0.5,
|
||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"command_or_control_autoremap":true,"alt_pressed":false,"shift_pressed":false,"pressed":false,"keycode":90,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
||||
, Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":8,"canceled":false,"pressed":false,"double_click":false,"script":null)
|
||||
]
|
||||
}
|
||||
redo={
|
||||
"deadzone": 0.5,
|
||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"command_or_control_autoremap":true,"alt_pressed":false,"shift_pressed":false,"pressed":false,"keycode":89,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
||||
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"command_or_control_autoremap":true,"alt_pressed":false,"shift_pressed":true,"pressed":false,"keycode":90,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
||||
, Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":0,"position":Vector2(138, 9),"global_position":Vector2(147, 55),"factor":1.0,"button_index":9,"canceled":false,"pressed":true,"double_click":false,"script":null)
|
||||
]
|
||||
}
|
||||
show_grid={
|
||||
|
|
|
@ -381,6 +381,10 @@ class PanelAPI:
|
|||
|
||||
## Gives access to theme related functions.
|
||||
class ThemeAPI:
|
||||
## Returns the Themes autoload. Allows interacting with themes on a more deeper level.
|
||||
func autoload() -> Themes:
|
||||
return Themes
|
||||
|
||||
## Adds the [param theme] to [code]Edit -> Preferences -> Interface -> Themes[/code].
|
||||
func add_theme(theme: Theme) -> void:
|
||||
Themes.add_theme(theme)
|
||||
|
@ -438,6 +442,10 @@ class ToolAPI:
|
|||
# gdlint: ignore=constant-name
|
||||
const LayerTypes := Global.LayerTypes
|
||||
|
||||
## Returns the Tools autoload. Allows interacting with tools on a more deeper level.
|
||||
func autoload() -> Tools:
|
||||
return Tools
|
||||
|
||||
## Adds a tool to pixelorama with name [param tool_name] (without spaces),
|
||||
## display name [param display_name], tool scene [param scene], layers that the tool works
|
||||
## on [param layer_types] defined by [constant LayerTypes],
|
||||
|
@ -526,6 +534,10 @@ class SelectionAPI:
|
|||
Global.canvas.selection.move_borders_start()
|
||||
else:
|
||||
Global.canvas.selection.transform_content_start()
|
||||
|
||||
if Global.canvas.selection.original_bitmap.is_empty(): # To avoid copying twice.
|
||||
Global.canvas.selection.original_bitmap.copy_from(Global.current_project.selection_map)
|
||||
|
||||
Global.canvas.selection.big_bounding_rectangle.size = new_size
|
||||
Global.canvas.selection.resize_selection()
|
||||
Global.canvas.selection.move_borders_end()
|
||||
|
@ -678,6 +690,11 @@ class ExportAPI:
|
|||
# gdlint: ignore=constant-name
|
||||
const ExportTab := Export.ExportTab
|
||||
|
||||
## Returns the Export autoload.
|
||||
## Allows interacting with the export workflow on a more deeper level.
|
||||
func autoload() -> Export:
|
||||
return Export
|
||||
|
||||
## [param format_info] has keys: [code]extension[/code] and [code]description[/code]
|
||||
## whose values are of type [String] e.g:[codeblock]
|
||||
## format_info = {"extension": ".gif", "description": "GIF Image"}
|
||||
|
@ -730,6 +747,15 @@ class ExportAPI:
|
|||
|
||||
## Gives access to adding custom import options.
|
||||
class ImportAPI:
|
||||
## Returns the OpenSave autoload. Contains code to handle file loading.
|
||||
## It also contains code to handle project saving (.pxo)
|
||||
func open_save_autoload() -> OpenSave:
|
||||
return OpenSave
|
||||
|
||||
## Returns the Import autoload. Manages import of brushes and patterns.
|
||||
func import_autoload() -> Import:
|
||||
return Import
|
||||
|
||||
## [param import_scene] is a scene preload that will be instanced and added to "import options"
|
||||
## section of pixelorama's import dialogs and will appear whenever [param import_name] is
|
||||
## chosen from import menu.
|
||||
|
@ -757,6 +783,10 @@ class ImportAPI:
|
|||
|
||||
## Gives access to palette related stuff.
|
||||
class PaletteAPI:
|
||||
## Returns the Palettes autoload. Allows interacting with palettes on a more deeper level.
|
||||
func autoload() -> Palettes:
|
||||
return Palettes
|
||||
|
||||
## Creates and adds a new [Palette] with name [param palette_name] containing [param data].
|
||||
## [param data] is a [Dictionary] containing the palette information.
|
||||
## An example of [code]data[/code] will be:[codeblock]
|
||||
|
|
|
@ -71,7 +71,7 @@ enum EffectsMenu {
|
|||
SHADER
|
||||
}
|
||||
## Enumeration of items present in the Select Menu.
|
||||
enum SelectMenu { SELECT_ALL, CLEAR_SELECTION, INVERT, TILE_MODE }
|
||||
enum SelectMenu { SELECT_ALL, CLEAR_SELECTION, INVERT, TILE_MODE, MODIFY }
|
||||
## Enumeration of items present in the Help Menu.
|
||||
enum HelpMenu {
|
||||
VIEW_SPLASH_SCREEN,
|
||||
|
|
|
@ -4,7 +4,7 @@ signal palette_selected(palette_name: String)
|
|||
signal new_palette_created
|
||||
signal new_palette_imported
|
||||
|
||||
enum SortOptions { NEW_PALETTE, REVERSE, HUE, SATURATION, VALUE, RED, GREEN, BLUE, ALPHA }
|
||||
enum SortOptions {NEW_PALETTE, REVERSE, HUE, SATURATION, VALUE, LIGHTNESS, RED, GREEN, BLUE, ALPHA}
|
||||
## Presets for creating a new palette
|
||||
enum NewPalettePresetType {EMPTY, FROM_CURRENT_PALETTE, FROM_CURRENT_SPRITE, FROM_CURRENT_SELECTION}
|
||||
## Color options when user creates a new palette from current sprite or selection
|
||||
|
|
|
@ -3,6 +3,7 @@ class_name Project
|
|||
extends RefCounted
|
||||
## A class for project properties.
|
||||
|
||||
signal removed
|
||||
signal serialized(dict: Dictionary)
|
||||
signal about_to_deserialize(dict: Dictionary)
|
||||
signal resized
|
||||
|
@ -137,6 +138,7 @@ func remove() -> void:
|
|||
# Prevents memory leak (due to the layers' project reference stopping ref counting from freeing)
|
||||
layers.clear()
|
||||
Global.projects.erase(self)
|
||||
removed.emit()
|
||||
|
||||
|
||||
func remove_backup_file() -> void:
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
class_name SelectionMap
|
||||
extends Image
|
||||
|
||||
var invert_shader := preload("res://src/Shaders/Effects/Invert.gdshader")
|
||||
const INVERT_SHADER := preload("res://src/Shaders/Effects/Invert.gdshader")
|
||||
const OUTLINE_INLINE_SHADER := preload("res://src/Shaders/Effects/OutlineInline.gdshader")
|
||||
|
||||
|
||||
func is_pixel_selected(pixel: Vector2i, calculate_offset := true) -> bool:
|
||||
|
@ -87,8 +88,7 @@ func clear() -> void:
|
|||
func invert() -> void:
|
||||
var params := {"red": true, "green": true, "blue": true, "alpha": true}
|
||||
var gen := ShaderImageEffect.new()
|
||||
gen.generate_image(self, invert_shader, params, get_size())
|
||||
self.convert(Image.FORMAT_LA8)
|
||||
gen.generate_image(self, INVERT_SHADER, params, get_size())
|
||||
|
||||
|
||||
## Returns a copy of itself that is cropped to [param size].
|
||||
|
@ -183,3 +183,36 @@ func resize_bitmap_values(
|
|||
if new_bitmap_size != size:
|
||||
crop(new_bitmap_size.x, new_bitmap_size.y)
|
||||
blit_rect(smaller_image, Rect2i(Vector2i.ZERO, new_bitmap_size), dst)
|
||||
|
||||
|
||||
func expand(width: int, brush: int) -> void:
|
||||
var params := {
|
||||
"color": Color(1, 1, 1, 1),
|
||||
"width": width,
|
||||
"brush": brush,
|
||||
}
|
||||
var gen := ShaderImageEffect.new()
|
||||
gen.generate_image(self, OUTLINE_INLINE_SHADER, params, get_size())
|
||||
|
||||
|
||||
func shrink(width: int, brush: int) -> void:
|
||||
var params := {
|
||||
"color": Color(0),
|
||||
"width": width,
|
||||
"brush": brush,
|
||||
"inside": true,
|
||||
}
|
||||
var gen := ShaderImageEffect.new()
|
||||
gen.generate_image(self, OUTLINE_INLINE_SHADER, params, get_size())
|
||||
|
||||
|
||||
func border(width: int, brush: int) -> void:
|
||||
var params := {
|
||||
"color": Color(1, 1, 1, 1),
|
||||
"width": width,
|
||||
"brush": brush,
|
||||
"inside": true,
|
||||
"keep_border_only": true,
|
||||
}
|
||||
var gen := ShaderImageEffect.new()
|
||||
gen.generate_image(self, OUTLINE_INLINE_SHADER, params, get_size())
|
||||
|
|
|
@ -54,7 +54,7 @@ func generate_image(img: Image, shader: Shader, params: Dictionary, size: Vector
|
|||
RenderingServer.free_rid(ci_rid)
|
||||
RenderingServer.free_rid(mat_rid)
|
||||
RenderingServer.free_rid(texture)
|
||||
viewport_texture.convert(Image.FORMAT_RGBA8)
|
||||
viewport_texture.convert(img.get_format())
|
||||
img.copy_from(viewport_texture)
|
||||
if resized_width:
|
||||
img.crop(img.get_width() - 1, img.get_height())
|
||||
|
|
|
@ -148,13 +148,13 @@ static func create_ui_for_shader_uniforms(
|
|||
|
||||
if u_value != "":
|
||||
slider.value = int(u_value)
|
||||
slider.min_value = min_value
|
||||
slider.max_value = max_value
|
||||
slider.step = step
|
||||
if params.has(u_name):
|
||||
slider.value = params[u_name]
|
||||
else:
|
||||
params[u_name] = slider.value
|
||||
slider.min_value = min_value
|
||||
slider.max_value = max_value
|
||||
slider.step = step
|
||||
slider.value_changed.connect(value_changed.bind(u_name))
|
||||
slider.mouse_default_cursor_shape = Control.CURSOR_POINTING_HAND
|
||||
hbox.add_child(slider)
|
||||
|
|
18
src/Main.gd
18
src/Main.gd
|
@ -250,16 +250,10 @@ func _handle_layout_files() -> void:
|
|||
func _setup_application_window_size() -> void:
|
||||
if DisplayServer.get_name() == "headless":
|
||||
return
|
||||
var root := get_tree().root
|
||||
root.content_scale_aspect = Window.CONTENT_SCALE_ASPECT_IGNORE
|
||||
root.content_scale_mode = Window.CONTENT_SCALE_MODE_DISABLED
|
||||
# Set a minimum window size to prevent UI elements from collapsing on each other.
|
||||
root.min_size = Vector2(1024, 576)
|
||||
root.content_scale_factor = Global.shrink
|
||||
set_display_scale()
|
||||
if Global.font_size != theme.default_font_size:
|
||||
theme.default_font_size = Global.font_size
|
||||
theme.set_font_size("font_size", "HeaderSmall", Global.font_size + 2)
|
||||
set_custom_cursor()
|
||||
|
||||
if OS.get_name() == "Web":
|
||||
return
|
||||
|
@ -280,6 +274,16 @@ func _setup_application_window_size() -> void:
|
|||
get_window().size = Global.config_cache.get_value("window", "size")
|
||||
|
||||
|
||||
func set_display_scale() -> void:
|
||||
var root := get_window()
|
||||
root.content_scale_aspect = Window.CONTENT_SCALE_ASPECT_IGNORE
|
||||
root.content_scale_mode = Window.CONTENT_SCALE_MODE_DISABLED
|
||||
# Set a minimum window size to prevent UI elements from collapsing on each other.
|
||||
root.min_size = Vector2(1024, 576)
|
||||
root.content_scale_factor = Global.shrink
|
||||
set_custom_cursor()
|
||||
|
||||
|
||||
func set_custom_cursor() -> void:
|
||||
if Global.native_cursors:
|
||||
return
|
||||
|
|
|
@ -287,6 +287,38 @@ func sort(option: Palettes.SortOptions) -> void:
|
|||
sort_method = func(a: PaletteColor, b: PaletteColor): return a.color.s < b.color.s
|
||||
Palettes.SortOptions.VALUE:
|
||||
sort_method = func(a: PaletteColor, b: PaletteColor): return a.color.v < b.color.v
|
||||
Palettes.SortOptions.LIGHTNESS:
|
||||
# Code inspired from:
|
||||
# gdlint: ignore=max-line-length
|
||||
# https://github.com/bottosson/bottosson.github.io/blob/master/misc/colorpicker/colorconversion.js#L519
|
||||
sort_method = func(a: PaletteColor, b: PaletteColor):
|
||||
# function that returns OKHSL lightness
|
||||
var lum: Callable = func(c: Color):
|
||||
var l = 0.4122214708 * (c.r) + 0.5363325363 * (c.g) + 0.0514459929 * (c.b)
|
||||
var m = 0.2119034982 * (c.r) + 0.6806995451 * (c.g) + 0.1073969566 * (c.b)
|
||||
var s = 0.0883024619 * (c.r) + 0.2817188376 * (c.g) + 0.6299787005 * (c.b)
|
||||
var l_cr = pow(l, 1 / 3.0)
|
||||
var m_cr = pow(m, 1 / 3.0)
|
||||
var s_cr = pow(s, 1 / 3.0)
|
||||
var oklab_l = 0.2104542553 * l_cr + 0.7936177850 * m_cr - 0.0040720468 * s_cr
|
||||
# calculating toe
|
||||
var k_1 = 0.206
|
||||
var k_2 = 0.03
|
||||
var k_3 = (1 + k_1) / (1 + k_2)
|
||||
return (
|
||||
0.5
|
||||
* (
|
||||
k_3 * oklab_l
|
||||
- k_1
|
||||
+ sqrt(
|
||||
(
|
||||
(k_3 * oklab_l - k_1) * (k_3 * oklab_l - k_1)
|
||||
+ 4 * k_2 * k_3 * oklab_l
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
return lum.call(a.color.srgb_to_linear()) < lum.call(b.color.srgb_to_linear())
|
||||
Palettes.SortOptions.RED:
|
||||
sort_method = func(a: PaletteColor, b: PaletteColor): return a.color.r < b.color.r
|
||||
Palettes.SortOptions.GREEN:
|
||||
|
|
|
@ -49,6 +49,8 @@ func _ready() -> void:
|
|||
sort_button_popup.add_item("Sort by saturation", Palettes.SortOptions.SATURATION)
|
||||
sort_button_popup.add_item("Sort by value", Palettes.SortOptions.VALUE)
|
||||
sort_button_popup.add_separator()
|
||||
sort_button_popup.add_item("Sort by lightness", Palettes.SortOptions.LIGHTNESS)
|
||||
sort_button_popup.add_separator()
|
||||
sort_button_popup.add_item("Sort by red", Palettes.SortOptions.RED)
|
||||
sort_button_popup.add_item("Sort by green", Palettes.SortOptions.GREEN)
|
||||
sort_button_popup.add_item("Sort by blue", Palettes.SortOptions.BLUE)
|
||||
|
|
|
@ -90,3 +90,4 @@ func _on_PaletteScroll_gui_input(event: InputEvent) -> void:
|
|||
return
|
||||
resize_grid()
|
||||
set_sliders(palette_grid.current_palette, palette_grid.grid_window_origin + scroll_vector)
|
||||
get_window().set_input_as_handled()
|
||||
|
|
|
@ -413,12 +413,7 @@ func _on_List_item_selected(index: int) -> void:
|
|||
|
||||
|
||||
func _on_shrink_apply_button_pressed() -> void:
|
||||
var root := get_tree().root
|
||||
root.content_scale_aspect = Window.CONTENT_SCALE_ASPECT_IGNORE
|
||||
root.content_scale_mode = Window.CONTENT_SCALE_MODE_DISABLED
|
||||
root.min_size = Vector2(1024, 576)
|
||||
root.content_scale_factor = Global.shrink
|
||||
Global.control.set_custom_cursor()
|
||||
Global.control.set_display_scale()
|
||||
hide()
|
||||
popup_centered(Vector2(600, 400))
|
||||
Global.dialog_open(true)
|
||||
|
|
|
@ -4,9 +4,10 @@ render_mode unshaded;
|
|||
|
||||
uniform vec4 color : source_color = vec4(1.0);
|
||||
uniform float width : hint_range(0, 10, 1) = 1.0;
|
||||
// uniform_data pattern type:: OptionButton [Diamond||Circle||Square]
|
||||
uniform int pattern : hint_range(0, 2) = 0;
|
||||
// uniform_data brush type:: OptionButton [Diamond||Circle||Square]
|
||||
uniform int brush : hint_range(0, 2) = 0;
|
||||
uniform bool inside = false;
|
||||
uniform bool keep_border_only = false;
|
||||
uniform sampler2D selection : filter_nearest;
|
||||
|
||||
bool is_zero_approx(float num) {
|
||||
|
@ -17,11 +18,11 @@ bool has_contrary_neighbour(vec2 uv, vec2 texture_pixel_size, sampler2D tex) {
|
|||
for (float i = -ceil(width); i <= ceil(width); i++) {
|
||||
float offset;
|
||||
|
||||
if (pattern == 0) {
|
||||
if (brush == 0) {
|
||||
offset = width - abs(i);
|
||||
} else if (pattern == 1) {
|
||||
} else if (brush == 1) {
|
||||
offset = floor(sqrt(pow(width + 0.5, 2) - i * i));
|
||||
} else if (pattern == 2) {
|
||||
} else if (brush == 2) {
|
||||
offset = width;
|
||||
}
|
||||
|
||||
|
@ -44,7 +45,15 @@ void fragment() {
|
|||
|
||||
if ((output.a > 0.0) == inside && has_contrary_neighbour(UV, TEXTURE_PIXEL_SIZE, TEXTURE)) {
|
||||
output.rgb = inside ? mix(output.rgb, color.rgb, color.a) : color.rgb;
|
||||
output.a += (1.0 - output.a) * color.a;
|
||||
if (is_zero_approx(color.a)) {
|
||||
output.a = color.a;
|
||||
}
|
||||
else {
|
||||
output.a += (1.0 - output.a) * color.a;
|
||||
}
|
||||
}
|
||||
else if (keep_border_only) {
|
||||
output.a = 0.0;
|
||||
}
|
||||
|
||||
COLOR = mix(original_color, output, selection_color.a);
|
||||
|
|
|
@ -1,8 +1,11 @@
|
|||
extends BaseTool
|
||||
|
||||
const IMAGE_BRUSHES := [Brushes.FILE, Brushes.RANDOM_FILE, Brushes.CUSTOM]
|
||||
|
||||
var _brush := Brushes.get_default_brush()
|
||||
var _brush_size := 1
|
||||
var _brush_size_dynamics := 1
|
||||
var _brush_density := 100
|
||||
var _brush_flip_x := false
|
||||
var _brush_flip_y := false
|
||||
var _brush_rotate_90 := false
|
||||
|
@ -89,6 +92,12 @@ func _reset_dynamics() -> void:
|
|||
save_config()
|
||||
|
||||
|
||||
func _on_density_value_slider_value_changed(value: int) -> void:
|
||||
_brush_density = value
|
||||
update_config()
|
||||
save_config()
|
||||
|
||||
|
||||
func _on_InterpolateFactor_value_changed(value: float) -> void:
|
||||
_brush_interpolate = int(value)
|
||||
update_config()
|
||||
|
@ -111,6 +120,7 @@ func get_config() -> Dictionary:
|
|||
"brush_type": _brush.type,
|
||||
"brush_index": _brush.index,
|
||||
"brush_size": _brush_size,
|
||||
"brush_density": _brush_density,
|
||||
"brush_interpolate": _brush_interpolate,
|
||||
"brush_flip_x": _brush_flip_x,
|
||||
"brush_flip_y": _brush_flip_y,
|
||||
|
@ -128,6 +138,7 @@ func set_config(config: Dictionary) -> void:
|
|||
_brush_size_dynamics = _brush_size
|
||||
if Tools.dynamics_size != Tools.Dynamics.NONE:
|
||||
_brush_size_dynamics = Tools.brush_size_min
|
||||
_brush_density = config.get("brush_density", _brush_density)
|
||||
_brush_interpolate = config.get("brush_interpolate", _brush_interpolate)
|
||||
_brush_flip_x = config.get("brush_flip_x", _brush_flip_x)
|
||||
_brush_flip_y = config.get("brush_flip_y", _brush_flip_y)
|
||||
|
@ -177,11 +188,13 @@ func update_brush() -> void:
|
|||
_brush_texture = ImageTexture.create_from_image(_brush_image)
|
||||
update_mirror_brush()
|
||||
_stroke_dimensions = _brush_image.get_size()
|
||||
_circle_tool_shortcut = []
|
||||
_indicator = _create_brush_indicator()
|
||||
_polylines = _create_polylines(_indicator)
|
||||
$Brush/Type/Texture.texture = _brush_texture
|
||||
$ColorInterpolation.visible = _brush.type in [Brushes.FILE, Brushes.RANDOM_FILE, Brushes.CUSTOM]
|
||||
$RotationOptions.visible = _brush.type in [Brushes.FILE, Brushes.RANDOM_FILE, Brushes.CUSTOM]
|
||||
$DensityValueSlider.visible = _brush.type not in IMAGE_BRUSHES
|
||||
$ColorInterpolation.visible = _brush.type in IMAGE_BRUSHES
|
||||
$RotationOptions.visible = _brush.type in IMAGE_BRUSHES
|
||||
|
||||
|
||||
func update_random_image() -> void:
|
||||
|
@ -273,6 +286,9 @@ func draw_tool(pos: Vector2i) -> void:
|
|||
|
||||
func draw_end(pos: Vector2i) -> void:
|
||||
super.draw_end(pos)
|
||||
_stroke_project = null
|
||||
_stroke_images = []
|
||||
_circle_tool_shortcut = []
|
||||
_brush_size_dynamics = _brush_size
|
||||
if Tools.dynamics_size != Tools.Dynamics.NONE:
|
||||
_brush_size_dynamics = Tools.brush_size_min
|
||||
|
@ -311,10 +327,6 @@ func _prepare_tool() -> void:
|
|||
# This may prevent a few tests when setting pixels
|
||||
_is_mask_size_zero = _mask.size() == 0
|
||||
match _brush.type:
|
||||
Brushes.CIRCLE:
|
||||
_prepare_circle_tool(false)
|
||||
Brushes.FILLED_CIRCLE:
|
||||
_prepare_circle_tool(true)
|
||||
Brushes.FILE, Brushes.RANDOM_FILE, Brushes.CUSTOM:
|
||||
# save _brush_image for safe keeping
|
||||
_brush_image = _create_blended_brush_image(_orignal_brush_image)
|
||||
|
@ -324,19 +336,6 @@ func _prepare_tool() -> void:
|
|||
_stroke_dimensions = _brush_image.get_size()
|
||||
|
||||
|
||||
func _prepare_circle_tool(fill: bool) -> void:
|
||||
var circle_tool_map := _create_circle_indicator(_brush_size_dynamics, fill)
|
||||
# Go through that BitMap and build an Array of the "displacement" from the center of the bits
|
||||
# that are true.
|
||||
var diameter := _brush_size_dynamics * 2 + 1
|
||||
for n in range(0, diameter):
|
||||
for m in range(0, diameter):
|
||||
if circle_tool_map.get_bitv(Vector2i(m, n)):
|
||||
_circle_tool_shortcut.append(
|
||||
Vector2i(m - _brush_size_dynamics, n - _brush_size_dynamics)
|
||||
)
|
||||
|
||||
|
||||
## Make sure to always have invoked _prepare_tool() before this. This computes the coordinates to be
|
||||
## drawn if it can (except for the generic brush, when it's actually drawing them)
|
||||
func _draw_tool(pos: Vector2) -> PackedVector2Array:
|
||||
|
@ -505,7 +504,7 @@ func draw_indicator(left: bool) -> void:
|
|||
|
||||
func draw_indicator_at(pos: Vector2i, offset: Vector2i, color: Color) -> void:
|
||||
var canvas: Node2D = Global.canvas.indicators
|
||||
if _brush.type in [Brushes.FILE, Brushes.RANDOM_FILE, Brushes.CUSTOM] and not _draw_line:
|
||||
if _brush.type in IMAGE_BRUSHES and not _draw_line:
|
||||
pos -= _brush_image.get_size() / 2
|
||||
pos -= offset
|
||||
canvas.draw_texture(_brush_texture, pos)
|
||||
|
@ -535,6 +534,8 @@ func _set_pixel(pos: Vector2i, ignore_mirroring := false) -> void:
|
|||
|
||||
|
||||
func _set_pixel_no_cache(pos: Vector2i, ignore_mirroring := false) -> void:
|
||||
if randi() % 100 >= _brush_density:
|
||||
return
|
||||
pos = _stroke_project.tiles.get_canon_position(pos)
|
||||
if Global.current_project.has_selection:
|
||||
pos = Global.current_project.selection_map.get_canon_position(pos)
|
||||
|
@ -619,10 +620,24 @@ func _create_pixel_indicator(brush_size: int) -> BitMap:
|
|||
|
||||
|
||||
func _create_circle_indicator(brush_size: int, fill := false) -> BitMap:
|
||||
_circle_tool_shortcut = []
|
||||
if Tools.dynamics_size != Tools.Dynamics.NONE:
|
||||
_circle_tool_shortcut = []
|
||||
var brush_size_v2 := Vector2i(brush_size, brush_size)
|
||||
var diameter := brush_size_v2 * 2 + Vector2i.ONE
|
||||
return _fill_bitmap_with_points(_compute_draw_tool_circle(brush_size_v2, fill), diameter)
|
||||
var diameter_v2 := brush_size_v2 * 2 + Vector2i.ONE
|
||||
var circle_tool_map := _fill_bitmap_with_points(
|
||||
_compute_draw_tool_circle(brush_size_v2, fill), diameter_v2
|
||||
)
|
||||
if _circle_tool_shortcut.is_empty():
|
||||
# Go through that BitMap and build an Array of the "displacement"
|
||||
# from the center of the bits that are true.
|
||||
var diameter := _brush_size_dynamics * 2 + 1
|
||||
for n in range(0, diameter):
|
||||
for m in range(0, diameter):
|
||||
if circle_tool_map.get_bitv(Vector2i(m, n)):
|
||||
_circle_tool_shortcut.append(
|
||||
Vector2i(m - _brush_size_dynamics, n - _brush_size_dynamics)
|
||||
)
|
||||
return circle_tool_map
|
||||
|
||||
|
||||
func _create_line_indicator(indicator: BitMap, start: Vector2i, end: Vector2i) -> BitMap:
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
[gd_scene load_steps=8 format=3 uid="uid://ubyatap3sylf"]
|
||||
[gd_scene load_steps=9 format=3 uid="uid://ubyatap3sylf"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://yjhp0ssng2mp" path="res://src/UI/Nodes/ValueSlider.tscn" id="1"]
|
||||
[ext_resource type="PackedScene" uid="uid://ctfgfelg0sho8" path="res://src/Tools/BaseTool.tscn" id="2"]
|
||||
[ext_resource type="Script" path="res://src/Tools/BaseDraw.gd" id="3"]
|
||||
[ext_resource type="Script" path="res://src/UI/Nodes/CollapsibleContainer.gd" id="3_76bek"]
|
||||
[ext_resource type="Script" path="res://src/UI/Nodes/ValueSlider.gd" id="5_kdxku"]
|
||||
|
||||
[sub_resource type="ButtonGroup" id="ButtonGroup_7u3x0"]
|
||||
resource_name = "rotate"
|
||||
|
@ -130,7 +131,25 @@ suffix = "px"
|
|||
global_increment_action = "brush_size_increment"
|
||||
global_decrement_action = "brush_size_decrement"
|
||||
|
||||
[node name="ColorInterpolation" parent="." index="4" instance=ExtResource("1")]
|
||||
[node name="DensityValueSlider" type="TextureProgressBar" parent="." index="4"]
|
||||
visible = false
|
||||
custom_minimum_size = Vector2(0, 24)
|
||||
layout_mode = 2
|
||||
focus_mode = 2
|
||||
mouse_default_cursor_shape = 2
|
||||
theme_type_variation = &"ValueSlider"
|
||||
min_value = 1.0
|
||||
value = 100.0
|
||||
nine_patch_stretch = true
|
||||
stretch_margin_left = 3
|
||||
stretch_margin_top = 3
|
||||
stretch_margin_right = 3
|
||||
stretch_margin_bottom = 3
|
||||
script = ExtResource("5_kdxku")
|
||||
prefix = "Density:"
|
||||
suffix = "%"
|
||||
|
||||
[node name="ColorInterpolation" parent="." index="5" instance=ExtResource("1")]
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
tooltip_text = "0: Color from the brush itself, 100: the currently selected color"
|
||||
|
@ -143,4 +162,5 @@ prefix = "Brush color from:"
|
|||
[connection signal="toggled" from="RotationOptions/GridContainer/Rotate/Rotate270" to="." method="_on_rotate_270_toggled"]
|
||||
[connection signal="pressed" from="Brush/Type" to="." method="_on_BrushType_pressed"]
|
||||
[connection signal="value_changed" from="Brush/BrushSize" to="." method="_on_BrushSize_value_changed"]
|
||||
[connection signal="value_changed" from="DensityValueSlider" to="." method="_on_density_value_slider_value_changed"]
|
||||
[connection signal="value_changed" from="ColorInterpolation" to="." method="_on_InterpolateFactor_value_changed"]
|
||||
|
|
|
@ -22,7 +22,8 @@ var _intersect := false ## Shift + Ctrl + Mouse Click
|
|||
var _content_transformation_check := false
|
||||
var _skip_slider_logic := false
|
||||
|
||||
@onready var selection_node: Node2D = Global.canvas.selection
|
||||
@onready var selection_node := Global.canvas.selection
|
||||
@onready var confirm_buttons := $ConfirmButtons as HBoxContainer
|
||||
@onready var position_sliders := $Position as ValueSliderV2
|
||||
@onready var size_sliders := $Size as ValueSliderV2
|
||||
@onready var timer := $Timer as Timer
|
||||
|
@ -30,11 +31,17 @@ var _skip_slider_logic := false
|
|||
|
||||
func _ready() -> void:
|
||||
super._ready()
|
||||
set_confirm_buttons_visibility()
|
||||
set_spinbox_values()
|
||||
refresh_options()
|
||||
selection_node.is_moving_content_changed.connect(set_confirm_buttons_visibility)
|
||||
|
||||
|
||||
## Ensure all items are added when we are selecting an option (bad things will happen otherwise)
|
||||
func set_confirm_buttons_visibility() -> void:
|
||||
confirm_buttons.visible = selection_node.is_moving_content
|
||||
|
||||
|
||||
## Ensure all items are added when we are selecting an option.
|
||||
func refresh_options() -> void:
|
||||
$Modes.clear()
|
||||
$Modes.add_item("Replace selection")
|
||||
|
@ -203,6 +210,16 @@ func apply_selection(_position: Vector2i) -> void:
|
|||
_intersect = true
|
||||
|
||||
|
||||
func _on_confirm_button_pressed() -> void:
|
||||
if selection_node.is_moving_content:
|
||||
selection_node.transform_content_confirm()
|
||||
|
||||
|
||||
func _on_cancel_button_pressed() -> void:
|
||||
if selection_node.is_moving_content:
|
||||
selection_node.transform_content_cancel()
|
||||
|
||||
|
||||
func _on_Modes_item_selected(index: int) -> void:
|
||||
_mode_selected = index
|
||||
save_config()
|
||||
|
|
|
@ -1,34 +1,85 @@
|
|||
[gd_scene load_steps=4 format=3 uid="uid://bd62qfjn380wf"]
|
||||
[gd_scene load_steps=10 format=3 uid="uid://bd62qfjn380wf"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://ctfgfelg0sho8" path="res://src/Tools/BaseTool.tscn" id="1"]
|
||||
[ext_resource type="Script" path="res://src/Tools/BaseSelectionTool.gd" id="2"]
|
||||
[ext_resource type="Texture2D" uid="uid://d267xalp3p7ru" path="res://assets/graphics/misc/check_plain.png" id="3_mtv71"]
|
||||
[ext_resource type="PackedScene" path="res://src/UI/Nodes/ValueSliderV2.tscn" id="4"]
|
||||
[ext_resource type="Texture2D" uid="uid://bnc78807k1xjv" path="res://assets/graphics/misc/close.png" id="4_ad04n"]
|
||||
|
||||
[sub_resource type="InputEventAction" id="InputEventAction_gfv4x"]
|
||||
action = &"transformation_confirm"
|
||||
|
||||
[sub_resource type="Shortcut" id="Shortcut_5gq73"]
|
||||
events = [SubResource("InputEventAction_gfv4x")]
|
||||
|
||||
[sub_resource type="InputEventAction" id="InputEventAction_nadbx"]
|
||||
action = &"transformation_cancel"
|
||||
|
||||
[sub_resource type="Shortcut" id="Shortcut_04tjd"]
|
||||
events = [SubResource("InputEventAction_nadbx")]
|
||||
|
||||
[node name="ToolOptions" instance=ExtResource("1")]
|
||||
script = ExtResource("2")
|
||||
|
||||
[node name="ModeLabel" type="Label" parent="." index="2"]
|
||||
[node name="ConfirmButtons" type="HBoxContainer" parent="." index="2"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="ConfirmButton" type="Button" parent="ConfirmButtons" index="0"]
|
||||
custom_minimum_size = Vector2(0, 26)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
mouse_default_cursor_shape = 2
|
||||
shortcut = SubResource("Shortcut_5gq73")
|
||||
|
||||
[node name="TextureRect" type="TextureRect" parent="ConfirmButtons/ConfirmButton" index="0" groups=["UIButtons"]]
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
texture = ExtResource("3_mtv71")
|
||||
stretch_mode = 3
|
||||
|
||||
[node name="CancelButton" type="Button" parent="ConfirmButtons" index="1"]
|
||||
custom_minimum_size = Vector2(0, 26)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
mouse_default_cursor_shape = 2
|
||||
shortcut = SubResource("Shortcut_04tjd")
|
||||
|
||||
[node name="TextureRect" type="TextureRect" parent="ConfirmButtons/CancelButton" index="0" groups=["UIButtons"]]
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
texture = ExtResource("4_ad04n")
|
||||
stretch_mode = 3
|
||||
|
||||
[node name="ModeLabel" type="Label" parent="." index="3"]
|
||||
layout_mode = 2
|
||||
text = "Mode:"
|
||||
|
||||
[node name="Modes" type="OptionButton" parent="." index="3"]
|
||||
[node name="Modes" type="OptionButton" parent="." index="4"]
|
||||
layout_mode = 2
|
||||
mouse_default_cursor_shape = 2
|
||||
|
||||
[node name="PositionLabel" type="Label" parent="." index="4"]
|
||||
[node name="PositionLabel" type="Label" parent="." index="5"]
|
||||
layout_mode = 2
|
||||
text = "Position:"
|
||||
|
||||
[node name="Position" parent="." index="5" instance=ExtResource("4")]
|
||||
[node name="Position" parent="." index="6" instance=ExtResource("4")]
|
||||
layout_mode = 2
|
||||
allow_greater = true
|
||||
allow_lesser = true
|
||||
|
||||
[node name="SizeLabel" type="Label" parent="." index="6"]
|
||||
[node name="SizeLabel" type="Label" parent="." index="7"]
|
||||
layout_mode = 2
|
||||
text = "Size:"
|
||||
|
||||
[node name="Size" parent="." index="7" instance=ExtResource("4")]
|
||||
[node name="Size" parent="." index="8" instance=ExtResource("4")]
|
||||
layout_mode = 2
|
||||
value = Vector2(1, 1)
|
||||
min_value = Vector2(1, 1)
|
||||
|
@ -37,10 +88,12 @@ show_ratio = true
|
|||
prefix_x = "Width:"
|
||||
prefix_y = "Height:"
|
||||
|
||||
[node name="Timer" type="Timer" parent="." index="8"]
|
||||
[node name="Timer" type="Timer" parent="." index="9"]
|
||||
wait_time = 0.2
|
||||
one_shot = true
|
||||
|
||||
[connection signal="pressed" from="ConfirmButtons/ConfirmButton" to="." method="_on_confirm_button_pressed"]
|
||||
[connection signal="pressed" from="ConfirmButtons/CancelButton" to="." method="_on_cancel_button_pressed"]
|
||||
[connection signal="item_selected" from="Modes" to="." method="_on_Modes_item_selected"]
|
||||
[connection signal="value_changed" from="Position" to="." method="_on_Position_value_changed"]
|
||||
[connection signal="ratio_toggled" from="Size" to="." method="_on_Size_ratio_toggled"]
|
||||
|
|
|
@ -92,8 +92,8 @@ func draw_move(pos_i: Vector2i) -> void:
|
|||
|
||||
func draw_end(pos: Vector2i) -> void:
|
||||
pos = snap_position(pos)
|
||||
super.draw_end(pos)
|
||||
if _picking_color:
|
||||
super.draw_end(pos)
|
||||
return
|
||||
|
||||
if _draw_line:
|
||||
|
@ -105,6 +105,7 @@ func draw_end(pos: Vector2i) -> void:
|
|||
draw_fill_gap(_line_start, _line_end)
|
||||
_draw_line = false
|
||||
|
||||
super.draw_end(pos)
|
||||
commit_undo()
|
||||
SteamManager.set_achievement("ACH_ERASE_PIXEL")
|
||||
cursor_text = ""
|
||||
|
|
|
@ -164,8 +164,8 @@ func draw_move(pos_i: Vector2i) -> void:
|
|||
|
||||
func draw_end(pos: Vector2i) -> void:
|
||||
pos = snap_position(pos)
|
||||
super.draw_end(pos)
|
||||
if _picking_color:
|
||||
super.draw_end(pos)
|
||||
return
|
||||
|
||||
if _draw_line:
|
||||
|
@ -194,6 +194,7 @@ func draw_end(pos: Vector2i) -> void:
|
|||
draw_tool(v)
|
||||
|
||||
_fill_inside_rect = Rect2i()
|
||||
super.draw_end(pos)
|
||||
commit_undo()
|
||||
cursor_text = ""
|
||||
update_random_image()
|
||||
|
|
|
@ -291,8 +291,8 @@ func draw_move(pos_i: Vector2i) -> void:
|
|||
|
||||
func draw_end(pos: Vector2i) -> void:
|
||||
pos = snap_position(pos)
|
||||
super.draw_end(pos)
|
||||
if _picking_color:
|
||||
super.draw_end(pos)
|
||||
return
|
||||
|
||||
if _draw_line:
|
||||
|
@ -304,6 +304,7 @@ func draw_end(pos: Vector2i) -> void:
|
|||
draw_fill_gap(_line_start, _line_end)
|
||||
_draw_line = false
|
||||
|
||||
super.draw_end(pos)
|
||||
commit_undo()
|
||||
cursor_text = ""
|
||||
update_random_image()
|
||||
|
|
|
@ -17,7 +17,7 @@ var layer_metadata_texture := ImageTexture.new()
|
|||
@onready var tile_mode := $TileMode as Node2D
|
||||
@onready var pixel_grid := $PixelGrid as Node2D
|
||||
@onready var grid := $Grid as Node2D
|
||||
@onready var selection := $Selection as Node2D
|
||||
@onready var selection := $Selection as SelectionNode
|
||||
@onready var onion_past := $OnionPast as Node2D
|
||||
@onready var onion_future := $OnionFuture as Node2D
|
||||
@onready var crop_rect := $CropRect as CropRect
|
||||
|
|
|
@ -1,5 +1,8 @@
|
|||
class_name SelectionNode
|
||||
extends Node2D
|
||||
|
||||
signal is_moving_content_changed
|
||||
|
||||
enum SelectionOperation { ADD, SUBTRACT, INTERSECT }
|
||||
const KEY_MOVE_ACTION_NAMES: PackedStringArray = [&"ui_up", &"ui_down", &"ui_left", &"ui_right"]
|
||||
const CLIPBOARD_FILE_PATH := "user://clipboard.txt"
|
||||
|
@ -7,7 +10,10 @@ const CLIPBOARD_FILE_PATH := "user://clipboard.txt"
|
|||
# flags (additional properties of selection that can be toggled)
|
||||
var flag_tilemode := false
|
||||
|
||||
var is_moving_content := false
|
||||
var is_moving_content := false:
|
||||
set(value):
|
||||
is_moving_content = value
|
||||
is_moving_content_changed.emit()
|
||||
var arrow_key_move := false
|
||||
var is_pasting := false
|
||||
var big_bounding_rectangle := Rect2i():
|
||||
|
@ -101,11 +107,10 @@ func _input(event: InputEvent) -> void:
|
|||
if Global.mirror_view:
|
||||
image_current_pixel.x = Global.current_project.size.x - image_current_pixel.x
|
||||
if is_moving_content:
|
||||
if Input.is_action_just_pressed("transformation_confirm"):
|
||||
if Input.is_action_just_pressed(&"transformation_confirm"):
|
||||
transform_content_confirm()
|
||||
elif Input.is_action_just_pressed("transformation_cancel"):
|
||||
elif Input.is_action_just_pressed(&"transformation_cancel"):
|
||||
transform_content_cancel()
|
||||
|
||||
if not project.layers[project.current_layer].can_layer_get_drawn():
|
||||
return
|
||||
if event is InputEventKey:
|
||||
|
|
|
@ -3,7 +3,7 @@ extends Node2D
|
|||
var tiles: Tiles
|
||||
var draw_center := false
|
||||
|
||||
@onready var canvas := get_parent() as Canvas
|
||||
@onready var canvas := Global.canvas
|
||||
|
||||
|
||||
func _draw() -> void:
|
||||
|
|
|
@ -31,7 +31,7 @@ func commit_action(cel: Image, project := Global.current_project) -> void:
|
|||
var params := {
|
||||
"color": color,
|
||||
"width": anim_thickness,
|
||||
"pattern": pattern,
|
||||
"brush": pattern,
|
||||
"inside": inside_image,
|
||||
"selection": selection_tex
|
||||
}
|
||||
|
|
|
@ -51,16 +51,15 @@ size_flags_horizontal = 3
|
|||
[node name="PatternLabel" type="Label" parent="VBoxContainer/OutlineOptions" index="4"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
text = "Pattern:"
|
||||
text = "Brush:"
|
||||
|
||||
[node name="PatternOptionButton" type="OptionButton" parent="VBoxContainer/OutlineOptions" index="5"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
mouse_default_cursor_shape = 2
|
||||
item_count = 3
|
||||
selected = 0
|
||||
item_count = 3
|
||||
popup/item_0/text = "Diamond"
|
||||
popup/item_0/id = 0
|
||||
popup/item_1/text = "Circle"
|
||||
popup/item_1/id = 1
|
||||
popup/item_2/text = "Square"
|
||||
|
|
43
src/UI/Dialogs/ModifySelection.gd
Normal file
43
src/UI/Dialogs/ModifySelection.gd
Normal file
|
@ -0,0 +1,43 @@
|
|||
extends ConfirmationDialog
|
||||
|
||||
enum Types { EXPAND, SHRINK, BORDER }
|
||||
|
||||
@export var type := Types.EXPAND:
|
||||
set(value):
|
||||
type = value
|
||||
if type == Types.EXPAND:
|
||||
title = "Expand Selection"
|
||||
elif type == Types.SHRINK:
|
||||
title = "Shrink Selection"
|
||||
else:
|
||||
title = "Border Selection"
|
||||
|
||||
@onready var width_slider: ValueSlider = $GridContainer/WidthSlider
|
||||
@onready var brush_option_button: OptionButton = $GridContainer/BrushOptionButton
|
||||
@onready var selection_node := Global.canvas.selection
|
||||
|
||||
|
||||
func _on_visibility_changed() -> void:
|
||||
if not visible:
|
||||
Global.dialog_open(false)
|
||||
|
||||
|
||||
func _on_confirmed() -> void:
|
||||
var project := Global.current_project
|
||||
if !project.has_selection:
|
||||
return
|
||||
selection_node.transform_content_confirm()
|
||||
var undo_data_tmp := selection_node.get_undo_data(false)
|
||||
var width: int = width_slider.value
|
||||
var brush := brush_option_button.selected
|
||||
project.selection_map.crop(project.size.x, project.size.y)
|
||||
if type == Types.EXPAND:
|
||||
project.selection_map.expand(width, brush)
|
||||
elif type == Types.SHRINK:
|
||||
project.selection_map.shrink(width, brush)
|
||||
else:
|
||||
project.selection_map.border(width, brush)
|
||||
selection_node.big_bounding_rectangle = project.selection_map.get_used_rect()
|
||||
project.selection_offset = Vector2.ZERO
|
||||
selection_node.commit_undo("Modify Selection", undo_data_tmp)
|
||||
selection_node.queue_redraw()
|
60
src/UI/Dialogs/ModifySelection.tscn
Normal file
60
src/UI/Dialogs/ModifySelection.tscn
Normal file
|
@ -0,0 +1,60 @@
|
|||
[gd_scene load_steps=3 format=3 uid="uid://wcbpnsm7gptu"]
|
||||
|
||||
[ext_resource type="Script" path="res://src/UI/Nodes/ValueSlider.gd" id="1_3jelw"]
|
||||
[ext_resource type="Script" path="res://src/UI/Dialogs/ModifySelection.gd" id="1_w6rs7"]
|
||||
|
||||
[node name="ModifySelection" type="ConfirmationDialog"]
|
||||
title = "Expand selection"
|
||||
position = Vector2i(0, 36)
|
||||
size = Vector2i(260, 130)
|
||||
script = ExtResource("1_w6rs7")
|
||||
|
||||
[node name="GridContainer" type="GridContainer" parent="."]
|
||||
offset_left = 8.0
|
||||
offset_top = 8.0
|
||||
offset_right = 252.0
|
||||
offset_bottom = 81.0
|
||||
columns = 2
|
||||
|
||||
[node name="WidthLabel" type="Label" parent="GridContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
text = "Width:"
|
||||
|
||||
[node name="WidthSlider" type="TextureProgressBar" parent="GridContainer"]
|
||||
custom_minimum_size = Vector2(0, 24)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
focus_mode = 2
|
||||
mouse_default_cursor_shape = 2
|
||||
theme_type_variation = &"ValueSlider"
|
||||
min_value = 1.0
|
||||
max_value = 25.0
|
||||
value = 1.0
|
||||
allow_greater = true
|
||||
nine_patch_stretch = true
|
||||
stretch_margin_left = 3
|
||||
stretch_margin_top = 3
|
||||
stretch_margin_right = 3
|
||||
stretch_margin_bottom = 3
|
||||
script = ExtResource("1_3jelw")
|
||||
|
||||
[node name="BrushLabel" type="Label" parent="GridContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
text = "Brush:"
|
||||
|
||||
[node name="BrushOptionButton" type="OptionButton" parent="GridContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
mouse_default_cursor_shape = 2
|
||||
selected = 0
|
||||
item_count = 3
|
||||
popup/item_0/text = "Diamond"
|
||||
popup/item_1/text = "Circle"
|
||||
popup/item_1/id = 1
|
||||
popup/item_2/text = "Square"
|
||||
popup/item_2/id = 2
|
||||
|
||||
[connection signal="confirmed" from="." to="." method="_on_confirmed"]
|
||||
[connection signal="visibility_changed" from="." to="." method="_on_visibility_changed"]
|
|
@ -1,11 +1,12 @@
|
|||
extends ConfirmationDialog
|
||||
|
||||
@onready var x_basis_x_spinbox: SpinBox = $VBoxContainer/HBoxContainer/OptionsContainer/XBasisX
|
||||
@onready var x_basis_y_spinbox: SpinBox = $VBoxContainer/HBoxContainer/OptionsContainer/XBasisY
|
||||
@onready var y_basis_x_spinbox: SpinBox = $VBoxContainer/HBoxContainer/OptionsContainer/YBasisX
|
||||
@onready var y_basis_y_spinbox: SpinBox = $VBoxContainer/HBoxContainer/OptionsContainer/YBasisY
|
||||
@onready var x_basis_label: Label = $VBoxContainer/OptionsContainer/XBasisLabel
|
||||
@onready var x_basis: ValueSliderV2 = $VBoxContainer/OptionsContainer/XBasis
|
||||
@onready var y_basis_label: Label = $VBoxContainer/OptionsContainer/YBasisLabel
|
||||
@onready var y_basis: ValueSliderV2 = $VBoxContainer/OptionsContainer/YBasis
|
||||
@onready var preview_rect: Control = $VBoxContainer/AspectRatioContainer/Preview
|
||||
@onready var tile_mode: Node2D = $VBoxContainer/AspectRatioContainer/Preview/TileMode
|
||||
@onready var masking: CheckButton = $VBoxContainer/OptionsContainer/Masking
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
|
@ -37,35 +38,25 @@ func _on_TileModeOffsetsDialog_about_to_show() -> void:
|
|||
tile_mode.tiles.mode = Global.current_project.tiles.mode
|
||||
tile_mode.tiles.x_basis = Global.current_project.tiles.x_basis
|
||||
tile_mode.tiles.y_basis = Global.current_project.tiles.y_basis
|
||||
x_basis_x_spinbox.value = tile_mode.tiles.x_basis.x
|
||||
x_basis_y_spinbox.value = tile_mode.tiles.x_basis.y
|
||||
y_basis_x_spinbox.value = tile_mode.tiles.y_basis.x
|
||||
y_basis_y_spinbox.value = tile_mode.tiles.y_basis.y
|
||||
x_basis.value = tile_mode.tiles.x_basis
|
||||
y_basis.value = tile_mode.tiles.y_basis
|
||||
|
||||
_show_options()
|
||||
if Global.current_project.tiles.mode == Tiles.MODE.X_AXIS:
|
||||
y_basis_x_spinbox.visible = false
|
||||
y_basis_y_spinbox.visible = false
|
||||
$VBoxContainer/HBoxContainer/OptionsContainer/YBasisXLabel.visible = false
|
||||
$VBoxContainer/HBoxContainer/OptionsContainer/YBasisYLabel.visible = false
|
||||
y_basis.visible = false
|
||||
y_basis_label.visible = false
|
||||
elif Global.current_project.tiles.mode == Tiles.MODE.Y_AXIS:
|
||||
x_basis_x_spinbox.visible = false
|
||||
x_basis_y_spinbox.visible = false
|
||||
$VBoxContainer/HBoxContainer/OptionsContainer/XBasisXLabel.visible = false
|
||||
$VBoxContainer/HBoxContainer/OptionsContainer/XBasisYLabel.visible = false
|
||||
x_basis.visible = false
|
||||
x_basis_label.visible = false
|
||||
|
||||
update_preview()
|
||||
|
||||
|
||||
func _show_options() -> void:
|
||||
x_basis_x_spinbox.visible = true
|
||||
x_basis_y_spinbox.visible = true
|
||||
y_basis_x_spinbox.visible = true
|
||||
y_basis_y_spinbox.visible = true
|
||||
$VBoxContainer/HBoxContainer/OptionsContainer/YBasisXLabel.visible = true
|
||||
$VBoxContainer/HBoxContainer/OptionsContainer/YBasisYLabel.visible = true
|
||||
$VBoxContainer/HBoxContainer/OptionsContainer/XBasisXLabel.visible = true
|
||||
$VBoxContainer/HBoxContainer/OptionsContainer/XBasisYLabel.visible = true
|
||||
x_basis.visible = true
|
||||
y_basis.visible = true
|
||||
x_basis_label.visible = true
|
||||
y_basis_label.visible = true
|
||||
|
||||
|
||||
func _on_TileModeOffsetsDialog_confirmed() -> void:
|
||||
|
@ -75,23 +66,13 @@ func _on_TileModeOffsetsDialog_confirmed() -> void:
|
|||
Global.transparent_checker.update_rect()
|
||||
|
||||
|
||||
func _on_XBasisX_value_changed(value: int) -> void:
|
||||
tile_mode.tiles.x_basis.x = value
|
||||
func _on_x_basis_value_changed(value: Vector2) -> void:
|
||||
tile_mode.tiles.x_basis = value
|
||||
update_preview()
|
||||
|
||||
|
||||
func _on_XBasisY_value_changed(value: int) -> void:
|
||||
tile_mode.tiles.x_basis.y = value
|
||||
update_preview()
|
||||
|
||||
|
||||
func _on_YBasisX_value_changed(value: int) -> void:
|
||||
tile_mode.tiles.y_basis.x = value
|
||||
update_preview()
|
||||
|
||||
|
||||
func _on_YBasisY_value_changed(value: int) -> void:
|
||||
tile_mode.tiles.y_basis.y = value
|
||||
func _on_y_basis_value_changed(value: Vector2) -> void:
|
||||
tile_mode.tiles.y_basis = value
|
||||
update_preview()
|
||||
|
||||
|
||||
|
@ -122,10 +103,17 @@ func _on_TileModeOffsetsDialog_size_changed() -> void:
|
|||
func _on_Reset_pressed() -> void:
|
||||
tile_mode.tiles.x_basis = Vector2i(Global.current_project.size.x, 0)
|
||||
tile_mode.tiles.y_basis = Vector2i(0, Global.current_project.size.y)
|
||||
x_basis_x_spinbox.value = Global.current_project.size.x
|
||||
x_basis_y_spinbox.value = 0
|
||||
y_basis_x_spinbox.value = 0
|
||||
y_basis_y_spinbox.value = Global.current_project.size.y
|
||||
x_basis.value = tile_mode.tiles.x_basis
|
||||
y_basis.value = tile_mode.tiles.y_basis
|
||||
update_preview()
|
||||
|
||||
|
||||
func _on_isometric_pressed() -> void:
|
||||
tile_mode.tiles.x_basis = Global.current_project.size / 2
|
||||
tile_mode.tiles.x_basis.y *= -1
|
||||
tile_mode.tiles.y_basis = Global.current_project.size / 2
|
||||
x_basis.value = tile_mode.tiles.x_basis
|
||||
y_basis.value = tile_mode.tiles.y_basis
|
||||
update_preview()
|
||||
|
||||
|
||||
|
@ -138,10 +126,7 @@ func change_mask() -> void:
|
|||
var tiles_size := tiles.tile_size
|
||||
var image := Image.create(tiles_size.x, tiles_size.y, false, Image.FORMAT_RGBA8)
|
||||
DrawingAlgos.blend_layers(image, current_frame)
|
||||
if (
|
||||
image.get_used_rect().size == Vector2i.ZERO
|
||||
or not $VBoxContainer/HBoxContainer/Masking.button_pressed
|
||||
):
|
||||
if image.get_used_rect().size == Vector2i.ZERO or not masking.button_pressed:
|
||||
tiles.reset_mask()
|
||||
else:
|
||||
load_mask(image)
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
[gd_scene load_steps=5 format=3 uid="uid://c0nuukjakmai2"]
|
||||
[gd_scene load_steps=6 format=3 uid="uid://c0nuukjakmai2"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://3pmb60gpst7b" path="res://src/UI/Nodes/TransparentChecker.tscn" id="1"]
|
||||
[ext_resource type="Script" path="res://src/UI/Canvas/TileMode.gd" id="2"]
|
||||
[ext_resource type="PackedScene" path="res://src/UI/Nodes/ValueSliderV2.tscn" id="2_ul2eq"]
|
||||
[ext_resource type="Script" path="res://src/UI/Dialogs/TileModeOffsetsDialog.gd" id="3"]
|
||||
|
||||
[sub_resource type="CanvasItemMaterial" id="1"]
|
||||
|
@ -10,83 +11,72 @@ blend_mode = 4
|
|||
[node name="TileModeOffsetsDialog" type="ConfirmationDialog"]
|
||||
canvas_item_default_texture_filter = 0
|
||||
title = "Tile Mode Offsets"
|
||||
position = Vector2i(0, 36)
|
||||
size = Vector2i(298, 536)
|
||||
script = ExtResource("3")
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="."]
|
||||
offset_left = 8.0
|
||||
offset_top = 8.0
|
||||
offset_right = 293.0
|
||||
offset_bottom = 386.0
|
||||
offset_right = 290.0
|
||||
offset_bottom = 487.0
|
||||
|
||||
[node name="TileModeOffsets" type="Label" parent="VBoxContainer"]
|
||||
layout_mode = 2
|
||||
text = "Tile Mode Offsets"
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="OptionsContainer" type="GridContainer" parent="VBoxContainer/HBoxContainer"]
|
||||
[node name="OptionsContainer" type="GridContainer" parent="VBoxContainer"]
|
||||
layout_mode = 2
|
||||
theme_override_constants/h_separation = 2
|
||||
theme_override_constants/v_separation = 4
|
||||
columns = 2
|
||||
|
||||
[node name="XBasisXLabel" type="Label" parent="VBoxContainer/HBoxContainer/OptionsContainer"]
|
||||
[node name="XBasisLabel" type="Label" parent="VBoxContainer/OptionsContainer"]
|
||||
layout_mode = 2
|
||||
text = "X-basis x:"
|
||||
size_flags_horizontal = 3
|
||||
text = "X-basis:"
|
||||
|
||||
[node name="XBasisX" type="SpinBox" parent="VBoxContainer/HBoxContainer/OptionsContainer"]
|
||||
[node name="XBasis" parent="VBoxContainer/OptionsContainer" instance=ExtResource("2_ul2eq")]
|
||||
layout_mode = 2
|
||||
mouse_default_cursor_shape = 2
|
||||
min_value = -16384.0
|
||||
max_value = 16384.0
|
||||
suffix = "px"
|
||||
size_flags_horizontal = 3
|
||||
allow_greater = true
|
||||
allow_lesser = true
|
||||
suffix_x = "px"
|
||||
suffix_y = "px"
|
||||
|
||||
[node name="XBasisYLabel" type="Label" parent="VBoxContainer/HBoxContainer/OptionsContainer"]
|
||||
[node name="YBasisLabel" type="Label" parent="VBoxContainer/OptionsContainer"]
|
||||
layout_mode = 2
|
||||
text = "X-basis y:"
|
||||
size_flags_horizontal = 3
|
||||
text = "Y-basis:"
|
||||
|
||||
[node name="XBasisY" type="SpinBox" parent="VBoxContainer/HBoxContainer/OptionsContainer"]
|
||||
[node name="YBasis" parent="VBoxContainer/OptionsContainer" instance=ExtResource("2_ul2eq")]
|
||||
layout_mode = 2
|
||||
mouse_default_cursor_shape = 2
|
||||
min_value = -16384.0
|
||||
max_value = 16384.0
|
||||
suffix = "px"
|
||||
size_flags_horizontal = 3
|
||||
allow_greater = true
|
||||
allow_lesser = true
|
||||
suffix_x = "px"
|
||||
suffix_y = "px"
|
||||
|
||||
[node name="YBasisXLabel" type="Label" parent="VBoxContainer/HBoxContainer/OptionsContainer"]
|
||||
[node name="MaskingLabel" type="Label" parent="VBoxContainer/OptionsContainer"]
|
||||
layout_mode = 2
|
||||
text = "Y-basis x:"
|
||||
text = "Masking:"
|
||||
|
||||
[node name="YBasisX" type="SpinBox" parent="VBoxContainer/HBoxContainer/OptionsContainer"]
|
||||
layout_mode = 2
|
||||
mouse_default_cursor_shape = 2
|
||||
min_value = -16384.0
|
||||
max_value = 16384.0
|
||||
suffix = "px"
|
||||
|
||||
[node name="YBasisYLabel" type="Label" parent="VBoxContainer/HBoxContainer/OptionsContainer"]
|
||||
layout_mode = 2
|
||||
text = "Y-basis y:"
|
||||
|
||||
[node name="YBasisY" type="SpinBox" parent="VBoxContainer/HBoxContainer/OptionsContainer"]
|
||||
layout_mode = 2
|
||||
mouse_default_cursor_shape = 2
|
||||
min_value = -16384.0
|
||||
max_value = 16384.0
|
||||
suffix = "px"
|
||||
|
||||
[node name="Reset" type="Button" parent="VBoxContainer/HBoxContainer/OptionsContainer"]
|
||||
layout_mode = 2
|
||||
mouse_default_cursor_shape = 2
|
||||
text = "Reset"
|
||||
|
||||
[node name="VSeparator" type="VSeparator" parent="VBoxContainer/HBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Masking" type="CheckButton" parent="VBoxContainer/HBoxContainer"]
|
||||
[node name="Masking" type="CheckButton" parent="VBoxContainer/OptionsContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 0
|
||||
text = "Masking"
|
||||
|
||||
[node name="Reset" type="Button" parent="VBoxContainer/OptionsContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
mouse_default_cursor_shape = 2
|
||||
text = "Default"
|
||||
|
||||
[node name="Isometric" type="Button" parent="VBoxContainer/OptionsContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
mouse_default_cursor_shape = 2
|
||||
text = "Isometric"
|
||||
|
||||
[node name="AspectRatioContainer" type="AspectRatioContainer" parent="VBoxContainer"]
|
||||
layout_mode = 2
|
||||
|
@ -111,9 +101,8 @@ anchor_bottom = 1.0
|
|||
[connection signal="confirmed" from="." to="." method="_on_TileModeOffsetsDialog_confirmed"]
|
||||
[connection signal="size_changed" from="." to="." method="_on_TileModeOffsetsDialog_size_changed"]
|
||||
[connection signal="visibility_changed" from="." to="." method="_on_TileModeOffsetsDialog_visibility_changed"]
|
||||
[connection signal="value_changed" from="VBoxContainer/HBoxContainer/OptionsContainer/XBasisX" to="." method="_on_XBasisX_value_changed"]
|
||||
[connection signal="value_changed" from="VBoxContainer/HBoxContainer/OptionsContainer/XBasisY" to="." method="_on_XBasisY_value_changed"]
|
||||
[connection signal="value_changed" from="VBoxContainer/HBoxContainer/OptionsContainer/YBasisX" to="." method="_on_YBasisX_value_changed"]
|
||||
[connection signal="value_changed" from="VBoxContainer/HBoxContainer/OptionsContainer/YBasisY" to="." method="_on_YBasisY_value_changed"]
|
||||
[connection signal="pressed" from="VBoxContainer/HBoxContainer/OptionsContainer/Reset" to="." method="_on_Reset_pressed"]
|
||||
[connection signal="toggled" from="VBoxContainer/HBoxContainer/Masking" to="." method="_on_Masking_toggled"]
|
||||
[connection signal="value_changed" from="VBoxContainer/OptionsContainer/XBasis" to="." method="_on_x_basis_value_changed"]
|
||||
[connection signal="value_changed" from="VBoxContainer/OptionsContainer/YBasis" to="." method="_on_y_basis_value_changed"]
|
||||
[connection signal="toggled" from="VBoxContainer/OptionsContainer/Masking" to="." method="_on_Masking_toggled"]
|
||||
[connection signal="pressed" from="VBoxContainer/OptionsContainer/Reset" to="." method="_on_Reset_pressed"]
|
||||
[connection signal="pressed" from="VBoxContainer/OptionsContainer/Isometric" to="." method="_on_isometric_pressed"]
|
||||
|
|
|
@ -80,15 +80,21 @@ func _notification(what: int) -> void:
|
|||
_reset_display(false)
|
||||
|
||||
|
||||
func _input(event: InputEvent) -> void:
|
||||
func _unhandled_input(event: InputEvent) -> void:
|
||||
if not editable or not is_visible_in_tree():
|
||||
return
|
||||
if event.is_action_pressed(global_increment_action, true):
|
||||
if (
|
||||
not global_increment_action.is_empty()
|
||||
and event.is_action_pressed(global_increment_action, true)
|
||||
):
|
||||
if snap_by_default:
|
||||
value += step if event.ctrl_pressed else snap_step
|
||||
else:
|
||||
value += snap_step if event.ctrl_pressed else step
|
||||
elif event.is_action_pressed(global_decrement_action, true):
|
||||
elif (
|
||||
not global_decrement_action.is_empty()
|
||||
and event.is_action_pressed(global_decrement_action, true)
|
||||
):
|
||||
if snap_by_default:
|
||||
value -= step if event.ctrl_pressed else snap_step
|
||||
else:
|
||||
|
@ -108,11 +114,13 @@ func _gui_input(event: InputEvent) -> void:
|
|||
value += step if event.ctrl_pressed else snap_step
|
||||
else:
|
||||
value += snap_step if event.ctrl_pressed else step
|
||||
get_viewport().set_input_as_handled()
|
||||
elif event.button_index == MOUSE_BUTTON_WHEEL_DOWN:
|
||||
if snap_by_default:
|
||||
value -= step if event.ctrl_pressed else snap_step
|
||||
else:
|
||||
value -= snap_step if event.ctrl_pressed else step
|
||||
get_viewport().set_input_as_handled()
|
||||
elif state == HELD:
|
||||
if event.is_action_released("left_mouse"):
|
||||
state = TYPING
|
||||
|
|
|
@ -1,17 +1,17 @@
|
|||
class_name RecorderPanel
|
||||
extends PanelContainer
|
||||
|
||||
signal frame_saved
|
||||
|
||||
enum Mode { CANVAS, PIXELORAMA }
|
||||
|
||||
var mode := Mode.CANVAS
|
||||
var chosen_dir := ""
|
||||
var chosen_dir := "":
|
||||
set(value):
|
||||
chosen_dir = value
|
||||
if chosen_dir.ends_with("/"): # Remove end back-slashes if present
|
||||
chosen_dir[-1] = ""
|
||||
var recorded_projects := {} ## [Dictionary] of [Project] and [Recorder].
|
||||
var save_dir := ""
|
||||
var project: Project
|
||||
var cache: Array[Image] = [] ## Images stored during recording
|
||||
var frame_captured := 0 ## Used to visualize frames captured
|
||||
var skip_amount := 1 ## Number of "do" actions after which a frame can be captured
|
||||
var current_frame_no := 0 ## Used to compare with skip_amount to see if it can be captured
|
||||
var skip_amount := 1 ## Number of "do" actions after which a frame can be captured.
|
||||
var resize_percent := 100
|
||||
var _path_dialog: FileDialog:
|
||||
get:
|
||||
|
@ -28,7 +28,6 @@ var _path_dialog: FileDialog:
|
|||
return _path_dialog
|
||||
|
||||
@onready var captured_label := %CapturedLabel as Label
|
||||
@onready var project_list := $"%TargetProjectOption" as OptionButton
|
||||
@onready var start_button := $"%Start" as Button
|
||||
@onready var size_label := $"%Size" as Label
|
||||
@onready var path_field := $"%Path" as LineEdit
|
||||
|
@ -36,125 +35,99 @@ var _path_dialog: FileDialog:
|
|||
@onready var options_container := %OptionsContainer as VBoxContainer
|
||||
|
||||
|
||||
class Recorder:
|
||||
var project: Project
|
||||
var recorder_panel: RecorderPanel
|
||||
var actions_done := -1
|
||||
var frames_captured := 0
|
||||
var save_directory := ""
|
||||
|
||||
func _init(_project: Project, _recorder_panel: RecorderPanel) -> void:
|
||||
project = _project
|
||||
recorder_panel = _recorder_panel
|
||||
# Create a new directory based on time
|
||||
var time_dict := Time.get_time_dict_from_system()
|
||||
var folder := str(
|
||||
project.name, time_dict.hour, "_", time_dict.minute, "_", time_dict.second
|
||||
)
|
||||
var dir := DirAccess.open(recorder_panel.chosen_dir)
|
||||
save_directory = recorder_panel.chosen_dir.path_join(folder)
|
||||
dir.make_dir_recursive(save_directory)
|
||||
project.removed.connect(recorder_panel.finalize_recording.bind(project))
|
||||
project.undo_redo.version_changed.connect(capture_frame)
|
||||
|
||||
func _notification(what: int) -> void:
|
||||
if what == NOTIFICATION_PREDELETE:
|
||||
# Needed so that the project won't be forever remained in memory because of bind().
|
||||
project.removed.disconnect(recorder_panel.finalize_recording)
|
||||
|
||||
func capture_frame() -> void:
|
||||
actions_done += 1
|
||||
if actions_done % recorder_panel.skip_amount != 0:
|
||||
return
|
||||
var image: Image
|
||||
if recorder_panel.mode == RecorderPanel.Mode.PIXELORAMA:
|
||||
image = recorder_panel.get_window().get_texture().get_image()
|
||||
else:
|
||||
var frame := project.frames[project.current_frame]
|
||||
image = Image.create(project.size.x, project.size.y, false, Image.FORMAT_RGBA8)
|
||||
DrawingAlgos.blend_layers(image, frame, Vector2i.ZERO, project)
|
||||
|
||||
if recorder_panel.resize_percent != 100:
|
||||
var resize := recorder_panel.resize_percent / 100
|
||||
var new_width := image.get_width() * resize
|
||||
var new_height := image.get_height() * resize
|
||||
image.resize(new_width, new_height, Image.INTERPOLATE_NEAREST)
|
||||
var save_file := str(project.name, "_", frames_captured, ".png")
|
||||
image.save_png(save_directory.path_join(save_file))
|
||||
frames_captured += 1
|
||||
recorder_panel.captured_label.text = str("Saved: ", frames_captured)
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
refresh_projects_list()
|
||||
project = Global.current_project
|
||||
frame_saved.connect(_on_frame_saved)
|
||||
if OS.get_name() == "Web":
|
||||
ExtensionsApi.panel.remove_node_from_tab.call_deferred(self)
|
||||
return
|
||||
Global.project_switched.connect(_on_project_switched)
|
||||
# Make a recordings folder if there isn't one
|
||||
chosen_dir = Global.home_data_directory.path_join("Recordings")
|
||||
DirAccess.make_dir_recursive_absolute(chosen_dir)
|
||||
path_field.text = chosen_dir
|
||||
size_label.text = str("(", project.size.x, "×", project.size.y, ")")
|
||||
|
||||
|
||||
func _on_project_switched() -> void:
|
||||
if recorded_projects.has(Global.current_project):
|
||||
initialize_recording()
|
||||
start_button.set_pressed_no_signal(true)
|
||||
Global.change_button_texturerect(start_button.get_child(0), "stop.png")
|
||||
else:
|
||||
finalize_recording()
|
||||
start_button.set_pressed_no_signal(false)
|
||||
Global.change_button_texturerect(start_button.get_child(0), "start.png")
|
||||
|
||||
|
||||
func initialize_recording() -> void:
|
||||
connect_undo() # connect to detect changes in project
|
||||
cache.clear() # clear the cache array to store new images
|
||||
frame_captured = 0
|
||||
current_frame_no = skip_amount - 1
|
||||
|
||||
# disable some options that are not required during recording
|
||||
project_list.visible = false
|
||||
captured_label.visible = true
|
||||
for child in options_container.get_children():
|
||||
if !child.is_in_group("visible during recording"):
|
||||
child.visible = false
|
||||
|
||||
save_dir = chosen_dir
|
||||
# Remove end back-slashes if present
|
||||
if save_dir.ends_with("/"):
|
||||
save_dir[-1] = ""
|
||||
|
||||
# Create a new directory based on time
|
||||
var time_dict := Time.get_time_dict_from_system()
|
||||
var folder := str(project.name, time_dict.hour, "_", time_dict.minute, "_", time_dict.second)
|
||||
var dir := DirAccess.open(save_dir)
|
||||
save_dir = save_dir.path_join(folder)
|
||||
dir.make_dir_recursive(save_dir)
|
||||
|
||||
capture_frame() # capture first frame
|
||||
$Timer.start()
|
||||
|
||||
|
||||
func capture_frame() -> void:
|
||||
current_frame_no += 1
|
||||
if current_frame_no != skip_amount:
|
||||
return
|
||||
current_frame_no = 0
|
||||
var image: Image
|
||||
if mode == Mode.PIXELORAMA:
|
||||
image = get_tree().root.get_viewport().get_texture().get_image()
|
||||
else:
|
||||
var frame := project.frames[project.current_frame]
|
||||
image = Image.create(project.size.x, project.size.y, false, Image.FORMAT_RGBA8)
|
||||
DrawingAlgos.blend_layers(image, frame, Vector2i.ZERO, project)
|
||||
|
||||
if mode == Mode.CANVAS:
|
||||
if resize_percent != 100:
|
||||
var resize := resize_percent / 100
|
||||
image.resize(
|
||||
image.get_width() * resize, image.get_height() * resize, Image.INTERPOLATE_NEAREST
|
||||
)
|
||||
|
||||
cache.append(image)
|
||||
|
||||
|
||||
func _on_Timer_timeout() -> void:
|
||||
# Saves frames little by little during recording
|
||||
if cache.size() > 0:
|
||||
save_frame(cache[0])
|
||||
cache.remove_at(0)
|
||||
|
||||
|
||||
func save_frame(img: Image) -> void:
|
||||
var save_file := str(project.name, "_", frame_captured, ".png")
|
||||
img.save_png(save_dir.path_join(save_file))
|
||||
frame_saved.emit()
|
||||
|
||||
|
||||
func _on_frame_saved() -> void:
|
||||
frame_captured += 1
|
||||
captured_label.text = str("Saved: ", frame_captured)
|
||||
|
||||
|
||||
func finalize_recording() -> void:
|
||||
$Timer.stop()
|
||||
for img in cache:
|
||||
save_frame(img)
|
||||
cache.clear()
|
||||
disconnect_undo()
|
||||
project_list.visible = true
|
||||
captured_label.visible = false
|
||||
for child in options_container.get_children():
|
||||
child.visible = true
|
||||
if mode == Mode.PIXELORAMA:
|
||||
size_label.get_parent().visible = false
|
||||
|
||||
|
||||
func disconnect_undo() -> void:
|
||||
project.undo_redo.version_changed.disconnect(capture_frame)
|
||||
|
||||
|
||||
func connect_undo() -> void:
|
||||
project.undo_redo.version_changed.connect(capture_frame)
|
||||
|
||||
|
||||
func _on_TargetProjectOption_item_selected(index: int) -> void:
|
||||
project = Global.projects[index]
|
||||
|
||||
|
||||
func _on_TargetProjectOption_pressed() -> void:
|
||||
refresh_projects_list()
|
||||
|
||||
|
||||
func refresh_projects_list() -> void:
|
||||
project_list.clear()
|
||||
for proj in Global.projects:
|
||||
project_list.add_item(proj.name)
|
||||
func finalize_recording(project := Global.current_project) -> void:
|
||||
if recorded_projects.has(project):
|
||||
recorded_projects.erase(project)
|
||||
if project == Global.current_project:
|
||||
captured_label.visible = false
|
||||
for child in options_container.get_children():
|
||||
child.visible = true
|
||||
if mode == Mode.PIXELORAMA:
|
||||
size_label.get_parent().visible = false
|
||||
|
||||
|
||||
func _on_Start_toggled(button_pressed: bool) -> void:
|
||||
if button_pressed:
|
||||
recorded_projects[Global.current_project] = Recorder.new(Global.current_project, self)
|
||||
initialize_recording()
|
||||
Global.change_button_texturerect(start_button.get_child(0), "stop.png")
|
||||
else:
|
||||
|
@ -163,7 +136,8 @@ func _on_Start_toggled(button_pressed: bool) -> void:
|
|||
|
||||
|
||||
func _on_Settings_pressed() -> void:
|
||||
options_dialog.popup_on_parent(Rect2(position, options_dialog.size))
|
||||
_on_SpinBox_value_changed(resize_percent)
|
||||
options_dialog.popup_on_parent(Rect2i(position, options_dialog.size))
|
||||
|
||||
|
||||
func _on_SkipAmount_value_changed(value: float) -> void:
|
||||
|
@ -181,7 +155,7 @@ func _on_Mode_toggled(button_pressed: bool) -> void:
|
|||
|
||||
func _on_SpinBox_value_changed(value: float) -> void:
|
||||
resize_percent = value
|
||||
var new_size: Vector2 = project.size * (resize_percent / 100.0)
|
||||
var new_size: Vector2 = Global.current_project.size * (resize_percent / 100.0)
|
||||
size_label.text = str("(", new_size.x, "×", new_size.y, ")")
|
||||
|
||||
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue