PDFium Delphi Component Docs

TPdfMatrix klass

Unit: FPdfMatrix
Föränderligt OO-omslag runt PDFiums FS_MATRIX för att bygga samman transformationer i PDF:s user space

Syntax

type TPdfMatrix = class ... end;

Related types

TypeDescription
TPdfPointArrayDynamisk array av FS_POINTF-värden som används av massoperationer på punkter
TPdfRectArrayDynamisk array av FS_RECTF-värden som används av massoperationer på rektanglar
TPdfMatrixFitModeAnpassningspolicy pmfStretch, pmfContain eller pmfCover för rektangelmappning
TPdfMatrixDecompositionTranslation, teckensatt skala, medurs rotation, shear, determinant och speglingsdiagnostik som TryDecompose returnerar i fälten TranslationX, TranslationY, ScaleX, ScaleY, RotationDegrees, ShearDegrees, Determinant och IsReflected

Methods

MemberDescription
CreateSkapar en identitetsmatris, en sexvärdesmatris eller en defensiv kopia från FS_MATRIX
NewTranslationSkapar en ny translationsmatris
NewScaleSkapar en ny icke-uniform skalningsmatris
NewRotationSkapar en medurs eller moturs rotationsmatris i grader eller radianer
NewSkewSkapar en matris med separata skew-vinklar för X och Y
NewRectMappingSkapar en matris som stretchar, innehåller eller täcker en källrektangel inom en målrektangel
TryCreateRectMappingReturnerar en FS_MATRIX-mappning och avvisar nollstora, icke-ändliga eller överflödande indata utan att allokera ett objekt
ResetÅterställer matrisen till identiteten
SetElementsErsätter alla sex matriselement i ett anrop
AssignKopierar en annan TPdfMatrix eller rå FS_MATRIX in i instansen
CloneSkapar en oberoende objektkopia
DeterminantReturnerar determinanten för den linjära 2 gånger 2-komponenten
IsFiniteRapporterar huruvida varje element är ett ändligt Single-värde
IsIdentityTestar identitet med en anroparvald tolerans
IsInvertibleTestar ändlig och skalmedveten inverterbarhet utan att beräkna en invers
IsTranslationOnlyTestar huruvida den linjära komponenten är identiteten
IsAxisAlignedTestar huruvida rektanglar förblir axelparallella, inklusive kvartsvarvsorienteringar inom toleransen
NearlyEqualsJämför mot TPdfMatrix eller FS_MATRIX med en tolerans
GetTranslationLäser X- och Y-translationselementen tillsammans
SetTranslationErsätter X- och Y-translationen med bibehållen linjär komponent
ClearTranslationSätter båda translationselementen till noll
TryDecomposeExtraherar translation, teckensatt skala, medurs rotation, shear, determinant och speglingstillstånd när matrisen inte är singulär
MultiplyPostmultipliserar med en annan TPdfMatrix eller explicita värden från a till f
PreMultiplyPremultipliserar med en annan TPdfMatrix eller explicit sexvärdesmatris
PreTranslateFörbereder en translation i matrisens lokala indatarymd
PreScaleFörbereder separata skalfaktorer för X och Y
PreRotateFörbereder en medurs eller moturs rotation
PreSkewFörbereder separata skew-vinklar för X och Y
TranslateBifogar en translation med deltaX och deltaY
ScaleBifogar separata skalfaktorer för X och Y
RotateBifogar en medurs eller moturs rotation i grader eller radianer
HorizontalFlipBifogar en vändning kring X-axeln
VerticalFlipBifogar en vändning kring Y-axeln
CentralFlipBifogar vändning kring båda axlarna, detsamma som en 180-gradersrotation utan trigonometri
SkewBifogar separata skew-vinklar för X och Y
RotateAtBifogar en rotation kring en fixerad pivot
ScaleAtBifogar en skalning kring en fixerad pivot
SkewAtBifogar en shear kring en fixerad pivot
HorizontalFlipAtBifogar en horisontell vändning kring en anroparvald X-koordinat
VerticalFlipAtBifogar en vertikal vändning kring en anroparvald Y-koordinat
CentralFlipAtBifogar vändning kring båda axlarna runt en anroparvald pivot
MapRectToRectBifogar en stretch-, contain- eller cover-mappning mellan normaliserade rektanglar
InvertErsätter matrisen med dess invers eller genererar EPdfMatrixError när den är singulär
TryInvertErsätter matrisen med dess invers och returnerar False utan mutation när den är singulär eller nära singulär
TryGetInverseBeräknar en invers FS_MATRIX utan att mutera instansen
InverseCopySkapar en oberoende invers matris eller genererar EPdfMatrixError när den är singulär
TransformPointMappar en koordinat genom den affina transformeringen enligt PDF:s radvektorkonvention
TransformVectorMappar en riktning genom endast den linjära komponenten så att translationen ignoreras
TryInverseTransformPointMappar en punkt genom inversen utan att allokera en matris och rapporterar en singulär transformering som False
InverseTransformPointMappar en punkt genom inversen eller genererar EPdfMatrixError när den är singulär
TransformQuadMappar alla fyra punkter i ett FS_QUADPOINTSF-värde
TransformPointsMappar en punktarray med en enda resultat-allokering
TransformPointsInPlaceMappar en punktarray i anroparägd lagring utan att allokera ytterligare en array
TryTransformBoundsAckumulerar omkastade punktgränser i ett pass och returnerar False för tomt indata
TransformBoundsAckumulerar omkastade punktgränser i ett pass eller genererar EPdfMatrixError för tomt indata
TransformRectNormaliserar och mappar en rektangel via en exakt axelparallell snabbväg eller snäva fyrahörnsgränser
TransformRectsMappar en rektangelarray med en enda resultat-allokering
TransformRectsInPlaceMappar en rektangelarray i anroparägd lagring utan att allokera ytterligare en array

Properties

PropertyTypeDescription
aSingleSkrivskyddat första matriselement
bSingleSkrivskyddat andra matriselement
cSingleSkrivskyddat tredje matriselement
dSingleSkrivskyddat fjärde matriselement
eSingleSkrivskyddat translation-X-element
fSingleSkrivskyddat translation-Y-element
HandleFS_MATRIXRått matrisvärde för PDFium-API:er som tar emot FS_MATRIX eller PFS_MATRIX

Description

TPdfMatrix använder PDF:s affina layout a b c d e f och postmultipliserar varje operation, så anropen läses i samma ordning som de transformeringar som appliceras på punkter

PreMultiply och Pre*-hjälparna lägger till operationer före den aktuella transformeringen, medan pivot-hjälparna bifogar translations-operation-translations-sekvenser som håller den valda pivoten fixerad

pmfContain bevarar hela källrektangeln med centrerad oanvänd yta och pmfCover fyller målet med centrerat överflöd, medan pmfStretch tillåter oberoende skalning i X och Y

Massmetoderna för punkter och rektanglar allokerar en utdataarray, deras in-place-varianter allokerar ingen, och TryTransformBounds avräknar omkastade punkter utan att bygga en mellanliggande array

Använd Handle med API:er som FPDFPageObj_SetMatrix, FPDFPageObj_Transform och 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