Document

Le sprite dans son ensemble : commence ici avec app.describe(), puis la taille, le recadrage, la rotation et le mode colorimétrique. (15 fonctions)

app.convertColorMode(colorMode, opts?) — modifie, annulable

Convertit le sprite entre modes colorimétriques (rgba, grayscale, indexed), avec en option du tramage et la génération d'une palette en passant en indexed.

  • colorMode (ColorMode: "rgba" | "grayscale" | "indexed") — Les conversions depuis rgba (et vers grayscale) se font avec perte : la couleur est quantifiée vers l'entrée de palette la plus proche ou vers sa luma Rec. 709 (celle d'Aseprite, tronquée : le rouge vaut 54). Vers grayscale, la palette devient 256 gris, du noir au blanc (les palettes par image et les groupes de palettes disparaissent, l'indice transparent devient 0). Sans effet si le sprite est déjà dans ce mode.
  • opts (table, facultatif)
    • dithering (DitherMethod: "none" | "bayer2" | "bayer4" | "bayer8" | "floydSteinberg" | "atkinson"; par défaut "none") — Vers indexed uniquement : comment les couleurs situées entre des entrées de palette sont approchées.
    • ditherAmount (integer 0–100; par défaut 100) — Vers indexed uniquement : force du tramage (0 = couleur la plus proche uniquement).
    • paletteColors (integer 1–256; par défaut keep the current palette) — Vers indexed uniquement : remplace la palette par ce nombre de couleurs générées à partir du sprite (plus une entrée transparente à l'indice 0, sauf si l'arrière-plan est le seul calque ; les palettes par image sont supprimées).

Ne renvoie rien.

app.cropToSelection() — modifie, annulable

Recadre le canevas aux limites de la sélection actuelle ; une sélection qui dépasse du canevas l'agrandit à cet endroit. Sans effet si rien n'est sélectionné.

Ne renvoie rien.

app.describe() — lit

Tout sur la structure du document en un seul appel (sans données de pixels) : { sprite, activeLayerId, activeFrameId, layers, frames, cels, tags, slices, selection (limites ou nil), context }, chaque partie ayant la forme de sa propre requête (app.getSprite, app.getLayers, ...). Commence ici pour voir avec quoi tu travailles.

Renvoie (table) : Table du document.

app.flip(axis, layerId?) — modifie, annulable, refusée sur un calque verrouillé

Retourne tout le canevas, ou un calque (et les descendants d'un groupe) sur toutes les images : pixels et positions des cels, tuiles des tilemaps, images de référence. Contrairement à app.flipCelRegion, ignore la sélection.

  • axis (FlipAxis: "horizontal" | "vertical")
  • layerId (string, facultatif) — Le calque (ou groupe) à retourner sur chaque image. Omets-le pour retourner tout le canevas : chaque calque, chaque image, les slices et la sélection.

Ne renvoie rien.

app.getCanvasHeight() — lit

La hauteur du canevas du sprite en pixels.

Renvoie (number) : Hauteur en pixels.

app.getCanvasWidth() — lit

La largeur du canevas du sprite en pixels.

Renvoie (number) : Largeur en pixels.

app.getColorMode() — lit

Le mode colorimétrique du sprite : "rgba", "grayscale" ou "indexed".

Renvoie (string) : "rgba", "grayscale" ou "indexed".

app.getSprite() — lit

Le sprite : { id, width, height, colorMode ("rgba" | "grayscale" | "indexed"), palette (chaînes hex), transparentIndex (sprites indexés : l'indice de la palette dont les pixels sont transparents), pixelRatio ({ w, h }; 1:1 = pixels carrés), colorDepth (niveaux par canal : { kind = "rgb", red, green, blue } ou { kind = "gray", gray }, avec profile ; nil pour toutes les couleurs), layerCount, frameCount }.

Renvoie (table) : Table du sprite.

app.newSprite(width, height, background?) — modifie, annulable

Remplace tout le document par un tout nouveau sprite (un calque, une image ; un calque Arrière-plan quand une couleur de fond est donnée). Abandonne le contenu du document actuel.

  • width (number) — Largeur du canevas en pixels.
  • height (number) — Hauteur du canevas en pixels.
  • background (color, facultatif) — Couleur de remplissage d'un calque Arrière-plan. Omise = un "Layer 1" transparent à la place.

Renvoie (table) : { layerId, frameId } de l'unique calque et de l'unique image du nouveau sprite.

app.rotateCanvas(degrees) — modifie, annulable

Fait pivoter tout le canevas (chaque calque, chaque image) dans le sens horaire (90), anti-horaire (-90), ou de 180 degrés.

  • degrees (number) — 90, -90 ou 180.

Ne renvoie rien.

app.setCanvasSize(width, height, anchor) — modifie, annulable

Redimensionne le canevas en repositionnant (sans rééchantillonner) le contenu existant par rapport à anchor. Le contenu qui dépasse du nouveau bord y est conservé (seul le calque Arrière-plan est coupé), donc agrandir à nouveau le restaure.

  • width (number)
  • height (number)
  • anchor (CanvasAnchor: "top-left" | "top" | "top-right" | "left" | "center" | "right" | "bottom-left" | "bottom" | "bottom-right")

Ne renvoie rien.

app.setPixelRatio(w, h) — modifie, annulable

Définit les proportions du pixel du sprite (Propriétés du sprite > Proportions du pixel d'Aseprite), p. ex. 2, 1 pour des pixels deux fois plus larges que hauts. Seuls l'affichage et les exports tenant compte des proportions changent, pas les pixels.

  • w (number) — Largeur du pixel, un entier positif (1:1 = carré).
  • h (number) — Hauteur du pixel, un entier positif.

Ne renvoie rien.

app.setSpriteSize(width, height) — modifie, annulable

Rééchantillonne chaque cel (plus proche voisin) pour l'adapter à une nouvelle taille de sprite.

  • width (number)
  • height (number)

Ne renvoie rien.

app.setUserData(target, userData?) — modifie, annulable

Définit les données utilisateur (étiquette de couleur, texte et propriétés personnalisées, comme dans Aseprite) d'un sprite, calque, cel, étiquette, slice ou tileset. Une cible de type cel peut être une image de tilemap. Les cels liés partagent une seule donnée utilisateur, comme leur image. Ne change que ce que tu donnes : définir le texte conserve la couleur, et écrire l'espace de noms properties de ton extension conserve ceux des autres (comme layer.data, layer.color et layer.properties(ns) d'Aseprite sont séparés). Relis-les avec app.getSprite, getLayers, getCels, getTags, getSlices ou getTileset (le champ userData). Autorisé sur les calques verrouillés.

  • target (table) — Ce qu'il faut annoter : { kind = "sprite" }, { kind = "layer", layerId }, { kind = "cel", layerId, frameId }, { kind = "tag", tagId }, { kind = "slice", sliceId } ou { kind = "tileset", layerId }.
    • kind (UserDataKind: "sprite" | "layer" | "cel" | "tag" | "slice" | "tileset") — Quel type d'élément.
    • layerId (string) — Pour les cibles layer, cel et tileset.
    • frameId (string) — Pour les cibles cel.
    • tagId (string) — Pour les cibles tag.
    • sliceId (string) — Pour les cibles slice.
  • userData (table, facultatif) — Ce qu'il faut changer : uniquement les parties que tu donnes. text = "" ou color = "" efface cette partie ; dans properties, chaque espace de noms que tu nommes est remplacé et celui défini à {} est supprimé, tandis que les autres restent. nil supprime toutes les données utilisateur.
    • color (string) — L'étiquette de couleur sous la forme "#rrggbb" ou "#rrggbbaa". Non acceptée pour les étiquettes (leur couleur est Tag.color).
    • text (string) — Texte libre (le texte des données utilisateur d'Aseprite).
    • properties (namespaces to properties: { [""] = { score = 3 }, ["my-extension"] = { ... } }. Values are plain JSON: nil-free, finite numbers, strings, booleans, lists and tables. properties[""] is your own namespace (Aseprite's user properties).) — Propriétés personnalisées par espace de noms. Les valeurs typées d'Aseprite (uuid, fixed, point, ...) apparaissent comme des tables avec une clé $type, p. ex. { ["$type"] = "uuid", value = "..." }, et sont réécrites avec le type Aseprite.

Ne renvoie rien.

app.trim() — modifie, annulable

Recadre le canevas à ce qui est dessiné sur toutes les images, comme le Rogner d'Aseprite : les calques visibles tels qu'affichés, réduits contre la transparence ou une couleur de bordure unie (comme un Arrière-plan opaque). Sans effet quand il ne reste rien à couper.

Ne renvoie rien.

En Markdown : document.md.