Operacje przekształcania

Interfejs API Prezentacji Google umożliwia zmianę lokalizacji, rozmiaru i orientacji PageElement (pola tekstowe, obrazy, tabele i podstawowe kształty) na stronie przy zachowaniu linii proste i zachowane punkty oraz linie równoległe. Są to tak zwane finanse przekształcenia. Poniższe przykłady pokazują niektóre typowe przekształcenia elementów strony za pomocą funkcji presentations.batchUpdate .

W poniższych przykładach używane są te zmienne:

  • PRESENTATION_ID – wskazuje, gdzie podajesz atrybuty prezentacja Identyfikator. Dostępne opcje wartość tego identyfikatora można znaleźć w adresie URL prezentacji.
  • PAGE_ID – wskazuje miejsce, w którym podajesz obiekt strony. Identyfikator. Możesz pobrać tę wartość z adresu URL lub za pomocą żądania odczytu interfejsu API.
  • PAGE_ELEMENT_ID – wskazuje, gdzie udostępniasz stronę identyfikator obiektu elementu. Ty może określać ten identyfikator dla elementów, które tworzysz (z niektórymi ograniczenia) lub pozwolić interfejsowi API Prezentacji na ich automatyczne utworzenie. Identyfikatory elementów można pobierać za pomocą żądania odczytu interfejsu API.

Te przykłady są prezentowane jako żądania HTTP bez względu na język. Aby się uczyć Jak wdrożyć aktualizację zbiorczą w różnych językach przy użyciu interfejsu API Google? Więcej informacji znajdziesz w sekcji Dodawanie kształtów tekst.

Przykładowy kształt strzałki

W poniższych przykładach załóżmy, że istnieje przykładowa strona kształtu strzałki o podanym rozmiarze i przekształceniu (który można znaleźć za pomocą presentations.pages.get ). Przykładowy kształt korzysta z pomiaru unit EMU (angielska jednostka metryczna) i pt (punkt).

{
  "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"
  }
}

Wyrównywanie elementu z innym

Poniżej presentations.batchUpdate przykładowy kod pokazuje, jak używać parametru CreateShapeRequest do tworzenia nowych kształtów we właściwym położeniu, które są wyrównane z przykładowy kształt strzałki na stronie. W obu przypadkach X i Y należy obliczyć współrzędne lewego górnego rogu nowego kształtu.

Pierwsze żądanie tworzy prostokąt o wymiarach 100 x 50 punktów wyrównany do lewej strony. krawędzi kształtu strzałki, ale jest ustawiona na 50 pkt (50 * 12 700 = 635 000 EMU) poniżej górnej krawędzi strzałki. Współrzędna X nowego prostokąta powinna być taki sam jak współrzędna X strzałki, by zachować wyrównanie lewego obramowania. Y jest taka sama jak współrzędna Y strzałki plus 50 pkt, ponieważ odległość jest mierzona od góry strzałki. Współrzędne prostokąta są w związku z tym:

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

Drugie żądanie tworzy okrąg o szerokości 40 punktów z takim samym poziomem linii środkowej jako przykładowej strzałki, ale ustawiony jest 100 pt (1 270 000 EMU) na prawo od prawej krawędzi strzałki. Współrzędna X okręgu to suma współrzędna X strzałki, szerokość strzałki i 100 punktów. Egzekwowanie punktu centralnego wyrównanie nowego okręgu wymaga uwzględnienia wysokości ze strzałką i kółkiem. Współrzędna Y okręgu to współrzędna Y strzałki i połowa wysokości strzałki pomniejszona o połowę wysokości okręgu. W obu przypadkach trzeba też wziąć pod uwagę współczynniki skalowania powiązane ze strzałką, bo wpływają one na renderowaną szerokość i wysokość strzałki. Nazwa kręgu współrzędne są więc następujące:

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

Protokół żądań do wyrównywania elementu do innego:

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"
          }
        }
      }
    }
  ]
}

Przenoszenie elementu

Poniżej presentations.batchUpdate przykładowy kod pokazuje, jak używać parametru UpdatePageElementTransformRequest do przetłumaczenia elementu strony przykładowego kształtu strzałki na dwa różne sposoby.

Pierwsze żądanie w grupie przesuwa strzałkę w pozycję (X,Y) = (2000000, 150 000) Współrzędna EMU (używając tłumaczenia bezwzględnego applyMode). Druga prośba w grupie przenosi strzałkę stamtąd, tym razem o 40 tys. EMU. w prawo i o 35 000 EMU w górę (korzystając z tłumaczenia względnego applyMode). Użyte macierze przekształcenia1 są tworzone w taki sposób, aby uniknąć zmiany rozmiaru i orientacji elementu.

Po wykonaniu obu żądań lewy górny róg strzałki będzie w miejscach (X,Y) = (2040000, 115 000) Współrzędna EMU.

Protokół żądania przenoszenia elementu wygląda tak:

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"
        }
      }
    }
  ]
}

Odbicie elementu

Poniżej presentations.batchUpdate przykładowy kod pokazuje, jak używać parametru UpdatePageElementTransformRequest aby odzwierciedlić przykładowy kształt strzałki na stronie. poziomo wzdłuż jego środka, nie zmieniając jego pozycji na stronie ani

Jest to możliwe dzięki podstawowemu odczuciu „transform” w odwołaniu elementu . W celu uniknięcia wątpliwości: przesunięcie ramki i odbicie referencyjne są wyświetlane z trzema osobnymi wywołaniami funkcji UpdatePageElementTransformRequest, ale skuteczniejsze jest wstępne obliczenie iloczynu przekształcenia a następnie zastosować ten iloczyn jako jedno żądanie.

W przypadku przekształceń tłumaczenia parametr środek kształtu strzałki zostanie przeniesiony do punktu początkowego i z niego. Wartości parametrów są wyrażone jako obliczenia w celu uniknięcia wątpliwości.

Poniżej znajduje się protokół żądania odzwierciedlający element:

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"
        }
      }
    }
  ]
}

Zmienianie rozmiaru elementu

Poniżej presentations.batchUpdate przykładowy kod pokazuje, jak używać parametru UpdatePageElementTransformRequest metoda skalowania przykładowego kształtu strzałki do 50% jest szerszy i ma tylko 80% bieżącej wysokości, przy zachowaniu środka strzałki w tym samym położeniu i przy zachowaniu orientacji.

Jest to możliwe dzięki podstawowemu skalowaniu. „transform” w odwołaniu elementu . W celu uniknięcia wątpliwości: przesunięcie ramki referencyjnej i skalowanie są wyświetlane z 3 osobnymi wywołaniami funkcji UpdatePageElementTransformRequest, ale skuteczniejsze jest wstępne obliczenie iloczynu przekształcenia a następnie zastosować ten iloczyn jako jedno żądanie.

W przypadku przekształceń tłumaczenia parametr środek kształtu strzałki zostanie przeniesiony do punktu początkowego i z niego. Wartości parametrów są wyrażone jako obliczenia w celu uniknięcia wątpliwości.

Protokół żądania zmiany rozmiaru elementu wygląda tak:

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"
        }
      }
    }
  ]
}

Obracanie elementu wokół jego środka

Poniżej presentations.batchUpdate przykładowy kod pokazuje, jak używać parametru UpdatePageElementTransformRequest metoda obracania przykładowego kształtu strzałki elementu strony 35 w lewo, utrzymując środek strzałki w tym samym położeniu i utrzymanie jej rozmiaru.

Jest to możliwe dzięki rotacji podstawowej „transform” w odwołaniu elementu . W celu uniknięcia wątpliwości: przesunięcie ramki i obrót są wyświetlane z 3 osobnymi wywołaniami funkcji UpdatePageElementTransformRequest, ale skuteczniejsze jest wstępne obliczenie iloczynu przekształcenia a następnie zastosować ten iloczyn jako jedno żądanie

W przypadku przekształceń tłumaczenia parametr środek kształtu strzałki zostanie przeniesiony do punktu początkowego i z niego. Wartości parametrów są wyrażone jako obliczenia w celu uniknięcia wątpliwości.

Protokół żądania obracania elementu wokół jego środka:

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"
        }
      }
    }
  ]
}