Dönüşüm işlemleri

Google Slaytlar API'si, satırları düz tutarken noktaları ve paralel çizgileri korurken bir sayfadaki PageElement öğesinin (metin kutuları, resimler, tablolar ve temel şekiller) konumunu, boyutunu ve yönünü değiştirmenize olanak tanır. Bunlara afin dönüşümler denir. 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 sağladığınız yeri belirtir. Bu kimliğin değerini sunu URL'sinden bulabilirsiniz.
  • PAGE_ID: Sayfa nesnesi kimliğini sağladığınız yeri gösterir. Bunun değerini URL'den veya API okuma isteği kullanarak alabilirsiniz.
  • PAGE_ELEMENT_ID: Sayfa öğesi nesne kimliğini sağladığınız yeri belirtir. Oluşturduğunuz öğeler için bu kimliği belirtebilir (bazı kısıtlamalarla birlikte) veya Slides API'nin otomatik olarak kimlik oluşturmasına izin verebilirsiniz. Öğe kimlikleri, API okuma isteği aracılığıyla alınabilir.

Bu örnekler, dilden bağımsız olarak HTTP istekleri olarak sunulur. Google API istemci kitaplıklarını kullanarak farklı dillerde toplu güncelleme yapmayı öğrenmek için Şekil ve metin ekleme bölümüne bakın.

Ok şekli örneği

Aşağıdaki örnekler için aşağıdaki boyut ve dönüşüm verilerine sahip örnek bir ok şekli sayfa öğesi bulunduğunu (presentations.pages.get yöntem isteğiyle bulunabilir) varsayalım. Örnek şekilde, unit EMU (İngilizce Metrik Birimi) ve pt (nokta) ölçümü kullanılmaktadı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 şekli ile uyumlu olan 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öşesindeki X ve Y koordinatları hesaplanmalıdır.

İlk istek, ok şeklinin sol kenarlığıyla hizalanan 100x50 pt bir dikdörtgen oluşturur. Ancak bu dikdörtgen, okun üst kenarının altında 50 pt (50 * 12.700 = 635.000 EMU) olarak konumlandırılır. Yeni dikdörtgenin X koordinatı, sol kenarlığının hizalı kalması için okun X koordinatı ile aynı olmalıdır. Uzaklık okun üzerinden ölçüldüğünden Y koordinatı okun Y koordinatı artı 50 pt ile aynıdır. Dikdörtgenin koordinatları burada şöyle olur:

x" = 2000000 EMU
y" = 550000 + (50 * 12700) = 1185000 EMU

İkinci istek, örnek okla aynı yatay merkez çizgisine sahip ancak okun sağ kenarının sağında 100 pt (1.270.000 EMU) konumlandırılmış 40 pt geniş bir daire oluşturur. Çemberin X koordinatı, okun X koordinatı ile ok genişliği ve 100 pt. Yeni daire için merkez çizgisini hizalamak için hem okun hem de dairenin yüksekliğini dikkate almanız gerekir. Çemberin Y koordinatı, okun Y koordinatı artı ok yüksekliğinin yarısı ve daire yüksekliğinin yarısı çıkarılarak hesaplanır. Her iki durumda da, okun oluşturulan genişliğini ve yüksekliğini etkilediği için okla ilişkili ölçeklendirme faktörlerinin de dikkate alınması gerekir. Dolayısıyla, çemberin koordinatları şu şekildedir:

x = 2000000 + (0.3 * 3000000) + (100 * 12700) = 4170000 EMU
y = 550000 + (0.5 * 0.12 * 3000000) - (0.5 * 40 * 12700) = 476000 EMU

Aşağıda, bir öğeyi diğeriyle hizalamak için kullanılan istek protokolü 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"
          }
        }
      }
    }
  ]
}

Öğeleri 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.

Gruptaki ilk istek, oku (X,Y) = (2000000, 150000) EMU koordinatına taşır (mutlak çeviri applyMode kullanılarak). Gruptaki ikinci istek, oku oradan sağa doğru 40.000 EMU ve 35.000 öğe yönündeapplyMode

Her iki istek de yürütüldükten sonra okun sol üst köşesi (X,Y) = (2040000, 115000) EMU koordinatında kalır.

Aşağıda, bir öğeyi taşımak için kullanılacak istek protokolü 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"
        }
      }
    }
  ]
}

Bir elementi yansıtın

Aşağıdaki presentations.batchUpdate kod örneğinde, örnek ok şekli sayfa öğesini sayfadaki konumunu değiştirmeden veya ölçeklendirmeden ortası boyunca yatay olarak yansıtmak için UpdatePageElementTransformRequest yönteminin nasıl kullanılacağı gösterilmektedir.

Bu, öğenin referans çerçevesinde bir temel yansıma dönüşümü kullanılarak yapılır. Daha net bir ifadeyle, referans kare kayması ve yansıması UpdatePageElementTransformRequest yöntemine yapılan üç ayrı çağrıyla gösterilir, ancak bu dönüşüm matrislerinin çarpımını önceden hesaplamak ve ardından bu ürünü tek bir istek olarak uygulamak daha verimlidir.

Çeviri dönüşümleri için ok şeklinin merkezi kaynağa ve oraya taşınır. Parametre değerleri, daha anlaşılır olması için hesaplamalar olarak ifade edilir.

Aşağıda, bir öğeyi yansıtan istek protokolü 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'ine sahip olacak şekilde ölçeklendirmek için UpdatePageElementTransformRequest yönteminin nasıl kullanılacağı gösterilmektedir. Bu sırada ok merkezini aynı konumda tutmalı ve yönünü korumalıdır.

Bu, öğenin referans çerçevesinde bir temel ölçeklendirme dönüşümü kullanılarak yapılır. Daha net bir ifadeyle, referans kare kaydırma ve ölçeklendirmesi, UpdatePageElementTransformRequest yöntemine yapılan üç ayrı çağrıyla gösterilir. Ancak bu dönüştürme matrislerinin çarpımını önceden hesaplamak ve ardından bu ürünü tek bir istek olarak uygulamak daha verimlidir.

Çeviri dönüşümleri için ok şeklinin merkezi kaynağa ve oraya taşınır. Parametre değerleri, daha anlaşılır olması için hesaplamalar olarak ifade edilir.

Aşağıda, bir öğeyi yeniden boyutlandırmak için kullanılan istek protokolü 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 saat yönünün tersine 35 derece döndürmek için UpdatePageElementTransformRequest yönteminin nasıl kullanılacağı gösterilmektedir. Bu sırada okun merkezini aynı konumda tutmalı ve boyutunu korumalıdır.

Bu, öğenin referans çerçevesinde bir temel rotasyon dönüşümü kullanılarak yapılır. Daha net bir ifadeyle, referans kare kayması ve döndürmesi, UpdatePageElementTransformRequest yöntemine yapılan üç ayrı çağrıyla gösterilir ancak bu dönüştürme matrislerinin çarpımının önceden hesaplanması ve ardından bu ürünü tek bir istek olarak uygulamak daha verimlidir.

Çeviri dönüşümleri için ok şeklinin merkezi kaynağa ve oraya taşınır. Parametre değerleri, daha anlaşılır olması için hesaplamalar olarak ifade edilir.

Aşağıda, bir öğeyi merkezi etrafında döndürmek için kullanılan istek protokolü 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"
        }
      }
    }
  ]
}