Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 1ec29e6a6f | |||
| 59a92886b8 | |||
| ae55cf7094 | |||
| cf6473dcd9 | |||
| 122d60fb10 | |||
| 60879d8776 | |||
| d41f9bc63d | |||
| ac9e15a079 | |||
| eb7321b0e4 |
@@ -0,0 +1,21 @@
|
||||
# Strip upstream (ArtCraft / Discord) branding. Run: ~/.agents/skills/debrand/debrand.pl (--check in CI)
|
||||
delete docs/brand
|
||||
# MIT/Apache texts stay verbatim. The copyright holder line stays everywhere (legal requirement).
|
||||
keep ^(LICENSE-(MIT|APACHE)|\.debrand)$
|
||||
dropline ^crates/ui-egui/src/i18n/.*\.tsv$ :: \t.*(?:ArtCraft|Discord)
|
||||
dropline ^ATTRIBUTION\.md$ :: \|\s*`docs/brand/
|
||||
sub (?s)\nThe ArtCraft name, wordmark and logos in docs/brand/.*?LICENSE-brand\.txt\.\n =>
|
||||
sub (?s)\s*The ArtCraft name, wordmark, and logos in `docs/brand/`.*?source-code license\. =>
|
||||
sub \s*The ArtCraft logos in `docs/brand/` are not open source \(`docs/brand/LICENSE-brand\.txt`\)\. =>
|
||||
sub drawn in ArtCraft, vectorised => drawn by hand, vectorised
|
||||
sub created\s+in ArtCraft, then => created by hand, then
|
||||
sub made in ArtCraft \( => drawn by hand (
|
||||
sub the owner's ArtCraft drawing => the owner's drawing
|
||||
sub the ArtCraft team and PhotoCraft contributors => the PhotoCraft contributors
|
||||
sub ArtCraft, ArtCraftX,\s =>
|
||||
sub \bArtCraft, =>
|
||||
sub https://getartcraft\.com/apps/photocraft => https://github.com/storytold/photocraft
|
||||
sub https://discord\.gg/artcraft => https://github.com/storytold/photocraft/issues
|
||||
forbid (?i)artcraft(?! Team and the PhotoCraft contributors)
|
||||
forbid (?i)discord
|
||||
sub Discord \(Help › Discord\), then the theme toggle => the theme toggle
|
||||
@@ -0,0 +1,3 @@
|
||||
[submodule "tools/craft-skills"]
|
||||
path = tools/craft-skills
|
||||
url = https://git.marcospaulo.dev.br/storytold/craft-skills.git
|
||||
@@ -1,6 +1,6 @@
|
||||
# AGENTS.md: guide for AI agents and contributors
|
||||
|
||||
PhotoCraft is an open-source, native, Photoshop-comparable image editor written in **Rust only** (no JavaScript or TypeScript). **No Tauri, Electron or webview shells:** the desktop app is native egui/eframe on wgpu, and the web build is the same Rust compiled to WebAssembly (trunk + wasm-bindgen). Never add Tauri (or any webview/JS UI framework) as a dependency, build step or packaging target. The product name is always written **PhotoCraft** (`{Function}Craft` in PascalCase, like its siblings ArtCraft, ArtCraftX, DesignCraft, VectorCraft, EffectCraft, FilmCraft, LightCraft, PdfCraft) in user-facing text: UI, window titles, About, installers, release names, docs prose. Machine names stay lowercase: crates (`photocraft-*`), binaries, file names, ids (`ai.storyteller.photocraft`). Standards and learnings shared across the crafting apps live in `../craftrules` (read its `README.md`; the repository is not public — outside contributors should ask a maintainer for the standards relevant to their change). Contribute reusable learnings there; shared Rust components live in [storytold/craft-libs](https://github.com/storytold/craft-libs) and are pinned by immutable git revision. UI libraries stay at L6. The goal is 1:1 Photoshop parity (same menus, shortcuts, behaviour and file fidelity) with better performance, and every feature drivable by agents. Read this file first, then `docs/`.
|
||||
PhotoCraft is an open-source, native, Photoshop-comparable image editor written in **Rust only** (no JavaScript or TypeScript). **No Tauri, Electron or webview shells:** the desktop app is native egui/eframe on wgpu, and the web build is the same Rust compiled to WebAssembly (trunk + wasm-bindgen). Never add Tauri (or any webview/JS UI framework) as a dependency, build step or packaging target. The product name is always written **PhotoCraft** (`{Function}Craft` in PascalCase, like its siblings DesignCraft, VectorCraft, EffectCraft, FilmCraft, LightCraft, PdfCraft) in user-facing text: UI, window titles, About, installers, release names, docs prose. Machine names stay lowercase: crates (`photocraft-*`), binaries, file names, ids (`ai.storyteller.photocraft`). Standards and learnings shared across the crafting apps live in `../craftrules` (read its `README.md`; the repository is not public — outside contributors should ask a maintainer for the standards relevant to their change). Contribute reusable learnings there; shared Rust components live in [storytold/craft-libs](https://github.com/storytold/craft-libs) and are pinned by immutable git revision. UI libraries stay at L6. The goal is 1:1 Photoshop parity (same menus, shortcuts, behaviour and file fidelity) with better performance, and every feature drivable by agents. Read this file first, then `docs/`.
|
||||
|
||||
## 1. Orientation (5 minutes)
|
||||
|
||||
@@ -61,7 +61,7 @@ People trust PhotoCraft with their work, and a crash loses it. A malformed file,
|
||||
|
||||
1. **Everything is a command.** New user-visible behaviour = a command in the engine (`crates/engine/src/*_cmds.rs`, registered in `commands.rs`) with id, label, menu path, shortcut, params doc, `enabled` and `run`, plus tests. The UI, CLI, control channel and MCP all dispatch commands by id. Use the **exact id from `crates/ui-egui/src/menu_catalog.rs`** and the menu item goes live automatically. Only pure view/window state (zoom, panels, screen mode) belongs to the shell (`menus.rs` `UI_COMMANDS`).
|
||||
2. **No format or colour assumptions.** Bit depth (8/16/32f) and colour model (RGB/Gray/CMYK/Lab…) are runtime data. Never introduce a `u8`-only pixel path in public APIs. Never assume sRGB: colour conversions go through `photocraft-cms` (`Transform`, `transform::cached`). Test at several depths.
|
||||
3. **Clean-room.** We studied Photoshop and other proprietary editors for *behaviour and look only*. Never copy their code, shaders, profiles or assets. Implement from public specs (Adobe PSD spec, ICC, ISO 32000 blend modes, papers) and observation. Third-party assets must be permissively licensed, keep their license file next to them, and get a row in `ATTRIBUTION.md` (path, title, author, source, license) in the same change; so do original assets. The ArtCraft logos in `docs/brand/` are not open source (`docs/brand/LICENSE-brand.txt`). **Never commit font files:** fonts live in [storytold/craft-fonts](https://github.com/storytold/craft-fonts) (rules: `../craftrules/standards/fonts.md`). PhotoCraft uses it through the optional build input `CRAFT_FONTS_DIR=<craft-fonts checkout>` (read by `crates/text/build.rs`, exposed as `photocraft_text::CRAFT_FONTS`; empty without it, and everything must still work). Build with it: `CRAFT_FONTS_DIR="$PWD/../craft-fonts" cargo build`; details in `docs/development.md` › Fonts.
|
||||
3. **Clean-room.** We studied Photoshop and other proprietary editors for *behaviour and look only*. Never copy their code, shaders, profiles or assets. Implement from public specs (Adobe PSD spec, ICC, ISO 32000 blend modes, papers) and observation. Third-party assets must be permissively licensed, keep their license file next to them, and get a row in `ATTRIBUTION.md` (path, title, author, source, license) in the same change; so do original assets. **Never commit font files:** fonts live in [storytold/craft-fonts](https://github.com/storytold/craft-fonts) (rules: `../craftrules/standards/fonts.md`). PhotoCraft uses it through the optional build input `CRAFT_FONTS_DIR=<craft-fonts checkout>` (read by `crates/text/build.rs`, exposed as `photocraft_text::CRAFT_FONTS`; empty without it, and everything must still work). Build with it: `CRAFT_FONTS_DIR="$PWD/../craft-fonts" cargo build`; details in `docs/development.md` › Fonts.
|
||||
4. **Tests are the gate.** Every change comes with tests. Format crates use round-trip, synthetic-generator, oracle and fuzz tests. Keep the PSD corpus results and the parity floor (`crates/ui-egui/src/parity.rs`) from regressing.
|
||||
5. **The UI is thin and data-driven.** UI state lives in `ui-egui/src/state.rs` (serde), so the control channel can read and drive it. Colours and radii come from `theme::Tokens`, never hard-coded.
|
||||
6. **Verify UI changes visually.** Render offscreen with `cargo run -p photocraft-ui-egui --example snapshot` (no window, no focus stealing), or launch with `--control` and take `ui.screenshot`. Look at the PNG. Demo images must be public-domain art, never personal photos. When fetching assets, never put a person's name, email or other personal details in requests (User-Agent, headers, URLs); use a generic `Photocraft-dev` User-Agent.
|
||||
|
||||
@@ -47,9 +47,10 @@ next to them.
|
||||
| `assets/icons/lasso-magnetic.svg` | Magnetic Lasso tool glyph, adapted from "Magnetic Lasso Tool" (redrawn on the 24 px toolbar grid) | Lil' Seal (Noun Project); adapted by PhotoCraft contributors | <https://thenounproject.com/icon/magnetic-lasso-tool-177513/> | CC BY 3.0, [`assets/icons/LICENSE-noun-magnetic-lasso.txt`](assets/icons/LICENSE-noun-magnetic-lasso.txt) |
|
||||
| `assets/dict/en_US-scowl-50.txt.gz` | English word list for Check Spelling (SCOWL 2020.12.07, size 50, en_US; 72,403 words) | Kevin Atkinson and the SCOWL contributors | <http://wordlist.aspell.net/> | SCOWL license (permissive, keep the notice), [`assets/dict/LICENSE-SCOWL.txt`](assets/dict/LICENSE-SCOWL.txt), which also has the build recipe |
|
||||
| `crates/cms/profiles/photocraft-coated-cmyk.icc` | PhotoCraft Coated CMYK (synthetic) ICC profile | PhotoCraft contributors (generated by `photocraft-cms`, `src/synth.rs`) | Original work, see [`crates/cms/README.md`](crates/cms/README.md) | CC0-1.0 |
|
||||
| `assets/app-icon/` (all files) | PhotoCraft app icon (nine-tailed kitsune) | The project owner (drawn in ArtCraft, vectorised) | Original work, see [`assets/app-icon/README.md`](assets/app-icon/README.md) | MIT OR Apache-2.0, [`assets/app-icon/LICENSE.txt`](assets/app-icon/LICENSE.txt) |
|
||||
| `assets/app-icon/` (all files) | PhotoCraft app icon (nine-tailed kitsune) | The project owner (drawn by hand, vectorised) | Original work, see [`assets/app-icon/README.md`](assets/app-icon/README.md) | MIT OR Apache-2.0, [`assets/app-icon/LICENSE.txt`](assets/app-icon/LICENSE.txt) |
|
||||
| `packaging/macos/dmg/` (all files) | PhotoCraft DMG window background and layout | @XusBadia, from the PhotoCraft app icon | Original work, see [`packaging/macos/dmg/README.md`](packaging/macos/dmg/README.md) | MIT OR Apache-2.0, like the code |
|
||||
| `crates/ui-egui/src/theme.rs` (Solarized Dark palette) | Solarized colour scheme used by the Solarized Dark theme | Ethan Schoonover | <https://ethanschoonover.com/solarized/> | MIT, [`LICENSE-solarized.txt`](crates/ui-egui/src/LICENSE-solarized.txt) |
|
||||
| `crates/ui-egui/src/theme_catppuccin.rs` (Catppuccin palettes) | Catppuccin Latte, Frappé, Macchiato and Mocha colours used by the Catppuccin themes | Catppuccin | <https://catppuccin.com/palette> | MIT, [`LICENSE-catppuccin.txt`](crates/ui-egui/src/LICENSE-catppuccin.txt) |
|
||||
| `crates/ui-egui/src/theme.rs` (Breeze Light and Breeze Dark themes) | The Breeze Light and Breeze Dark themes are original colour values on PhotoCraft's Studio layout, chosen to look close to KDE Plasma's Breeze (cool blue-greys, blue accent, 5 px frame radius) so the app blends into a Plasma desktop. None of Breeze's colour values, files or code are copied; the values are a few levels away from its schemes and tuned for text contrast | PhotoCraft contributors | Inspired by the look of KDE Breeze, <https://invent.kde.org/plasma/breeze> (its colour schemes are LGPL-2.0-or-later) | Original work |
|
||||
|
||||
### Optional build input: craft-fonts (not files in this repo)
|
||||
@@ -73,7 +74,6 @@ The other built-in ICC profiles and the generated LUT looks are produced by code
|
||||
|
||||
| Path | Title | Author | Source | License |
|
||||
|---|---|---|---|---|
|
||||
| `docs/brand/` (all files) | ArtCraft name, wordmark and mark | ArtCraft Team | getartcraft.com | Not open source; trademarks of the ArtCraft Team, [`docs/brand/LICENSE-brand.txt`](docs/brand/LICENSE-brand.txt) |
|
||||
| `docs/images/photocraft-*.jpg` | PhotoCraft screenshots | PhotoCraft contributors (UI) | Rendered offscreen with the `snapshot` example | MIT OR Apache-2.0 (UI); the artwork in each is public domain, listed below |
|
||||
| `docs/images/preferences-apply-*.png` | Preferences before and after adding Apply (no artwork) | PhotoCraft contributors | PhotoCraft control-channel capture and offscreen `snapshot` example | MIT OR Apache-2.0 |
|
||||
|
||||
|
||||
@@ -4,13 +4,13 @@ members = ["crates/*", "apps/*", "xtask"]
|
||||
default-members = ["crates/*", "apps/photocraft", "apps/photocraft-cli", "xtask"]
|
||||
|
||||
[workspace.package]
|
||||
version = "0.8.2"
|
||||
version = "0.8.3"
|
||||
edition = "2024"
|
||||
license = "MIT OR Apache-2.0"
|
||||
rust-version = "1.95"
|
||||
|
||||
[workspace.dependencies]
|
||||
craft-ui = { git = "https://github.com/storytold/craft-libs", rev = "5c874d51eeb3de70e735c8ce87a59a7dedd47675", features = ["serde"] }
|
||||
craft-ui = { git = "https://git.marcospaulo.dev.br/masi/craft-libs", rev = "7fcee66b8eef8eac3c7644fd024e1f1b051f5a3e", features = ["serde"] }
|
||||
# internal
|
||||
photocraft-geom = { path = "crates/geom" }
|
||||
photocraft-color = { path = "crates/color" }
|
||||
@@ -38,7 +38,7 @@ photocraft-testkit = { path = "crates/testkit" }
|
||||
photocraft-tablet = { path = "crates/tablet" }
|
||||
|
||||
# external
|
||||
craft-print = { git = "https://github.com/storytold/craft-libs", rev = "d991bf6792f8ade99c51358bf3c1d902c8cd96b5" }
|
||||
craft-print = { git = "https://git.marcospaulo.dev.br/masi/craft-libs", rev = "7fcee66b8eef8eac3c7644fd024e1f1b051f5a3e" }
|
||||
thiserror = "2"
|
||||
serde = { version = "1", features = ["derive", "rc"] }
|
||||
serde_json = "1"
|
||||
|
||||
@@ -3,10 +3,6 @@ Copyright (c) 2026 ArtCraft Team and the PhotoCraft contributors.
|
||||
Licensed under the MIT License or the Apache License, Version 2.0, at your option
|
||||
(LICENSE-MIT, LICENSE-APACHE).
|
||||
|
||||
The ArtCraft name, wordmark and logos in docs/brand/ are trademarks of the ArtCraft Team. They are
|
||||
not open source and are not covered by the license above; their terms are in
|
||||
docs/brand/LICENSE-brand.txt.
|
||||
|
||||
Third-party material
|
||||
|
||||
This product bundles third-party material under its own licenses, listed below. The per-file
|
||||
|
||||
@@ -1,12 +1,3 @@
|
||||
<p align="center">
|
||||
<a href="https://getartcraft.com/">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="docs/brand/artcraft-logo-white.svg">
|
||||
<img alt="ArtCraft" src="docs/brand/artcraft-logo.svg" width="200">
|
||||
</picture>
|
||||
</a>
|
||||
</p>
|
||||
|
||||
<h1 align="center">PhotoCraft</h1>
|
||||
|
||||
<p align="center">
|
||||
@@ -22,16 +13,6 @@
|
||||
<img alt="Status: early alpha" src="https://img.shields.io/badge/status-early%20alpha-d69e2e?style=flat-square">
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://discord.gg/artcraft"><img alt="Join the ArtCraft community on Discord" src="https://img.shields.io/badge/Join%20us%20on%20Discord-5865F2?style=for-the-badge&logo=discord&logoColor=white" height="40"></a>
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://getartcraft.com/apps/photocraft"><b>PhotoCraft on getartcraft.com</b></a> ·
|
||||
<a href="https://getartcraft.com/">ArtCraft</a> ·
|
||||
<a href="https://getartcraft.com/apps">All Crafting Apps</a>
|
||||
</p>
|
||||
|
||||
<br>
|
||||
|
||||
<p align="center">
|
||||
@@ -41,10 +22,6 @@
|
||||
<i>The Great Wave off Kanagawa</i>, Katsushika Hokusai, c. 1831</sub>
|
||||
</p>
|
||||
|
||||
> [!NOTE]
|
||||
> **ArtCraft is a community of artists from all walks of life.** Digital, generative, music,
|
||||
> games — if you make things, you're one of us. **[Come say hi on Discord](https://discord.gg/artcraft).**
|
||||
|
||||
<p align="center">
|
||||
<a href="#features">Features</a> ·
|
||||
<a href="#everything-in-the-box">Everything in the box</a> ·
|
||||
@@ -53,8 +30,7 @@
|
||||
<a href="#under-the-hood">Under the hood</a> ·
|
||||
<a href="#get-started">Get started</a> ·
|
||||
<a href="#downloads">Downloads</a> ·
|
||||
<a href="#the-crafting-apps">Crafting Apps</a> ·
|
||||
<a href="https://discord.gg/artcraft">Discord</a>
|
||||
<a href="#the-crafting-apps">Crafting Apps</a>
|
||||
</p>
|
||||
|
||||
<br>
|
||||
@@ -298,7 +274,7 @@ photocraft
|
||||
Maintainers: [`docs/releasing.md`](docs/releasing.md) explains how releases are built, signed and published.
|
||||
|
||||
> [!IMPORTANT]
|
||||
> **Status:** PhotoCraft is in early alpha, and we want to be straight about where it stands: much of Photoshop's feature surface exists in some form, but **it is not yet a Photoshop replacement for daily professional work**. The biggest gaps are AI/generative features, 15 missing tools, depth in typography and pro workflows, and plug-in compatibility. Every Photoshop menu item is wired to a command ([`docs/parity-checklist.md`](docs/parity-checklist.md)), but that measures wiring, not behaviour. The honest, dimension-by-dimension picture and where we're going next are in the [roadmap](ROADMAP.md) and [parity assessment](docs/target-app-parity.md). Expect rough edges, and please file issues (include your OS, document size, layer count and a screenshot). You can also tell us what broke on [Discord](https://discord.gg/artcraft).
|
||||
> **Status:** PhotoCraft is in early alpha, and we want to be straight about where it stands: much of Photoshop's feature surface exists in some form, but **it is not yet a Photoshop replacement for daily professional work**. The biggest gaps are AI/generative features, 15 missing tools, depth in typography and pro workflows, and plug-in compatibility. Every Photoshop menu item is wired to a command ([`docs/parity-checklist.md`](docs/parity-checklist.md)), but that measures wiring, not behaviour. The honest, dimension-by-dimension picture and where we're going next are in the [roadmap](ROADMAP.md) and [parity assessment](docs/target-app-parity.md). Expect rough edges, and please file issues (include your OS, document size, layer count and a screenshot). You can also tell us what broke on [GitHub](https://github.com/storytold/photocraft/issues).
|
||||
|
||||
## Documentation
|
||||
|
||||
@@ -319,8 +295,6 @@ sha256-verified. Fetch them with `cargo xtask corpus --all` and run the tests wi
|
||||
|
||||
## Downloads
|
||||
|
||||
**New to PhotoCraft?** Download it from the [PhotoCraft page on getartcraft.com](https://getartcraft.com/apps/photocraft). That's the easiest way to install it.
|
||||
|
||||
**Want a specific build or format?** On GitHub, the [latest release](https://github.com/storytold/photocraft/releases/latest) has every build listed below, and [all releases](https://github.com/storytold/photocraft/releases) has earlier versions and their notes. `<ver>` in the file names is the version number, and `SHA256SUMS.txt` lists a checksum for every file.
|
||||
|
||||
### Windows
|
||||
@@ -367,45 +341,23 @@ RISC-V (riscv64): `photocraft-<ver>-linux-riscv64.tar.gz` only, built against Ub
|
||||
## The Crafting Apps
|
||||
|
||||
PhotoCraft is one of the **Crafting Apps**: free, open-source creative tools from the
|
||||
[ArtCraft](https://getartcraft.com/) team, each written from scratch in Rust and each able to
|
||||
[storytold](https://github.com/storytold) team, each written from scratch in Rust and each able to
|
||||
stand on its own.
|
||||
|
||||
| | App | What it's for | Code | Learn more |
|
||||
|:-:|---|---|---|---|
|
||||
| <img src="https://raw.githubusercontent.com/storytold/photocraft/main/assets/app-icon/hicolor/64x64/apps/ai.storyteller.photocraft.png" alt="" width="32" height="32"> | **PhotoCraft** | **Image editing: layers, masks, type and real PSD files · you are here** | [GitHub](https://github.com/storytold/photocraft) | [Website](https://getartcraft.com/apps/photocraft) |
|
||||
| <img src="https://raw.githubusercontent.com/storytold/vectorcraft/main/assets/app-icon/hicolor/64x64/apps/ai.storyteller.vectorcraft.png" alt="" width="32" height="32"> | **VectorCraft** | Vector illustration | [GitHub](https://github.com/storytold/vectorcraft) | [Website](https://getartcraft.com/apps/vectorcraft) |
|
||||
| <img src="https://raw.githubusercontent.com/storytold/filmcraft/main/assets/app-icon/hicolor/64x64/apps/ai.storyteller.filmcraft.png" alt="" width="32" height="32"> | **FilmCraft** | Video editing, color and sound | [GitHub](https://github.com/storytold/filmcraft) | [Website](https://getartcraft.com/apps/filmcraft) |
|
||||
| <img src="https://raw.githubusercontent.com/storytold/lightcraft/main/assets/app-icon/hicolor/64x64/apps/ai.storyteller.lightcraft.png" alt="" width="32" height="32"> | **LightCraft** | Photo library and raw development | [GitHub](https://github.com/storytold/lightcraft) | [Website](https://getartcraft.com/apps/lightcraft) |
|
||||
| <img src="https://raw.githubusercontent.com/storytold/pdfcraft/main/assets/app-icon/hicolor/64x64/apps/ai.storyteller.pdfcraft.png" alt="" width="32" height="32"> | **PdfCraft** | Reading, organizing and protecting PDFs | [GitHub](https://github.com/storytold/pdfcraft) | [Website](https://getartcraft.com/apps/pdfcraft) |
|
||||
| <img src="https://raw.githubusercontent.com/storytold/effectcraft/main/assets/app-icon/hicolor/64x64/apps/ai.storyteller.effectcraft.png" alt="" width="32" height="32"> | **EffectCraft** | Motion graphics and visual effects | [GitHub](https://github.com/storytold/effectcraft) | [Website](https://getartcraft.com/apps/effectcraft) |
|
||||
| <img src="https://raw.githubusercontent.com/storytold/designcraft/main/assets/app-icon/hicolor/64x64/apps/ai.storyteller.designcraft.png" alt="" width="32" height="32"> | **DesignCraft** | Page layout and publishing | [GitHub](https://github.com/storytold/designcraft) | [Website](https://getartcraft.com/apps/designcraft) |
|
||||
|
||||
And [**ArtCraft**](https://getartcraft.com/) itself, our AI image and video studio for artists who want real control.
|
||||
| | App | What it's for | Code |
|
||||
|:-:|---|---|---|
|
||||
| <img src="https://raw.githubusercontent.com/storytold/photocraft/main/assets/app-icon/hicolor/64x64/apps/ai.storyteller.photocraft.png" alt="" width="32" height="32"> | **PhotoCraft** | **Image editing: layers, masks, type and real PSD files · you are here** | [GitHub](https://github.com/storytold/photocraft) |
|
||||
| <img src="https://raw.githubusercontent.com/storytold/vectorcraft/main/assets/app-icon/hicolor/64x64/apps/ai.storyteller.vectorcraft.png" alt="" width="32" height="32"> | **VectorCraft** | Vector illustration | [GitHub](https://github.com/storytold/vectorcraft) |
|
||||
| <img src="https://raw.githubusercontent.com/storytold/filmcraft/main/assets/app-icon/hicolor/64x64/apps/ai.storyteller.filmcraft.png" alt="" width="32" height="32"> | **FilmCraft** | Video editing, color and sound | [GitHub](https://github.com/storytold/filmcraft) |
|
||||
| <img src="https://raw.githubusercontent.com/storytold/lightcraft/main/assets/app-icon/hicolor/64x64/apps/ai.storyteller.lightcraft.png" alt="" width="32" height="32"> | **LightCraft** | Photo library and raw development | [GitHub](https://github.com/storytold/lightcraft) |
|
||||
| <img src="https://raw.githubusercontent.com/storytold/pdfcraft/main/assets/app-icon/hicolor/64x64/apps/ai.storyteller.pdfcraft.png" alt="" width="32" height="32"> | **PdfCraft** | Reading, organizing and protecting PDFs | [GitHub](https://github.com/storytold/pdfcraft) |
|
||||
| <img src="https://raw.githubusercontent.com/storytold/effectcraft/main/assets/app-icon/hicolor/64x64/apps/ai.storyteller.effectcraft.png" alt="" width="32" height="32"> | **EffectCraft** | Motion graphics and visual effects | [GitHub](https://github.com/storytold/effectcraft) |
|
||||
| <img src="https://raw.githubusercontent.com/storytold/designcraft/main/assets/app-icon/hicolor/64x64/apps/ai.storyteller.designcraft.png" alt="" width="32" height="32"> | **DesignCraft** | Page layout and publishing | [GitHub](https://github.com/storytold/designcraft) |
|
||||
|
||||
The Crafting Apps share the same conventions: clean-room and pure Rust, native on macOS, Windows and Linux, in the browser via WebAssembly, and fully drivable by agents.
|
||||
|
||||
<br>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://discord.gg/artcraft"><img alt="Join the ArtCraft community on Discord" src="https://img.shields.io/badge/Join%20us%20on%20Discord-5865F2?style=for-the-badge&logo=discord&logoColor=white" height="40"></a>
|
||||
</p>
|
||||
|
||||
<h3 align="center">Come make things with us</h3>
|
||||
|
||||
<p align="center">
|
||||
Our Discord is where artists of every kind hang out: people who paint, shoot, draw, cut film,
|
||||
set type, and people still figuring out what they like to make. Share what you're working on,
|
||||
ask for help, tell us what's broken, or tell us what you wish these tools could do.
|
||||
Whatever your medium and however long you've been at it, you're welcome here.
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://discord.gg/artcraft"><b>discord.gg/artcraft</b></a> ·
|
||||
<a href="https://getartcraft.com/">getartcraft.com</a> ·
|
||||
<a href="https://getartcraft.com/apps">The Crafting Apps</a> ·
|
||||
<a href="https://getartcraft.com/apps/photocraft">PhotoCraft</a>
|
||||
</p>
|
||||
|
||||
---
|
||||
|
||||
## License and credits
|
||||
@@ -418,18 +370,8 @@ with its author, source and license in [ATTRIBUTION.md](ATTRIBUTION.md).
|
||||
|
||||
Every artwork shown is in the public domain (Wikimedia Commons, NASA, U.S. National Archives); sources are listed in [`docs/images/SOURCES.md`](docs/images/SOURCES.md).
|
||||
|
||||
The ArtCraft name, wordmark and logos in [`docs/brand/`](docs/brand/) are trademarks of the
|
||||
ArtCraft Team and are not covered by this license. They may be used only unmodified, and only as
|
||||
part of this repository and PhotoCraft, under [`docs/brand/LICENSE-brand.txt`](docs/brand/LICENSE-brand.txt).
|
||||
Forks and modified versions must remove them.
|
||||
|
||||
<sub>Adobe, Photoshop, Illustrator, Premiere Pro, Lightroom, Acrobat, After Effects and InDesign are trademarks or registered trademarks of Adobe Inc. in the United States and/or other countries. PhotoCraft is an independent, open-source project and is not affiliated with, sponsored by or endorsed by Adobe Inc.; these names are used only to describe the workflows it is compatible with.</sub>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://getartcraft.com/"><img alt="ArtCraft" src="docs/brand/artcraft-mark.svg" width="28"></a><br>
|
||||
<sub>Made by the <a href="https://getartcraft.com/">ArtCraft</a> team and community.</sub>
|
||||
</p>
|
||||
|
||||
## Star history
|
||||
|
||||
[](https://www.star-history.com/?repos=storytold%2Fphotocraft&type=date&legend=top-left)
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
PhotoCraft app icon (photocraft.svg, photocraft-small.svg and every file derived from them in
|
||||
this directory: photocraft-1024.png, photocraft.icns, photocraft.ico, hicolor/).
|
||||
|
||||
Original artwork made for this project by the project owner: an engraving-style drawing created
|
||||
in ArtCraft, then vectorised. No third-party material. Licensed like the rest of PhotoCraft,
|
||||
Original artwork made for this project by the project owner: an engraving-style drawing created by hand, then vectorised. No third-party material. Licensed like the rest of PhotoCraft,
|
||||
under either of
|
||||
|
||||
* Apache License, Version 2.0 (https://www.apache.org/licenses/LICENSE-2.0)
|
||||
|
||||
@@ -22,7 +22,7 @@ each side so the figure reads at 16–48 px.
|
||||
|
||||
## Provenance
|
||||
|
||||
The owner's original drawing, made in ArtCraft (2880 px, engraving style, keyed to the palette),
|
||||
The owner's original drawing, drawn by hand (2880 px, engraving style, keyed to the palette),
|
||||
vectorised with craftrules `assets/logo-options/_tools/vectorize_tile.py`. The source PNG stays in
|
||||
craftrules at `assets/app-icons/photocraft/source.png`. License: see `LICENSE.txt`.
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Credits
|
||||
|
||||
PhotoCraft is created and maintained by the ArtCraft team and PhotoCraft contributors. Project ownership, copyright, and licensing remain as stated in the repository's `README.md`, `NOTICE`, and license files. Every merged contribution is credited in the repository history and release notes.
|
||||
PhotoCraft is created and maintained by the PhotoCraft contributors. Project ownership, copyright, and licensing remain as stated in the repository's `README.md`, `NOTICE`, and license files. Every merged contribution is credited in the repository history and release notes.
|
||||
|
||||
## Documentation
|
||||
|
||||
|
||||
@@ -7,6 +7,6 @@ PhotoCraft source is dual-licensed under MIT or Apache-2.0 at the user's option.
|
||||
- [`NOTICE`](https://github.com/storytold/photocraft/blob/main/NOTICE)
|
||||
- [`ATTRIBUTION.md`](https://github.com/storytold/photocraft/blob/main/ATTRIBUTION.md)
|
||||
|
||||
Bundled third-party assets retain their own licenses and attribution requirements. The ArtCraft name, wordmark, and logos in `docs/brand/` are subject to [`docs/brand/LICENSE-brand.txt`](https://github.com/storytold/photocraft/blob/main/docs/brand/LICENSE-brand.txt) and are not covered by the source-code license.
|
||||
Bundled third-party assets retain their own licenses and attribution requirements.
|
||||
|
||||
This page summarizes repository locations and does not alter any ownership or license term.
|
||||
|
||||
@@ -309,7 +309,7 @@ pub struct UiSetParams {
|
||||
/// Fields for the control method `ui.set`: tool, panels, dock, dockTabs, dockWidth, colorPanel
|
||||
/// ({background: bool} picks which swatch the Color panel edits), maskTarget,
|
||||
/// vectorMaskTarget, selectionMode, zoom, center, rotation (view angle in degrees), fit, theme (pro, proMedium, studio,
|
||||
/// studioLight, classic, solarizedDark, adwaita, adwaitaDark, breezeLight, breezeDark), brushSection, brushTab,
|
||||
/// studioLight, classic, solarizedDark, adwaita, adwaitaDark, breezeLight, breezeDark, catppuccinLatte, catppuccinFrappe, catppuccinMacchiato, catppuccinMocha), brushSection, brushTab,
|
||||
/// brushesView, brushPicker ([x, y] opens the Brush Preset picker there, null closes it),
|
||||
/// brushPickerName, brushPickerStroke, brushPickerTip (the picker card's parts, at least one
|
||||
/// on), brushPickerScale (the picker footer's card-scale slider, 0.15 to 2, 1 the standard),
|
||||
|
||||
@@ -55,10 +55,10 @@ choice!(TypeUnit { Points = "points", Pixels = "pixels", Millimeters = "mm" } de
|
||||
choice!(PointSize { PostScript = "postScript", Traditional = "traditional" } default PostScript);
|
||||
choice!(Interpolation { BicubicAutomatic = "bicubicAutomatic", Nearest = "nearestNeighbor", Bilinear = "bilinear", Bicubic = "bicubic", BicubicSmoother = "bicubicSmoother", BicubicSharper = "bicubicSharper", PreserveDetails = "preserveDetails" } default BicubicAutomatic);
|
||||
choice!(ColorPicker { Adobe = "adobe", System = "system" } default Adobe);
|
||||
choice!(Theme { Pro = "pro", ProMedium = "proMedium", ProLightGray = "proLightGray", ProLight = "proLight", Studio = "studio", StudioLight = "studioLight", Classic = "classic", SolarizedDark = "solarizedDark", Adwaita = "adwaita", AdwaitaDark = "adwaitaDark", BreezeLight = "breezeLight", BreezeDark = "breezeDark" } default ProMedium);
|
||||
choice!(Theme { Pro = "pro", ProMedium = "proMedium", ProLightGray = "proLightGray", ProLight = "proLight", Studio = "studio", StudioLight = "studioLight", Classic = "classic", SolarizedDark = "solarizedDark", Adwaita = "adwaita", AdwaitaDark = "adwaitaDark", BreezeLight = "breezeLight", BreezeDark = "breezeDark", CatppuccinLatte = "catppuccinLatte", CatppuccinFrappe = "catppuccinFrappe", CatppuccinMacchiato = "catppuccinMacchiato", CatppuccinMocha = "catppuccinMocha" } default ProMedium);
|
||||
choice!(AppearanceMode { Auto = "auto", Dark = "dark", Light = "light" } default Dark);
|
||||
choice!(DarkTheme { Pro = "pro", ProMedium = "proMedium", Studio = "studio", SolarizedDark = "solarizedDark", AdwaitaDark = "adwaitaDark", BreezeDark = "breezeDark" } default ProMedium);
|
||||
choice!(LightTheme { StudioLight = "studioLight", ProLightGray = "proLightGray", ProLight = "proLight", Classic = "classic", Adwaita = "adwaita", BreezeLight = "breezeLight" } default StudioLight);
|
||||
choice!(DarkTheme { Pro = "pro", ProMedium = "proMedium", Studio = "studio", SolarizedDark = "solarizedDark", AdwaitaDark = "adwaitaDark", BreezeDark = "breezeDark", CatppuccinFrappe = "catppuccinFrappe", CatppuccinMacchiato = "catppuccinMacchiato", CatppuccinMocha = "catppuccinMocha" } default ProMedium);
|
||||
choice!(LightTheme { StudioLight = "studioLight", ProLightGray = "proLightGray", ProLight = "proLight", Classic = "classic", Adwaita = "adwaita", BreezeLight = "breezeLight", CatppuccinLatte = "catppuccinLatte" } default StudioLight);
|
||||
choice!(CanvasColor { Default = "default", Black = "black", DarkGray = "darkGray", MediumGray = "mediumGray", LightGray = "lightGray", Custom = "custom" } default Default);
|
||||
choice!(CanvasBorder { DropShadow = "dropShadow", Line = "line", None = "none" } default DropShadow);
|
||||
choice!(UiScale { Auto = "auto", P75 = "75", P80 = "80", P85 = "85", P90 = "90", P95 = "95", P100 = "100", P125 = "125", P150 = "150", P175 = "175", P200 = "200", P250 = "250", P300 = "300" } default Auto);
|
||||
@@ -1542,8 +1542,18 @@ impl Session {
|
||||
&& let Some(theme) = interface.get("theme").and_then(Value::as_str).and_then(Theme::parse)
|
||||
{
|
||||
let (mode, slot) = match theme {
|
||||
Theme::Pro | Theme::ProMedium | Theme::Studio | Theme::SolarizedDark | Theme::AdwaitaDark | Theme::BreezeDark => ("dark", "darkTheme"),
|
||||
Theme::StudioLight | Theme::ProLightGray | Theme::ProLight | Theme::Classic | Theme::Adwaita | Theme::BreezeLight => ("light", "lightTheme"),
|
||||
Theme::Pro
|
||||
| Theme::ProMedium
|
||||
| Theme::Studio
|
||||
| Theme::SolarizedDark
|
||||
| Theme::AdwaitaDark
|
||||
| Theme::BreezeDark
|
||||
| Theme::CatppuccinFrappe
|
||||
| Theme::CatppuccinMacchiato
|
||||
| Theme::CatppuccinMocha => ("dark", "darkTheme"),
|
||||
Theme::StudioLight | Theme::ProLightGray | Theme::ProLight | Theme::Classic | Theme::Adwaita | Theme::BreezeLight | Theme::CatppuccinLatte => {
|
||||
("light", "lightTheme")
|
||||
}
|
||||
};
|
||||
interface.insert("appearanceMode".into(), json!(mode));
|
||||
interface.insert(slot.into(), json!(theme.name()));
|
||||
@@ -1666,6 +1676,22 @@ impl Session {
|
||||
next.interface.light_theme = LightTheme::BreezeLight;
|
||||
next.interface.appearance_mode = AppearanceMode::Light;
|
||||
}
|
||||
Theme::CatppuccinLatte => {
|
||||
next.interface.light_theme = LightTheme::CatppuccinLatte;
|
||||
next.interface.appearance_mode = AppearanceMode::Light;
|
||||
}
|
||||
Theme::CatppuccinFrappe => {
|
||||
next.interface.dark_theme = DarkTheme::CatppuccinFrappe;
|
||||
next.interface.appearance_mode = AppearanceMode::Dark;
|
||||
}
|
||||
Theme::CatppuccinMacchiato => {
|
||||
next.interface.dark_theme = DarkTheme::CatppuccinMacchiato;
|
||||
next.interface.appearance_mode = AppearanceMode::Dark;
|
||||
}
|
||||
Theme::CatppuccinMocha => {
|
||||
next.interface.dark_theme = DarkTheme::CatppuccinMocha;
|
||||
next.interface.appearance_mode = AppearanceMode::Dark;
|
||||
}
|
||||
}
|
||||
}
|
||||
self.prefs.edit(|p| *p = next);
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
Catppuccin
|
||||
https://catppuccin.com/palette
|
||||
https://github.com/catppuccin/catppuccin
|
||||
|
||||
The Catppuccin Latte, Frappé, Macchiato and Mocha themes' colour palettes in `theme_catppuccin.rs`
|
||||
are the Catppuccin project's palettes, used under the MIT License below.
|
||||
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2021 Catppuccin
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
@@ -2443,8 +2443,6 @@ fn start_screen(app: &mut PhotocraftApp, ui: &mut egui::Ui) {
|
||||
home_recent(app, ui, &recent);
|
||||
}
|
||||
ui.add_space(26.0);
|
||||
crate::links::discord_button(app, ui, 190.0);
|
||||
ui.add_space(10.0);
|
||||
crate::links::link_row(app, ui);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -438,8 +438,6 @@ fn about_tab_body(app: &mut PhotocraftApp, ui: &mut egui::Ui, tab: &str) {
|
||||
ui.label(crate::i18n::fmt(tl!("Version {version}"), &[("version", &photocraft_engine::build_info::long_version())]));
|
||||
ui.add_space(12.0);
|
||||
ui.vertical_centered(|ui| {
|
||||
crate::links::discord_button(app, ui, 220.0);
|
||||
ui.add_space(8.0);
|
||||
crate::links::link_row(app, ui);
|
||||
});
|
||||
ui.add_space(10.0);
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
# particular not the Czech localisation of Adobe Photoshop. Add entries the same way.
|
||||
# Conventions: menus are nouns (Soubor, Úpravy, Obraz ...), commands are infinitives (Otevřít…,
|
||||
# Uložit jako…), sentence case as in the English source. Product and technology names
|
||||
# (PhotoCraft, ArtCraft, OpenType, CMYK, Lab ...) stay in Latin letters; the trailing "…" of
|
||||
# (PhotoCraft, OpenType, CMYK, Lab ...) stay in Latin letters; the trailing "…" of
|
||||
# dialog commands is kept.
|
||||
|
||||
# Guide layout dialog
|
||||
@@ -729,6 +729,14 @@
|
||||
Classic Theme Klasický motiv
|
||||
Solarized dark Solarized tmavý
|
||||
Solarized Dark Theme Tmavý motiv Solarized
|
||||
Catppuccin Latte Theme Motiv Catppuccin Latte
|
||||
Catppuccin latte Catppuccin Latte
|
||||
Catppuccin Frappé Theme Motiv Catppuccin Frappé
|
||||
Catppuccin frappe Catppuccin Frappé
|
||||
Catppuccin Macchiato Theme Motiv Catppuccin Macchiato
|
||||
Catppuccin macchiato Catppuccin Macchiato
|
||||
Catppuccin Mocha Theme Motiv Catppuccin Mocha
|
||||
Catppuccin mocha Catppuccin Mocha
|
||||
Breeze dark Breeze tmavý
|
||||
Breeze Dark Theme Tmavý motiv Breeze
|
||||
Breeze light Breeze světlý
|
||||
@@ -765,8 +773,6 @@
|
||||
About PhotoCraft O aplikaci PhotoCraft
|
||||
PhotoCraft Website Web PhotoCraft
|
||||
PhotoCraft on GitHub PhotoCraft na GitHubu
|
||||
ArtCraft Website Web ArtCraft
|
||||
Join the ArtCraft Discord… Připojit se k Discordu ArtCraft…
|
||||
Report an Issue… Nahlásit problém…
|
||||
WIA Support… Podpora WIA…
|
||||
Apply Použít
|
||||
@@ -1047,7 +1053,6 @@
|
||||
Diffusion Difuze
|
||||
Discard the embedded profile (don't color manage) Zahodit vložený profil (bez správy barev)
|
||||
Discontiguous Nesouvislé
|
||||
Discord Discord
|
||||
Dismiss Zavřít
|
||||
Display P3 Display P3
|
||||
Display Text Zobrazený text
|
||||
@@ -1179,7 +1184,6 @@
|
||||
Invert All Invertovat vše
|
||||
Invert has no settings. Invertovat nemá žádná nastavení.
|
||||
Italic Kurzíva
|
||||
Join us on Discord Přidejte se k nám na Discordu
|
||||
Justify all Do bloku vše
|
||||
Justify last centered Do bloku, poslední řádek na střed
|
||||
Justify last left Do bloku, poslední řádek vlevo
|
||||
@@ -1588,7 +1592,6 @@
|
||||
Apple Watch 45mm Apple Watch 45 mm
|
||||
Aqua Akvamarínové
|
||||
Art & Illustration Umění a ilustrace
|
||||
ArtCraft ArtCraft
|
||||
Background Eraser Tool Nástroj guma pozadí
|
||||
Bevel & Emboss Úkos a reliéf
|
||||
Blend Mode Režim prolnutí
|
||||
@@ -3636,7 +3639,6 @@ navigator Zoom Zvětšení
|
||||
on zapnuto
|
||||
off vypnuto
|
||||
This adjustment ({key}) is kept as imported and can't be edited yet. Tato úprava ({key}) se uchovává v importované podobě a zatím ji nelze měnit.
|
||||
Join the ArtCraft Discord ({url}) Přidejte se na Discord ArtCraft ({url})
|
||||
{index} of {total} {index} z {total}
|
||||
@plural {n} step|{n} steps {n} krok|{n} kroky|{n} kroků
|
||||
{shortcut} assigned. Zkratka {shortcut} přiřazena.
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 6 and column 47.
|
@@ -12,7 +12,7 @@
|
||||
# Clean-room: every entry was written from the plain meaning of the English label using ordinary
|
||||
# German image-editing vocabulary (Ebene, Maske, Auswahl, Weichzeichnen ...). No proprietary
|
||||
# localisation resource, string table or product UI was consulted or copied; add entries the same
|
||||
# way. Product and technology names (PhotoCraft, ArtCraft, OpenType, CMYK, Lab ...) stay in Latin
|
||||
# way. Product and technology names (PhotoCraft, OpenType, CMYK, Lab ...) stay in Latin
|
||||
# letters; the trailing "…" of dialog commands is kept. Plural rule: one|other (n != 1 -> other).
|
||||
|
||||
# Guide layout dialog
|
||||
@@ -715,6 +715,14 @@
|
||||
Classic Theme Klassisches Design
|
||||
Solarized dark Solarized dunkel
|
||||
Solarized Dark Theme Solarized-Design (Dunkel)
|
||||
Catppuccin Latte Theme Catppuccin-Design Latte
|
||||
Catppuccin latte Catppuccin Latte
|
||||
Catppuccin Frappé Theme Catppuccin-Design Frappé
|
||||
Catppuccin frappe Catppuccin Frappé
|
||||
Catppuccin Macchiato Theme Catppuccin-Design Macchiato
|
||||
Catppuccin macchiato Catppuccin Macchiato
|
||||
Catppuccin Mocha Theme Catppuccin-Design Mocha
|
||||
Catppuccin mocha Catppuccin Mocha
|
||||
Breeze dark Breeze dunkel
|
||||
Breeze Dark Theme Breeze-Design (Dunkel)
|
||||
Breeze light Breeze hell
|
||||
@@ -751,8 +759,6 @@
|
||||
About PhotoCraft Über PhotoCraft
|
||||
PhotoCraft Website PhotoCraft-Website
|
||||
PhotoCraft on GitHub PhotoCraft auf GitHub
|
||||
ArtCraft Website ArtCraft-Website
|
||||
Join the ArtCraft Discord… ArtCraft-Discord beitreten…
|
||||
Report an Issue… Problem melden…
|
||||
WIA Support… WIA-Unterstützung…
|
||||
Apply Anwenden
|
||||
@@ -1027,7 +1033,6 @@
|
||||
Diffusion Diffusion
|
||||
Discard the embedded profile (don't color manage) Eingebettetes Profil verwerfen (keine Farbverwaltung)
|
||||
Discontiguous Nicht benachbart
|
||||
Discord Discord
|
||||
Dismiss Ausblenden
|
||||
Display P3 Display P3
|
||||
Display Text Text anzeigen
|
||||
@@ -1159,7 +1164,6 @@
|
||||
Invert All Alle invertieren
|
||||
Invert has no settings. Invertieren hat keine Einstellungen.
|
||||
Italic Kursiv
|
||||
Join us on Discord Tritt unserem Discord bei
|
||||
Justify all Alles im Blocksatz
|
||||
Justify last centered Letzte Zeile zentriert
|
||||
Justify last left Letzte Zeile links
|
||||
@@ -1564,7 +1568,6 @@
|
||||
Apple Watch 45mm Apple Watch 45 mm
|
||||
Aqua Aqua
|
||||
Art & Illustration Kunst & Illustration
|
||||
ArtCraft ArtCraft
|
||||
Background Eraser Tool Hintergrund-Radiergummi-Werkzeug
|
||||
Bevel & Emboss Abgeflachte Kante & Relief
|
||||
Blend Mode Fusionsmodus
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 6 and column 47.
|
@@ -1211,7 +1211,6 @@
|
||||
Custom Pixel Aspect Ratio Προσαρμοσμένη αναλογία εικονοστοιχείων
|
||||
32-bit Preview Options Επιλογές προεπισκόπησης 32 bit
|
||||
New Guide Νέος οδηγός
|
||||
Join the ArtCraft Discord Συμμετοχή στο Discord του ArtCraft
|
||||
Report an Issue Αναφορά προβλήματος
|
||||
Load Files into Stack Φόρτωση αρχείων σε στοίβα
|
||||
Statistics Στατιστικά
|
||||
@@ -2017,7 +2016,6 @@
|
||||
Arc Τόξο
|
||||
Arch Καμάρα
|
||||
Art & Illustration Τέχνη και εικονογράφηση
|
||||
ArtCraft Website Ιστότοπος ArtCraft
|
||||
Artboard Background Color Χρώμα φόντου πίνακα σχεδίασης
|
||||
Artboard Guides Οδηγοί πίνακα σχεδίασης
|
||||
Artboard from Group Πίνακας σχεδίασης από ομάδα
|
||||
@@ -2117,6 +2115,14 @@
|
||||
Classic Theme Κλασικό θέμα
|
||||
Solarized dark Solarized σκούρο
|
||||
Solarized Dark Theme Σκούρο θέμα Solarized
|
||||
Catppuccin Latte Theme Θέμα Catppuccin Latte
|
||||
Catppuccin latte Catppuccin Latte
|
||||
Catppuccin Frappé Theme Θέμα Catppuccin Frappé
|
||||
Catppuccin frappe Catppuccin Frappé
|
||||
Catppuccin Macchiato Theme Θέμα Catppuccin Macchiato
|
||||
Catppuccin macchiato Catppuccin Macchiato
|
||||
Catppuccin Mocha Theme Θέμα Catppuccin Mocha
|
||||
Catppuccin mocha Catppuccin Mocha
|
||||
Breeze dark Breeze σκούρο
|
||||
Breeze Dark Theme Σκούρο θέμα Breeze
|
||||
Breeze light Breeze φωτεινό
|
||||
@@ -2513,8 +2519,6 @@
|
||||
Iris Blur… Θόλωση ίριδας…
|
||||
Italic Πλάγια
|
||||
Jag Οδοντωτό
|
||||
Join the ArtCraft Discord… Συμμετοχή στο Discord του ArtCraft…
|
||||
Join us on Discord Ελάτε στην κοινότητά μας στο Discord
|
||||
Jpeg quality Ποιότητα JPEG
|
||||
Justification Πλήρης στοίχιση
|
||||
Justify Πλήρης στοίχιση
|
||||
@@ -3354,7 +3358,6 @@ cameraRaw Yellow Κίτρινο
|
||||
Add to Swatches Προσθήκη στα δείγματα χρωμάτων
|
||||
Alt Alt
|
||||
Anamorphic 2:1 (2) Αναμορφικό 2:1 (2)
|
||||
ArtCraft ArtCraft
|
||||
Blend If: Ανάμειξη υπό όρους:
|
||||
Channels: Κανάλια:
|
||||
Click a red pupil to neutralize it Κάντε κλικ σε μια κόκκινη κόρη για να την εξουδετερώσετε
|
||||
@@ -3369,7 +3372,6 @@ cameraRaw Yellow Κίτρινο
|
||||
D1/DV PAL Widescreen (1.46) D1/DV PAL ευρεία οθόνη (1.46)
|
||||
DVCPRO HD 1080/HDV 1080 (1.5) DVCPRO HD 1080/HDV 1080 (1.5)
|
||||
Darken Amount Ποσότητα σκουρέματος
|
||||
Discord Discord
|
||||
Display P3 Display P3
|
||||
Edit › Paste Επεξεργασία › Επικόλληση
|
||||
Edits that change the whole document, such as a layer's blend mode, opacity or visibility, redraw all of it. Οι αλλαγές που επηρεάζουν όλο το έγγραφο, όπως η λειτουργία ανάμειξης, η αδιαφάνεια ή η ορατότητα ενός επιπέδου, το επανασχεδιάζουν ολόκληρο.
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 1000 and column 18.
|
@@ -9,7 +9,7 @@
|
||||
# Clean-room: every entry was written from the plain meaning of the English label using ordinary
|
||||
# Spanish computing vocabulary (capa, pincel, selección, lienzo ...). No proprietary localisation
|
||||
# resource, string table or product UI was consulted or copied; add entries the same way.
|
||||
# Product and technology names (PhotoCraft, ArtCraft, OpenType, CMYK, Lab ...) stay in Latin
|
||||
# Product and technology names (PhotoCraft, OpenType, CMYK, Lab ...) stay in Latin
|
||||
# letters; the trailing "…" of dialog commands is kept.
|
||||
|
||||
# Guide layout dialog
|
||||
@@ -722,6 +722,14 @@
|
||||
Classic Theme Tema Clásico
|
||||
Solarized dark Solarized oscuro
|
||||
Solarized Dark Theme Tema Solarized oscuro
|
||||
Catppuccin Latte Theme Tema Catppuccin Latte
|
||||
Catppuccin latte Catppuccin Latte
|
||||
Catppuccin Frappé Theme Tema Catppuccin Frappé
|
||||
Catppuccin frappe Catppuccin Frappé
|
||||
Catppuccin Macchiato Theme Tema Catppuccin Macchiato
|
||||
Catppuccin macchiato Catppuccin Macchiato
|
||||
Catppuccin Mocha Theme Tema Catppuccin Mocha
|
||||
Catppuccin mocha Catppuccin Mocha
|
||||
Breeze dark Breeze oscuro
|
||||
Breeze Dark Theme Tema Breeze oscuro
|
||||
Breeze light Breeze claro
|
||||
@@ -758,8 +766,6 @@
|
||||
About PhotoCraft Acerca de PhotoCraft
|
||||
PhotoCraft Website Sitio web de PhotoCraft
|
||||
PhotoCraft on GitHub PhotoCraft en GitHub
|
||||
ArtCraft Website Sitio web de ArtCraft
|
||||
Join the ArtCraft Discord… Únase al Discord de ArtCraft…
|
||||
Report an Issue… Informar de un problema…
|
||||
WIA Support… Compatibilidad con WIA…
|
||||
Apply Aplicar
|
||||
@@ -1033,7 +1039,6 @@
|
||||
Diffusion Difusión
|
||||
Discard the embedded profile (don't color manage) Descartar el perfil incrustado (no gestionar el color)
|
||||
Discontiguous No contiguo
|
||||
Discord Discord
|
||||
Dismiss Descartar
|
||||
Display P3 Display P3
|
||||
Display Text Texto de visualización
|
||||
@@ -1165,7 +1170,6 @@
|
||||
Invert All Invertir todo
|
||||
Invert has no settings. Invertir no tiene ajustes.
|
||||
Italic Cursiva
|
||||
Join us on Discord Únase a nuestro Discord
|
||||
Justify all Justificar todo
|
||||
Justify last centered Justificar última centrada
|
||||
Justify last left Justificar última a la izquierda
|
||||
@@ -1572,7 +1576,6 @@
|
||||
Apple Watch 45mm Apple Watch 45mm
|
||||
Aqua Aqua
|
||||
Art & Illustration Arte e ilustración
|
||||
ArtCraft ArtCraft
|
||||
Background Eraser Tool Herramienta Borrador de fondos
|
||||
Bevel & Emboss Bisel y relieve
|
||||
Blend Mode Modo de fusión
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 4 and column 47.
|
@@ -16,7 +16,7 @@
|
||||
# Conventions: menus are nouns (Fichier, Édition, Image ...), commands are infinitives (Ouvrir…,
|
||||
# Enregistrer sous…), sentence case. French typography: a no-break space (U+00A0) before
|
||||
# « : ; ? ! » and "%", and inside guillemets « … ». Product and technology names (PhotoCraft,
|
||||
# ArtCraft, OpenType, Lab ...) stay as they are; RGB/CMYK read RVB/CMJN; the trailing "…" of
|
||||
# OpenType, Lab ...) stay as they are; RGB/CMYK read RVB/CMJN; the trailing "…" of
|
||||
# dialog commands is kept.
|
||||
|
||||
# Guide layout dialog
|
||||
@@ -712,6 +712,14 @@
|
||||
Classic Theme Thème Classique
|
||||
Solarized dark Solarized sombre
|
||||
Solarized Dark Theme Thème Solarized sombre
|
||||
Catppuccin Latte Theme Thème Catppuccin Latte
|
||||
Catppuccin latte Catppuccin Latte
|
||||
Catppuccin Frappé Theme Thème Catppuccin Frappé
|
||||
Catppuccin frappe Catppuccin Frappé
|
||||
Catppuccin Macchiato Theme Thème Catppuccin Macchiato
|
||||
Catppuccin macchiato Catppuccin Macchiato
|
||||
Catppuccin Mocha Theme Thème Catppuccin Mocha
|
||||
Catppuccin mocha Catppuccin Mocha
|
||||
Breeze dark Breeze sombre
|
||||
Breeze Dark Theme Thème Breeze sombre
|
||||
Breeze light Breeze clair
|
||||
@@ -748,8 +756,6 @@
|
||||
About PhotoCraft À propos de PhotoCraft
|
||||
PhotoCraft Website Site web de PhotoCraft
|
||||
PhotoCraft on GitHub PhotoCraft sur GitHub
|
||||
ArtCraft Website Site web d'ArtCraft
|
||||
Join the ArtCraft Discord… Rejoindre le Discord d'ArtCraft…
|
||||
Report an Issue… Signaler un problème…
|
||||
WIA Support… Prise en charge de WIA…
|
||||
Apply Appliquer
|
||||
@@ -1021,7 +1027,6 @@
|
||||
Diffusion Diffusion
|
||||
Discard the embedded profile (don't color manage) Ignorer le profil incorporé (sans gestion des couleurs)
|
||||
Discontiguous Non contigu
|
||||
Discord Discord
|
||||
Dismiss Fermer
|
||||
Display P3 Display P3
|
||||
Display Text Texte affiché
|
||||
@@ -1147,7 +1152,6 @@
|
||||
Invert All Tout inverser
|
||||
Invert has no settings. Inverser n'a aucun réglage.
|
||||
Italic Italique
|
||||
Join us on Discord Rejoignez-nous sur Discord
|
||||
Justify all Justifier tout
|
||||
Justify last centered Justifier, dernière ligne centrée
|
||||
Justify last left Justifier, dernière ligne à gauche
|
||||
@@ -1550,7 +1554,6 @@
|
||||
Apple Watch 45mm Apple Watch 45 mm
|
||||
Aqua Aqua
|
||||
Art & Illustration Art et illustration
|
||||
ArtCraft ArtCraft
|
||||
Background Eraser Tool Outil Gomme d'arrière-plan
|
||||
Bevel & Emboss Biseau et relief
|
||||
Blend Mode Mode de fusion
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 6 and column 47.
|
@@ -12,7 +12,7 @@
|
||||
# Clean-room: every entry was written from the plain meaning of the English label using ordinary
|
||||
# Hungarian image-editing vocabulary (réteg, maszk, kijelölés ...). No proprietary localisation
|
||||
# resource, string table or product UI was consulted or copied; add entries the same way.
|
||||
# Product and technology names (PhotoCraft, ArtCraft, OpenType, CMYK, Lab ...) stay in Latin
|
||||
# Product and technology names (PhotoCraft, OpenType, CMYK, Lab ...) stay in Latin
|
||||
# letters; the trailing "…" of dialog commands is kept. Plural rule: a count is followed by the
|
||||
# singular noun in Hungarian, so every @plural entry has a single form.
|
||||
|
||||
@@ -431,7 +431,6 @@
|
||||
Artboard Guides Rajztábla-segédvonalak
|
||||
Artboards to Files Rajztáblák fájlokba
|
||||
Artboards to PDF Rajztáblák PDF-be
|
||||
ArtCraft Website ArtCraft-weboldal
|
||||
Average Átlag
|
||||
Background From Layer Háttér a rétegből
|
||||
Bitmap… Bittérkép…
|
||||
@@ -585,8 +584,6 @@
|
||||
Internet Standard RGB Internetes szabványos RGB
|
||||
Inverse Megfordítás
|
||||
Iris Blur… Íriszelmosás…
|
||||
Join the ArtCraft Discord Csatlakozás az ArtCraft Discordhoz
|
||||
Join the ArtCraft Discord… Csatlakozás az ArtCraft Discordhoz…
|
||||
Language Nyelv
|
||||
Language Options Nyelvi beállítások
|
||||
Large Nagy
|
||||
@@ -1732,7 +1729,6 @@ layerLabel Magenta Bíbor
|
||||
Delete Tool Preset Eszköz-előbeállítás törlése
|
||||
Delete tool preset Eszköz-előbeállítás törlése
|
||||
Delete Workspace Munkaterület törlése
|
||||
Discord Discord
|
||||
Doc: {w} × {h} px Dok.: {w} × {h} px
|
||||
Drag a box or click four corners · drag the corners onto the edges of a skewed shape · {commit} commits · Esc cancels Húzz egy keretet, vagy kattints a négy sarokra · húzd a sarkokat a ferde alakzat éleire · {commit}: véglegesítés · Esc: megszakítás
|
||||
Drag a crop box · drag inside to move · edges resize ({ratio} ratio, {centre} centre) · Space moves while drawing · arrows nudge · X swaps orientation · {commit} commits · Esc cancels Húzz egy körbevágási keretet · belül húzva mozgatod · az élekkel átméretezed ({ratio}: arány, {centre}: középről) · Space: mozgatás rajzolás közben · nyilak: léptetés · X: tájolás cseréje · {commit}: véglegesítés · Esc: megszakítás
|
||||
@@ -1787,7 +1783,6 @@ layerLabel Magenta Bíbor
|
||||
Intersect with Metszet ezzel
|
||||
Intersect with selection ({key}) Metszet a kijelöléssel ({key})
|
||||
Invalid panel layout; restored the default dock Érvénytelen panelelrendezés; az alapértelmezett dokkolás visszaállítva
|
||||
Join the ArtCraft Discord ({url}) Csatlakozz az ArtCraft Discord-szerveréhez ({url})
|
||||
Keyboard Shortcuts Billentyűparancsok
|
||||
Kind Fajta
|
||||
Lasso Lasszó
|
||||
@@ -3013,7 +3008,6 @@ cameraRaw Yellow Sárga
|
||||
Arch Boltív
|
||||
Area Terület
|
||||
Artboard Tool Rajztábla
|
||||
ArtCraft ArtCraft
|
||||
Ask Rákérdezés
|
||||
Aspect Ratio Oldalarány
|
||||
Assign Profile Profil hozzárendelése
|
||||
@@ -3269,7 +3263,6 @@ cameraRaw Yellow Sárga
|
||||
Interval Intervallum
|
||||
Invalid {mode} profile Érvénytelen profil ({mode})
|
||||
Its layers don't fit the GPU memory budget. Raising Memory usage in Preferences › Performance raises the budget, up to a quarter of this computer's memory. A dokumentum rétegei nem férnek el a GPU memóriakeretében. Ha a Beállítások › Teljesítmény alatt növeled a memóriahasználatot, a keret is nő, legfeljebb a számítógép memóriájának negyedéig.
|
||||
Join us on Discord Csatlakozz hozzánk a Discordon
|
||||
Keep Using CPU Marad a CPU
|
||||
Kernel Szűrőmag
|
||||
Keyboard Billentyűzet
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 6 and column 47.
|
@@ -9,7 +9,7 @@
|
||||
# Clean-room: every entry was written from the plain meaning of the English label using ordinary
|
||||
# Indonesian computing vocabulary (layer, kuas, seleksi, kanvas ...). No proprietary localisation
|
||||
# resource, string table or product UI was consulted or copied; add entries the same way.
|
||||
# Product and technology names (PhotoCraft, ArtCraft, OpenType, CMYK, Lab ...) stay in Latin
|
||||
# Product and technology names (PhotoCraft, OpenType, CMYK, Lab ...) stay in Latin
|
||||
# letters; the trailing "…" of dialog commands is kept.
|
||||
|
||||
# Guide layout dialog
|
||||
@@ -705,6 +705,14 @@
|
||||
Classic Theme Tema Klasik
|
||||
Solarized dark Solarized gelap
|
||||
Solarized Dark Theme Tema Solarized Gelap
|
||||
Catppuccin Latte Theme Tema Catppuccin Latte
|
||||
Catppuccin latte Catppuccin Latte
|
||||
Catppuccin Frappé Theme Tema Catppuccin Frappé
|
||||
Catppuccin frappe Catppuccin Frappé
|
||||
Catppuccin Macchiato Theme Tema Catppuccin Macchiato
|
||||
Catppuccin macchiato Catppuccin Macchiato
|
||||
Catppuccin Mocha Theme Tema Catppuccin Mocha
|
||||
Catppuccin mocha Catppuccin Mocha
|
||||
Breeze dark Breeze gelap
|
||||
Breeze Dark Theme Tema Breeze Gelap
|
||||
Breeze light Breeze terang
|
||||
@@ -741,8 +749,6 @@
|
||||
About PhotoCraft Tentang PhotoCraft
|
||||
PhotoCraft Website Situs Web PhotoCraft
|
||||
PhotoCraft on GitHub PhotoCraft di GitHub
|
||||
ArtCraft Website Situs Web ArtCraft
|
||||
Join the ArtCraft Discord… Gabung ke Discord ArtCraft…
|
||||
Report an Issue… Laporkan Masalah…
|
||||
WIA Support… Dukungan WIA…
|
||||
Apply Terapkan
|
||||
@@ -1015,7 +1021,6 @@
|
||||
Diffusion Difusi
|
||||
Discard the embedded profile (don't color manage) Buang profil tertanam (tanpa manajemen warna)
|
||||
Discontiguous Tidak Berdekatan
|
||||
Discord Discord
|
||||
Dismiss Tutup
|
||||
Display P3 Display P3
|
||||
Display Text Teks Tampilan
|
||||
@@ -1141,7 +1146,6 @@
|
||||
Invert All Balikkan Semua
|
||||
Invert has no settings. Invert tidak punya pengaturan.
|
||||
Italic Miring
|
||||
Join us on Discord Gabung bareng kami di Discord
|
||||
Justify all Rata penuh semua
|
||||
Justify last centered Rata penuh, baris terakhir di tengah
|
||||
Justify last left Rata penuh, baris terakhir di kiri
|
||||
@@ -1544,7 +1548,6 @@
|
||||
Apple Watch 45mm Apple Watch 45mm
|
||||
Aqua Aqua
|
||||
Art & Illustration Seni & Ilustrasi
|
||||
ArtCraft ArtCraft
|
||||
Background Eraser Tool Alat Background Eraser
|
||||
Bevel & Emboss Bevel & Emboss
|
||||
Blend Mode Mode Blend
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 4 and column 47.
|
@@ -9,7 +9,7 @@
|
||||
# Clean-room: every entry was written from the plain meaning of the English label using ordinary
|
||||
# Italian computing vocabulary (livello, pennello, selezione, quadro ...). No proprietary localisation
|
||||
# resource, string table or product UI was consulted or copied; add entries the same way.
|
||||
# Product and technology names (PhotoCraft, ArtCraft, OpenType, CMYK, Lab ...) stay in Latin
|
||||
# Product and technology names (PhotoCraft, OpenType, CMYK, Lab ...) stay in Latin
|
||||
# letters; the trailing … of dialog commands is kept.
|
||||
|
||||
# Guide layout dialog
|
||||
@@ -720,6 +720,14 @@
|
||||
Classic Theme Tema classico
|
||||
Solarized dark Solarized scuro
|
||||
Solarized Dark Theme Tema Solarized scuro
|
||||
Catppuccin Latte Theme Tema Catppuccin Latte
|
||||
Catppuccin latte Catppuccin Latte
|
||||
Catppuccin Frappé Theme Tema Catppuccin Frappé
|
||||
Catppuccin frappe Catppuccin Frappé
|
||||
Catppuccin Macchiato Theme Tema Catppuccin Macchiato
|
||||
Catppuccin macchiato Catppuccin Macchiato
|
||||
Catppuccin Mocha Theme Tema Catppuccin Mocha
|
||||
Catppuccin mocha Catppuccin Mocha
|
||||
Breeze dark Breeze scuro
|
||||
Breeze Dark Theme Tema Breeze scuro
|
||||
Breeze light Breeze chiaro
|
||||
@@ -756,8 +764,6 @@
|
||||
About PhotoCraft Informazioni su PhotoCraft
|
||||
PhotoCraft Website Sito web PhotoCraft
|
||||
PhotoCraft on GitHub PhotoCraft su GitHub
|
||||
ArtCraft Website Sito web ArtCraft
|
||||
Join the ArtCraft Discord… Unisciti al Discord di ArtCraft…
|
||||
Report an Issue… Segnala un problema…
|
||||
WIA Support… Supporto WIA…
|
||||
Apply Applica
|
||||
@@ -1034,7 +1040,6 @@
|
||||
Diffusion Diffusione
|
||||
Discard the embedded profile (don't color manage) Scarta profilo incorporato (non gestire colore)
|
||||
Discontiguous Non contiguo
|
||||
Discord Discord
|
||||
Dismiss Chiudi
|
||||
Display P3 Display P3
|
||||
Display Text Mostra testo
|
||||
@@ -1164,7 +1169,6 @@
|
||||
Invert All Inverti tutto
|
||||
Invert has no settings. Inverti non ha impostazioni.
|
||||
Italic Corsivo
|
||||
Join us on Discord Unisciti al nostro Discord
|
||||
Justify all Giustifica tutto
|
||||
Justify last centered Giustifica ultimo centrato
|
||||
Justify last left Giustifica ultimo a sinistra
|
||||
@@ -1571,7 +1575,6 @@
|
||||
Apple Watch 45mm Apple Watch 45mm
|
||||
Aqua Acqua
|
||||
Art & Illustration Arte e illustrazione
|
||||
ArtCraft ArtCraft
|
||||
Background Eraser Tool Strumento Gomma per sfondo
|
||||
Bevel & Emboss Smusso e rilievo
|
||||
Blend Mode Metodo di fusione
|
||||
@@ -3455,7 +3458,6 @@ layerLabel No Color Nessun colore
|
||||
Custom Pixel Aspect Ratio Proporzioni pixel personalizzate
|
||||
32-bit Preview Options Opzioni anteprima 32 bit
|
||||
New Guide Nuova guida
|
||||
Join the ArtCraft Discord Unisciti al Discord di ArtCraft
|
||||
Report an Issue Segnala un problema
|
||||
Load Files into Stack Carica file in pila
|
||||
Statistics Statistiche
|
||||
@@ -4009,7 +4011,6 @@ navigator Zoom Zoom
|
||||
on attivo
|
||||
off disattivo
|
||||
This adjustment ({key}) is kept as imported and can't be edited yet. Questa regolazione ({key}) resta come è stata importata e non si può ancora modificare.
|
||||
Join the ArtCraft Discord ({url}) Unisciti al Discord di ArtCraft ({url})
|
||||
{index} of {total} {index} di {total}
|
||||
{shortcut} assigned. {shortcut} assegnata.
|
||||
{shortcut} is already in use by {commands} and will be removed from it when you click OK. {shortcut} è già usata da {commands} e verrà rimossa quando fai clic su OK.
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 2595 and column 53.
|
@@ -12,7 +12,7 @@
|
||||
# Clean-room: every entry was written from the plain meaning of the English label using ordinary
|
||||
# Japanese computing vocabulary (レイヤー, ぼかし, 選択範囲 ...). No proprietary localisation
|
||||
# resource, string table or product UI was consulted or copied; add entries the same way.
|
||||
# Product and technology names (PhotoCraft, ArtCraft, OpenType, CMYK, Lab ...) stay in Latin
|
||||
# Product and technology names (PhotoCraft, OpenType, CMYK, Lab ...) stay in Latin
|
||||
# letters; the trailing "…" of dialog commands is kept.
|
||||
|
||||
# Guide layout dialog
|
||||
@@ -722,6 +722,14 @@
|
||||
Classic Theme クラシックテーマ
|
||||
Solarized dark Solarized ダーク
|
||||
Solarized Dark Theme Solarized ダークテーマ
|
||||
Catppuccin Latte Theme Catppuccin Latte テーマ
|
||||
Catppuccin latte Catppuccin Latte
|
||||
Catppuccin Frappé Theme Catppuccin Frappé テーマ
|
||||
Catppuccin frappe Catppuccin Frappé
|
||||
Catppuccin Macchiato Theme Catppuccin Macchiato テーマ
|
||||
Catppuccin macchiato Catppuccin Macchiato
|
||||
Catppuccin Mocha Theme Catppuccin Mocha テーマ
|
||||
Catppuccin mocha Catppuccin Mocha
|
||||
Breeze dark Breeze ダーク
|
||||
Breeze Dark Theme Breeze ダークテーマ
|
||||
Breeze light Breeze ライト
|
||||
@@ -758,8 +766,6 @@
|
||||
About PhotoCraft PhotoCraft について
|
||||
PhotoCraft Website PhotoCraft の Web サイト
|
||||
PhotoCraft on GitHub GitHub 上の PhotoCraft
|
||||
ArtCraft Website ArtCraft の Web サイト
|
||||
Join the ArtCraft Discord… ArtCraft の Discord に参加…
|
||||
Report an Issue… 問題を報告…
|
||||
WIA Support… WIA サポート…
|
||||
Apply 適用
|
||||
@@ -1034,7 +1040,6 @@
|
||||
Diffusion 拡散
|
||||
Discard the embedded profile (don't color manage) 埋め込みプロファイルを破棄 (カラーマネジメントしない)
|
||||
Discontiguous 不連続
|
||||
Discord Discord
|
||||
Dismiss 閉じる
|
||||
Display P3 Display P3
|
||||
Display Text 表示テキスト
|
||||
@@ -1166,7 +1171,6 @@
|
||||
Invert All すべて反転
|
||||
Invert has no settings. 階調の反転には設定がありません。
|
||||
Italic イタリック
|
||||
Join us on Discord Discord に参加
|
||||
Justify all 均等配置 (最終行も)
|
||||
Justify last centered 最終行中央揃えの両端揃え
|
||||
Justify last left 最終行左揃えの両端揃え
|
||||
@@ -1571,7 +1575,6 @@
|
||||
Apple Watch 45mm Apple Watch 45mm
|
||||
Aqua アクア
|
||||
Art & Illustration アート・イラスト
|
||||
ArtCraft ArtCraft
|
||||
Background Eraser Tool 背景消しゴムツール
|
||||
Bevel & Emboss ベベルとエンボス
|
||||
Blend Mode 描画モード
|
||||
@@ -3293,7 +3296,6 @@ fontWeight Italic 斜体
|
||||
Install Plug-in プラグインをインストール
|
||||
Intersect with 共通部分
|
||||
Intersect with selection (⇧⌥) 選択範囲との共通部分 (⇧⌥)
|
||||
Join the ArtCraft Discord ArtCraft の Discord に参加
|
||||
Keep proportions 縦横比を固定
|
||||
Keep view in sync ビューを同期
|
||||
Keeps the current texture when switching presets. プリセットを切り替えても現在のテクスチャを維持します。
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 6 and column 47.
|
@@ -696,6 +696,14 @@
|
||||
Classic Theme 클래식 테마
|
||||
Solarized dark Solarized 어두움
|
||||
Solarized Dark Theme Solarized 어두운 테마
|
||||
Catppuccin Latte Theme Catppuccin Latte 테마
|
||||
Catppuccin latte Catppuccin Latte
|
||||
Catppuccin Frappé Theme Catppuccin Frappé 테마
|
||||
Catppuccin frappe Catppuccin Frappé
|
||||
Catppuccin Macchiato Theme Catppuccin Macchiato 테마
|
||||
Catppuccin macchiato Catppuccin Macchiato
|
||||
Catppuccin Mocha Theme Catppuccin Mocha 테마
|
||||
Catppuccin mocha Catppuccin Mocha
|
||||
Breeze dark Breeze 어두움
|
||||
Breeze Dark Theme Breeze 어두운 테마
|
||||
Breeze light Breeze 밝게
|
||||
@@ -732,8 +740,6 @@
|
||||
About PhotoCraft PhotoCraft 정보
|
||||
PhotoCraft Website PhotoCraft 웹사이트
|
||||
PhotoCraft on GitHub GitHub의 PhotoCraft
|
||||
ArtCraft Website ArtCraft 웹사이트
|
||||
Join the ArtCraft Discord… ArtCraft Discord 참여…
|
||||
Report an Issue… 문제 신고…
|
||||
WIA Support… WIA 지원…
|
||||
Apply 적용
|
||||
@@ -1009,7 +1015,6 @@
|
||||
Diffusion 확산
|
||||
Discard the embedded profile (don't color manage) 포함된 프로파일 버리기(색상 관리 안 함)
|
||||
Discontiguous 비인접
|
||||
Discord Discord
|
||||
Dismiss 닫기
|
||||
Display P3 Display P3
|
||||
Display Text 표시 텍스트
|
||||
@@ -1135,7 +1140,6 @@
|
||||
Invert All 모두 반전
|
||||
Invert has no settings. 반전에는 설정이 없습니다.
|
||||
Italic 기울임꼴
|
||||
Join us on Discord Discord 참여
|
||||
Justify all 모든 줄 양쪽 정렬
|
||||
Justify last centered 마지막 줄 가운데 정렬
|
||||
Justify last left 마지막 줄 왼쪽 정렬
|
||||
@@ -1540,7 +1544,6 @@
|
||||
Apple Watch 45mm Apple Watch 45mm
|
||||
Aqua 청록
|
||||
Art & Illustration 아트 및 일러스트레이션
|
||||
ArtCraft ArtCraft
|
||||
Background Eraser Tool 배경 지우개 도구
|
||||
Bevel & Emboss 경사와 엠보스
|
||||
Blend Mode 혼합 모드
|
||||
@@ -2617,7 +2620,6 @@ cameraRaw Color 색상
|
||||
Custom Pixel Aspect Ratio 사용자 정의 픽셀 종횡비
|
||||
32-bit Preview Options 32비트 미리 보기 옵션
|
||||
New Guide 새 안내선
|
||||
Join the ArtCraft Discord ArtCraft Discord 참여
|
||||
Report an Issue 문제 신고
|
||||
WIA Support WIA 지원
|
||||
Load Files into Stack 파일을 스택으로 불러오기
|
||||
|
||||
|
@@ -4,7 +4,7 @@
|
||||
# Clean-room: every entry was written from the plain meaning of the English label using ordinary
|
||||
# Dutch computing vocabulary (laag, selectie, masker, aanpassingslaag, penseel, verloop ...). No
|
||||
# proprietary localisation resource, string table or product UI was consulted or copied; add
|
||||
# entries the same way. Product and technology names (PhotoCraft, ArtCraft, OpenType, CMYK, Lab ...)
|
||||
# entries the same way. Product and technology names (PhotoCraft, OpenType, CMYK, Lab ...)
|
||||
# stay as they are; the trailing "…" of dialog commands is kept. UI text addresses the user
|
||||
# informally ("je") and uses sentence case.
|
||||
|
||||
@@ -701,6 +701,14 @@
|
||||
Classic Theme Klassiek thema
|
||||
Solarized dark Solarized donker
|
||||
Solarized Dark Theme Solarized-thema donker
|
||||
Catppuccin Latte Theme Catppuccin-thema Latte
|
||||
Catppuccin latte Catppuccin Latte
|
||||
Catppuccin Frappé Theme Catppuccin-thema Frappé
|
||||
Catppuccin frappe Catppuccin Frappé
|
||||
Catppuccin Macchiato Theme Catppuccin-thema Macchiato
|
||||
Catppuccin macchiato Catppuccin Macchiato
|
||||
Catppuccin Mocha Theme Catppuccin-thema Mocha
|
||||
Catppuccin mocha Catppuccin Mocha
|
||||
Breeze dark Breeze donker
|
||||
Breeze Dark Theme Breeze-thema donker
|
||||
Breeze light Breeze licht
|
||||
@@ -741,8 +749,6 @@
|
||||
About PhotoCraft Over PhotoCraft
|
||||
PhotoCraft Website Website van PhotoCraft
|
||||
PhotoCraft on GitHub PhotoCraft op GitHub
|
||||
ArtCraft Website Website van ArtCraft
|
||||
Join the ArtCraft Discord… Deelnemen aan de ArtCraft-Discord…
|
||||
Report an Issue… Probleem melden…
|
||||
WIA Support… WIA-ondersteuning…
|
||||
Apply Toepassen
|
||||
@@ -1016,7 +1022,6 @@
|
||||
Diffusion Diffusie
|
||||
Discard the embedded profile (don't color manage) Het ingesloten profiel negeren (geen kleurbeheer)
|
||||
Discontiguous Niet-aaneengesloten
|
||||
Discord Discord
|
||||
Dismiss Sluiten
|
||||
Display P3 Display P3
|
||||
Display Text Tekst tonen
|
||||
@@ -1148,7 +1153,6 @@
|
||||
Invert All Alles omkeren
|
||||
Invert has no settings. Omkeren heeft geen instellingen.
|
||||
Italic Cursief
|
||||
Join us on Discord Doe mee op Discord
|
||||
Justify all Alles uitvullen
|
||||
Justify last centered Uitvullen, laatste regel gecentreerd
|
||||
Justify last left Uitvullen, laatste regel links
|
||||
@@ -1549,7 +1553,6 @@
|
||||
Apple Watch 45mm Apple Watch 45 mm
|
||||
Aqua Aqua
|
||||
Art & Illustration Kunst en illustratie
|
||||
ArtCraft ArtCraft
|
||||
Background Eraser Tool Achtergrondgumgereedschap
|
||||
Bevel & Emboss Schuine kant en reliëf
|
||||
Blend Mode Overvloeimodus
|
||||
@@ -2981,7 +2984,6 @@ cameraRaw Color Kleur
|
||||
Custom Pixel Aspect Ratio Aangepaste pixelverhouding
|
||||
32-bit Preview Options Voorvertoningsopties 32-bit
|
||||
New Guide Nieuwe hulplijn
|
||||
Join the ArtCraft Discord Deelnemen aan de ArtCraft-Discord
|
||||
Report an Issue Probleem melden
|
||||
Load Files into Stack Bestanden in stapel laden
|
||||
Statistics Statistieken
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 8 and column 34.
|
@@ -13,7 +13,7 @@
|
||||
# Clean-room: every entry was written from the plain meaning of the English label using ordinary
|
||||
# Polish image-editing vocabulary (warstwa, maska, zaznaczenie, pędzel, rozmycie, krycie ...). No
|
||||
# proprietary localisation resource, string table or product UI was consulted or copied; add
|
||||
# entries the same way. Product and technology names (PhotoCraft, ArtCraft, OpenType, CMYK, Lab ...)
|
||||
# entries the same way. Product and technology names (PhotoCraft, OpenType, CMYK, Lab ...)
|
||||
# stay in Latin letters; the trailing "…" of dialog commands is kept.
|
||||
# Conventions: menus are nouns (Plik, Edycja, Obraz ...), commands are infinitives (Otwórz…,
|
||||
# Zapisz jako…), sentence case as in the English source. Quotes: „…”.
|
||||
@@ -721,6 +721,14 @@
|
||||
Classic Theme Motyw klasyczny
|
||||
Solarized dark Solarized ciemny
|
||||
Solarized Dark Theme Ciemny motyw Solarized
|
||||
Catppuccin Latte Theme Motyw Catppuccin Latte
|
||||
Catppuccin latte Catppuccin Latte
|
||||
Catppuccin Frappé Theme Motyw Catppuccin Frappé
|
||||
Catppuccin frappe Catppuccin Frappé
|
||||
Catppuccin Macchiato Theme Motyw Catppuccin Macchiato
|
||||
Catppuccin macchiato Catppuccin Macchiato
|
||||
Catppuccin Mocha Theme Motyw Catppuccin Mocha
|
||||
Catppuccin mocha Catppuccin Mocha
|
||||
Breeze dark Breeze ciemny
|
||||
Breeze Dark Theme Ciemny motyw Breeze
|
||||
Breeze light Breeze jasny
|
||||
@@ -757,8 +765,6 @@
|
||||
About PhotoCraft O programie PhotoCraft
|
||||
PhotoCraft Website Strona internetowa PhotoCraft
|
||||
PhotoCraft on GitHub PhotoCraft na GitHubie
|
||||
ArtCraft Website Strona internetowa ArtCraft
|
||||
Join the ArtCraft Discord… Dołącz do Discorda ArtCraft…
|
||||
Report an Issue… Zgłoś problem…
|
||||
WIA Support… Obsługa WIA…
|
||||
Apply Zastosuj
|
||||
@@ -1034,7 +1040,6 @@
|
||||
Diffusion Dyfuzja
|
||||
Discard the embedded profile (don't color manage) Odrzuć osadzony profil (bez zarządzania kolorami)
|
||||
Discontiguous Niesąsiadujące
|
||||
Discord Discord
|
||||
Dismiss Zamknij
|
||||
Display P3 Display P3
|
||||
Display Text Tekst wyświetlany
|
||||
@@ -1162,7 +1167,6 @@
|
||||
Invert All Odwróć wszystko
|
||||
Invert has no settings. Odwracanie nie ma ustawień.
|
||||
Italic Kursywa
|
||||
Join us on Discord Dołącz do nas na Discordzie
|
||||
Justify all Wyjustuj wszystko
|
||||
Justify last centered Wyjustuj, ostatni wiersz wyśrodkowany
|
||||
Justify last left Wyjustuj, ostatni wiersz do lewej
|
||||
@@ -1565,7 +1569,6 @@
|
||||
Apple Watch 45mm Apple Watch 45 mm
|
||||
Aqua Błękit morski
|
||||
Art & Illustration Sztuka i ilustracja
|
||||
ArtCraft ArtCraft
|
||||
Background Eraser Tool Narzędzie Gumka tła
|
||||
Bevel & Emboss Ukos i płaskorzeźba
|
||||
Blend Mode Tryb mieszania
|
||||
@@ -3097,7 +3100,6 @@ cameraRaw Roughness Chropowatość
|
||||
Custom Pixel Aspect Ratio Niestandardowe proporcje pikseli
|
||||
32-bit Preview Options Opcje podglądu 32-bitowego
|
||||
New Guide Nowa prowadnica
|
||||
Join the ArtCraft Discord Dołącz do Discorda ArtCraft
|
||||
Report an Issue Zgłoś problem
|
||||
WIA Support Obsługa WIA
|
||||
Load Files into Stack Wczytaj pliki do stosu
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 6 and column 47.
|
@@ -12,7 +12,7 @@
|
||||
# Clean-room: every entry was written from the plain meaning of the English label using ordinary
|
||||
# Brazilian Portuguese computing vocabulary (camada, desfoque, seleção, demarcador ...). No
|
||||
# proprietary localisation resource, string table or product UI was consulted or copied; add
|
||||
# entries the same way. Product and technology names (PhotoCraft, ArtCraft, OpenType, CMYK, Lab ...)
|
||||
# entries the same way. Product and technology names (PhotoCraft, OpenType, CMYK, Lab ...)
|
||||
# stay as they are; the trailing "…" of dialog commands is kept.
|
||||
|
||||
# Guide layout dialog
|
||||
@@ -707,6 +707,14 @@
|
||||
Classic Theme Tema clássico
|
||||
Solarized dark Solarized escuro
|
||||
Solarized Dark Theme Tema Solarized Escuro
|
||||
Catppuccin Latte Theme Tema Catppuccin Latte
|
||||
Catppuccin latte Catppuccin Latte
|
||||
Catppuccin Frappé Theme Tema Catppuccin Frappé
|
||||
Catppuccin frappe Catppuccin Frappé
|
||||
Catppuccin Macchiato Theme Tema Catppuccin Macchiato
|
||||
Catppuccin macchiato Catppuccin Macchiato
|
||||
Catppuccin Mocha Theme Tema Catppuccin Mocha
|
||||
Catppuccin mocha Catppuccin Mocha
|
||||
Breeze dark Breeze escuro
|
||||
Breeze Dark Theme Tema Breeze Escuro
|
||||
Breeze light Breeze claro
|
||||
@@ -743,8 +751,6 @@
|
||||
About PhotoCraft Sobre o PhotoCraft
|
||||
PhotoCraft Website Site do PhotoCraft
|
||||
PhotoCraft on GitHub PhotoCraft no GitHub
|
||||
ArtCraft Website Site do ArtCraft
|
||||
Join the ArtCraft Discord… Participe do Discord do ArtCraft…
|
||||
Report an Issue… Relatar um problema…
|
||||
WIA Support… Suporte a WIA…
|
||||
Apply Aplicar
|
||||
@@ -1018,7 +1024,6 @@
|
||||
Diffusion Difusão
|
||||
Discard the embedded profile (don't color manage) Descartar o perfil incorporado (não gerenciar cores)
|
||||
Discontiguous Não contíguo
|
||||
Discord Discord
|
||||
Dismiss Dispensar
|
||||
Display P3 Display P3
|
||||
Display Text Texto de exibição
|
||||
@@ -1144,7 +1149,6 @@
|
||||
Invert All Inverter tudo
|
||||
Invert has no settings. Inverter não tem configurações.
|
||||
Italic Itálico
|
||||
Join us on Discord Participe do nosso Discord
|
||||
Justify all Justificar tudo
|
||||
Justify last centered Justificar com a última linha centralizada
|
||||
Justify last left Justificar com a última linha à esquerda
|
||||
@@ -1546,7 +1550,6 @@
|
||||
Apple Watch 45mm Apple Watch 45mm
|
||||
Aqua Aqua
|
||||
Art & Illustration Arte e ilustração
|
||||
ArtCraft ArtCraft
|
||||
Background Eraser Tool Ferramenta Borracha de plano de fundo
|
||||
Bevel & Emboss Chanfro e entalhe
|
||||
Blend Mode Modo de mesclagem
|
||||
@@ -3399,7 +3402,6 @@ layerLabel No Color Sem cor
|
||||
Custom Pixel Aspect Ratio Proporção de pixel personalizada
|
||||
32-bit Preview Options Opções de visualização de 32 bits
|
||||
New Guide Nova guia
|
||||
Join the ArtCraft Discord Entrar no Discord do ArtCraft
|
||||
Report an Issue Relatar um problema
|
||||
Load Files into Stack Carregar arquivos em pilha
|
||||
Statistics Estatísticas
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 6 and column 47.
|
@@ -13,7 +13,7 @@
|
||||
# graphics-editor vocabulary (Слой, Каналы, Маска, Выделение, Кривые ...), matching Photoshop's
|
||||
# Russian menu tradition where it is unambiguous. No proprietary localisation resource was
|
||||
# consulted or copied; entries are added the same way.
|
||||
# Product and technology names (PhotoCraft, ArtCraft, OpenType, CMYK, Lab ...) stay in Latin
|
||||
# Product and technology names (PhotoCraft, OpenType, CMYK, Lab ...) stay in Latin
|
||||
# letters; the trailing "…" of dialog commands is kept; the colon of a label ("Width:") becomes
|
||||
# the Russian typographic equivalent, with the space the source carries.
|
||||
|
||||
@@ -509,8 +509,6 @@
|
||||
PhotoCraft Website Сайт PhotoCraft
|
||||
PhotoCraft on GitHub PhotoCraft на GitHub
|
||||
Report an Issue… Сообщить о проблеме…
|
||||
ArtCraft Website Сайт ArtCraft
|
||||
Join the ArtCraft Discord… Discord сообщества ArtCraft…
|
||||
System Info… Информация о системе…
|
||||
|
||||
# Tools and options bar
|
||||
@@ -1424,6 +1422,14 @@
|
||||
Classic Theme Классическая тема
|
||||
Solarized dark Solarized тёмная
|
||||
Solarized Dark Theme Тёмная тема Solarized
|
||||
Catppuccin Latte Theme Тема Catppuccin Latte
|
||||
Catppuccin latte Catppuccin Latte
|
||||
Catppuccin Frappé Theme Тема Catppuccin Frappé
|
||||
Catppuccin frappe Catppuccin Frappé
|
||||
Catppuccin Macchiato Theme Тема Catppuccin Macchiato
|
||||
Catppuccin macchiato Catppuccin Macchiato
|
||||
Catppuccin Mocha Theme Тема Catppuccin Mocha
|
||||
Catppuccin mocha Catppuccin Mocha
|
||||
Breeze dark Breeze тёмная
|
||||
Breeze Dark Theme Тёмная тема Breeze
|
||||
Breeze light Breeze светлая
|
||||
@@ -1632,9 +1638,7 @@
|
||||
Preserve Transparency Сохранить прозрачность
|
||||
Reverse Обратить
|
||||
Align with layer По слою
|
||||
Join us on Discord Мы в Discord
|
||||
PhotoCraft website Сайт PhotoCraft
|
||||
ArtCraft ArtCraft
|
||||
GitHub GitHub
|
||||
No character style Нет стиля символов
|
||||
No author Нет автора
|
||||
@@ -2043,7 +2047,6 @@
|
||||
Delete tool preset Удалить набор инструментов
|
||||
Depth Jitter Колебание глубины
|
||||
Discontiguous Несмежные пикселы
|
||||
Discord Discord
|
||||
Display P3 Display P3
|
||||
Display Text Показывать текст
|
||||
Divide… Деление…
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 6 and column 47.
|
@@ -4,7 +4,7 @@
|
||||
# Clean-room: every entry was written from the plain meaning of the English label using ordinary
|
||||
# Turkish computing vocabulary (katman, seçim, maske, ayar katmanı, fırça, degrade ...). No
|
||||
# proprietary localisation resource, string table or product UI was consulted or copied; add
|
||||
# entries the same way. Product and technology names (PhotoCraft, ArtCraft, OpenType, CMYK, Lab ...)
|
||||
# entries the same way. Product and technology names (PhotoCraft, OpenType, CMYK, Lab ...)
|
||||
# stay as they are; the trailing "…" of dialog commands is kept.
|
||||
#
|
||||
Rows Satırlar
|
||||
@@ -736,8 +736,6 @@
|
||||
About PhotoCraft PhotoCraft Hakkında
|
||||
PhotoCraft Website PhotoCraft Web Sitesi
|
||||
PhotoCraft on GitHub GitHub'da PhotoCraft
|
||||
ArtCraft Website ArtCraft Web Sitesi
|
||||
Join the ArtCraft Discord… ArtCraft Discord'una katılın…
|
||||
Report an Issue… Bir Sorun Bildirin…
|
||||
WIA Support… WIA Desteği…
|
||||
Apply Uygula
|
||||
@@ -1008,7 +1006,6 @@
|
||||
Diffusion Difüzyon
|
||||
Discard the embedded profile (don't color manage) Gömülü profili atın (renk yönetimi yapmayın)
|
||||
Discontiguous bitişik değil
|
||||
Discord Discord
|
||||
Dismiss Reddet
|
||||
Display P3 Display P3
|
||||
Display Text Metni Görüntüle
|
||||
@@ -1140,7 +1137,6 @@
|
||||
Invert All Tümünü Ters Çevir
|
||||
Invert has no settings. Tersine çevirmenin hiçbir ayarı yoktur.
|
||||
Italic italik
|
||||
Join us on Discord Discord'da bize katılın
|
||||
Justify all Hepsini gerekçelendir
|
||||
Justify last centered Son ortayı iki yana yasla
|
||||
Justify last left Son sola yasla
|
||||
@@ -1541,7 +1537,6 @@
|
||||
Apple Watch 45mm Apple Watch 45mm
|
||||
Aqua Su
|
||||
Art & Illustration Sanat ve İllüstrasyon
|
||||
ArtCraft ArtCraft
|
||||
Background Eraser Tool Arka Plan Silgisi Aracı
|
||||
Bevel & Emboss Eğim Ver ve Kabart
|
||||
Blend Mode Karışım Modu
|
||||
@@ -2969,7 +2964,6 @@ cameraRaw Color Renk
|
||||
Custom Pixel Aspect Ratio Özel Piksel En Boy Oranı
|
||||
32-bit Preview Options 32 bit Önizleme Seçenekleri
|
||||
New Guide Yeni Kılavuz
|
||||
Join the ArtCraft Discord ArtCraft Discord'una katılın
|
||||
Report an Issue Sorun Bildir
|
||||
Load Files into Stack Dosyaları Yığına Yükle
|
||||
Statistics İstatistikler
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 8 and column 34.
|
@@ -487,8 +487,6 @@
|
||||
PhotoCraft Website Вебсайт PhotoCraft
|
||||
PhotoCraft on GitHub PhotoCraft на GitHub
|
||||
Report an Issue… Повідомити про проблему…
|
||||
ArtCraft Website Вебсайт ArtCraft
|
||||
Join the ArtCraft Discord… Приєднатися до Discord ArtCraft…
|
||||
System Info… Інформація про систему…
|
||||
|
||||
# Tools and options bar
|
||||
@@ -1403,6 +1401,14 @@
|
||||
Classic Theme Класична тема
|
||||
Solarized dark Solarized темна
|
||||
Solarized Dark Theme Темна тема Solarized
|
||||
Catppuccin Latte Theme Тема Catppuccin Latte
|
||||
Catppuccin latte Catppuccin Latte
|
||||
Catppuccin Frappé Theme Тема Catppuccin Frappé
|
||||
Catppuccin frappe Catppuccin Frappé
|
||||
Catppuccin Macchiato Theme Тема Catppuccin Macchiato
|
||||
Catppuccin macchiato Catppuccin Macchiato
|
||||
Catppuccin Mocha Theme Тема Catppuccin Mocha
|
||||
Catppuccin mocha Catppuccin Mocha
|
||||
Breeze dark Breeze темна
|
||||
Breeze Dark Theme Темна тема Breeze
|
||||
Breeze light Breeze світла
|
||||
@@ -1613,9 +1619,7 @@
|
||||
Preserve Transparency Зберігати прозорість
|
||||
Reverse Зворотний
|
||||
Align with layer Вирівняти за шаром
|
||||
Join us on Discord Приєднуйтеся до нас у Discord
|
||||
PhotoCraft website Вебсайт PhotoCraft
|
||||
ArtCraft ArtCraft
|
||||
GitHub GitHub
|
||||
No character style Без стилю символів
|
||||
No author Автор відсутній
|
||||
@@ -2029,7 +2033,6 @@
|
||||
Delete tool preset Видалити набір інструмента
|
||||
Depth Jitter Коливання глибини
|
||||
Discontiguous Несуміжні
|
||||
Discord Discord
|
||||
Display P3 Display P3
|
||||
Display Text Показувати текст
|
||||
Divide… Розділити…
|
||||
@@ -3274,7 +3277,6 @@ cameraRaw Masking Маскування
|
||||
Custom Pixel Aspect Ratio Довільне співвідношення сторін пікселя
|
||||
32-bit Preview Options Параметри 32-бітного перегляду
|
||||
New Guide Нова напрямна
|
||||
Join the ArtCraft Discord Приєднатися до Discord ArtCraft
|
||||
Report an Issue Повідомити про проблему
|
||||
WIA Support Підтримка WIA
|
||||
Load Files into Stack Завантажити файли у стос
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 1355 and column 18.
|
@@ -15,7 +15,7 @@
|
||||
# Clean-room: every entry was written from the plain meaning of the English label using ordinary
|
||||
# Vietnamese computing and image-editing vocabulary. No proprietary localisation resource, string
|
||||
# table or product UI was consulted or copied; add entries the same way. Product and technology
|
||||
# names (PhotoCraft, ArtCraft, OpenType, RGB, CMYK, Lab, PSD, PNG, JPEG, WebP, OpenEXR, AVIF …)
|
||||
# names (PhotoCraft, OpenType, RGB, CMYK, Lab, PSD, PNG, JPEG, WebP, OpenEXR, AVIF …)
|
||||
# stay as they are; the trailing "…" of dialog commands is kept. Plural rule: one form
|
||||
# (`plural_none` in i18n/mod.rs).
|
||||
|
||||
@@ -626,7 +626,6 @@
|
||||
6-up 6 cửa sổ
|
||||
About PhotoCraft Giới thiệu PhotoCraft
|
||||
Actions Thao tác
|
||||
ArtCraft Website Trang web ArtCraft
|
||||
Brush Settings Thiết lập cọ
|
||||
Brushes Cọ
|
||||
Cascade Xếp tầng
|
||||
@@ -646,7 +645,6 @@
|
||||
Histogram Histogram
|
||||
History Lịch sử
|
||||
Info Thông tin
|
||||
Join the ArtCraft Discord… Tham gia Discord ArtCraft…
|
||||
Layer Comps Tổ hợp lớp
|
||||
Lock Workspace Khóa không gian làm việc
|
||||
Match All Đồng bộ tất cả
|
||||
@@ -1920,7 +1918,6 @@ colorRange Invert Đảo ngược
|
||||
|
||||
# Visual QA finalization
|
||||
New document… Tài liệu mới…
|
||||
Join us on Discord Tham gia Discord
|
||||
PhotoCraft website Trang web PhotoCraft
|
||||
Anchor: Neo:
|
||||
Canvas extension color: Màu mở rộng canvas:
|
||||
@@ -2275,7 +2272,6 @@ layers Fill: Độ tô:
|
||||
Add Thêm
|
||||
Appearance Giao diện
|
||||
shape Appearance Diện mạo
|
||||
ArtCraft ArtCraft
|
||||
Bottom Dưới
|
||||
Capture Ghi lại
|
||||
Change Thay
|
||||
@@ -2284,7 +2280,6 @@ shape Appearance Diện mạo
|
||||
current hiện tại
|
||||
Cycle Orientation Đổi hướng khung
|
||||
Difference Hiệu
|
||||
Discord Discord
|
||||
Display P3 Display P3
|
||||
GitHub GitHub
|
||||
Gray Gamma 2.2 Gray Gamma 2.2
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 6 and column 47.
|
@@ -724,6 +724,14 @@
|
||||
Classic Theme 经典主题
|
||||
Solarized dark Solarized 深色
|
||||
Solarized Dark Theme Solarized 深色主题
|
||||
Catppuccin Latte Theme Catppuccin Latte 主题
|
||||
Catppuccin latte Catppuccin Latte
|
||||
Catppuccin Frappé Theme Catppuccin Frappé 主题
|
||||
Catppuccin frappe Catppuccin Frappé
|
||||
Catppuccin Macchiato Theme Catppuccin Macchiato 主题
|
||||
Catppuccin macchiato Catppuccin Macchiato
|
||||
Catppuccin Mocha Theme Catppuccin Mocha 主题
|
||||
Catppuccin mocha Catppuccin Mocha
|
||||
Breeze dark Breeze 深色
|
||||
Breeze Dark Theme Breeze 深色主题
|
||||
Breeze light Breeze 浅色
|
||||
@@ -760,8 +768,6 @@
|
||||
About PhotoCraft 关于 PhotoCraft
|
||||
PhotoCraft Website PhotoCraft 网站
|
||||
PhotoCraft on GitHub PhotoCraft 的 GitHub 页面
|
||||
ArtCraft Website ArtCraft 网站
|
||||
Join the ArtCraft Discord… 加入 ArtCraft 的 Discord 社区…
|
||||
Report an Issue… 报告问题…
|
||||
WIA Support… WIA 支持…
|
||||
Apply 应用
|
||||
@@ -1035,7 +1041,6 @@
|
||||
Diffusion 扩散
|
||||
Discard the embedded profile (don't color manage) 丢弃嵌入的配置文件(不进行色彩管理)
|
||||
Discontiguous 不连续
|
||||
Discord Discord
|
||||
Dismiss 关闭
|
||||
Display P3 Display P3
|
||||
Display Text 显示文字
|
||||
@@ -1169,7 +1174,6 @@
|
||||
Invert All 全部反相
|
||||
Invert has no settings. 反相没有可调整的设置。
|
||||
Italic 斜体
|
||||
Join us on Discord 加入我们的 Discord 社区
|
||||
Justify all 全部两端对齐
|
||||
Justify last centered 两端对齐,末行居中
|
||||
Justify last left 两端对齐,末行左对齐
|
||||
@@ -1583,7 +1587,6 @@
|
||||
Apple Watch 45mm Apple Watch 45mm
|
||||
Aqua 水绿色
|
||||
Art & Illustration 艺术与插画
|
||||
ArtCraft ArtCraft
|
||||
Background Eraser Tool 背景橡皮擦工具
|
||||
Bevel & Emboss 斜面和浮雕
|
||||
Blend Mode 混合模式
|
||||
|
||||
|
@@ -14,7 +14,7 @@
|
||||
# Clean-room: every entry was written from the plain meaning of the English label using the
|
||||
# image-editing vocabulary in everyday use in Taiwan (圖層, 遮色片, 選取範圍, 濾鏡, 色階 ...). No
|
||||
# proprietary localisation resource, string table or product UI was consulted or copied; add
|
||||
# entries the same way. Product and technology names (PhotoCraft, ArtCraft, OpenType, CMYK, Lab ...)
|
||||
# entries the same way. Product and technology names (PhotoCraft, OpenType, CMYK, Lab ...)
|
||||
# and paper sizes (Legal, Tabloid) stay in Latin letters; the trailing "…" of dialog commands is
|
||||
# kept. Full-width punctuation (,。:) inside sentences; half-width parentheses and the " · "
|
||||
# separators as in the English.
|
||||
@@ -729,6 +729,14 @@
|
||||
Classic Theme 經典主題
|
||||
Solarized dark Solarized 深色
|
||||
Solarized Dark Theme Solarized 深色主題
|
||||
Catppuccin Latte Theme Catppuccin Latte 主題
|
||||
Catppuccin latte Catppuccin Latte
|
||||
Catppuccin Frappé Theme Catppuccin Frappé 主題
|
||||
Catppuccin frappe Catppuccin Frappé
|
||||
Catppuccin Macchiato Theme Catppuccin Macchiato 主題
|
||||
Catppuccin macchiato Catppuccin Macchiato
|
||||
Catppuccin Mocha Theme Catppuccin Mocha 主題
|
||||
Catppuccin mocha Catppuccin Mocha
|
||||
Breeze dark Breeze 深色
|
||||
Breeze Dark Theme Breeze 深色主題
|
||||
Breeze light Breeze 淺色
|
||||
@@ -765,8 +773,6 @@
|
||||
About PhotoCraft 關於 PhotoCraft
|
||||
PhotoCraft Website PhotoCraft 網站
|
||||
PhotoCraft on GitHub GitHub 上的 PhotoCraft
|
||||
ArtCraft Website ArtCraft 網站
|
||||
Join the ArtCraft Discord… 加入 ArtCraft Discord…
|
||||
Report an Issue… 回報問題…
|
||||
WIA Support… WIA 支援…
|
||||
Apply 套用
|
||||
@@ -1038,7 +1044,6 @@
|
||||
Diffusion 擴散
|
||||
Discard the embedded profile (don't color manage) 捨棄嵌入的描述檔 (不進行色彩管理)
|
||||
Discontiguous 不連續
|
||||
Discord Discord
|
||||
Dismiss 關閉
|
||||
Display P3 Display P3
|
||||
Display Text 顯示文字
|
||||
@@ -1170,7 +1175,6 @@
|
||||
Invert All 全部反轉
|
||||
Invert has no settings. 負片效果沒有設定。
|
||||
Italic 斜體
|
||||
Join us on Discord 加入我們的 Discord
|
||||
Justify all 全部齊行
|
||||
Justify last centered 最後一行置中齊行
|
||||
Justify last left 最後一行靠左齊行
|
||||
@@ -1577,7 +1581,6 @@
|
||||
Apple Watch 45mm Apple Watch 45mm
|
||||
Aqua 水藍色
|
||||
Art & Illustration 藝術與插畫
|
||||
ArtCraft ArtCraft
|
||||
Background Eraser Tool 背景橡皮擦工具
|
||||
Bevel & Emboss 斜角和浮雕
|
||||
Blend Mode 混合模式
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 6 and column 47.
|
@@ -187,6 +187,7 @@ mod tab_strip;
|
||||
pub mod targa_options_ui;
|
||||
pub mod text_field_menu;
|
||||
pub mod theme;
|
||||
mod theme_catppuccin;
|
||||
pub mod tiff_options_ui;
|
||||
mod timeline_ui;
|
||||
mod titlebar;
|
||||
|
||||
@@ -1,20 +1,14 @@
|
||||
//! Community and project links: the Help menu, the About dialog, the start screen and the title
|
||||
//! bar all open these. URLs follow the crafting-app pattern (`getartcraft.com/apps/<app>`,
|
||||
//! `github.com/storytold/<app>`).
|
||||
//! Project links: the Help menu, the About dialog and the start screen open these.
|
||||
|
||||
use serde_json::{Value, json};
|
||||
|
||||
use crate::PhotocraftApp;
|
||||
|
||||
pub const DISCORD: &str = "https://discord.gg/artcraft";
|
||||
pub const ARTCRAFT_WEBSITE: &str = "https://getartcraft.com";
|
||||
pub const APP_PAGE: &str = "https://getartcraft.com/apps/photocraft";
|
||||
pub const GITHUB: &str = "https://github.com/storytold/photocraft";
|
||||
pub const ISSUES: &str = "https://github.com/storytold/photocraft/issues";
|
||||
|
||||
/// Help-menu link commands: (id, url). Labels live in `menus::UI_COMMANDS`.
|
||||
pub const COMMANDS: &[(&str, &str)] =
|
||||
&[("help.discord", DISCORD), ("help.website", APP_PAGE), ("help.artcraftWebsite", ARTCRAFT_WEBSITE), ("help.github", GITHUB), ("help.reportIssue", ISSUES)];
|
||||
pub const COMMANDS: &[(&str, &str)] = &[("help.github", GITHUB), ("help.reportIssue", ISSUES)];
|
||||
|
||||
pub fn url_for(id: &str) -> Option<&'static str> {
|
||||
COMMANDS.iter().find(|c| c.0 == id).map(|c| c.1)
|
||||
@@ -32,32 +26,18 @@ pub fn open(app: &mut PhotocraftApp, ctx: &egui::Context, url: &str) -> Value {
|
||||
json!({"url": url})
|
||||
}
|
||||
|
||||
/// The prominent "Join us on Discord" button.
|
||||
pub fn discord_button(app: &mut PhotocraftApp, ui: &mut egui::Ui, min_width: f32) -> egui::Response {
|
||||
let r = crate::widgets::primary_button(ui, tl!("Join us on Discord"), min_width).on_hover_text(DISCORD);
|
||||
if r.clicked() {
|
||||
open(app, ui.ctx(), DISCORD);
|
||||
}
|
||||
r
|
||||
}
|
||||
|
||||
/// "PhotoCraft website · GitHub · ArtCraft" as links, centred. Clicks route through [`open`] (the
|
||||
/// platform browser service) rather than `ui.hyperlink_to`, which uses the unreliable `ctx.open_url`.
|
||||
/// "GitHub" as a link, centred. Clicks route through [`open`] (the platform browser service)
|
||||
/// rather than `ui.hyperlink_to`, which uses the unreliable `ctx.open_url`.
|
||||
pub fn link_row(app: &mut PhotocraftApp, ui: &mut egui::Ui) {
|
||||
let t = crate::theme::Tokens::get(ui.ctx());
|
||||
let links = [(tl!("PhotoCraft website"), APP_PAGE), (tl!("GitHub"), GITHUB), (tl!("ArtCraft"), ARTCRAFT_WEBSITE)];
|
||||
let links = [(tl!("GitHub"), GITHUB)];
|
||||
let font = egui::FontId::proportional(12.5);
|
||||
let sep = " · ";
|
||||
let width: f32 = links.iter().map(|(l, _)| ui.painter().layout_no_wrap((*l).into(), font.clone(), t.text).size().x).sum::<f32>()
|
||||
+ 2.0 * ui.painter().layout_no_wrap(sep.into(), font.clone(), t.text).size().x;
|
||||
let width: f32 = links.iter().map(|(l, _)| ui.painter().layout_no_wrap((*l).into(), font.clone(), t.text).size().x).sum::<f32>();
|
||||
let mut clicked: Option<&str> = None;
|
||||
ui.horizontal(|ui| {
|
||||
ui.spacing_mut().item_spacing.x = 0.0;
|
||||
ui.add_space(((ui.available_width() - width) / 2.0).max(0.0));
|
||||
for (i, (label, url)) in links.iter().enumerate() {
|
||||
if i > 0 {
|
||||
ui.label(egui::RichText::new(sep).font(font.clone()).color(t.text_faint));
|
||||
}
|
||||
for (label, url) in &links {
|
||||
if ui.link(egui::RichText::new(*label).font(font.clone()).color(t.accent)).on_hover_text(*url).clicked() {
|
||||
clicked = Some(url);
|
||||
}
|
||||
@@ -74,7 +54,7 @@ mod tests {
|
||||
|
||||
#[test]
|
||||
fn links_open_through_the_platform_service() {
|
||||
// Issue #14: links (Help menu, Discord button, start-page links) must open in the browser.
|
||||
// Issue #14: links (Help menu, start-page links) must open in the browser.
|
||||
// They route through the `open_url` service rather than the unreliable `ctx.open_url`.
|
||||
use std::sync::{Arc, Mutex};
|
||||
let opened: Arc<Mutex<Vec<String>>> = Arc::new(Mutex::new(Vec::new()));
|
||||
@@ -93,16 +73,16 @@ mod tests {
|
||||
crate::menus::invoke(&mut app, &ctx, id, json!({})).unwrap();
|
||||
assert_eq!(opened.lock().unwrap().last().map(String::as_str), Some(*url), "{id}");
|
||||
}
|
||||
// The direct open() helper (Discord button / start-page links) also uses it.
|
||||
open(&mut app, &ctx, DISCORD);
|
||||
assert_eq!(opened.lock().unwrap().last().map(String::as_str), Some(DISCORD));
|
||||
// The direct open() helper (start-page links) also uses it.
|
||||
open(&mut app, &ctx, GITHUB);
|
||||
assert_eq!(opened.lock().unwrap().last().map(String::as_str), Some(GITHUB));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn help_menu_lists_links_then_separator_then_system_info_and_about() {
|
||||
let app = PhotocraftApp::new(photocraft_engine::Session::new(), Default::default());
|
||||
let help: Vec<String> = crate::menus::menu_items(&app).into_iter().filter(|i| i.path == ["Help"]).map(|i| i.id).collect();
|
||||
assert_eq!(help, ["help.discord", "help.website", "help.artcraftWebsite", "help.github", "help.reportIssue", "---", "help.systemInfo", "help.about"]);
|
||||
assert_eq!(help, ["help.github", "help.reportIssue", "---", "help.systemInfo", "help.about"]);
|
||||
for (id, _) in COMMANDS {
|
||||
assert!(crate::menus::is_live(id) && crate::menus::is_enabled(&app, id), "{id}");
|
||||
}
|
||||
@@ -112,14 +92,9 @@ mod tests {
|
||||
fn link_commands_open_their_urls() {
|
||||
let mut app = PhotocraftApp::new(photocraft_engine::Session::new(), Default::default());
|
||||
let ctx = egui::Context::default();
|
||||
for (id, url) in [
|
||||
("help.discord", "https://discord.gg/artcraft"),
|
||||
("help.website", "https://getartcraft.com/apps/photocraft"),
|
||||
("help.github", "https://github.com/storytold/photocraft"),
|
||||
] {
|
||||
let r = crate::menus::invoke(&mut app, &ctx, id, serde_json::json!({})).unwrap();
|
||||
assert_eq!(r["url"], url);
|
||||
assert_eq!(app.ui.status, format!("Opened {url}"));
|
||||
}
|
||||
let (id, url) = ("help.github", "https://github.com/storytold/photocraft");
|
||||
let r = crate::menus::invoke(&mut app, &ctx, id, serde_json::json!({})).unwrap();
|
||||
assert_eq!(r["url"], url);
|
||||
assert_eq!(app.ui.status, format!("Opened {url}"));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -89,11 +89,12 @@ pub const UI_COMMANDS: &[(&str, &str, &[&str], Option<&str>)] = &[
|
||||
("window.theme.adwaitaDark", "Adwaita Dark Theme", &["Window", "Theme"], None),
|
||||
("window.theme.breezeLight", "Breeze Light Theme", &["Window", "Theme"], None),
|
||||
("window.theme.breezeDark", "Breeze Dark Theme", &["Window", "Theme"], None),
|
||||
("window.theme.catppuccinLatte", "Catppuccin Latte Theme", &["Window", "Theme"], None),
|
||||
("window.theme.catppuccinFrappe", "Catppuccin Frappé Theme", &["Window", "Theme"], None),
|
||||
("window.theme.catppuccinMacchiato", "Catppuccin Macchiato Theme", &["Window", "Theme"], None),
|
||||
("window.theme.catppuccinMocha", "Catppuccin Mocha Theme", &["Window", "Theme"], None),
|
||||
("window.theme.system", "Sync with system", &["Window", "Theme"], None),
|
||||
("edit.search", "Search…", &["Edit"], Some("Cmd+F")),
|
||||
("help.discord", "Join the ArtCraft Discord…", &["Help"], None),
|
||||
("help.website", "PhotoCraft Website", &["Help"], None),
|
||||
("help.artcraftWebsite", "ArtCraft Website", &["Help"], None),
|
||||
("help.github", "PhotoCraft on GitHub", &["Help"], None),
|
||||
("help.reportIssue", "Report an Issue…", &["Help"], None),
|
||||
("help.systemInfo", "System Info…", &["Help"], None),
|
||||
@@ -183,7 +184,7 @@ pub(crate) fn invoke_unguarded(app: &mut PhotocraftApp, ctx: &egui::Context, id:
|
||||
if let Some(result) = crate::panel_docking::command(app, id, ¶ms) {
|
||||
return result;
|
||||
}
|
||||
// Help › Discord, website, GitHub, Report an Issue.
|
||||
// Help › GitHub, Report an Issue.
|
||||
if let Some(url) = crate::links::url_for(id) {
|
||||
return Ok(crate::links::open(app, ctx, url));
|
||||
}
|
||||
@@ -370,7 +371,11 @@ pub(crate) fn invoke_unguarded(app: &mut PhotocraftApp, ctx: &egui::Context, id:
|
||||
| "window.theme.adwaita"
|
||||
| "window.theme.adwaitaDark"
|
||||
| "window.theme.breezeLight"
|
||||
| "window.theme.breezeDark" => {
|
||||
| "window.theme.breezeDark"
|
||||
| "window.theme.catppuccinLatte"
|
||||
| "window.theme.catppuccinFrappe"
|
||||
| "window.theme.catppuccinMacchiato"
|
||||
| "window.theme.catppuccinMocha" => {
|
||||
let k = crate::theme::ThemeKind::from_name(&id["window.theme.".len()..]).unwrap_or_default();
|
||||
app.set_theme(ctx, k);
|
||||
Ok(Value::Null)
|
||||
|
||||
@@ -589,9 +589,8 @@ pub fn title_bar(app: &mut PhotocraftApp, ui: &mut egui::Ui) {
|
||||
("Pixel Art".to_string(), tl!("Pixel Art")),
|
||||
("Motion".to_string(), tl!("Motion")),
|
||||
];
|
||||
// A narrow bar drops what is also in a menu, Discord first (below), then
|
||||
// the theme toggle (Preferences), then search (Edit › Search), and narrows
|
||||
// the switcher (Window › Workspace) before anything runs over.
|
||||
// A narrow bar drops what is also in a menu: the theme toggle (Preferences), then search
|
||||
// (Edit › Search), and narrows the switcher (Window › Workspace) before anything runs over.
|
||||
let room = ui.available_width();
|
||||
let icons_shown: u8 = if room >= WORKSPACE_MIN + 2.0 * ICON_SLOT {
|
||||
2
|
||||
@@ -623,25 +622,6 @@ pub fn title_bar(app: &mut PhotocraftApp, ui: &mut egui::Ui) {
|
||||
}
|
||||
button.context_menu(|ui| crate::prefs_ui::appearance_context_menu(app, ui));
|
||||
}
|
||||
// The community Discord, one click away while the bar has room for it
|
||||
// (narrow windows drop it first; it is also Help › Discord).
|
||||
if ui.available_width() >= DISCORD_ROOM {
|
||||
let discord = egui::Button::image_and_text(
|
||||
icons::image("message-square", 14.0, t.text_dim),
|
||||
egui::RichText::new(tl!("Discord")).color(t.text_dim).size(12.0),
|
||||
)
|
||||
.frame(false);
|
||||
if ui
|
||||
.add(discord)
|
||||
.on_hover_text({
|
||||
let template = "Join the ArtCraft Discord ({url})";
|
||||
crate::i18n::fmt(tl!(template), &[("url", crate::links::DISCORD)])
|
||||
})
|
||||
.clicked()
|
||||
{
|
||||
crate::links::open(app, ui.ctx(), crate::links::DISCORD);
|
||||
}
|
||||
}
|
||||
if rtl { ui.min_rect().right() } else { ui.min_rect().left() }
|
||||
};
|
||||
free = if rtl { (controls_end, menus_end) } else { (menus_end, controls_end) };
|
||||
@@ -698,8 +678,6 @@ pub fn sync_window_title(app: &mut PhotocraftApp, ctx: &egui::Context) {
|
||||
|
||||
/// Minimum space kept between the window title and the menus or controls beside it.
|
||||
const TITLE_GAP: f32 = 16.0;
|
||||
/// Free room the title bar needs after its other controls to show the Discord button.
|
||||
const DISCORD_ROOM: f32 = 120.0;
|
||||
/// The workspace switcher's narrowest width, and one 28 pt title-bar icon with its spacing.
|
||||
const WORKSPACE_MIN: f32 = 90.0;
|
||||
const ICON_SLOT: f32 = 34.0;
|
||||
|
||||
@@ -97,6 +97,7 @@ fn selected_theme(interface: &prefs::Interface, system: Option<egui::Theme>) ->
|
||||
LightTheme::Classic => ThemeKind::Classic,
|
||||
LightTheme::Adwaita => ThemeKind::Adwaita,
|
||||
LightTheme::BreezeLight => ThemeKind::BreezeLight,
|
||||
LightTheme::CatppuccinLatte => ThemeKind::CatppuccinLatte,
|
||||
}
|
||||
} else {
|
||||
match interface.dark_theme {
|
||||
@@ -106,6 +107,9 @@ fn selected_theme(interface: &prefs::Interface, system: Option<egui::Theme>) ->
|
||||
DarkTheme::SolarizedDark => ThemeKind::SolarizedDark,
|
||||
DarkTheme::AdwaitaDark => ThemeKind::AdwaitaDark,
|
||||
DarkTheme::BreezeDark => ThemeKind::BreezeDark,
|
||||
DarkTheme::CatppuccinFrappe => ThemeKind::CatppuccinFrappe,
|
||||
DarkTheme::CatppuccinMacchiato => ThemeKind::CatppuccinMacchiato,
|
||||
DarkTheme::CatppuccinMocha => ThemeKind::CatppuccinMocha,
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -133,6 +137,7 @@ const LIGHT_THEME_OPTIONS: &[(&str, ThemeKind)] = &[
|
||||
("classic", ThemeKind::Classic),
|
||||
("adwaita", ThemeKind::Adwaita),
|
||||
("breezeLight", ThemeKind::BreezeLight),
|
||||
("catppuccinLatte", ThemeKind::CatppuccinLatte),
|
||||
];
|
||||
const DARK_THEME_OPTIONS: &[(&str, ThemeKind)] = &[
|
||||
("proMedium", ThemeKind::ProMedium),
|
||||
@@ -141,6 +146,9 @@ const DARK_THEME_OPTIONS: &[(&str, ThemeKind)] = &[
|
||||
("solarizedDark", ThemeKind::SolarizedDark),
|
||||
("adwaitaDark", ThemeKind::AdwaitaDark),
|
||||
("breezeDark", ThemeKind::BreezeDark),
|
||||
("catppuccinFrappe", ThemeKind::CatppuccinFrappe),
|
||||
("catppuccinMacchiato", ThemeKind::CatppuccinMacchiato),
|
||||
("catppuccinMocha", ThemeKind::CatppuccinMocha),
|
||||
];
|
||||
|
||||
fn favorite_theme_groups(favorites: &[SavedTheme]) -> (Vec<ThemeKind>, Vec<ThemeKind>) {
|
||||
|
||||
@@ -48,10 +48,18 @@ pub enum ThemeKind {
|
||||
BreezeLight,
|
||||
/// An adaptation of KDE Plasma's Breeze Dark look.
|
||||
BreezeDark,
|
||||
/// Catppuccin Latte (light).
|
||||
CatppuccinLatte,
|
||||
/// Catppuccin Frappé (dark).
|
||||
CatppuccinFrappe,
|
||||
/// Catppuccin Macchiato (dark).
|
||||
CatppuccinMacchiato,
|
||||
/// Catppuccin Mocha (dark).
|
||||
CatppuccinMocha,
|
||||
}
|
||||
|
||||
impl ThemeKind {
|
||||
pub const ALL: [ThemeKind; 12] = [
|
||||
pub const ALL: [ThemeKind; 16] = [
|
||||
ThemeKind::Pro,
|
||||
ThemeKind::ProMedium,
|
||||
ThemeKind::ProLightGray,
|
||||
@@ -64,6 +72,10 @@ impl ThemeKind {
|
||||
ThemeKind::AdwaitaDark,
|
||||
ThemeKind::BreezeLight,
|
||||
ThemeKind::BreezeDark,
|
||||
ThemeKind::CatppuccinLatte,
|
||||
ThemeKind::CatppuccinFrappe,
|
||||
ThemeKind::CatppuccinMacchiato,
|
||||
ThemeKind::CatppuccinMocha,
|
||||
];
|
||||
pub fn label(self) -> &'static str {
|
||||
match self {
|
||||
@@ -79,6 +91,10 @@ impl ThemeKind {
|
||||
ThemeKind::SolarizedDark => "Solarized Dark",
|
||||
ThemeKind::BreezeLight => "Breeze Light",
|
||||
ThemeKind::BreezeDark => "Breeze Dark",
|
||||
ThemeKind::CatppuccinLatte => "Catppuccin Latte",
|
||||
ThemeKind::CatppuccinFrappe => "Catppuccin Frappé",
|
||||
ThemeKind::CatppuccinMacchiato => "Catppuccin Macchiato",
|
||||
ThemeKind::CatppuccinMocha => "Catppuccin Mocha",
|
||||
}
|
||||
}
|
||||
/// The canonical name: `ui.set {theme}` accepts it and the Window › Theme commands are
|
||||
@@ -97,6 +113,10 @@ impl ThemeKind {
|
||||
ThemeKind::SolarizedDark => "solarizedDark",
|
||||
ThemeKind::BreezeLight => "breezeLight",
|
||||
ThemeKind::BreezeDark => "breezeDark",
|
||||
ThemeKind::CatppuccinLatte => "catppuccinLatte",
|
||||
ThemeKind::CatppuccinFrappe => "catppuccinFrappe",
|
||||
ThemeKind::CatppuccinMacchiato => "catppuccinMacchiato",
|
||||
ThemeKind::CatppuccinMocha => "catppuccinMocha",
|
||||
}
|
||||
}
|
||||
/// Photoshop-grammar layout (tab strips, flat panels): the four Pro brightness levels.
|
||||
@@ -121,6 +141,10 @@ impl ThemeKind {
|
||||
"solarizeddark" | "solarized" => Some(ThemeKind::SolarizedDark),
|
||||
"breezelight" | "breeze" | "kde" | "kdelight" | "plasma" | "plasmalight" => Some(ThemeKind::BreezeLight),
|
||||
"breezedark" | "kdedark" | "plasmadark" => Some(ThemeKind::BreezeDark),
|
||||
"catppuccinlatte" | "latte" => Some(ThemeKind::CatppuccinLatte),
|
||||
"catppuccinfrappe" | "catppuccinfrappé" | "frappe" | "frappé" => Some(ThemeKind::CatppuccinFrappe),
|
||||
"catppuccinmacchiato" | "macchiato" => Some(ThemeKind::CatppuccinMacchiato),
|
||||
"catppuccinmocha" | "catppuccin" | "mocha" => Some(ThemeKind::CatppuccinMocha),
|
||||
_ => None,
|
||||
}
|
||||
}
|
||||
@@ -645,6 +669,9 @@ impl Tokens {
|
||||
caption_close_text: Color32::from_rgb(253, 246, 227),
|
||||
scrim: Color32::from_black_alpha(110),
|
||||
},
|
||||
ThemeKind::CatppuccinLatte | ThemeKind::CatppuccinFrappe | ThemeKind::CatppuccinMacchiato | ThemeKind::CatppuccinMocha => {
|
||||
crate::theme_catppuccin::tokens(kind)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -714,7 +741,15 @@ impl Tokens {
|
||||
pub fn dark(&self) -> bool {
|
||||
matches!(
|
||||
self.kind,
|
||||
ThemeKind::Studio | ThemeKind::Pro | ThemeKind::ProMedium | ThemeKind::SolarizedDark | ThemeKind::AdwaitaDark | ThemeKind::BreezeDark
|
||||
ThemeKind::Studio
|
||||
| ThemeKind::Pro
|
||||
| ThemeKind::ProMedium
|
||||
| ThemeKind::SolarizedDark
|
||||
| ThemeKind::AdwaitaDark
|
||||
| ThemeKind::BreezeDark
|
||||
| ThemeKind::CatppuccinFrappe
|
||||
| ThemeKind::CatppuccinMacchiato
|
||||
| ThemeKind::CatppuccinMocha
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,65 @@
|
||||
//! Catppuccin Latte, Frappé, Macchiato and Mocha on the Studio layout. Palette: the Catppuccin
|
||||
//! project's colours (https://catppuccin.com/palette, MIT; see LICENSE-catppuccin.txt), accent Mauve.
|
||||
|
||||
use craft_ui::theme::catppuccin::Flavor;
|
||||
use egui::Color32;
|
||||
|
||||
use crate::theme::{ThemeKind, Tokens};
|
||||
|
||||
fn soft(c: Color32, alpha: u8) -> Color32 {
|
||||
Color32::from_rgba_unmultiplied(c.r(), c.g(), c.b(), alpha)
|
||||
}
|
||||
|
||||
/// Tokens for a Catppuccin kind. Any other kind falls back to Mocha (never reached: `for_kind` only routes these four here).
|
||||
pub(crate) fn tokens(kind: ThemeKind) -> Tokens {
|
||||
let f = match kind {
|
||||
ThemeKind::CatppuccinLatte => Flavor::Latte,
|
||||
ThemeKind::CatppuccinFrappe => Flavor::Frappe,
|
||||
ThemeKind::CatppuccinMacchiato => Flavor::Macchiato,
|
||||
_ => Flavor::Mocha,
|
||||
};
|
||||
let (p, light) = (f.palette(), !f.is_dark());
|
||||
// Dark flavours step up from the darkest surface; Latte steps down from the lightest.
|
||||
let (canvas, chrome, dock, hover, pressed) =
|
||||
if light { (p.crust, p.base, p.mantle, p.crust, p.surface0) } else { (p.base, p.mantle, p.crust, p.surface0, p.surface1) };
|
||||
Tokens {
|
||||
kind,
|
||||
chrome,
|
||||
canvas,
|
||||
canvas_dot: p.surface0,
|
||||
dock,
|
||||
card: chrome,
|
||||
card_border: if light { p.surface0 } else { p.crust },
|
||||
field: dock,
|
||||
field_border: p.surface1,
|
||||
hover,
|
||||
pressed,
|
||||
text: p.text,
|
||||
text_dim: p.subtext0,
|
||||
text_faint: p.overlay1,
|
||||
icon: p.subtext1,
|
||||
accent: p.mauve,
|
||||
accent_soft: soft(p.mauve, if light { 40 } else { 46 }),
|
||||
accent_border: soft(p.mauve, if light { 130 } else { 120 }),
|
||||
accent_text: if light { p.mauve } else { p.text },
|
||||
separator: if light { p.surface0 } else { p.crust },
|
||||
shadow: Color32::from_black_alpha(if light { 45 } else { 150 }),
|
||||
primary_bg: p.mauve,
|
||||
primary_text: if light { p.base } else { p.crust },
|
||||
danger: p.red,
|
||||
warning: p.yellow,
|
||||
radius_sm: 6.0,
|
||||
radius: 8.0,
|
||||
radius_lg: 12.0,
|
||||
bevel: false,
|
||||
pro: false,
|
||||
round_chips: true,
|
||||
tab_strip: Color32::TRANSPARENT,
|
||||
row_selected: Color32::TRANSPARENT,
|
||||
histogram_bg: if light { Color32::from_gray(40) } else { p.base },
|
||||
histogram_level: if light { 240 } else { 225 },
|
||||
caption_close: p.red,
|
||||
caption_close_text: if light { p.base } else { p.crust },
|
||||
scrim: Color32::from_black_alpha(110),
|
||||
}
|
||||
}
|
||||
@@ -298,7 +298,7 @@ mod tests {
|
||||
for width in [760.0, 1100.0, 1440.0] {
|
||||
let mut w = Win::new(width);
|
||||
w.frame(vec![]);
|
||||
let out = w.frame(vec![]);
|
||||
w.frame(vec![]);
|
||||
let [min, max, close] = CAPTIONS.map(|c| w.caption(c));
|
||||
assert_eq!((close.right(), close.top()), (width, 0.0), "Close sits in the window's corner at {width}");
|
||||
// The bar's bottom point is the panel's separator line, which the buttons leave visible.
|
||||
@@ -309,9 +309,6 @@ mod tests {
|
||||
for a in &widgets {
|
||||
assert!(a.right() <= min.left(), "{a:?} runs into the caption buttons at {width}");
|
||||
}
|
||||
// Wide windows show the whole group; the narrowest drops Discord (also Help › Discord).
|
||||
let has_discord = texts(&out).iter().any(|(t, _)| t == "Discord");
|
||||
assert_eq!(has_discord, width > 1000.0, "Discord at {width}");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,42 +0,0 @@
|
||||
ArtCraft brand assets: license
|
||||
|
||||
The ArtCraft name, wordmark and mark (the "ArtCraft Marks"), including every file in this
|
||||
directory in every color, size and format, are owned by the ArtCraft Team. They are trademarks
|
||||
and are NOT open source. They are not covered by PhotoCraft's MIT OR Apache-2.0 license, and nothing in
|
||||
that license, in NOTICE or in any other file of this repository grants any right to them.
|
||||
|
||||
Permission
|
||||
|
||||
The ArtCraft Team grants a limited, non-exclusive, non-transferable, revocable, royalty-free
|
||||
permission to use the ArtCraft Marks only:
|
||||
|
||||
1. as part of copies of this repository; and
|
||||
2. within PhotoCraft itself, its documentation and its official builds, to identify PhotoCraft as made
|
||||
by the ArtCraft team and community and to link to getartcraft.com and its community.
|
||||
|
||||
Conditions
|
||||
|
||||
The permission holds only while every one of these is true:
|
||||
|
||||
- The marks are used exactly as supplied in this directory. Do not redraw, recolor, crop,
|
||||
stretch, rotate, animate, outline or add effects to them, extract parts of them, or combine
|
||||
them with any other name, mark or artwork.
|
||||
- They are used only in the context of PhotoCraft, and only to say that the ArtCraft team makes it.
|
||||
They must never suggest that the ArtCraft Team made, sponsors, endorses, certifies or supports
|
||||
any other product, service, fork, modified version, plug-in, organization or person.
|
||||
- Neither the marks nor the ArtCraft name appear in the name, logo, icon, domain, social media
|
||||
handle, app-store listing, advertising or marketing of anything other than PhotoCraft.
|
||||
|
||||
Forks and modified versions
|
||||
|
||||
If you distribute or publish a modified version of PhotoCraft, or any work derived from it, you must
|
||||
remove the ArtCraft Marks from it (or replace them with your own) and must not call it ArtCraft or
|
||||
present it as an ArtCraft product. You may say, in plain text, that your work is based on PhotoCraft by
|
||||
the ArtCraft team. A fork kept only to propose changes back to this repository may keep the marks
|
||||
unchanged.
|
||||
|
||||
Everything else
|
||||
|
||||
Any use not expressly permitted here needs prior written permission from the ArtCraft Team
|
||||
(https://getartcraft.com/). The permission ends automatically for anyone who breaks these terms.
|
||||
All other rights are reserved.
|
||||
|
Before Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 5.3 KiB |
|
Before Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 5.3 KiB |
|
Before Width: | Height: | Size: 26 KiB |
@@ -1,4 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="-10 -19.42 136.34 136.34" role="img" aria-label="ArtCraft">
|
||||
<title>ArtCraft</title>
|
||||
<path fill="#0b0b0c" d="M104.28,49.49L81.55,0h-31.23l-3.17,4.76L14.75,53.63,0,75.85l21.55,21.55,63.79-36.94,16.99,37.04,14.01-21.74-12.06-26.27ZM32.89,65.66l32.42-48.87,10.91,23.77-43.32,25.09Z"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 341 B |
|
Before Width: | Height: | Size: 24 KiB |
@@ -1,4 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="-10 -19.42 136.34 136.34" role="img" aria-label="ArtCraft">
|
||||
<title>ArtCraft</title>
|
||||
<path fill="#4e7bfb" d="M104.28,49.49L81.55,0h-31.23l-3.17,4.76L14.75,53.63,0,75.85l21.55,21.55,63.79-36.94,16.99,37.04,14.01-21.74-12.06-26.27ZM32.89,65.66l32.42-48.87,10.91,23.77-43.32,25.09Z"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 341 B |
@@ -1,7 +1,7 @@
|
||||
# Contributing
|
||||
|
||||
- **Language:** Rust only. No JavaScript or TypeScript. On the web, `wasm-bindgen` generates a small loader; never hand-write JS.
|
||||
- **Licence:** contributions are MIT OR Apache-2.0 (`LICENSE-MIT`, `LICENSE-APACHE`, `NOTICE`). The ArtCraft logos in `docs/brand/` are not open source (`docs/brand/LICENSE-brand.txt`).
|
||||
- **Licence:** contributions are MIT OR Apache-2.0 (`LICENSE-MIT`, `LICENSE-APACHE`, `NOTICE`).
|
||||
- **Clean-room:** do not copy code, shaders, icons, ICC profiles or other assets from proprietary software (such as Photoshop). Match behaviour and look by observation and public specs. Only use assets with permissive licences, keep their license next to the asset (e.g. `assets/fonts/OFL-*.txt`, `assets/icons/LICENSE-lucide.txt`), and list every asset in `ATTRIBUTION.md`. **Fonts** live in [storytold/craft-fonts](https://github.com/storytold/craft-fonts), never in this repo: add new fonts there, and build with them through the optional `CRAFT_FONTS_DIR` build input (`docs/development.md` › Fonts; rules in `../craftrules/standards/fonts.md`, a sibling checkout — `storytold/craftrules` is not public, so ask a maintainer for the rules relevant to your change).
|
||||
- **Never crash:** non-test code must not panic: no `unwrap`/`expect`/`panic!`/`unreachable!`/`todo!`/`unimplemented!` and no `unsafe`. Errors go through `Result` and `?`, input-derived indices and sizes are checked, and every crash fix ships with a regression test. See *Never crash* in `AGENTS.md`.
|
||||
- **Commands, not handlers:** new features are engine commands with tests, and the UI calls them (checklist below).
|
||||
|
||||
@@ -36,7 +36,7 @@ language manually there.
|
||||
Keep English source keys, contexts, command IDs, placeholders and escapes intact.
|
||||
Retain the trailing `…` on commands that open a dialog. Missing translations use
|
||||
the framework's English fallback. User-supplied names and document data are not
|
||||
translated. Product names and technology names such as PhotoCraft, ArtCraft,
|
||||
translated. Product names and technology names such as PhotoCraft,
|
||||
OpenType, RGB, CMYK and Lab retain their spelling. Status messages, errors and
|
||||
automation output remain English as described in [UI design](ui-design.md#localisation);
|
||||
complete catalog coverage does not claim those strings are translated.
|
||||
|
||||
@@ -323,7 +323,7 @@ The keychain is deleted at the end of the job.
|
||||
|
||||
## Icons
|
||||
|
||||
`assets/app-icon/photocraft.svg` is the canonical icon: the owner's ArtCraft drawing of a
|
||||
`assets/app-icon/photocraft.svg` is the canonical icon: the owner's drawing of a
|
||||
nine-tailed kitsune, vectorised (MIT OR Apache-2.0, see `LICENSE.txt` there; palette and
|
||||
geometry in `README.md`). `packaging/icons.sh` regenerates the 1024 px PNG, the `.icns`, the `.ico` (packed by
|
||||
`cargo xtask ico`) and the hicolor PNGs from it. It needs `resvg`, plus `iconutil` on macOS.
|
||||
|
||||
@@ -95,7 +95,7 @@ The app's top bar (`panels::title_bar`) starts with the brand mark (the app icon
|
||||
|
||||
- **Windows and Linux:** the window has no OS decorations, so there is one bar, not two stacked. The top bar is the title bar (`titlebar.rs`): Minimize, Maximize/Restore and Close (red on hover, `caption_close` tokens) sit flush in the window's top-right corner, the free gap between the menus and the controls drags the window and a double-click there maximizes it, and invisible 5 pt edges (12 pt corners) resize it. Close runs File › Exit, so unsaved documents are asked about first.
|
||||
- **macOS:** the traffic lights sit over the integrated title strip (`integrated_titlebar`).
|
||||
- **Narrow windows** drop controls that are also in a menu before anything overlaps: Discord (Help › Discord), then the theme toggle, then search (Edit › Search), then the workspace switcher narrows (Window › Workspace).
|
||||
- **Narrow windows** drop controls that are also in a menu before anything overlaps: the theme toggle, then search (Edit › Search), then the workspace switcher narrows (Window › Workspace).
|
||||
|
||||
## Compact tool controls
|
||||
|
||||
|
||||
@@ -26,10 +26,10 @@
|
||||
<launchable type="desktop-id">ai.storyteller.photocraft.desktop</launchable>
|
||||
<icon type="stock">ai.storyteller.photocraft</icon>
|
||||
<!-- Only url types known to appstream 0.15 (Ubuntu 22.04, where CI validates): no vcs-browser. -->
|
||||
<url type="homepage">https://getartcraft.com/apps/photocraft</url>
|
||||
<url type="homepage">https://github.com/storytold/photocraft</url>
|
||||
<url type="bugtracker">https://github.com/storytold/photocraft/issues</url>
|
||||
<url type="help">https://github.com/storytold/photocraft</url>
|
||||
<url type="contact">https://discord.gg/artcraft</url>
|
||||
<url type="contact">https://github.com/storytold/photocraft/issues</url>
|
||||
<categories>
|
||||
<category>Graphics</category>
|
||||
<category>RasterGraphics</category>
|
||||
|
||||
@@ -14,7 +14,7 @@ section: graphics
|
||||
priority: optional
|
||||
maintainer: ${PHOTOCRAFT_MAINTAINER}
|
||||
vendor: Learning Machines LLC
|
||||
homepage: https://getartcraft.com/apps/photocraft
|
||||
homepage: https://github.com/storytold/photocraft
|
||||
license: MIT OR Apache-2.0
|
||||
description: |-
|
||||
Open-source, native image editor with familiar, professional tools.
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
Produces, in $env:DIST (default: dist/release):
|
||||
photocraft-<version>-windows-<arch>.msi per-machine installer (WiX v5)
|
||||
photocraft-<version>-windows-<arch>-portable.zip photocraft.exe + photocraft-cli.exe + portable.txt
|
||||
photocraft-cli-<version>-windows-<arch>.zip photocraft-cli.exe standalone
|
||||
|
||||
The binaries link the C runtime statically (+crt-static), so neither the MSI nor the portable
|
||||
zip needs the Visual C++ redistributable. Signing is delegated to sign.ps1 (skipped with a
|
||||
@@ -57,6 +58,17 @@ if (-not $env:PHOTOCRAFT_BUILD_DATE) { $env:PHOTOCRAFT_BUILD_DATE = (Get-Date).T
|
||||
Write-Output "PhotoCraft $Version for Windows $Arch ($Target)"
|
||||
|
||||
if (-not $SkipBuild) {
|
||||
# Locate rc.exe if not in PATH
|
||||
if (-not (Get-Command rc.exe -ErrorAction SilentlyContinue)) {
|
||||
$kits = Join-Path ${env:ProgramFiles(x86)} 'Windows Kits\10\bin'
|
||||
$foundRc = Get-ChildItem -Path $kits -Recurse -Filter rc.exe -ErrorAction SilentlyContinue |
|
||||
Where-Object { $_.FullName -match '\\x64\\rc\.exe$' } |
|
||||
Sort-Object FullName -Descending | Select-Object -First 1
|
||||
if ($foundRc) {
|
||||
$env:PATH = "$($foundRc.DirectoryName);$env:PATH"
|
||||
}
|
||||
}
|
||||
|
||||
# Static CRT: no VC++ redistributable needed. Scoped to the target so host build scripts and
|
||||
# proc-macros are unaffected.
|
||||
$flagVar = 'CARGO_TARGET_' + ($Target.ToUpper() -replace '-', '_') + '_RUSTFLAGS'
|
||||
@@ -170,6 +182,19 @@ $Zip = Join-Path $Dist "photocraft-$Version-windows-$Arch-portable.zip"
|
||||
Remove-Item -Force $Zip -ErrorAction SilentlyContinue
|
||||
Compress-Archive -Path $Portable -DestinationPath $Zip
|
||||
|
||||
# ---- cli zip -----------------------------------------------------------------------------------
|
||||
$CliPortable = Join-Path $TargetDir "windows-package\photocraft-cli-$Version-windows-$Arch"
|
||||
Remove-Item -Recurse -Force $CliPortable -ErrorAction SilentlyContinue
|
||||
New-Item -ItemType Directory -Force -Path $CliPortable | Out-Null
|
||||
Copy-Item (Join-Path $Stage 'photocraft-cli.exe') $CliPortable
|
||||
foreach ($f in 'README.md', 'LICENSE', 'LICENSE-MIT', 'LICENSE-APACHE') {
|
||||
$p = Join-Path $Root $f
|
||||
if (Test-Path $p) { Copy-Item $p $CliPortable }
|
||||
}
|
||||
$CliZip = Join-Path $Dist "photocraft-cli-$Version-windows-$Arch.zip"
|
||||
Remove-Item -Force $CliZip -ErrorAction SilentlyContinue
|
||||
Compress-Archive -Path $CliPortable -DestinationPath $CliZip
|
||||
|
||||
# Smoke-test the CLI when this machine can run it. An ARM64 build made on an x64 runner can't run
|
||||
# here; .github/workflows/windows-arm64.yml installs and runs it on ARM64 instead.
|
||||
$HostArch = [System.Runtime.InteropServices.RuntimeInformation]::OSArchitecture.ToString().ToLowerInvariant()
|
||||
@@ -178,4 +203,4 @@ if ($Arch -ne 'arm64' -or $HostArch -eq 'arm64') {
|
||||
} else {
|
||||
Write-Output "skipping photocraft-cli --version: an $Arch build doesn't run on this $HostArch machine"
|
||||
}
|
||||
Get-Item $Msi, $Zip | Format-Table Name, Length
|
||||
Get-Item $Msi, $Zip, $CliZip | Format-Table Name, Length
|
||||
|
||||
@@ -35,9 +35,9 @@
|
||||
.exe need an .exe icon identifier (ICE50), even when the source is an ICO. -->
|
||||
<Icon Id="PhotocraftIcon.exe" SourceFile="$(var.IconPath)" />
|
||||
<Property Id="ARPPRODUCTICON" Value="PhotocraftIcon.exe" />
|
||||
<Property Id="ARPURLINFOABOUT" Value="https://getartcraft.com/apps/photocraft" />
|
||||
<Property Id="ARPURLUPDATEINFO" Value="https://getartcraft.com/apps/photocraft" />
|
||||
<Property Id="ARPHELPLINK" Value="https://discord.gg/artcraft" />
|
||||
<Property Id="ARPURLINFOABOUT" Value="https://github.com/storytold/photocraft" />
|
||||
<Property Id="ARPURLUPDATEINFO" Value="https://github.com/storytold/photocraft" />
|
||||
<Property Id="ARPHELPLINK" Value="https://github.com/storytold/photocraft/issues" />
|
||||
|
||||
<StandardDirectory Id="ProgramFiles6432Folder">
|
||||
<Directory Id="INSTALLFOLDER" Name="PhotoCraft" />
|
||||
|
||||