Transformations et éléments de page

Ce guide décrit les concepts sous-jacents utilisés pour transformer (c'est-à-dire déplacer, faire pivoter, mettre à l'échelle et cisailler) les éléments de page, en se concentrant tout particulièrement sur la transformation affine sous-jacente et ses opérations.

Pour en savoir plus sur l'utilisation des transformations affine pour obtenir des résultats spécifiques, consultez le guide Formes de taille et de position.

La taille et la position visuelle d'un élément de page sont contrôlées par deux propriétés: size et transform. La taille décrit la taille idéale ou intégrée de l'élément de page en cours de création. La transformation spécifie une matrice de transformation affine bidimensionnelle qui indique comment un objet tel que sa taille intégrée est transformé pour obtenir son apparence visuelle finale.

Schéma d'une forme rendue par une transformation affine

Lorsque vous sélectionnez un élément de page dans l'interface utilisateur de Slides et que vous modifiez sa taille visuelle à l'aide des poignées d'ajustement, vous mettez à jour cette matrice de transformation. Le fait de déplacer l'élément sur la page ou de le faire pivoter met également à jour la matrice de transformation de l'élément.

Utilisez l'interface utilisateur de Slides pour commencer

L'arithmétique matricielle que vous utilisez pour transformer et redimensionner les éléments de la page est très puissante, mais peut être intimidante au premier abord. La plupart de cette page décrit ces calculs. Toutefois, vous pouvez simplifier la spécification des transformations et des tailles à l'aide de l'approche suivante:

  1. Créer des éléments de page à l'aide de l'interface utilisateur de Slides
  2. Positionnez ces éléments de page à l'échelle comme vous le souhaitez, tout en utilisant l'interface utilisateur Slides.
  3. Lisez la taille et la transformation de ces éléments à l'aide de la méthode get.

Cela peut suffire pour vous lancer. La suite de ce guide explique en détail les calculs de transformation que vous pouvez utiliser pour manipuler des éléments de page.

Matrices de transformation affine

Les matrices de transformation affine bidimensionnelles sont couramment utilisées par les bibliothèques graphiques pour contrôler l'échelle, la rotation, le cisaillement, la réflexion et la translation des éléments. Dans l'API Slides, la transformation d'un élément de page est représentée par une matrice 3x3:

$$A=\begin{bmatrix} scale\_x & shear\_x & translate\_x\\ shear\_y & scale\_y & translate\_y\\ 0 & 0 & 1 \end{bmatrix}$$

Les paramètres utilisés dans la transformation sont les suivants:

translate_x Les paramètres de traduction spécifient la position (X,Y) de l'angle supérieur gauche de l'élément de page par rapport à l'angle supérieur gauche de la page. Vous spécifiez la position relative en utilisant des unités de points (pt) ou d'unités métriques anglaises (EMU).
translate_y
scale_x Les paramètres d'échelle contrôlent la taille d'un élément de page lorsqu'il est affiché. Il s'agit de facteurs de multiplication sans unité.Par exemple, une valeur de scale_x de 1,5 agrandit la largeur de l'élément de 50%.
scale_y
shear_x Les paramètres de cisaillement sont également sans unité et contrôlent l'inclinaison d'un élément de page. Vous pouvez utiliser les paramètres d'échelle et de cisaillement pour faire pivoter un élément de page.
shear_y

Vous trouverez de nombreux exemples sur le Web montrant comment les matrices de transformation 2D affectent le rendu des objets graphiques.

La matrice de transformation est relative au groupe ou à la page parent de l'élément. Par exemple, si vous faites pivoter un groupe qui contient un rectangle, les valeurs de champ transform du groupe reflètent la rotation, mais pas les valeurs de champ transform du rectangle.

Calculer la taille visuelle

Pour déterminer la taille visuelle (rendue) d'un élément de page, vous devez prendre en compte à la fois la taille et les propriétés de transformation. Il est impossible de déterminer lequel des deux éléments de page est visuellement plus grand en comparant simplement leurs propriétés de taille : vous devez mapper les limites de l'élément à l'aide de la matrice de transformation et calculer la taille affichée.

Mapper un point

Pour mapper un point spécifique à l'aide de la matrice de transformation, convertissez le point (x, y) en vecteur [x, y, 1], puis effectuez la multiplication de la matrice. Prenons l'exemple du mappage d'un point p:

\[p' = Ap\]

Cela devient:

$$\begin{bmatrix} x'\\ y'\\ 1 \end{bmatrix} =\begin{bmatrix} scale\_x & shear\_x & translate\_x\\ shear\_y & scale\_y & translate\_y\\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} x\\ y\\ 1 \end{bmatrix}$$

Les coordonnées du nouveau point p' sont donc les suivantes:

$$x' = (scale\_x \times x) + (shear\_x \times y) + translate\_x\\ y' = (scale\_y \times y) + (shear\_y \times x) + translate\_y$$

Calcul de la limite

Pour déterminer la taille de rendu du cadre de délimitation d'un élément après une transformation qui scinde et redimensionne l'affichage, utilisez:

$$width' = (scale\_x \times width) + (shear\_x \times height)\\ height' = (scale\_y \times height) + (shear\_y \times width)$$

Pour en savoir plus sur l'utilisation des transformations affine pour obtenir des résultats spécifiques, consultez le guide Formes de taille et de position.

Limites

Certains champs de dimensionnement et de positionnement ne sont pas compatibles avec certains types d'éléments de page. Le tableau ci-dessous récapitule la compatibilité de certains éléments de la page avec les champs de dimensionnement et de positionnement.

Champ Forme Vidéo Table
Traduction
Scale Non**
Citrage Non Non

** Pour mettre à jour les dimensions des lignes et des colonnes d'un tableau, utilisez UpdateTableRowPropertiesRequest et UpdateTableColumnPropertiesRequest.

Tous les champs de dimensionnement et de positionnement peuvent donner des résultats inattendus si l'élément de la page est cisaillé. Toutes les limitations sont susceptibles d'être modifiées. Pour obtenir les informations à jour, consultez la page API Google Slides.