このガイドでは、アフィン変換を使用してページ要素のサイズと配置を設定する方法について説明します。アフィン変換の概要については、変換のコンセプト ガイドをご覧ください。
要素の変換
Slide API を使用すると、ページ上の要素の位置の変更やサイズ変更が可能です。これを行うには、まず適用する必要がある変換の種類を判断してから、1 つ以上の UpdatePageElementTransformRequest 要素を含む presentations.batchUpdate メソッドを使用してその変換を適用します。
変換は、次の 2 つの applyModes のいずれかで行うことができます。
ABSOLUTE
変換は、要素の既存の変換行列を置換します。変換更新リクエストで省略したパラメータは、ゼロに設定されます。RELATIVE
変換では要素の既存の変換行列が乗算されます(乗算の順序は重要です)。
相対変換では、ページ要素を現在の場所から移動またはスケーリングします。たとえば、シェイプを左に 100 ポイント移動したり、40 度回転したりできます。絶対変換では、既存の位置とスケールの情報が破棄されます。たとえば、シェイプをページの中央に移動する、特定の幅に拡大縮小するなどします。
通常、複雑な変換は、単純な変換のシーケンスとして表現できます。変換の事前計算(行列乗算を使用して複数の変換を組み合わせる)を行うと、多くの場合、オーバーヘッドを削減できます。
一部のオペレーションでは、要素の既存の変換パラメータを把握している必要があります。これらの値がない場合は、presentations.pages.get リクエストを使用して取得できます。
翻訳
平行移動とは、単にページ要素を同じページ上の新しい位置に移動する操作です。絶対移動では要素を特定の位置に移動し、相対移動では要素を特定の距離に移動します。
基本的な翻訳変換行列の形式は次のとおりです。
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 次元に沿って要素を伸縮またはスクイーズしてサイズを変更する動作です。基本的なスケーリング変換行列の形式は次のとおりです。
この行列形式を RELATIVE
変換として直接使用して要素のサイズを変更できますが、要素のレンダリングと傾斜と移動に影響することがあります。せん断や移動に影響を与えずに要素を拡大縮小するには、その基準フレームにシフトします。
回転
回転変換では、スケーリング パラメータと切断パラメータを使用して、ページ要素を 1 点の周りで回転させます。基本的な回転変換行列の形式は次のとおりです。ここで、回転角(ラジアン単位)は X 軸から反時計回りに測定して測定されます。
スケーリングと同様に、この行列形式を RELATIVE
変換として直接使用して要素を回転させることができますが、その場合、要素はページの原点を中心に回転します。要素を中心または別の点の周りで回転するには、その基準フレームにシフトします。
リフレクション
反射は、特定の直線または軸に沿って要素をミラーリングします。基本的な x 軸および y 軸反射変換行列の形式は次のとおりです。
スケーリングと同様に、この行列形式を RELATIVE
変換として直接使用して要素を反映させることはできますが、要素も変換されます。要素を変換せずに反射するには、その基準フレームにシフトします。
要素の基準点
基本的なスケール、反射、または回転変換をページ要素に直接適用すると、ページの参照フレームが変換されます。たとえば基本的な回転では、ページの原点(左上隅)を中心として要素が回転します。ただし、要素の中心点を中心として要素を回転させるなど、要素自体の基準フレーム内では操作が可能です。
その参照フレーム内で要素を変換するには、2 つの変換でその要素を囲みます。前の変換 T1
で要素の中心をページ原点に移動し、次に変換 T2
で要素を元の位置に戻します。完全な演算は行列積として表すことができます。
別の基準点を原点に移動することで、他の基準系に切り替えることもできます。これらの点が新しい基準フレームの中心になります。
これらの変換はそれぞれ、連続した RELATIVE
変換リクエストとして個別に実行できます。理想的には、行列乗算によって上記の A'
を事前に計算し、その結果を単一の ABSOLUTE
変換として適用する必要があります。または、T2 * B * T1
積を事前に計算し、それを単一の RELATIVE
変換として適用することもできます。どちらも API オペレーションの面で効率的で、変換リクエストを個別に送信できます。
制限事項
サイズ設定と配置のフィールドの中には、一部のタイプのページ要素と互換性がないものがあります。以下の表は、特定のページ要素と、サイズ設定と配置のフィールドの互換性をまとめたものです。
項目 | 形 | 動画 | テーブル |
---|---|---|---|
翻訳 | ✔ | ✔ | ✔ |
選択肢 | ✔ | ✔ | ×** |
シア | ✔ | × | × |
** 表の行と列のディメンションを更新するには、UpdateTableRowPropertiesRequest
と UpdateTableColumnPropertiesRequest
を使用します。
ページ要素にせん断がある場合、すべてのサイズ設定と配置フィールドで予期しない結果が生じる可能性があります。すべての制限は変更される可能性があります。最新の情報については GoogleSlide API をご覧ください。
Slides API により値がリファクタリングされる場合がある
ページ要素を作成するときに、特定の視覚的結果をもたらすサイズと変換を指定できます。ただし、指定した値は、API により同じ外観を持つ他の値に置き換えられる場合があります。一般に、API を使用してサイズを記述した場合、同じサイズが返されるとは限りません。ただし、変換を考慮すると、同じ結果が得られます。