Panduan ini menjelaskan cara menentukan ukuran dan memosisikan elemen halaman menggunakan transformasi affine dengan Google Slides API. Untuk pengantar konseptual tentang transformasi affine, lihat panduan konsep Transformasi dan elemen halaman.
Mengubah elemen
Slides API memungkinkan Anda memosisikan ulang dan menskalakan elemen di 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 dilakukan menggunakan
ApplyMode
:
ABSOLUTE
mengubah mengganti matriks transformasi elemen yang ada. Setiap parameter yang Anda hapus dari permintaan pembaruan transformasi akan ditetapkan ke nol.Transformasi
RELATIVE
dikalikan dengan matriks transformasi elemen yang ada (urutan perkalian penting):
Transformasi relatif memindahkan atau menskalakan elemen halaman dari posisinya. Misalnya, memindahkan bentuk 100 titik ke kiri, atau memutarnya 40 derajat. Transformasi absolut menghapus informasi posisi dan skala yang ada; misalnya, memindahkan bentuk ke tengah halaman, atau menskalakannya menjadi lebar tertentu.
Transformasi kompleks biasanya dapat dinyatakan sebagai urutan transformasi yang lebih sederhana. Menghitung transformasi sebelumnya—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 menggunakan metode
presentations.pages.get()
.
Terjemahan
Terjemahan adalah tindakan memindahkan elemen halaman ke posisi baru di halaman yang sama. Terjemahan absolut memindahkan elemen ke titik tertentu, sedangkan terjemahan relatif memindahkan elemen ke jarak tertentu.
Matriks transformasi terjemahan dasar memiliki bentuk:
Saat menggunakan
UpdatePageElementTransformRequest
untuk menerjemahkan elemen (tanpa mengubah ukuran, geser, 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' } }
Skala
Penskalaan adalah tindakan meregangkan atau memeras elemen di sepanjang dimensi X 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 pergeseran dan translasi yang dirender elemen.
Untuk menskalakan elemen tanpa memengaruhi pergeseran atau terjemahan, beralihlah ke
bingkai referensi elemen.
Rotasi
Transformasi rotasi memutar elemen halaman di sekitar titik, menggunakan parameter penskalaan dan geser. Matriks transformasi rotasi dasar memiliki bentuk berikut, dengan sudut rotasi (dalam radian) diukur dari sumbu X, bergerak berlawanan arah jarum jam:
Seperti penskalaan, Anda dapat menggunakan bentuk matriks ini secara langsung sebagai transformasi RELATIVE
untuk memutar elemen, tetapi hal ini menyebabkan elemen diputar di sekitar origin
halaman. Untuk memutar elemen di sekitar pusatnya atau titik lain,
beralihlah ke frame referensi elemen
tersebut.
Refleksi
Refleksi mencerminkan elemen di sepanjang garis atau sumbu tertentu. Matriks transformasi refleksi sumbu x dan y dasar memiliki bentuk berikut:
Seperti penskalaan, Anda dapat menggunakan bentuk matriks ini secara langsung sebagai transformasi RELATIVE
untuk mencerminkan elemen, tetapi hal ini juga menyebabkan elemen diterjemahkan. Untuk
mencerminkan elemen tanpa terjemahan apa pun, beralihlah ke frame
referensi elemennya.
Frame referensi elemen
Menerapkan transformasi skala, rotasi, atau refleksi dasar langsung ke elemen halaman akan menghasilkan transformasi dalam bingkai referensi halaman. Misalnya, rotasi dasar memutar elemen di sekitar origin halaman (sudut kiri atas). Namun, Anda dapat beroperasi dalam frame referensi elemen, misalnya untuk memutar elemen di sekitar titik tengahnya.
Untuk mengubah elemen dalam frame referensinya sendiri, sertakan di antara dua
terjemahan lainnya: terjemahan sebelumnya T1
yang memindahkan pusat elemen
ke asal halaman, dan terjemahan berikutnya T2
yang memindahkan elemen kembali
ke posisi aslinya. Operasi lengkap dapat dinyatakan sebagai produk
matriks:
Anda juga dapat beralih ke frame referensi lain, dengan menerjemahkan titik yang berbeda ke asal. Titik ini menjadi pusat frame referensi baru.
Anda dapat melakukan setiap transformasi ini satu per satu sebagai
permintaan transformasi RELATIVE
berurutan. Idealnya, Anda harus melakukan prakomputasi A'
di atas dengan perkalian matriks dan menerapkan hasilnya sebagai satu transformasi
ABSOLUTE
. Atau, pra-hitung produk T2 * B * T1
dan terapkan sebagai
satu transformasi RELATIVE
. Keduanya lebih efisien, dalam hal operasi
API, daripada mengirim permintaan transformasi satu per satu.
Batasan
Beberapa kolom ukuran dan pemosisian tidak kompatibel dengan beberapa jenis elemen halaman. Tabel berikut meringkas 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 geser. Semua batasan dapat berubah sewaktu-waktu. Untuk informasi terkini, lihat Google Slides API.
Nilai yang difaktorkan ulang
Saat membuat elemen halaman, Anda dapat menentukan ukuran dan transformasi yang memberikan hasil visual tertentu. Namun, Slides API mungkin 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 ditampilkan ukuran yang sama. Namun, Anda akan mendapatkan hasil yang sama jika memperhitungkan transformasi.