@jjlmoya/utils-games-development 1.55.0 → 1.56.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/package.json +1 -1
  2. package/src/entries.ts +4 -1
  3. package/src/index.ts +1 -0
  4. package/src/tests/contrast_legibility.test.ts +56 -10
  5. package/src/tests/locale_completeness.test.ts +2 -2
  6. package/src/tests/tool_validation.test.ts +2 -2
  7. package/src/tool/localizationSanitizer/localization-sanitizer.css +4 -2
  8. package/src/tool/pixelArtPaletteSwapper/app-client.ts +229 -0
  9. package/src/tool/pixelArtPaletteSwapper/bibliography.astro +6 -0
  10. package/src/tool/pixelArtPaletteSwapper/bibliography.ts +16 -0
  11. package/src/tool/pixelArtPaletteSwapper/component.astro +153 -0
  12. package/src/tool/pixelArtPaletteSwapper/entry.ts +28 -0
  13. package/src/tool/pixelArtPaletteSwapper/i18n/de.ts +233 -0
  14. package/src/tool/pixelArtPaletteSwapper/i18n/en.ts +233 -0
  15. package/src/tool/pixelArtPaletteSwapper/i18n/es.ts +233 -0
  16. package/src/tool/pixelArtPaletteSwapper/i18n/fr.ts +233 -0
  17. package/src/tool/pixelArtPaletteSwapper/i18n/id.ts +233 -0
  18. package/src/tool/pixelArtPaletteSwapper/i18n/it.ts +233 -0
  19. package/src/tool/pixelArtPaletteSwapper/i18n/ja.ts +225 -0
  20. package/src/tool/pixelArtPaletteSwapper/i18n/ko.ts +225 -0
  21. package/src/tool/pixelArtPaletteSwapper/i18n/nl.ts +233 -0
  22. package/src/tool/pixelArtPaletteSwapper/i18n/pl.ts +233 -0
  23. package/src/tool/pixelArtPaletteSwapper/i18n/pt.ts +233 -0
  24. package/src/tool/pixelArtPaletteSwapper/i18n/ru.ts +233 -0
  25. package/src/tool/pixelArtPaletteSwapper/i18n/sv.ts +233 -0
  26. package/src/tool/pixelArtPaletteSwapper/i18n/tr.ts +233 -0
  27. package/src/tool/pixelArtPaletteSwapper/i18n/zh.ts +225 -0
  28. package/src/tool/pixelArtPaletteSwapper/index.ts +12 -0
  29. package/src/tool/pixelArtPaletteSwapper/logic.test.ts +43 -0
  30. package/src/tool/pixelArtPaletteSwapper/logic.ts +171 -0
  31. package/src/tool/pixelArtPaletteSwapper/pixel-art-palette-swapper.css +728 -0
  32. package/src/tool/pixelArtPaletteSwapper/seo.astro +15 -0
  33. package/src/tool/pixelArtPaletteSwapper/ui.ts +35 -0
  34. package/src/tool/retroSfxGenerator/client.ts +9 -2
  35. package/src/tool/retroSfxGenerator/logic.test.ts +21 -0
  36. package/src/tool/retroSfxGenerator/logic.ts +1 -1
  37. package/src/tool/retroSfxGenerator/retro-sfx-generator.css +10 -4
  38. package/src/tools.ts +2 -0
@@ -0,0 +1,233 @@
1
+ import type { ToolLocaleContent } from '../../../types';
2
+ import type { PixelArtPaletteSwapperUI } from '../ui';
3
+
4
+ export const content: ToolLocaleContent<PixelArtPaletteSwapperUI> = {
5
+ slug: 'cambiador-paleta-pixel-art',
6
+ title: 'Cambiador de Paleta para Pixel Art',
7
+ description: 'Reduce sprites y hojas de sprites a paletas clásicas de consola o a un conjunto personalizado de colores hexadecimales directamente en tu navegador.',
8
+ ui: {
9
+ uploadTitle: 'Arrastra un sprite o hoja de sprites',
10
+ uploadHint: 'Los archivos PNG, JPEG o WebP se procesan en tu dispositivo',
11
+ chooseImage: 'Elegir imagen',
12
+ replaceImage: 'Reemplazar imagen',
13
+ paletteTitle: 'Elegir paleta',
14
+ gameBoyPalette: 'Game Boy',
15
+ nesPalette: 'Inspirada en NES',
16
+ pico8Palette: 'PICO-8',
17
+ commodore64Palette: 'Commodore 64',
18
+ dawnBringerPalette: 'DawnBringer 16',
19
+ customPalette: 'Colores personalizados',
20
+ customPaletteHint: 'Separa los valores hexadecimales con comas, espacios o saltos de línea.',
21
+ applyCustomPalette: 'Aplicar paleta',
22
+ resetCustomPalette: 'Restablecer',
23
+ sourcePreview: 'Original',
24
+ resultPreview: 'Resultado limitado',
25
+ waitingForImage: 'Esperando una imagen',
26
+ uploadToPreview: 'Sube una imagen para previsualizarla',
27
+ resultEmpty: 'Tus versiones original y con paleta limitada aparecerán lado a lado.',
28
+ downloadPng: 'Descargar PNG',
29
+ downloadDisabled: 'Sube una imagen para habilitar la exportación.',
30
+ colorCount: 'Colores de origen',
31
+ mappedCount: 'Colores usados',
32
+ imageSize: 'Tamaño de imagen',
33
+ paletteCount: 'colores de paleta',
34
+ preserveAlpha: 'Conservar transparencia',
35
+ zoomLabel: 'Zoom',
36
+ processing: 'Mapeando píxeles',
37
+ invalidPalette: 'Añade al menos un color hexadecimal válido',
38
+ invalidImage: 'Elige una imagen PNG, JPEG o WebP',
39
+ readyStatus: 'Listo',
40
+ dropActive: 'Suelta para cargar',
41
+ mappedSummary: 'Se han mapeado {source} colores de origen a {mapped} colores de la paleta',
42
+ },
43
+ seo: [
44
+ {
45
+ type: 'title',
46
+ level: 2,
47
+ text: 'Convierte un Sprite a Todo Color en una Paleta Retro Deliberada',
48
+ },
49
+ {
50
+ type: 'paragraph',
51
+ html: 'Una paleta limitada es mucho más que una restricción técnica. Otorga al sprite un vocabulario de color coherente, ayuda a que los elementos de una escena encajen visualmente y evoca el carácter de una consola o plataforma clásica. Este cambiador de paletas para navegador te permite comparar la imagen original con una versión reducida mientras experimentas con paletas de Game Boy, inspiradas en NES, PICO-8, Commodore 64, DawnBringer 16 y listas personalizadas.',
52
+ },
53
+ {
54
+ type: 'title',
55
+ level: 2,
56
+ text: 'Cómo Funciona el Mapeo al Color Más Cercano',
57
+ },
58
+ {
59
+ type: 'paragraph',
60
+ html: 'La herramienta lee los canales rojo, verde y azul de cada píxel visible y compara ese color con cada color de la paleta seleccionada. Selecciona la entrada de la paleta con la distancia RGB al cuadrado más pequeña y escribe el color de reemplazo en un nuevo búfer de lienzo. El canal alfa se mantiene independiente para preservar la transparencia original y conservar la opacidad de los bordes suavemente cuando la opción Conservar transparencia está activa.',
61
+ },
62
+ {
63
+ type: 'comparative',
64
+ columns: 2,
65
+ items: [
66
+ {
67
+ title: 'Limitación de paleta',
68
+ description: 'Cada color de origen se reemplaza por la muestra disponible más cercana.',
69
+ points: [
70
+ 'Rápido y predecible para sprites, iconos, baldosas e interfaces',
71
+ 'Conserva las dimensiones y posiciones de los píxeles originales',
72
+ 'Facilita la revisión de un presupuesto de color determinado',
73
+ ],
74
+ },
75
+ {
76
+ title: 'Cambio de paleta (Palette Swapping)',
77
+ description: 'La misma imagen se puede remapear a otro conjunto de colores cuidadosamente elegido.',
78
+ points: [
79
+ 'Útil para trajes alternativos, biomas y estados de daño',
80
+ 'Las listas hexadecimales personalizadas permiten adaptarse a tu dirección artística',
81
+ 'El PNG descargado queda listo para volver a importarse en tu editor',
82
+ ],
83
+ },
84
+ ],
85
+ },
86
+ {
87
+ type: 'title',
88
+ level: 2,
89
+ text: 'Cómo Elegir una Paleta para Pixel Art',
90
+ },
91
+ {
92
+ type: 'table',
93
+ headers: ['Paleta', 'Colores', 'Uso recomendado', 'Aspectos a vigilar'],
94
+ rows: [
95
+ ['Game Boy', '4', 'Estilo monocromo portátil y estudios de volumen', 'El rango reducido puede fusionar materiales de tono similar'],
96
+ ['Inspirada en NES', '16', 'Sprites estilo arcade, personajes y baldosas', 'Los colores muy brillantes pueden eclipsar detalles pequeños'],
97
+ ['PICO-8', '16', 'Pixel art moderno con acentos saturados', 'Los tonos muy saturados requieren un contraste intencionado'],
98
+ ['Commodore 64', '16', 'Escenas retro suaves y estética de ordenador', 'El bajo contraste se beneficia de siluetas bien definidas'],
99
+ ['DawnBringer 16', '16', 'Paleta artesanal versátil para uso general', 'Las rampas de color siguen exigiendo una dirección de luz clara'],
100
+ ],
101
+ },
102
+ {
103
+ type: 'title',
104
+ level: 2,
105
+ text: 'Flujo de Trabajo Práctico para Hojas de Sprites',
106
+ },
107
+ {
108
+ type: 'paragraph',
109
+ html: 'Comienza con la imagen de origen más grande que edites cómodamente y sube aquí el sprite o hoja exportada. Selecciona un preajuste para definir una dirección visual o pega tu propia lista de colores hexadecimales. Inspecciona ambos lienzos a mayor zoom para comprobar si se han perdido detalles en los rostros, contornos o luces clave. Si el resultado parece apagado o confuso, prueba una paleta con saltos de valor más marcados o añade un color de acento deliberado a la lista personalizada.',
110
+ },
111
+ {
112
+ type: 'tip',
113
+ title: 'Mantén la paleta intencionada',
114
+ html: 'Una lista de colores más extensa no es automáticamente mejor. Comienza con cuatro a dieciseis colores, asigna una función a cada tono y reserva los brillos máximos para puntos de interés visual. El algoritmo del color más cercano preserva las posiciones de los píxeles, pero no puede decidir qué colores deben estructurar la jerarquía visual de tu sprite.',
115
+ },
116
+ {
117
+ type: 'title',
118
+ level: 2,
119
+ text: 'Lista de Comprobación para Exportar Pixel Art',
120
+ },
121
+ {
122
+ type: 'diagnostic',
123
+ variant: 'info',
124
+ title: 'Antes de importar el PNG resultante',
125
+ html: 'Revisa el resultado al 100% y a la escala final del juego, confirma que los bordes transparentes sigan limpios, verifica que las siluetas importantes sigan siendo legibles y conserva la imagen de origen junto con el archivo exportado para poder ajustar la paleta sin empezar desde cero.',
126
+ },
127
+ {
128
+ type: 'glossary',
129
+ items: [
130
+ {
131
+ term: 'Cuantización de color',
132
+ definition: 'Proceso de reducir un conjunto amplio de colores a uno más reducido y definido.',
133
+ },
134
+ {
135
+ term: 'Rampa de paleta',
136
+ definition: 'Secuencia ordenada de tonos oscuros, medios y claros para sombrear un material o superficie.',
137
+ },
138
+ {
139
+ term: 'Paleta indexada',
140
+ definition: 'Tabla de color compacta donde los píxeles hacen referencia a un índice en lugar de almacenar valores de color completos.',
141
+ },
142
+ ],
143
+ },
144
+ ],
145
+ faq: [
146
+ {
147
+ question: '¿El cambiador de paletas sube mi imagen a algún servidor?',
148
+ answer: 'No. La imagen se decodifica en un lienzo dentro de tu navegador, se procesa localmente con JavaScript y se exporta directamente como un archivo PNG. La utilidad no tiene ningún paso de carga externa.',
149
+ },
150
+ {
151
+ question: '¿Puedo utilizar mi propia paleta de colores?',
152
+ answer: 'Sí. Pega valores hexadecimales de 6 o 3 dígitos en el campo de Colores personalizados, separados por comas, espacios o saltos de línea, y selecciona Aplicar paleta.',
153
+ },
154
+ {
155
+ question: '¿Cambia las dimensiones del sprite o hoja de sprites?',
156
+ answer: 'No. El archivo exportado mantiene el ancho, el alto, la posición de los píxeles y la transparencia original cuando la opción Conservar transparencia está activa.',
157
+ },
158
+ {
159
+ question: '¿Qué algoritmo utiliza para seleccionar los colores?',
160
+ answer: 'Asigna cada píxel al color más cercano de la paleta seleccionada mediante la distancia Euclídea al cuadrado en el espacio RGB. Es un método rápido, determinista y fácil de previsualizar, aunque no aplica tramado ni corrección perceptiva Lab.',
161
+ },
162
+ ],
163
+ howTo: [
164
+ {
165
+ name: 'Cargar un sprite',
166
+ text: 'Arrastra una imagen PNG, JPEG o WebP al espacio de trabajo o usa el botón Elegir imagen.',
167
+ },
168
+ {
169
+ name: 'Elegir una paleta',
170
+ text: 'Selecciona un preajuste clásico o introduce tus propios colores hexadecimales. El resultado se actualiza al instante al aplicar una paleta.',
171
+ },
172
+ {
173
+ name: 'Comparar y exportar',
174
+ text: 'Inspecciona los lienzos original y limitado, ajusta el zoom y descarga el resultado en formato PNG.',
175
+ },
176
+ ],
177
+ schemas: [
178
+ {
179
+ '@context': 'https://schema.org',
180
+ '@type': 'SoftwareApplication',
181
+ name: 'Cambiador de Paleta para Pixel Art',
182
+ applicationCategory: 'DesignApplication',
183
+ operatingSystem: 'Any',
184
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'USD' },
185
+ },
186
+ {
187
+ '@context': 'https://schema.org',
188
+ '@type': 'FAQPage',
189
+ mainEntity: [
190
+ {
191
+ '@type': 'Question',
192
+ name: '¿El cambiador de paletas sube mi imagen a algún servidor?',
193
+ acceptedAnswer: {
194
+ '@type': 'Answer',
195
+ text: 'No. La imagen se decodifica y se procesa localmente en el navegador, y luego se exporta directamente en formato PNG.',
196
+ },
197
+ },
198
+ {
199
+ '@type': 'Question',
200
+ name: '¿Puedo utilizar mi propia paleta de colores?',
201
+ acceptedAnswer: {
202
+ '@type': 'Answer',
203
+ text: 'Sí. Pega valores hexadecimales válidos en el campo Colores personalizados y aplica la paleta.',
204
+ },
205
+ },
206
+ ],
207
+ },
208
+ {
209
+ '@context': 'https://schema.org',
210
+ '@type': 'HowTo',
211
+ name: 'Cómo limitar un sprite a una paleta retro',
212
+ step: [
213
+ { '@type': 'HowToStep', name: 'Cargar un sprite', text: 'Arrastra una imagen al espacio de trabajo o elígela desde tu dispositivo.' },
214
+ { '@type': 'HowToStep', name: 'Elegir una paleta', text: 'Selecciona un preajuste o aplica una lista personalizada de colores hexadecimales.' },
215
+ { '@type': 'HowToStep', name: 'Comparar y exportar', text: 'Revisa el resultado y descarga el archivo PNG resultante.' },
216
+ ],
217
+ },
218
+ ],
219
+ bibliography: [
220
+ {
221
+ name: 'MDN Canvas API',
222
+ url: 'https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API',
223
+ },
224
+ {
225
+ name: 'Lospec Palette List',
226
+ url: 'https://lospec.com/palette-list',
227
+ },
228
+ {
229
+ name: 'W3C Portable Network Graphics Specification',
230
+ url: 'https://www.w3.org/TR/png-3/',
231
+ },
232
+ ],
233
+ };
@@ -0,0 +1,233 @@
1
+ import type { ToolLocaleContent } from '../../../types';
2
+ import type { PixelArtPaletteSwapperUI } from '../ui';
3
+
4
+ export const content: ToolLocaleContent<PixelArtPaletteSwapperUI> = {
5
+ slug: 'changeur-palette-pixel-art',
6
+ title: 'Changeur de Palette Pixel Art',
7
+ description: 'Réduisez vos sprites et feuilles de sprites aux palettes de consoles classiques ou à un ensemble personnalisé de couleurs hexadécimales directement dans votre navigateur.',
8
+ ui: {
9
+ uploadTitle: 'Déposez un sprite ou une feuille de sprites',
10
+ uploadHint: 'PNG, JPEG ou WebP traités directement sur votre appareil',
11
+ chooseImage: 'Choisir une image',
12
+ replaceImage: 'Remplacer l image',
13
+ paletteTitle: 'Choisir une palette',
14
+ gameBoyPalette: 'Game Boy',
15
+ nesPalette: 'Inspirée de la NES',
16
+ pico8Palette: 'PICO-8',
17
+ commodore64Palette: 'Commodore 64',
18
+ dawnBringerPalette: 'DawnBringer 16',
19
+ customPalette: 'Couleurs personnalisées',
20
+ customPaletteHint: 'Séparez les valeurs hexadécimales par des virgules, espaces ou sauts de ligne.',
21
+ applyCustomPalette: 'Appliquer la palette',
22
+ resetCustomPalette: 'Réinitialiser',
23
+ sourcePreview: 'Original',
24
+ resultPreview: 'Résultat réduit',
25
+ waitingForImage: 'En attente d une image',
26
+ uploadToPreview: 'Importez une image pour l afficher',
27
+ resultEmpty: 'Vos versions originale et réduite s afficheront côte à côte.',
28
+ downloadPng: 'Télécharger le PNG',
29
+ downloadDisabled: 'Importez une image pour activer l exportation.',
30
+ colorCount: 'Couleurs d origine',
31
+ mappedCount: 'Couleurs utilisées',
32
+ imageSize: 'Taille de l image',
33
+ paletteCount: 'couleurs de palette',
34
+ preserveAlpha: 'Conserver la transparence',
35
+ zoomLabel: 'Zoom',
36
+ processing: 'Conversion des pixels',
37
+ invalidPalette: 'Ajoutez au moins une couleur hexadécimale valide',
38
+ invalidImage: 'Choisissez une image PNG, JPEG ou WebP',
39
+ readyStatus: 'Prêt',
40
+ dropActive: 'Relâchez pour charger',
41
+ mappedSummary: '{source} couleurs d origine réduites à {mapped} couleurs de palette',
42
+ },
43
+ seo: [
44
+ {
45
+ type: 'title',
46
+ level: 2,
47
+ text: 'Transformez un Sprite Couleur en une Palette Retro Délibérée',
48
+ },
49
+ {
50
+ type: 'paragraph',
51
+ html: 'Une palette limitée est bien plus qu une contrainte technique. Elle donne au sprite un vocabulaire de couleurs cohérent, permet aux éléments d une scène de former un tout harmonieux et évoque le caractère visuel d une console ou d une plate-forme rétro spécifique. Ce sélecteur de palette en ligne vous permet de comparer l image d origine avec sa version réduite tout en expérimentant les palettes Game Boy, NES, PICO-8, Commodore 64, DawnBringer 16 ou vos propres sélections.',
52
+ },
53
+ {
54
+ type: 'title',
55
+ level: 2,
56
+ text: 'Fonctionnement de la Réduction par Couleur la Plus Proche',
57
+ },
58
+ {
59
+ type: 'paragraph',
60
+ html: 'L outil analyse les canaux rouge, vert et bleu de chaque pixel visible et compare cette couleur avec chaque entrée de la palette sélectionnée. Il choisit la teinte ayant la plus petite distance RGB au carré, puis écrit la couleur de remplacement dans un nouveau tampon de canevas. Le canal alpha est traité séparément afin que les pixels transparents le restent et que les bords semi-transparents conservent leur opacité d origine lorsque l option Conserver la transparence est activée.',
61
+ },
62
+ {
63
+ type: 'comparative',
64
+ columns: 2,
65
+ items: [
66
+ {
67
+ title: 'Réduction de palette',
68
+ description: 'Chaque couleur d origine est remplacée par la nuance disponible la plus proche.',
69
+ points: [
70
+ 'Rapide et prévisible pour les sprites, icônes, tuiles et éléments d interface',
71
+ 'Conserve scrupuleusement les dimensions et les positions des pixels d origine',
72
+ 'Facilite le contrôle et la révision d un budget de couleurs prédéfini',
73
+ ],
74
+ },
75
+ {
76
+ title: 'Palette Swapping',
77
+ description: 'Le même visuel peut être réattribué à un autre ensemble de couleurs soigneusement choisi.',
78
+ points: [
79
+ 'Utile pour créer des tenues alternatives, des variations de biomes ou des états de dégâts',
80
+ 'Les listes hex personnalisées s adaptent parfaitement à votre propre direction artistique',
81
+ 'Le PNG téléchargé est immédiatement prêt à être réimporté dans votre éditeur',
82
+ ],
83
+ },
84
+ ],
85
+ },
86
+ {
87
+ type: 'title',
88
+ level: 2,
89
+ text: 'Choisir une Palette pour le Pixel Art',
90
+ },
91
+ {
92
+ type: 'table',
93
+ headers: ['Palette', 'Couleurs', 'Utilisation recommandée', 'Points d attention'],
94
+ rows: [
95
+ ['Game Boy', '4', 'Style monochrome console portable et études de valeurs', 'La faible plage de valeurs peut fusionner des matériaux proches'],
96
+ ['Inspirée de la NES', '16', 'Sprites arcade expressifs, personnages et tuiles', 'Les couleurs très vives peuvent écraser les détails fins'],
97
+ ['PICO-8', '16', 'Pixel art moderne avec des accents saturés', 'Les teintes très saturées nécessitent un contraste délibéré'],
98
+ ['Commodore 64', '16', 'Scènes rétro douces et esthétique micro-ordinateur', 'Le faible contraste gagne à utiliser des silhouettes claires'],
99
+ ['DawnBringer 16', '16', 'Palette polyvalente sélectionnée pour le pixel art général', 'Les rampes de couleurs nécessitent toujours une direction de lumière claire'],
100
+ ],
101
+ },
102
+ {
103
+ type: 'title',
104
+ level: 2,
105
+ text: 'Flux de Travail Pratique pour Feuilles de Sprites',
106
+ },
107
+ {
108
+ type: 'paragraph',
109
+ html: 'Commencez par le visuel le plus grand que vous pouvez éditer confortablement, puis importez ici le sprite ou la feuille de sprites exportée. Choisissez un préréglage pour définir une direction visuelle ou collez une liste hex personnalisée. Inspectez les deux canevas à un niveau de zoom élevé pour repérer la perte de traits du visage, les contours fusionnés ou les éclats de lumière qui ne se détachent plus. Si le résultat manque de clarté, essayez une palette avec des écarts de valeur plus marqués ou ajoutez une couleur d accentuation ciblée.',
110
+ },
111
+ {
112
+ type: 'tip',
113
+ title: 'Garder une Palette Intentionnelle',
114
+ html: 'Une liste de couleurs plus vaste n est pas automatiquement meilleure. Commencez avec 4 à 16 couleurs, attribuez un rôle précis à chaque teinte et réservez les valeurs les plus lumineuses aux points d intérêt ou aux reflets lisibles. L algorithme de la couleur la plus proche préserve la position des pixels, mais ne peut pas décider des couleurs qui doivent structurer la hiérarchie visuelle de votre sprite.',
115
+ },
116
+ {
117
+ type: 'title',
118
+ level: 2,
119
+ text: 'Liste de Contrôle pour l Exportation en Pixel Art',
120
+ },
121
+ {
122
+ type: 'diagnostic',
123
+ variant: 'info',
124
+ title: 'Avant d Importer le Fichier PNG Réduit',
125
+ html: 'Vérifiez le résultat à l échelle 100% ainsi qu à l échelle finale du jeu, confirmez que les contours transparents restent nets, assurez-vous de la lisibilité des silhouettes importantes et conservez le fichier source d origine à côté de l export pour ajuster la palette sans repartir de zéro.',
126
+ },
127
+ {
128
+ type: 'glossary',
129
+ items: [
130
+ {
131
+ term: 'Quantification de couleur',
132
+ definition: 'Le processus consistant à réduire un large ensemble de couleurs d origine à un jeu restreint et défini.',
133
+ },
134
+ {
135
+ term: 'Rampe de couleur',
136
+ definition: 'Une suite dégradée et ordonnée de teintes sombres, moyennes et claires servant à ombrer un volume ou une surface.',
137
+ },
138
+ {
139
+ term: 'Palette indexée',
140
+ definition: 'Une table de couleurs compacte dans laquelle les pixels font référence aux entrées d une liste partagée au lieu de stocker des valeurs complètes.',
141
+ },
142
+ ],
143
+ },
144
+ ],
145
+ faq: [
146
+ {
147
+ question: 'Mes images sont-elles envoyées sur un serveur ?',
148
+ answer: 'Non. L image est décodée dans votre navigateur sur un canevas, convertie localement en JavaScript et exportée directement en PNG. L outil ne comporte aucune étape de téléversement.',
149
+ },
150
+ {
151
+ question: 'Puis-je utiliser ma propre palette ?',
152
+ answer: 'Oui. Collez des codes hexadécimaux à 6 ou 3 chiffres dans le champ Couleurs personnalisées, séparés par des virgules, des espaces ou des sauts de ligne, puis choisissez Appliquer la palette.',
153
+ },
154
+ {
155
+ question: 'La taille de mon sprite est-elle modifiée ?',
156
+ answer: 'Non. Le fichier généré conserve la largeur, la hauteur, la position des pixels et les valeurs alpha d origine lorsque l option Conserver la transparence est active.',
157
+ },
158
+ {
159
+ question: 'Quel algorithme est utilisé ?',
160
+ answer: 'Chaque pixel visible est attribué à la couleur la plus proche de la palette sélectionnée selon la distance euclidienne au carré dans l espace RGB. C est une méthode rapide, déterministe et facile à prévisualiser, qui n applique aucun tramage ni correction perceptuelle Lab.',
161
+ },
162
+ ],
163
+ howTo: [
164
+ {
165
+ name: 'Charger un sprite',
166
+ text: 'Déposez un sprite ou une feuille de sprites au format PNG, JPEG ou WebP dans l espace de travail ou cliquez sur Choisir une image.',
167
+ },
168
+ {
169
+ name: 'Sélectionner une palette',
170
+ text: 'Choisissez un préréglage classique ou saisissez vos propres couleurs hexadécimales. Le résultat se met à jour immédiatement.',
171
+ },
172
+ {
173
+ name: 'Comparer et exporter',
174
+ text: 'Inspectez les canevas original et réduit, ajustez le zoom de prévisualisation et téléchargez le résultat au format PNG.',
175
+ },
176
+ ],
177
+ schemas: [
178
+ {
179
+ '@context': 'https://schema.org',
180
+ '@type': 'SoftwareApplication',
181
+ name: 'Changeur de Palette Pixel Art',
182
+ applicationCategory: 'DesignApplication',
183
+ operatingSystem: 'Any',
184
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'USD' },
185
+ },
186
+ {
187
+ '@context': 'https://schema.org',
188
+ '@type': 'FAQPage',
189
+ mainEntity: [
190
+ {
191
+ '@type': 'Question',
192
+ name: 'Mes images sont-elles envoyées sur un serveur ?',
193
+ acceptedAnswer: {
194
+ '@type': 'Answer',
195
+ text: 'Non. L image est traitée localement dans le navigateur et exportée directement au format PNG.',
196
+ },
197
+ },
198
+ {
199
+ '@type': 'Question',
200
+ name: 'Puis-je utiliser ma propre palette ?',
201
+ acceptedAnswer: {
202
+ '@type': 'Answer',
203
+ text: 'Oui. Saisissez vos codes hexadécimaux et appliquez la palette.',
204
+ },
205
+ },
206
+ ],
207
+ },
208
+ {
209
+ '@context': 'https://schema.org',
210
+ '@type': 'HowTo',
211
+ name: 'Comment réduire un sprite à une palette rétro',
212
+ step: [
213
+ { '@type': 'HowToStep', name: 'Charger un sprite', text: 'Déposez un fichier dans l espace de travail.' },
214
+ { '@type': 'HowToStep', name: 'Sélectionner une palette', text: 'Choisissez un préréglage ou saisissez vos couleurs.' },
215
+ { '@type': 'HowToStep', name: 'Comparer et exporter', text: 'Inspectez le résultat et téléchargez le fichier PNG.' },
216
+ ],
217
+ },
218
+ ],
219
+ bibliography: [
220
+ {
221
+ name: 'MDN Canvas API',
222
+ url: 'https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API',
223
+ },
224
+ {
225
+ name: 'Lospec Palette List',
226
+ url: 'https://lospec.com/palette-list',
227
+ },
228
+ {
229
+ name: 'W3C Portable Network Graphics Specification',
230
+ url: 'https://www.w3.org/TR/png-3/',
231
+ },
232
+ ],
233
+ };