Operaciones de transformación

La API de Presentaciones de Google te permite manipular la ubicación, el tamaño y la orientación de una PageElement (cuadros de texto, imágenes, tablas y formas básicas) en una página, mientras se mantienen las líneas rectas y preservar los puntos y las líneas paralelas. Se conocen como afinidades transformaciones predefinidas. En estos ejemplos, se muestran algunas transformaciones de elementos de página las operaciones con el presentations.batchUpdate .

En estos ejemplos, se usan las siguientes variables:

  • PRESENTATION_ID: Indica dónde proporcionas la presentación correcto. Puedes descubrirá el valor para este ID desde la URL de presentación.
  • PAGE_ID: Indica dónde se proporciona el objeto de página. correcto. Puedes recuperar el valor para esto desde la URL o mediante una solicitud de lectura de la API.
  • PAGE_ELEMENT_ID: Indica dónde proporcionas la página. Elemento ID de objeto. Tú puedes especificar este ID para los elementos que creas (con algunos restricciones de uso) o permitir que la API de Presentaciones cree uno automáticamente. IDs de elementos se puede recuperar a través de una solicitud de lectura de API.

Estos ejemplos se presentan como solicitudes HTTP para que no tengan idioma. Para aprender cómo implementar una actualización por lotes en diferentes idiomas con la API de Google bibliotecas cliente, consulta Cómo agregar formas y texto.

Ejemplo de forma de flecha

Para los siguientes ejemplos, imagina que existe un ejemplo de página con forma de flecha. con el siguiente tamaño y transformar los datos (que puede encontrarse con un presentations.pages.get método de pago. La forma de ejemplo usa el indicador unit EMU (unidad métrica en inglés) y pt (punto).

{
  "objectId": PAGE_ELEMENT_ID,
  "size": {
    "width": {
      "magnitude": 3000000,
      "unit": "EMU"
    },
    "height": {
      "magnitude": 3000000,
      "unit": "EMU"
    }
  },
  "transform": {
    "scaleX": 0.3,
    "scaleY": 0.12,
    "shearX": 0,
    "shearY": 0,
    "translateX": 2000000,
    "translateY":  550000,
    "unit": "EMU"
  },
  "shape": {
    "shapeType": "RIGHT_ARROW"
  }
}

Cómo alinear un elemento con otro

Lo siguiente presentations.batchUpdate de muestra de código muestra cómo usar el CreateShapeRequest para crear nuevas formas en las posiciones correctas alineadas con el forma de flecha de ejemplo en la página. En ambos casos, el símbolo X e Y las coordenadas de la esquina superior izquierda de la forma nueva.

La primera solicitud crea un rectángulo de 100 por 50 pt que se alinea a la izquierda. borde de la forma de flecha, pero se posiciona en 50 pt (50 * 12,700 = 635,000 EMU) debajo del borde superior de la flecha. La coordenada X del nuevo rectángulo debe ser la igual que la coordenada X de la flecha para mantener su borde izquierdo alineado. La Y es la misma que la coordenada Y de la flecha más 50 pt, ya que la la distancia se mide desde la parte superior de la flecha. Las coordenadas del rectángulo son por lo tanto:

x" = 2000000 EMU
y" = 550000 + (50 * 12700) = 1185000 EMU

La segunda solicitud crea un círculo de 40 pt de ancho que tiene la misma orientación línea central como la flecha de ejemplo, pero se posiciona 100 pt (1,270,000 EMU) para la derecha del borde derecho de la flecha. La coordenada X del círculo es la suma de la la coordenada X de la flecha, el ancho de la flecha y 100 pt. Cómo aplicar una línea central para el círculo nuevo, se debe tener en cuenta la altura la flecha y el círculo. La coordenada Y del círculo es la coordenada Y de la flecha más la mitad de la altura de la flecha menos la mitad de la altura del círculo. En ambos casos, el también se deben tener en cuenta los factores de escala asociados porque afectan el ancho y la altura renderizados de la flecha. El ícono del círculo por lo tanto, coordenadas:

x = 2000000 + (0.3 * 3000000) + (100 * 12700) = 4170000 EMU
y = 550000 + (0.5 * 0.12 * 3000000) - (0.5 * 40 * 12700) = 476000 EMU

El siguiente es el protocolo de solicitud para alinear un elemento con otro:

POST https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate
{
  "requests": [
    {
      "createShape": {
        "shapeType": "RECTANGLE",
        "elementProperties": {
          "pageObjectId": PAGE_ID,
          "size": {
            "width": {
              "magnitude": 100,
              "unit": "PT"
            },
            "height": {
              "magnitude": 50,
              "unit": "PT"
            }
          },
          "transform": {
            "scaleX": 1,
            "scaleY": 1,
            "translateX": 2000000,
            "translateY": 1185000,
            "unit": "EMU"
          }
        }
      }
    },
    {
      "createShape": {
        "shapeType": "ELLIPSE",
        "elementProperties": {
          "pageObjectId": PAGE_ID,
          "size": {
            "width": {
              "magnitude": 40,
              "unit": "PT"
            },
            "height": {
              "magnitude": 40,
              "unit": "PT"
            }
          },
          "transform": {
            "scaleX": 1,
            "scaleY": 1,
            "translateX": 4170000,
            "translateY":  476000,
            "unit": "EMU"
          }
        }
      }
    }
  ]
}

Cómo mover un elemento

Lo siguiente presentations.batchUpdate de muestra de código muestra cómo usar el UpdatePageElementTransformRequest para traducir el elemento de página de ejemplo con forma de flecha en de dos maneras diferentes.

La primera solicitud del lote mueve la flecha a (X,Y) = (2000000, 150000) Coordenada EMU (con una traducción absoluta) applyMode). La segunda solicitud del lote mueve la flecha desde allí, esta vez 40,000 EMU. hacia la derecha y 35,000 EMU hacia arriba (con una traducción relativa applyMode). Las matrices de transformación1 usadas se construyen para evitar la alteración del tamaño y la orientación de los elementos.

Después de ejecutar ambas solicitudes, la esquina superior izquierda de la flecha se encuentra en la posición (X,Y). = (2040000, 115000) Coordenada EMU.

El siguiente es el protocolo de solicitud para mover un elemento:

POST https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate
{
  "requests": [
    {
      "updatePageElementTransform": {
        "objectId": PAGE_ELEMENT_ID,
        "applyMode": "ABSOLUTE",
        "transform": {
            "scaleX": 0.3,
            "scaleY": 0.12,
            "translateX": 2000000,
            "translateY":  150000,
            "unit": "EMU"
        }
      }
    },
    {
      "updatePageElementTransform": {
        "objectId": PAGE_ELEMENT_ID,
        "applyMode": "RELATIVE",
        "transform": {
            "scaleX": 1,
            "scaleY": 1,
            "translateX":  40000,
            "translateY": -35000,
            "unit": "EMU"
        }
      }
    }
  ]
}

Refleja un elemento

Lo siguiente presentations.batchUpdate de muestra de código muestra cómo usar el UpdatePageElementTransformRequest para reflejar el elemento de página de ejemplo de forma de flecha horizontalmente a lo largo de su centro, sin alterar su posición en la página ni y escalar.

Esto se logra usando una reflexión básica transform en la referencia del elemento marco. Para mayor claridad, el el cambio y el reflejo del marco de referencia se muestran con tres llamadas separadas al método UpdatePageElementTransformRequest, pero es más eficiente procesar previamente el producto de estas matrices y, luego, aplicar ese producto como una única solicitud.

Para las transformaciones de traducción, la centro de la forma de flecha se mueve hacia y desde el origen. Los valores de los parámetros se expresan como cálculos para mayor claridad.

A continuación, se muestra el protocolo de solicitud para reflejar un elemento:

POST https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate
{
  "requests": [
    {
      "updatePageElementTransform": {
        "objectId": PAGE_ELEMENT_ID,
        "applyMode": "RELATIVE",
        "transform": {
            "scaleX":  1,
            "scaleY":  1,
            "translateX": -2000000 - 0.5 * 0.3  * 3000000,
            "translateY":  -550000 - 0.5 * 0.12 * 3000000,
            "unit": "EMU"
        }
      }
    },
    {
      "updatePageElementTransform": {
        "objectId": PAGE_ELEMENT_ID,
        "applyMode": "RELATIVE",
        "transform": {
            "scaleX": -1,
            "scaleY":  1,
            "unit": "EMU"
        }
      }
    },
    {
      "updatePageElementTransform": {
        "objectId": PAGE_ELEMENT_ID,
        "applyMode": "RELATIVE",
        "transform": {
            "scaleX":  1,
            "scaleY":  1,
            "translateX":  2000000 + 0.5 * 0.3  * 3000000,
            "translateY":   550000 + 0.5 * 0.12 * 3000000,
            "unit": "EMU"
        }
      }
    }
  ]
}

Cómo cambiar el tamaño de un elemento

Lo siguiente presentations.batchUpdate de muestra de código muestra cómo usar el UpdatePageElementTransformRequest método para escalar el elemento de página de ejemplo con forma de flecha al 50% más ancha y que tienen solo el 80% de su altura actual, mientras mantienen el centro de la flecha en la misma posición y manteniendo su orientación.

Esto se hace usando un escalamiento básico transform en la referencia del elemento marco. Para mayor claridad, el el cambio y el ajuste de tamaño del marco de referencia se muestran con tres llamadas independientes al método UpdatePageElementTransformRequest, pero es más eficiente procesar previamente el producto de estas matrices y, luego, aplicar ese producto como una única solicitud.

Para las transformaciones de traducción, la centro de la forma de flecha se mueve hacia y desde el origen. Los valores de los parámetros se expresan como cálculos para mayor claridad.

El siguiente es el protocolo de solicitud para cambiar el tamaño de un elemento:

POST https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate
{
  "requests": [
    {
      "updatePageElementTransform": {
          "objectId": PAGE_ELEMENT_ID,
          "applyMode": "RELATIVE",
          "transform": {
              "scaleX":  1,
              "scaleY":  1,
              "translateX": -2000000 - 0.5 * 0.3  * 3000000,
              "translateY":  -550000 - 0.5 * 0.12 * 3000000,
              "unit": "EMU"
          }
      }
    },
    {
      "updatePageElementTransform": {
        "objectId": PAGE_ELEMENT_ID,
        "applyMode": "RELATIVE",
        "transform": {
            "scaleX": 1.5,
            "scaleY": 0.8,
            "unit": "EMU"
        }
      }
    },
    {
      "updatePageElementTransform": {
        "objectId": PAGE_ELEMENT_ID,
        "applyMode": "RELATIVE",
        "transform": {
            "scaleX":  1,
            "scaleY":  1,
            "translateX":  2000000 + 0.5 * 0.3  * 3000000,
            "translateY":   550000 + 0.5 * 0.12 * 3000000,
            "unit": "EMU"
        }
      }
    }
  ]
}

Cómo rotar un elemento sobre su centro

Lo siguiente presentations.batchUpdate de muestra de código muestra cómo usar el UpdatePageElementTransformRequest método para rotar el elemento de página 35 de ejemplo de forma de flecha grados en el sentido contrario a las manecillas del reloj, mientras mantienes el centro de la flecha en la misma posición y manteniendo su tamaño.

Esto se hace mediante una operación de rotación básica transform en la referencia del elemento marco. Para mayor claridad, el el cambio y la rotación del marco de referencia se muestran con tres llamadas independientes al método UpdatePageElementTransformRequest, pero es más eficiente procesar previamente el producto de estas matrices y, luego, aplicar ese producto como una única solicitud

Para las transformaciones de traducción, la centro de la forma de flecha se mueve hacia y desde el origen. Los valores de los parámetros se expresan como cálculos para mayor claridad.

El siguiente es el protocolo de solicitud para rotar un elemento sobre su centro:

POST https://slides.googleapis.com/v1/presentations/PRESENTATION_ID:batchUpdate
{
  "requests": [
    {
      "updatePageElementTransform": {
          "objectId": PAGE_ELEMENT_ID,
          "applyMode": "RELATIVE",
          "transform": {
              "scaleX":  1,
              "scaleY":  1,
              "translateX": -2000000 - 0.5 * 0.3  * 3000000,
              "translateY":  -550000 - 0.5 * 0.12 * 3000000,
              "unit": "EMU"
          }
      }
    },
    {
      "updatePageElementTransform": {
        "objectId": PAGE_ELEMENT_ID,
        "applyMode": "RELATIVE",
        "transform": {
            "scaleX":  cos(35 * (pi/180)),
            "scaleY":  cos(35 * (pi/180)),
            "shearX":  sin(35 * (pi/180)),
            "shearY": -sin(35 * (pi/180)),
            "unit": "EMU"
        }
      }
    },
    {
      "updatePageElementTransform": {
        "objectId": PAGE_ELEMENT_ID,
        "applyMode": "RELATIVE",
        "transform": {
            "scaleX":  1,
            "scaleY":  1,
            "translateX":  2000000 + 0.5 * 0.3  * 3000000,
            "translateY":   550000 + 0.5 * 0.12 * 3000000,
            "unit": "EMU"
        }
      }
    }
  ]
}