PDFium Delphi Component Docs

TPdfMatrix Classe

Unit: FPdfMatrix
Enveloppe OO mutable autour de la FS_MATRIX de PDFium pour composer les transformations de l’espace utilisateur PDF

Syntax

type TPdfMatrix = class ... end;

Related types

TypeDescription
TPdfPointArrayTableau dynamique de valeurs FS_POINTF utilisé par les opérations de points en masse
TPdfRectArrayTableau dynamique de valeurs FS_RECTF utilisé par les opérations de rectangles en masse
TPdfMatrixFitModePolitique d’ajustement pmfStretch, pmfContain ou pmfCover pour le mapping de rectangles
TPdfMatrixDecompositionDiagnostics de translation, d’échelle signée, de rotation horaire, de cisaillement, de déterminant et de réflexion renvoyés par TryDecompose dans les champs TranslationX, TranslationY, ScaleX, ScaleY, RotationDegrees, ShearDegrees, Determinant et IsReflected

Methods

MemberDescription
CreateCrée une matrice identité, une matrice à six valeurs ou une copie défensive depuis FS_MATRIX
NewTranslationCrée une nouvelle matrice de translation
NewScaleCrée une nouvelle matrice d’échelle non uniforme
NewRotationCrée une matrice de rotation horaire ou anti-horaire en degrés ou en radians
NewSkewCrée une matrice avec des angles de cisaillement X et Y distincts
NewRectMappingCrée une matrice qui étire, contient ou couvre un rectangle source dans un rectangle destination
TryCreateRectMappingRenvoie un mapping FS_MATRIX et rejette les entrées de taille nulle, non finies ou débordantes sans allouer d’objet
ResetRéinitialise la matrice à l’identité
SetElementsRemplace les six éléments de la matrice en un seul appel
AssignCopie une autre TPdfMatrix ou une FS_MATRIX brute dans cette instance
CloneCrée une copie indépendante de l’objet
DeterminantRenvoie le déterminant de la composante linéaire 2 par 2
IsFiniteIndique si chaque élément est une valeur Single finie
IsIdentityTeste l’identité avec une tolérance choisie par l’appelant
IsInvertibleTeste l’inversibilité finie et sensible à l’échelle sans calculer d’inverse
IsTranslationOnlyTeste si la composante linéaire est l’identité
IsAxisAlignedTeste si les rectangles restent alignés sur les axes, y compris les dispositions à quart de tour dans la tolérance
NearlyEqualsCompare avec une TPdfMatrix ou une FS_MATRIX à l’aide d’une tolérance
GetTranslationLit ensemble les éléments de translation X et Y
SetTranslationRemplace la translation X et Y en préservant la composante linéaire
ClearTranslationMet les deux éléments de translation à zéro
TryDecomposeExtrait translation, échelle signée, rotation horaire, cisaillement, déterminant et état de réflexion lorsque la matrice est non singulière
MultiplyPost-multiplie par une autre TPdfMatrix ou des valeurs explicites de a à f
PreMultiplyPré-multiplie par une autre TPdfMatrix ou une matrice explicite à six valeurs
PreTranslatePréfixe une translation dans l’espace d’entrée local de la matrice
PreScalePréfixe des facteurs d’échelle X et Y distincts
PreRotatePréfixe une rotation horaire ou anti-horaire
PreSkewPréfixe des angles de cisaillement X et Y distincts
TranslateAjoute une translation de deltaX et deltaY
ScaleAjoute des facteurs d’échelle X et Y distincts
RotateAjoute une rotation horaire ou anti-horaire en degrés ou en radians
HorizontalFlipAjoute un retournement selon l’axe X
VerticalFlipAjoute un retournement selon l’axe Y
CentralFlipAjoute les deux retournements d’axes, équivalent à une rotation de 180 degrés sans trigonométrie
SkewAjoute des angles de cisaillement X et Y distincts
RotateAtAjoute une rotation autour d’un pivot qui reste fixe
ScaleAtAjoute une échelle autour d’un pivot qui reste fixe
SkewAtAjoute un cisaillement autour d’un pivot qui reste fixe
HorizontalFlipAtAjoute un retournement horizontal autour d’une coordonnée X choisie par l’appelant
VerticalFlipAtAjoute un retournement vertical autour d’une coordonnée Y choisie par l’appelant
CentralFlipAtAjoute les deux retournements autour d’un pivot choisi par l’appelant
MapRectToRectAjoute un mapping étirement, contient ou couvre entre des rectangles normalisés
InvertRemplace la matrice par son inverse ou lève EPdfMatrixError lorsqu’elle est singulière
TryInvertRemplace la matrice par son inverse et renvoie False sans mutation lorsqu’elle est singulière ou quasi singulière
TryGetInverseCalcule une FS_MATRIX inverse sans muter cette instance
InverseCopyCrée une matrice inverse indépendante ou lève EPdfMatrixError lorsqu’elle est singulière
TransformPointMappe une coordonnée à travers la transformation affine selon la convention PDF des vecteurs ligne
TransformVectorMappe une direction à travers la seule composante linéaire, la translation étant donc ignorée
TryInverseTransformPointMappe un point à travers l’inverse sans allouer de matrice et signale une transformation singulière par False
InverseTransformPointMappe un point à travers l’inverse ou lève EPdfMatrixError lorsqu’elle est singulière
TransformQuadMappe les quatre points d’une valeur FS_QUADPOINTSF
TransformPointsMappe un tableau de points avec une seule allocation de résultat
TransformPointsInPlaceMappe un tableau de points dans un stockage possédé par l’appelant sans allouer d’autre tableau
TryTransformBoundsAccumule les bornes des points transformés en une seule passe et renvoie False pour une entrée vide
TransformBoundsAccumule les bornes des points transformés en une seule passe ou lève EPdfMatrixError pour une entrée vide
TransformRectNormalise et mappe un rectangle via un chemin rapide exact aligné sur les axes ou des bornes serrées aux quatre coins
TransformRectsMappe un tableau de rectangles avec une seule allocation de résultat
TransformRectsInPlaceMappe un tableau de rectangles dans un stockage possédé par l’appelant sans allouer d’autre tableau

Properties

PropertyTypeDescription
aSinglePremier élément de matrice en lecture seule
bSingleDeuxième élément de matrice en lecture seule
cSingleTroisième élément de matrice en lecture seule
dSingleQuatrième élément de matrice en lecture seule
eSingleÉlément de translation X en lecture seule
fSingleÉlément de translation Y en lecture seule
HandleFS_MATRIXValeur de matrice brute pour les API PDFium qui acceptent FS_MATRIX ou PFS_MATRIX

Description

TPdfMatrix utilise la disposition affine PDF a b c d e f et post-multiplie chaque opération, de sorte que les appels se lisent dans le même ordre que les transformations appliquées aux points

PreMultiply et les assistants Pre* ajoutent des opérations avant la transformation courante, tandis que les assistants à pivot ajoutent des séquences translation-opération-translation qui maintiennent le pivot choisi fixe

pmfContain conserve l’intégralité du rectangle source avec de l’espace inutilisé centré et pmfCover remplit la destination avec un débordement centré, tandis que pmfStretch autorise des mises à l’échelle X et Y indépendantes

Les méthodes de points et de rectangles en masse allouent un seul tableau de sortie, leurs variantes en place n’allouent rien, et TryTransformBounds balaie les points transformés sans construire de tableau intermédiaire

Utilisez Handle avec des API telles que FPDFPageObj_SetMatrix, FPDFPageObj_Transform et 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