Skip to content

Repository files navigation

Retouchly

Éditeur d'images open source inspiré de Paint.NET, construit avec Angular 19 et Rust (Tauri 2).

Fonctionnalités

Outils de dessin

  • Crayon — dessin pixel par pixel
  • Pinceau — dessin avec taille et dureté configurables
  • Gomme — effacement avec taille et dureté
  • Pipette — prélèvement couleur (clic gauche = primaire, clic droit = secondaire)

Sélection

  • Sélection rectangle / ellipse — avec modes Ajouter, Soustraire, Intersection, Xor
  • Lasso — sélection à main levée
  • Baguette magique — sélection par couleur avec tolérance configurable
  • Déplacer la sélection / l'objet

Formes vectorielles

  • Rectangle, ellipse, ligne, polygone
  • Styles : plein, tirets, pointillé
  • Épaisseur configurable, option de remplissage

Texte

  • Polices système dynamiques (détection via commande Tauri)
  • Gras, italique, souligné
  • Alignement gauche / centre / droite
  • Remplissage + contour

Calques

  • CRUD complet (ajouter, dupliquer, supprimer, monter, descendre)
  • Fusionner vers le bas, aplatir l'image
  • Opacité, rotation, zoom par calque
  • 16 modes de fusion (Normal, Multiply, Screen, Overlay, Soft Light, etc.)
  • Import d'image comme calque

Ajustements

  • Luminosité / Contraste
  • Teinte / Saturation / Luminosité
  • Inverser les couleurs, Noir et blanc, Sépia
  • Postériser, Seuil

Effets

  • Flou gaussien, Flou de mouvement
  • Pixelate / Mosaïque
  • Netteté, Relief, Détection de contours
  • Bruit / Grain, Vignette

Transformations

  • Rotation 90° / 180° / 270°
  • Symétrie horizontale / verticale
  • Redimensionner l'image (avec ratio)
  • Redimensionner le canevas (avec ancrage 9 points)
  • Rogner selon la sélection

Navigation et affichage

  • Zoom (molette Ctrl, Ctrl+=, Ctrl+-, Ctrl+0 ajuster)
  • Pan (Espace+glisser, clic milieu)
  • Règles avec graduations adaptatives
  • Grille superposable
  • Navigator (mini-vue)

Projets

  • Format de projet Retouchly (.rtly) — enregistre et réouvre tous les calques (pixels, métadonnées, transformations)
  • Enregistrer (Ctrl+S) / Enregistrer sous (Ctrl+Maj+S)
  • Export image PNG/JPG via Fichier > Exporter comme image…
  • Garde de fermeture : prompt Enregistrer / Ne pas enregistrer / Annuler si le document est modifié (fenêtre, Nouveau, Ouvrir)

Internationalisation

  • Français et Anglais
  • Détection automatique de la langue système
  • Changement de langue via menu Fenêtre > Langue

Stack technique

CoucheTechnologie
FrontendAngular 19 (signals, standalone components)
BackendRust (Tauri 2)
CanvasCanvas 2D natif
CompositingglobalAlpha + globalCompositeOperation
Buildnpm run builddist/retouchly

Développement

# Installer les dépendances
npm install
# Mode développement (hot reload)
npm run dev
# Build production
npm run build
# Lancer l'app Tauri (nécessite Rust toolchain)
cargo tauri dev

Structure du projet

src/
├── app/
│ ├── components/
│ │ ├── canvas/ # Canvas principal + zoom/pan/règles/grille
│ │ ├── menu-bar/ # Barre de menus (9 menus)
│ │ ├── tool-bar/ # Barre d'outils (nouveau, ouvrir, sauver, undo/redo)
│ │ ├── tools-palette/ # Palette d'outils (latéral gauche)
│ │ ├── tool-options/ # Options contextuelles de l'outil actif
│ │ ├── layers-panel/ # Panneau calques
│ │ ├── colors-panel/ # Panneau couleurs (RVB/TSV)
│ │ ├── status-bar/ # Barre d'état
│ │ ├── title-bar/ # Barre de titre Tauri
│ │ ├── window-controls/ # Boutons minimiser/agrandir/fermer
│ │ ├── new-image-dialog/ # Dialog nouveau document
│ │ ├── adjustment-dialog/ # Dialog ajustements (preview live)
│ │ ├── effects-dialog/ # Dialog effets (preview live)
│ │ ├── resize-image-dialog/ # Dialog redimensionner image
│ │ └── resize-canvas-dialog/# Dialog redimensionner canevas
│ ├── services/
│ │ ├── layer.service.ts # Gestion des calques + compositing
│ │ ├── tool.service.ts # Outils + labels traduits
│ │ ├── adjustments.service.ts # Filtres d'ajustement
│ │ ├── effects.service.ts # Filtres d'effets (convolution générique)
│ │ ├── colors.service.ts # Couleurs RVB/TSV
│ │ ├── document.service.ts # Ouverture/sauvegarde fichiers
│ │ └── i18n.service.ts # Service de traduction (signals)
│ ├── types.ts # Types partagés (Tool, BlendMode, etc.)
│ └── app.{ts,html,css} # Composant racine + dialogs
└── assets/
└── i18n/
├── en.json # Traductions anglaises
└── fr.json # Traductions françaises

Auteur

Codé par Martzcode

About

Retouchly – A full-featured image editor built with Angular 19 and Rust (Tauri 2). Implements layer compositing with 16 blend modes, vector shapes, selection tools (lasso, magic wand), color grading, Gaussian blur, and a complete undo/redo system. Cross-platform desktop app with a custom Canvas 2D rendering engine. Open source.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages