FS_MATRIX z PDFium do składania przekształceń przestrzeni użytkownika PDFtype TPdfMatrix = class ... end;
| Type | Description |
|---|---|
TPdfPointArray | Tablica dynamiczna wartości FS_POINTF używana przez zbiorcze operacje na punktach |
TPdfRectArray | Tablica dynamiczna wartości FS_RECTF używana przez zbiorcze operacje na prostokątach |
TPdfMatrixFitMode | Polityka dopasowania pmfStretch, pmfContain lub pmfCover dla mapowania prostokątów |
TPdfMatrixDecomposition | Diagnostyka przesunięcia, skali ze znakiem, obrotu zgodnego z ruchem wskazówek zegara, ścinania, wyznacznika i odbicia zwracana przez TryDecompose w polach TranslationX, TranslationY, ScaleX, ScaleY, RotationDegrees, ShearDegrees, Determinant i IsReflected |
| Member | Description |
|---|---|
Create | Tworzy macierz jednostkową, macierz z sześciu wartości lub ochronną kopię z FS_MATRIX |
NewTranslation | Tworzy nową macierz przesunięcia |
NewScale | Tworzy nową macierz przeskalowania niejednorodnego |
NewRotation | Tworzy nową macierz obrotu zgodnie lub przeciwnie do ruchu wskazówek zegara, w stopniach lub radianach |
NewSkew | Tworzy macierz z osobnymi kątami ścinania X i Y |
NewRectMapping | Tworzy macierz, która rozciąga, mieści lub przykrywa prostokąt źródłowy w prostokącie docelowym |
TryCreateRectMapping | Zwraca mapowanie FS_MATRIX i odrzuca dane wejściowe o zerowym rozmiarze, nieskończone lub przepełnione, bez alokacji obiektu |
Reset | Przywraca macierz do postaci jednostkowej |
SetElements | Zastępuje wszystkie sześć elementów macierzy jednym wywołaniem |
Assign | Kopiuje inną macierz TPdfMatrix lub surową FS_MATRIX do tej instancji |
Clone | Tworzy niezależną kopię obiektu |
Determinant | Zwraca wyznacznik liniowej części 2 na 2 |
IsFinite | Raportuje, czy każdy element jest skończoną wartością Single |
IsIdentity | Sprawdza jednostkowość z tolerancją wybieraną przez wywołującego |
IsInvertible | Sprawdza odwracalność (skończoną i z uwzględnieniem skali) bez wyliczania macierzy odwrotnej |
IsTranslationOnly | Sprawdza, czy część liniowa jest jednostkowa |
IsAxisAligned | Sprawdza, czy prostokąty pozostają wyrównane do osi, łącznie z układami po ćwierćobrocie w granicach tolerancji |
NearlyEquals | Porównuje z TPdfMatrix lub FS_MATRIX z użyciem tolerancji |
GetTranslation | Odczytuje łącznie elementy przesunięcia X i Y |
SetTranslation | Zastępuje przesunięcie X i Y, zachowując część liniową |
ClearTranslation | Ustawia oba elementy przesunięcia na zero |
TryDecompose | Wyodrębnia przesunięcie, skalę ze znakiem, obrót zgodny z ruchem wskazówek zegara, ścinanie, wyznacznik i stan odbicia, gdy macierz jest nieosobliwa |
Multiply | Mnoży prawostronnie przez inną macierz TPdfMatrix lub jawne wartości od a do f |
PreMultiply | Mnoży lewostronnie przez inną macierz TPdfMatrix lub jawną macierz o sześciu wartościach |
PreTranslate | Wstawia na początku przesunięcie w lokalnej przestrzeni wejściowej macierzy |
PreScale | Wstawia na początku osobne współczynniki skali X i Y |
PreRotate | Wstawia na początku obrót zgodnie lub przeciwnie do ruchu wskazówek zegara |
PreSkew | Wstawia na początku osobne kąty ścinania X i Y |
Translate | Dokłada przesunięcie o deltaX i deltaY |
Scale | Dokłada osobne współczynniki skali X i Y |
Rotate | Dokłada obrót zgodnie lub przeciwnie do ruchu wskazówek zegara, w stopniach lub radianach |
HorizontalFlip | Dokłada odbicie względem osi X |
VerticalFlip | Dokłada odbicie względem osi Y |
CentralFlip | Dokłada odbicia względem obu osi, równoważne obrotowi o 180 stopni bez trygonometrii |
Skew | Dokłada osobne kąty ścinania X i Y |
RotateAt | Dokłada obrót wokół punktu obrotu, który pozostaje nieruchomy |
ScaleAt | Dokłada skalę wokół punktu obrotu, który pozostaje nieruchomy |
SkewAt | Dokłada ścinanie wokół punktu obrotu, który pozostaje nieruchomy |
HorizontalFlipAt | Dokłada odbicie poziome wokół współrzędnej X wybranej przez wywołującego |
VerticalFlipAt | Dokłada odbicie pionowe wokół współrzędnej Y wybranej przez wywołującego |
CentralFlipAt | Dokłada oba odbicia wokół punktu obrotu wybranego przez wywołującego |
MapRectToRect | Dokłada mapowanie stretch, contain lub cover między znormalizowanymi prostokątami |
Invert | Zastępuje macierz jej odwrotnością lub zgłasza EPdfMatrixError, gdy jest osobliwa |
TryInvert | Zastępuje macierz jej odwrotnością i zwraca False bez modyfikacji, gdy jest osobliwa lub niemal osobliwa |
TryGetInverse | Wylicza odwrotną macierz FS_MATRIX bez modyfikacji tej instancji |
InverseCopy | Tworzy niezależną macierz odwrotną lub zgłasza EPdfMatrixError, gdy macierz jest osobliwa |
TransformPoint | Mapuje współrzędną przez przekształcenie afiniczne według konwencji wierszowego wektora PDF |
TransformVector | Mapuje kierunek wyłącznie przez część liniową, więc przesunięcie jest pomijane |
TryInverseTransformPoint | Mapuje punkt przez odwrotność bez alokowania macierzy i raportuje przekształcenie osobliwe jako False |
InverseTransformPoint | Mapuje punkt przez odwrotność lub zgłasza EPdfMatrixError, gdy przekształcenie jest osobliwe |
TransformQuad | Mapuje wszystkie cztery punkty wartości FS_QUADPOINTSF |
TransformPoints | Mapuje tablicę punktów z jedną alokacją wyniku |
TransformPointsInPlace | Mapuje tablicę punktów w pamięci należącej do wywołującego, bez alokowania kolejnej tablicy |
TryTransformBounds | Agreguje granice przetransformowanych punktów w jednym przebiegu i zwraca False dla pustego wejścia |
TransformBounds | Agreguje granice przetransformowanych punktów w jednym przebiegu lub zgłasza EPdfMatrixError dla pustego wejścia |
TransformRect | Normalizuje i mapuje prostokąt przez dokładną szybką ścieżkę wyrównaną do osi albo ciasne granice czterech narożników |
TransformRects | Mapuje tablicę prostokątów z jedną alokacją wyniku |
TransformRectsInPlace | Mapuje tablicę prostokątów w pamięci należącej do wywołującego, bez alokowania kolejnej tablicy |
| Property | Type | Description |
|---|---|---|
a | Single | Pierwszy element macierzy tylko do odczytu |
b | Single | Drugi element macierzy tylko do odczytu |
c | Single | Trzeci element macierzy tylko do odczytu |
d | Single | Czwarty element macierzy tylko do odczytu |
e | Single | Element przesunięcia X tylko do odczytu |
f | Single | Element przesunięcia Y tylko do odczytu |
Handle | FS_MATRIX | Surowa wartość macierzy dla API PDFium przyjmujących FS_MATRIX lub PFS_MATRIX |
TPdfMatrix używa afinicznego układu PDF a b c d e f i mnoży każdą operację prawostronnie, więc wywołania czytają się w tej samej kolejności, w jakiej przekształcenia działają na punkty
PreMultiply i pomocnicze metody Pre* dodają operacje przed bieżącym przekształceniem, a metody z punktem obrotu dokładają sekwencje przesunięcie-operacja-przesunięcie, dzięki którym wybrany punkt pozostaje nieruchomy
pmfContain zachowuje kompletny prostokąt źródłowy z wyśrodkowanym pustym miejscem, pmfCover wypełnia obszar docelowy wyśrodkowanym nadmiarem, a pmfStretch pozwala na niezależne skalowanie w X i Y
Zbiorcze metody dla punktów i prostokątów alokują jedną tablicę wyjściową, ich warianty in-place nie alokują niczego, a TryTransformBounds przegląda przetransformowane punkty bez budowania tablicy pośredniej
Używaj Handle z API takimi jak FPDFPageObj_SetMatrix, FPDFPageObj_Transform i FPDFText_SetMatrix
var
Matrix: TPdfMatrix;
begin
Matrix := TPdfMatrix.Create;
Matrix.ScaleAt(0.5, 0.5, 144, 144);
Matrix.RotateAt(15, 144, 144);
Matrix.Translate(72, 72);
FPDFPageObj_SetMatrix(ObjectHandle, @Matrix.Handle);
end;