PDFium Component Docs

TPdfMatrix klasa

Unit: FPdfMatrix
Mutowalna otoczka obiektowa wokół FS_MATRIX z PDFium do składania przekształceń przestrzeni użytkownika PDF

Syntax

type TPdfMatrix = class ... end;

Related types

TypeDescription
TPdfPointArrayTablica dynamiczna wartości FS_POINTF używana przez zbiorcze operacje na punktach
TPdfRectArrayTablica dynamiczna wartości FS_RECTF używana przez zbiorcze operacje na prostokątach
TPdfMatrixFitModePolityka dopasowania pmfStretch, pmfContain lub pmfCover dla mapowania prostokątów
TPdfMatrixDecompositionDiagnostyka 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

Methods

MemberDescription
CreateTworzy macierz jednostkową, macierz z sześciu wartości lub ochronną kopię z FS_MATRIX
NewTranslationTworzy nową macierz przesunięcia
NewScaleTworzy nową macierz przeskalowania niejednorodnego
NewRotationTworzy nową macierz obrotu zgodnie lub przeciwnie do ruchu wskazówek zegara, w stopniach lub radianach
NewSkewTworzy macierz z osobnymi kątami ścinania X i Y
NewRectMappingTworzy macierz, która rozciąga, mieści lub przykrywa prostokąt źródłowy w prostokącie docelowym
TryCreateRectMappingZwraca mapowanie FS_MATRIX i odrzuca dane wejściowe o zerowym rozmiarze, nieskończone lub przepełnione, bez alokacji obiektu
ResetPrzywraca macierz do postaci jednostkowej
SetElementsZastępuje wszystkie sześć elementów macierzy jednym wywołaniem
AssignKopiuje inną macierz TPdfMatrix lub surową FS_MATRIX do tej instancji
CloneTworzy niezależną kopię obiektu
DeterminantZwraca wyznacznik liniowej części 2 na 2
IsFiniteRaportuje, czy każdy element jest skończoną wartością Single
IsIdentitySprawdza jednostkowość z tolerancją wybieraną przez wywołującego
IsInvertibleSprawdza odwracalność (skończoną i z uwzględnieniem skali) bez wyliczania macierzy odwrotnej
IsTranslationOnlySprawdza, czy część liniowa jest jednostkowa
IsAxisAlignedSprawdza, czy prostokąty pozostają wyrównane do osi, łącznie z układami po ćwierćobrocie w granicach tolerancji
NearlyEqualsPorównuje z TPdfMatrix lub FS_MATRIX z użyciem tolerancji
GetTranslationOdczytuje łącznie elementy przesunięcia X i Y
SetTranslationZastępuje przesunięcie X i Y, zachowując część liniową
ClearTranslationUstawia oba elementy przesunięcia na zero
TryDecomposeWyodrębnia przesunięcie, skalę ze znakiem, obrót zgodny z ruchem wskazówek zegara, ścinanie, wyznacznik i stan odbicia, gdy macierz jest nieosobliwa
MultiplyMnoży prawostronnie przez inną macierz TPdfMatrix lub jawne wartości od a do f
PreMultiplyMnoży lewostronnie przez inną macierz TPdfMatrix lub jawną macierz o sześciu wartościach
PreTranslateWstawia na początku przesunięcie w lokalnej przestrzeni wejściowej macierzy
PreScaleWstawia na początku osobne współczynniki skali X i Y
PreRotateWstawia na początku obrót zgodnie lub przeciwnie do ruchu wskazówek zegara
PreSkewWstawia na początku osobne kąty ścinania X i Y
TranslateDokłada przesunięcie o deltaX i deltaY
ScaleDokłada osobne współczynniki skali X i Y
RotateDokłada obrót zgodnie lub przeciwnie do ruchu wskazówek zegara, w stopniach lub radianach
HorizontalFlipDokłada odbicie względem osi X
VerticalFlipDokłada odbicie względem osi Y
CentralFlipDokłada odbicia względem obu osi, równoważne obrotowi o 180 stopni bez trygonometrii
SkewDokłada osobne kąty ścinania X i Y
RotateAtDokłada obrót wokół punktu obrotu, który pozostaje nieruchomy
ScaleAtDokłada skalę wokół punktu obrotu, który pozostaje nieruchomy
SkewAtDokłada ścinanie wokół punktu obrotu, który pozostaje nieruchomy
HorizontalFlipAtDokłada odbicie poziome wokół współrzędnej X wybranej przez wywołującego
VerticalFlipAtDokłada odbicie pionowe wokół współrzędnej Y wybranej przez wywołującego
CentralFlipAtDokłada oba odbicia wokół punktu obrotu wybranego przez wywołującego
MapRectToRectDokłada mapowanie stretch, contain lub cover między znormalizowanymi prostokątami
InvertZastępuje macierz jej odwrotnością lub zgłasza EPdfMatrixError, gdy jest osobliwa
TryInvertZastępuje macierz jej odwrotnością i zwraca False bez modyfikacji, gdy jest osobliwa lub niemal osobliwa
TryGetInverseWylicza odwrotną macierz FS_MATRIX bez modyfikacji tej instancji
InverseCopyTworzy niezależną macierz odwrotną lub zgłasza EPdfMatrixError, gdy macierz jest osobliwa
TransformPointMapuje współrzędną przez przekształcenie afiniczne według konwencji wierszowego wektora PDF
TransformVectorMapuje kierunek wyłącznie przez część liniową, więc przesunięcie jest pomijane
TryInverseTransformPointMapuje punkt przez odwrotność bez alokowania macierzy i raportuje przekształcenie osobliwe jako False
InverseTransformPointMapuje punkt przez odwrotność lub zgłasza EPdfMatrixError, gdy przekształcenie jest osobliwe
TransformQuadMapuje wszystkie cztery punkty wartości FS_QUADPOINTSF
TransformPointsMapuje tablicę punktów z jedną alokacją wyniku
TransformPointsInPlaceMapuje tablicę punktów w pamięci należącej do wywołującego, bez alokowania kolejnej tablicy
TryTransformBoundsAgreguje granice przetransformowanych punktów w jednym przebiegu i zwraca False dla pustego wejścia
TransformBoundsAgreguje granice przetransformowanych punktów w jednym przebiegu lub zgłasza EPdfMatrixError dla pustego wejścia
TransformRectNormalizuje i mapuje prostokąt przez dokładną szybką ścieżkę wyrównaną do osi albo ciasne granice czterech narożników
TransformRectsMapuje tablicę prostokątów z jedną alokacją wyniku
TransformRectsInPlaceMapuje tablicę prostokątów w pamięci należącej do wywołującego, bez alokowania kolejnej tablicy

Properties

PropertyTypeDescription
aSinglePierwszy element macierzy tylko do odczytu
bSingleDrugi element macierzy tylko do odczytu
cSingleTrzeci element macierzy tylko do odczytu
dSingleCzwarty element macierzy tylko do odczytu
eSingleElement przesunięcia X tylko do odczytu
fSingleElement przesunięcia Y tylko do odczytu
HandleFS_MATRIXSurowa wartość macierzy dla API PDFium przyjmujących FS_MATRIX lub PFS_MATRIX

Description

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

Example

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;

See Also

TPdf.CreateXObjectFromPage, TPdf.InsertFormObjectFromXObject