Panduan ini menjelaskan cara mengatur ukuran dan posisi elemen halaman menggunakan transformasi affine. Untuk pengantar konseptual transformasi affine, lihat panduan konsep Transformasi.
Mentransformasi elemen
Slides API memungkinkan Anda mengatur posisi dan skala elemen pada halaman. Untuk melakukannya, tentukan terlebih dahulu jenis transformasi yang perlu diterapkan, lalu terapkan transformasi tersebut menggunakan metode presentations.batchUpdate yang berisi satu atau beberapa elemen UpdatePageElementTransformRequest.
Transformasi dapat dibuat dalam salah satu dari dua applyModes:
ABSOLUTE
mengubah mengganti matriks transformasi elemen yang ada. Semua parameter yang Anda abaikan dari permintaan update transformasi akan ditetapkan ke nol.Transformasi
RELATIVE
dikalikan dengan matriks transformasi elemen yang ada (urutan perkalian berpengaruh):
Transformasi relatif memindahkan atau menskalakan elemen halaman dari lokasi saat ini; misalnya, memindahkan bentuk 100 poin ke kiri, atau memutarnya 40 derajat. Transformasi absolut menghapus informasi posisi dan skala yang ada; misalnya, memindahkan bentuk ke tengah halaman, atau menskalakannya ke lebar tertentu.
Transformasi kompleks biasanya bisa diekspresikan sebagai urutan transformasi yang lebih sederhana. Menghitung transformasi lebih dahulu—menggabungkan beberapa transformasi menggunakan perkalian matriks—sering kali dapat mengurangi overhead.
Untuk beberapa operasi, Anda harus mengetahui parameter transformasi elemen yang ada. Jika tidak memiliki nilai ini, Anda dapat mengambilnya dengan permintaan presentations.pages.get.
Terjemahan
Penerjemahan adalah sekadar tindakan memindahkan elemen halaman ke posisi baru di halaman yang sama. Penerjemahan absolut memindahkan elemen ke titik tertentu, sedangkan terjemahan relatif memindahkan elemen dengan jarak tertentu.
Matriks transformasi penerjemahan dasar memiliki bentuk:
Saat menggunakan UpdatePageElementTransformRequest untuk menerjemahkan elemen (tanpa mengubah ukuran, potongan, atau orientasinya), Anda dapat menggunakan salah satu struktur AffineTransform berikut:
// 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' } }
Penskalaan
Penskalaan adalah tindakan merentangkan atau menghimpitkan elemen pada dimensi X dan/atau Y untuk mengubah ukurannya. Matriks transformasi penskalaan dasar memiliki bentuk:
Anda dapat menggunakan bentuk matriks ini secara langsung sebagai transformasi RELATIVE
untuk mengubah ukuran elemen, tetapi hal ini juga dapat memengaruhi pemotongan dan terjemahan elemen yang dirender.
Untuk menskalakan elemen tanpa memengaruhi penerjemahan atau pemotongannya, pindahkan ke
bingkai referensinya.
Rotasi
Transformasi rotasi memutar elemen halaman di sekeliling titik, menggunakan parameter penskalaan dan pemotongan. Matriks transformasi rotasi dasar memiliki bentuk berikut, dengan sudut rotasi (dalam radian) diukur dari sumbu X, yang bergerak berlawanan arah jarum jam:
Sebagaimana dengan penskalaan, Anda dapat menggunakan bentuk matriks ini secara langsung sebagai transformasi RELATIVE
untuk memutar elemen, tetapi hal ini menyebabkan elemen diputar
di sekitar asal halaman. Untuk memutar elemen di sekeliling pusatnya atau
titik yang berbeda,
pindahkan ke bingkai referensi tersebut.
Refleksi
Refleksi mencerminkan sebuah elemen di sepanjang garis atau sumbu tertentu. Matriks transformasi refleksi sumbu x dan y dasar memiliki bentuk berikut:
Sebagaimana dengan penskalaan, Anda dapat menggunakan bentuk matriks ini secara langsung sebagai transformasi RELATIVE
untuk merefleksikan elemen, tetapi hal ini menyebabkan elemen juga
diterjemahkan. Untuk merefleksikan elemen tanpa penerjemahan,
pindahkan ke bingkai referensinya.
Bingkai referensi elemen
Menerapkan transformasi skala, refleksi, atau rotasi dasar secara langsung ke elemen halaman akan menghasilkan transformasi dalam bingkai referensi halaman. Misalnya, rotasi dasar memutar elemen di sekitar asal halaman (sudut kiri atas). Namun, Anda dapat beroperasi dalam frame referensi elemen itu sendiri, misalnya untuk memutar elemen di sekitar titik pusatnya.
Untuk mentransformasikan elemen dalam bingkai referensinya sendiri, masukkan elemen di antara dua
penerjemahan lainnya: penerjemahan T1
sebelumnya yang memindahkan pusat elemen
ke asal halaman, dan penerjemahan T2
berikutnya yang memindahkan elemen
kembali ke posisi aslinya. Operasi penuh dapat dinyatakan sebagai produk matriks:
Anda juga dapat beralih ke bingkai referensi lainnya, dengan menerjemahkan titik yang berbeda ke asalnya. Titik ini menjadi pusat bingkai referensi baru.
Setiap transformasi ini dapat dilakukan secara terpisah sebagai
permintaan transformasi RELATIVE
berurutan. Idealnya, Anda harus menghitung
A'
di atas terlebih dahulu dengan perkalian matriks dan menerapkan hasilnya sebagai transformasi
ABSOLUTE
tunggal. Atau, hitung produk T2 * B * T1
terlebih dahulu
dan terapkan sebagai transformasi RELATIVE
tunggal. Keduanya lebih efisien,
dalam hal operasi API, daripada mengirimkan permintaan transformasi satu per satu.
Batasan
Beberapa kolom ukuran dan pemosisian tidak kompatibel dengan beberapa jenis elemen halaman. Tabel di bawah ini merangkum kompatibilitas elemen halaman tertentu dengan kolom ukuran dan pemosisian.
Kolom | Bentuk | Video | Tabel |
---|---|---|---|
Translation | ✔ | ✔ | ✔ |
Menskalakan | ✔ | ✔ | Tidak** |
Shear | ✔ | Tidak | Tidak |
** Untuk memperbarui dimensi baris dan kolom tabel, gunakan
UpdateTableRowPropertiesRequest
dan
UpdateTableColumnPropertiesRequest
.
Semua kolom ukuran dan pemosisian dapat memberikan hasil yang tidak terduga jika elemen halaman memiliki pergeseran. Semua batasan dapat berubah sewaktu-waktu. Untuk informasi terbaru, lihat Google Slides API.
Slides API dapat mengoptimalkan nilai Anda
Saat membuat elemen halaman, Anda dapat menentukan ukuran dan transformasi yang memberikan hasil visual tertentu. Namun, API dapat mengganti nilai yang Anda berikan dengan nilai lain yang menghasilkan tampilan visual yang sama. Secara umum, jika Anda menulis ukuran menggunakan API, Anda tidak dijamin akan mendapatkan ukuran yang sama. Namun, Anda akan mendapatkan hasil yang sama jika mempertimbangkan transformasi.