Google Slaytlar API'si, bir sayfadaki PageElement
(metin kutuları, resimler, tablolar ve temel şekiller) konumunu, boyutunu ve yönünü değiştirmenize olanak tanır. Bu sırada çizgiler düz kalır, noktalar ve paralel çizgiler korunur. Bunlar afin dönüşümleri olarak bilinir. Buradaki örneklerde, presentations.batchUpdate
yöntemi kullanılarak yapılan bazı yaygın sayfa öğesi dönüştürme işlemleri gösterilmektedir.
Bu örneklerde aşağıdaki değişkenler kullanılmaktadır:
- PRESENTATION_ID—Sunu kimliğini nerede sağladığınızı gösterir. Bu kimliğin değerini sunum URL'sinden öğrenebilirsiniz.
- PAGE_ID—Sayfa nesnesi kimliğini nerede sağladığınızı gösterir. Bu değerin URL'sini alabilir veya API okuma isteği kullanarak değeri edinebilirsiniz.
- PAGE_ELEMENT_ID: page element nesne kimliğini nerede sağladığınızı gösterir. Oluşturduğunuz öğeler için bu kimliği belirtebilirsiniz (bazı kısıtlamalarla) veya Slides API'nin otomatik olarak bir kimlik oluşturmasına izin verebilirsiniz. Öğe kimlikleri, API okuma isteğiyle alınabilir.
Bu örnekler, dilden bağımsız olması için HTTP istekleri olarak sunulur. Google API istemci kitaplıklarını kullanarak farklı dillerde toplu güncelleme işlemini nasıl uygulayacağınızı öğrenmek için Şekil ve metin ekleme başlıklı makaleyi inceleyin.
Örnek ok şekli
Aşağıdaki örnekler için, aşağıdaki boyut ve dönüştürme verilerine sahip bir örnek ok şekli sayfa öğesinin (presentations.pages.get
yöntem isteğiyle bulunabilir) olduğunu varsayın. Örnek şekil, unit
EMU (English Metric Unit) ve pt (nokta) ölçü birimlerini kullanır.
{ "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" } }
Bir öğeyi başka bir öğeyle hizalama
Aşağıdaki
presentations.batchUpdate
kod örneğinde, sayfadaki
örnek ok şekliyle hizalanmış doğru konumlarda yeni şekiller oluşturmak için
CreateShapeRequest
yönteminin nasıl kullanılacağı gösterilmektedir. Her iki durumda da yeni şeklin sol üst köşesinin X ve Y koordinatları hesaplanmalıdır.
İlk istek, ok şeklinin sol kenarlığına hizalanmış ancak okun üst kenarının 50 pt (50 * 12.700 = 635.000 EMU) altında konumlandırılmış 100 x 50 pt boyutlarında bir dikdörtgen oluşturur. Sol kenarının hizalı kalması için yeni dikdörtgenin X koordinatı okun X koordinatıyla aynı olmalıdır. Mesafe okun üst kısmından ölçüldüğünden Y koordinatı, okun Y koordinatına 50 pt eklenerek hesaplanır. Bu nedenle dikdörtgenin koordinatları şunlardır:
x" = 2000000 EMU y" = 550000 + (50 * 12700) = 1185000 EMU
İkinci istek, örnek okla aynı yatay merkez çizgisine sahip ancak okun sağ kenarının 100 pt (1.270.000 EMU) sağında konumlandırılmış 40 pt genişliğinde bir daire oluşturur. Dairenin X koordinatı, okun X koordinatı, ok genişliği ve 100 pt'nin toplamıdır. Yeni daire için merkez çizgisi hizalaması zorunlu kılınırken hem okun hem de dairenin yüksekliği dikkate alınmalıdır. Dairenin Y koordinatı, okun Y koordinatı artı okun yüksekliğinin yarısı eksi dairenin yüksekliğinin yarısıdır. Her iki durumda da okun ölçeklendirme faktörleri, okun oluşturulan genişliğini ve yüksekliğini etkilediği için dikkate alınmalıdır. Bu nedenle, dairenin koordinatları şunlardır:
x = 2000000 + (0.3 * 3000000) + (100 * 12700) = 4170000 EMU y = 550000 + (0.5 * 0.12 * 3000000) - (0.5 * 40 * 12700) = 476000 EMU
Bir öğeyi başka bir öğeyle hizalamak için kullanılan istek protokolü aşağıda verilmiştir:
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" } } } } ] }
Öğe taşıma
Aşağıdaki
presentations.batchUpdate
kod örneğinde, örnek ok şekli sayfa öğesini iki farklı şekilde çevirmek için
UpdatePageElementTransformRequest
yönteminin nasıl kullanılacağı gösterilmektedir.
Toplu işteki ilk istek,oku (X, Y) = (2000000, 150000)
EMU koordinatına taşır (mutlak çeviri kullanılarak applyMode
). Toplu işteki ikinci istek,oku oradan taşır. Bu kez 40.000 EMU sağa ve 35.000 EMU yukarı (göreli çeviri kullanılarak applyMode
). Kullanılan transformation1 matrisleri,öğenin boyutunu ve yönünü değiştirmemek için oluşturulur.
Her iki istek de yürütüldükten sonra okun sol üst köşesi (X,Y) = (2040000, 115000) EMU koordinatında yer alır.
Bir öğeyi taşımak için kullanılan istek protokolü aşağıda verilmiştir:
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" } } } ] }
Öğeyi yansıtma
Aşağıdaki
presentations.batchUpdate
kod örneğinde, örnek ok şeklindeki sayfa öğesini, sayfadaki konumunu değiştirmeden veya ölçeklendirmeden, merkezine göre yatay olarak yansıtmak için UpdatePageElementTransformRequest
yönteminin nasıl kullanılacağı gösterilmektedir.
Bu işlem, öğenin referans çerçevesinde temel yansıtma dönüştürmesi kullanılarak yapılır. Daha net bir ifadeyle, referans çerçevesi kayması ve yansıtma, UpdatePageElementTransformRequest
yöntemine yapılan üç ayrı çağrıyla gösterilir. Ancak bu dönüşüm matrislerinin çarpımını önceden hesaplayıp bu çarpımı tek bir istek olarak uygulamak daha verimlidir.
Çeviri dönüşümlerinde, ok şeklinin merkezi başlangıç noktasına ve başlangıç noktasından taşınır. Parametre değerleri, anlaşılır olması için hesaplama olarak ifade edilir.
Bir öğeyi yansıtmak için kullanılan istek protokolü aşağıda verilmiştir:
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" } } } ] }
Öğeleri yeniden boyutlandırma
Aşağıdaki
presentations.batchUpdate
kod örneğinde, örnek ok şekli sayfa öğesini %50 daha geniş ve mevcut yüksekliğinin yalnızca% 80'i olacak şekilde ölçeklemek için UpdatePageElementTransformRequest
yönteminin nasıl kullanılacağı gösterilmektedir. Bu işlem sırasında okun merkezi aynı konumda kalır ve yönü korunur.
Bu işlem, öğenin referans çerçevesinde temel ölçeklendirme
dönüşümü kullanılarak yapılır. Netlik açısından, referans çerçevesi kaydırma ve ölçeklendirme, UpdatePageElementTransformRequest
yöntemine yapılan üç ayrı çağrıyla gösterilir. Ancak bu dönüşüm matrislerinin çarpımını önceden hesaplayıp bu çarpımı tek bir istek olarak uygulamak daha verimlidir.
Çeviri dönüşümlerinde, ok şeklinin merkezi başlangıç noktasına ve başlangıç noktasından taşınır. Parametre değerleri, anlaşılır olması için hesaplama olarak ifade edilir.
Bir öğeyi yeniden boyutlandırmak için kullanılan istek protokolü aşağıda verilmiştir:
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" } } } ] }
Bir öğeyi merkezi etrafında döndürme
Aşağıdaki presentations.batchUpdate
kod örneğinde, örnek ok şekli sayfa öğesini 35 derece saat yönünün tersine döndürmek için UpdatePageElementTransformRequest
yönteminin nasıl kullanılacağı gösterilmektedir. Bu işlem sırasında okun merkezi aynı konumda kalır ve boyutu korunur.
Bu işlem, öğenin referans çerçevesinde temel bir döndürme
dönüşümü kullanılarak yapılır. Daha net olması için referans çerçevesi kayması ve dönüşü, UpdatePageElementTransformRequest
yöntemine yapılan üç ayrı çağrıyla gösterilir. Ancak bu dönüşüm matrislerinin çarpımını önceden hesaplayıp bu çarpımı tek bir istek olarak uygulamak daha verimlidir.
Çeviri dönüşümlerinde, ok şeklinin merkezi başlangıç noktasına ve başlangıç noktasından taşınır. Parametre değerleri, anlaşılır olması için hesaplama olarak ifade edilir.
Bir öğeyi merkezi etrafında döndürmek için kullanılan istek protokolü aşağıda verilmiştir:
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" } } } ] }