# API de scripts Lua de pxstud.io — Slices

> Fait partie de la référence de scripts Lua de pxstud.io, dont la vue d'ensemble (https://pxstud.io/fr/docs/scripting.md) explique les conventions. Les groupes d'options et les types auxquels elle renvoie se trouvent dans https://pxstud.io/fr/docs/scripting/option-groups.md et https://pxstud.io/fr/docs/scripting/types.md. Tout dans un seul fichier (en anglais) : https://pxstud.io/llms-full.txt. L'index de tout le site (en anglais) : https://pxstud.io/llms.txt.

### Slices
Des rectangles nommés, par exemple pour des zones d'export ou des hitboxes. Un slice peut aussi être un 9-slice (un rectangle central) et porter un point de pivot ; les deux sont relatifs au coin supérieur gauche du slice, comme dans Aseprite, et le suivent quand le canevas est redimensionné, recadré ou pivoté.

#### `app.addSlice(name, x, y, width, height, opts?)` — modifie, annulable
Ajoute un nouveau slice rectangulaire nommé, éventuellement un 9-slice (center) et/ou avec un pivot.

- `name` (string)
- `x` (number)
- `y` (number)
- `width` (number)
- `height` (number)
- `opts` (table, facultatif)
  - `center` ({ x, y, width, height }) — Le centre du 9-slice { x, y, width, height }, relatif à l'origine du slice : à l'intérieur du slice, avec une taille positive.
  - `pivot` ({ x, y }) — Le point de pivot { x, y }, relatif à l'origine du slice (peut se trouver en dehors du slice).

Renvoie (string) : L'id du nouveau slice.

#### `app.getSlices(frameId?)` — lit
Chaque slice sous la forme { id, name, x, y, width, height, center = { x, y, width, height } (slices 9-slice), pivot = { x, y } (slices avec un pivot), keyFrameIds (images où le slice a sa propre clé, seulement pour les slices avec des clés par image) }. center et pivot sont relatifs à l'origine du slice. Passe un id d'image pour obtenir la géométrie en vigueur sur cette image.

- `frameId` (string, facultatif) — Image où lire les slices (un slice peut changer de limites, de centre et de pivot d'une image à l'autre) ; omets-la pour celle de la première image.

Renvoie (table) : Tableau de tables de slices.

#### `app.removeSlice(sliceId)` — modifie, annulable
Retire un slice.

- `sliceId` (string)

Ne renvoie rien.

#### `app.removeSliceKey(sliceId, frameId)` — modifie, annulable
Retire la clé d'un slice sur une image (pas la première image, qui porte la géométrie propre du slice) : à partir de cette image, la géométrie de la clé précédente s'applique de nouveau. Génère une erreur si le slice n'a pas de clé sur cette image.

- `sliceId` (string)
- `frameId` (string)

Ne renvoie rien.

#### `app.updateSlice(sliceId, props, frameId?)` — modifie, annulable
Met à jour une ou plusieurs propriétés d'un slice. Redimensionner un 9-slice conserve son centre seulement s'il tient encore dedans ; sinon, passe aussi un nouveau center (ou false). Avec un frameId après la première image, x, y, width, height, center et pivot modifient la clé du slice sur cette image (en en créant une : la nouvelle géométrie vaut à partir de cette image, jusqu'à la clé suivante) ; name s'applique toujours à tout le slice.

- `sliceId` (string)
- `props` (table) — Les clés omises restent inchangées.
  - `name` (string) — Le nom du slice.
  - `x` (integer) — Bord gauche, en pixels du sprite.
  - `y` (integer) — Bord supérieur, en pixels du sprite.
  - `width` (integer ≥ 1) — Largeur en pixels.
  - `height` (integer ≥ 1) — Hauteur en pixels.
  - `center` ({ x, y, width, height } or false) — Le centre du 9-slice { x, y, width, height }, relatif à l'origine du slice : à l'intérieur du slice, avec une taille positive. false l'efface.
  - `pivot` ({ x, y } or false) — Le point de pivot { x, y }, relatif à l'origine du slice (peut se trouver en dehors du slice). false l'efface.
- `frameId` (string, facultatif) — L'image à laquelle la géométrie s'applique ; omise, ou la première image, elle modifie la géométrie propre du slice.

Ne renvoie rien.
