페이지 요소 크기 조정 및 위치 지정

이 가이드에서는 아핀 변환을 사용하여 페이지 요소의 크기를 조절하고 위치를 지정하는 방법을 설명합니다. 아핀 변환에 관한 개념적 소개는 변환 개념 가이드를 참고하세요.

요소 변환

Slides API를 사용하면 페이지에서 요소의 위치를 조정하고 크기를 조절할 수 있습니다. 이렇게 하려면 먼저 적용해야 할 변환 유형을 결정한 다음 하나 이상의 UpdatePageElementTransformRequest 요소가 포함된 presentations.batchUpdate 메서드를 사용하여 해당 변환을 적용합니다.

변환은 두 가지 applyModes 중 하나로 실행할 수 있습니다.

  • ABSOLUTE는 요소의 기존 변환 행렬을 대체하는 변환입니다. 변환 업데이트 요청에서 생략한 매개변수는 0으로 설정됩니다.

  • RELATIVE 변환은 요소의 기존 변환 행렬과 곱해집니다 (곱셈 순서가 중요함).

$$A' = BA$$

상대 변환은 페이지 요소를 현재 위치에서 이동하거나 크기를 조정합니다. 예를 들어 도형을 왼쪽으로 100포인트 이동하거나 40도 회전합니다. 절대 변환은 기존 위치 및 크기 정보가 삭제됩니다. 예를 들어 도형을 페이지 중앙으로 이동하거나 특정 너비로 크기를 조정합니다.

복잡한 변환은 일반적으로 더 간단한 변환의 시퀀스로 표현할 수 있습니다. 변환을 미리 계산하면(매트릭스 곱셈을 사용하여 여러 변환을 결합) 오버헤드를 줄일 수 있습니다.

일부 작업의 경우 요소의 기존 변환 매개변수를 알아야 합니다. 이러한 값이 없는 경우 presentations.pages.get 요청으로 가져올 수 있습니다.

번역

변환은 페이지 요소를 동일한 페이지의 새 위치로 이동하는 작업입니다. 절대 변환은 요소를 특정 지점으로 이동시키고 상대 변환은 요소를 특정 거리만큼 이동시킵니다.

기본 변환 행렬은 다음과 같은 형식입니다.

$$T=\begin{bmatrix} 1 & 0 & translate\_x\\ 0 & 1 & translate\_y\\ 0 & 0 & 1 \end{bmatrix}$$

UpdatePageElementTransformRequest를 사용하여 크기, 시어 또는 방향을 변경하지 않고 요소를 변환하는 경우 다음 AffineTransform 구조 중 하나를 사용할 수 있습니다.

// Absolute translation:
{
  'transform': {
    'scaleX':  current scaleX value,
    'scaleY':  current scaleY value,
    'shearX':  current shearX value,
    'shearY':  current shearY value,
    'translateX': X coordinate to move to,
    'translateY': Y coordinate to move to,
    'unit': 'EMU' // or 'PT'
  }
}

// Relative translation (scaling must also be provided to avoid a matrix multiplication error):
{
  'transform': {
    'scaleX':  1,
    'scaleY':  1,
    'translateX': X coordinate to move by,
    'translateY': Y coordinate to move by,
    'unit': 'EMU' // or 'PT'
  }
}

확장

크기 조정은 X 또는 Y 크기를 따라 요소를 늘리거나 줄여 크기를 변경하는 작업입니다. 기본 크기 조정 변환 매트릭스의 형식은 다음과 같습니다.

$$S=\begin{bmatrix} scale\_x & 0 & 0\\ 0 & scale\_y & 0\\ 0 & 0 & 1 \end{bmatrix}$$

이 매트릭스 형식을 RELATIVE 변환으로 직접 사용하여 요소 크기를 조절할 수 있지만, 요소의 렌더링된 전단 및 변환에도 영향을 줄 수 있습니다. 전단이나 변환에 영향을 주지 않고 요소의 크기를 조절하려면 참조 프레임으로 전환합니다.

회전

회전 변환은 크기 조절 및 변형 매개변수를 사용하여 점을 중심으로 페이지 요소를 회전합니다. 기본 회전 변환 행렬은 다음과 같은 형식을 갖습니다. 여기서 회전 각도 (라디안)는 X축에서 시계 반대 방향으로 이동하면서 측정됩니다.

$$R=\begin{bmatrix} cos(\theta) & sin(\theta) & 0\\ -sin(\theta) & cos(\theta) & 0\\ 0 & 0 & 1 \end{bmatrix}$$

크기 조절과 마찬가지로 이 행렬 형식을 RELATIVE 변환으로 직접 사용하여 요소를 회전할 수 있지만, 이 경우 요소가 페이지의 원점을 중심으로 회전합니다. 요소를 중심이나 다른 지점을 중심으로 회전하려면 해당 참조 프레임으로 전환합니다.

복습

반사란 특정 선이나 축을 기준으로 요소를 미러링하는 것입니다. 기본 x축 및 y축 반사 변환 행렬은 다음과 같은 형식입니다.

$$F_x=\begin{bmatrix} 1 & 0 & 0\\ 0 & -1 & 0\\ 0 & 0 & 1\\ \end{bmatrix}\qquad\qquad F_y=\begin{bmatrix} -1 & 0 & 0\\ 0 & 1 & 0\\ 0 & 0 & 1\\ \end{bmatrix}$$

크기 조절과 마찬가지로 이 행렬 형식을 RELATIVE 변환으로 직접 사용하여 요소를 반영할 수 있지만, 이 경우 요소가 번역되기도 합니다. 변환 없이 요소를 반영하려면 참조 프레임으로 전환합니다.

요소 참조 프레임

기본 크기 조정, 반사 또는 회전 변환을 페이지 요소에 직접 적용하면 페이지의 참조 프레임에 변환이 생성됩니다. 예를 들어 기본 회전은 페이지의 원점 (왼쪽 상단)을 중심으로 요소를 회전합니다. 그러나 요소 자체의 참조 프레임에서 작업할 수 있습니다(예: 요소의 중심점을 중심으로 요소를 회전).

자체 참조 프레임 내에서 요소를 변환하려면 요소 중심을 페이지 원점으로 이동하는 이전 변환 T1과 요소를 원래 위치로 다시 이동하는 후속 변환 T2이라는 두 가지 다른 변환 사이에 요소를 묶습니다. 전체 작업은 행렬 곱셈으로 표현할 수 있습니다.

$$A' = T2 \times B \times T1 \times A$$

다른 점을 원점으로 변환하여 다른 참조 프레임으로 전환할 수도 있습니다. 이 점은 새 참조 프레임의 중심이 됩니다.

이러한 각 변환을 순차적인 RELATIVE 변환 요청으로 개별적으로 실행할 수 있습니다. 이상적으로는 위의 A'를 행렬 곱셈으로 미리 계산하고 결과를 단일 ABSOLUTE 변환으로 적용해야 합니다. 또는 T2 * B * T1 곱셈을 미리 계산하고 이를 단일 RELATIVE 변환으로 적용합니다. 둘 다 API 작업 측면에서 변환 요청을 개별적으로 전송하는 것보다 효율적입니다.

제한사항

일부 크기 및 위치 지정 입력란은 일부 유형의 페이지 요소와 호환되지 않습니다. 아래 표에는 특정 페이지 요소와 크기 및 위치 지정 필드의 호환성이 요약되어 있습니다.

필드 도형 동영상
번역과
확장 아니요**
Shear 아니요 아니요

** 테이블 행 및 열 크기를 업데이트하려면 UpdateTableRowPropertiesRequestUpdateTableColumnPropertiesRequest를 사용합니다.

페이지 요소에 전단이 있는 경우 모든 크기 및 위치 필드에서 예기치 않은 결과가 나올 수 있습니다. 모든 제한사항은 변경될 수 있습니다. 최신 정보는 Google Slides API를 참고하세요.

Slides API에서 값을 리팩터링할 수 있음

페이지 요소를 만들 때 특정 시각적 결과를 제공하는 크기와 변환을 지정할 수 있습니다. 그러나 API는 제공된 값을 동일한 시각적 모양을 생성하는 다른 값으로 대체할 수 있습니다. 일반적으로 API를 사용하여 크기를 작성하면 동일한 크기가 반환되지 않을 수 있습니다. 하지만 변환을 고려하면 동일한 결과가 나옵니다.