27 Commits
Author SHA1 Message Date
Ranska 5ebe41adb9 implementation parser ACO, coverage 94% -> 96%, doc exporters
- parser adobe_aco_parser : implementation reelle avec struct.unpack
  (RGB uniquement, gestion fichiers tronques)
- specs exporter_registry : reset, get unknown, available_formats
- specs exporter_context : context manager, export, export_list,
  export_tuples, appels hors context
- specs hsv_mixer : wrapping teinte quand ecart > 180 degres
- doc palette_formatter : ajout formats css et amiga
2026-02-16 10:03:32 +01:00
Ranska b7a8f5e115 ajout exporters CSS et Amiga OCS/ECS
- CSSExporter : export en custom properties CSS (:root, selecteur custom, sanitisation noms)
- AmigaExporter : export 12-bit Amiga en format txt (#RGB) et C (tableau UWORD)
- enregistrement des deux exporters dans le registry
- ajout des formats css et amiga dans le node PaletteFormatter
- specs completes pour les deux exporters
- section Export Formats dans le README
2026-02-16 09:20:26 +01:00
Ranska 1aa58df99d ajout nodes manipulation de palettes (batch 2)
4 nouvelles methodes sur PixelPalette : copy_subset, append_palette,
insert_palette et mix_with_palette avec leurs specs mamba (31 tests).

4 nouveaux nodes ComfyUI : CopySubsetNode, AppendPaletteNode,
InsertPaletteNode et MixPaletteNode avec workflows de test 11-14.
2026-02-14 22:21:20 +01:00
Ranska dc0ab4e34d fix imports nodes palette/ et text_size police
Remplace le chargement importlib des nodes palette/ par des imports
relatifs standard. L'ancien mecanisme creait des instances de classes
PixelColor/PixelPalette differentes entre nodes/ et nodes/palette/,
ce qui faisait echouer tous les isinstance() a l'execution ComfyUI.

Corrige aussi le text_size du ColorPreviewNode et PaletteRenderer
qui utilisaient un try/except arial.ttf avec fallback silencieux sur
la police par defaut sans taille — le texte restait toujours minuscule.
Utilise maintenant ImageFont.load_default(size=N) (Pillow 10+).
2026-02-13 22:14:00 +01:00
Ranska 8ed2f13f12 Merge branch 'feature/palette-view' into feature/batch1-integration
# Conflicts:
#	nodes/palette/__init__.py
2026-02-13 13:47:20 +01:00
Ranska 2c3fee5fd1 Merge branch 'feature/create-gradient-palette' into feature/batch1-integration
# Conflicts:
#	lib/pixel_palette.py
#	nodes/palette/__init__.py
2026-02-13 13:47:09 +01:00
Ranska 4c6c0711dc restore PixelPalette constructor and reactivate 26 pending specs
The custom __init__ was missing all attributes except colors, breaking
the dataclass constructor interface and the GimpPaletteLoader node.
Restored full constructor with all parameters (name, raw_content,
source_filename, metadata, format_type).

Reactivated 26 specs from spec_pending covering: initialization,
GIMP parsing, generic parsing, PixelColor validation, utility methods,
formatting, export, properties, and error handling.
5 specs remain pending (parser metadata, generic hex parser, raw format).
2026-02-13 13:23:19 +01:00
Ranska 6f7eb5c444 add palette view node with renderer
PaletteRenderer in lib/palette renders palettes as PIL images
with grid, horizontal and vertical layouts. Optional text overlay
for names, indices and hex values.
PaletteViewNode wraps it for ComfyUI, outputting IMAGE tensors.
13 specs covering all layouts, pixel accuracy, text areas, edge cases.
2026-02-13 13:19:51 +01:00
Ranska bb8475bf34 add create gradient palette node and lib method
New class method PixelPalette.create_gradient_palette() generates
a palette with N interpolated colors between two endpoints.
Supports RGB and HSV color spaces via the existing mixer system.
CreateGradientPaletteNode wraps it for ComfyUI.
Specs cover RGB/HSV interpolation, boundary preservation, validation.
2026-02-13 13:17:55 +01:00
levaleureux 3445e8dfa8 Cleanup duplication methods 2025-08-31 16:01:42 +02:00
levaleureux ddfcd21d30 refactor export add context switcher 2025-08-31 15:57:03 +02:00
levaleureux 97fe69fdb1 refactor export 2025-08-31 15:37:01 +02:00
levaleureux 1472d27d65 move code to exporter 2025-08-31 15:28:59 +02:00
levaleureux 1cc792527b clean dead code 2025-08-31 15:07:03 +02:00
levaleureux 17d08b361f Refactoring extract parsers from pixel palette 2025-08-31 14:48:59 +02:00
levaleureux 5301e949e7 refactoring parser extraction 2025-08-31 14:45:09 +02:00
levaleureux c1312fa6de fix git conflict 2025-08-31 14:26:59 +02:00
levaleureux 59b5c5f175 improve angent file 2025-08-31 14:23:18 +02:00
levaleureux 51668c8808 first gradient implementation 2025-08-29 15:20:44 +02:00
ranska 4e53c348a4 create monochrome palette 2025-08-28 19:35:38 +02:00
levaleureux c593593577 mixer hsv done and tested with spec 2025-08-22 15:42:43 +02:00
levaleureux c5321bd5b3 conftest (spec helper like) prepare hsv possible switch 2025-08-22 14:52:47 +02:00
levaleureux a3b6bb5650 first mixer with a mixer color space 2025-08-19 13:05:29 +02:00
levaleureux ca3cfa9c07 move file and prepare registery pattern archi 2025-08-18 15:50:23 +02:00
levaleureux 81cf560748 add patterns context and register 2025-08-16 16:57:55 +02:00
levaleureux 0fb9b0527a Remove __pycache__ directories and update .gitignore 2025-08-16 14:58:58 +02:00
levaleureux 8eb2901aed Add previously ignored files 2025-08-14 13:39:40 +02:00