FS_MATRIX de PDFium pour composer les transformations de l’espace utilisateur PDFtype TPdfMatrix = class ... end;
| Type | Description |
|---|---|
TPdfPointArray | Tableau dynamique de valeurs FS_POINTF utilisé par les opérations de points en masse |
TPdfRectArray | Tableau dynamique de valeurs FS_RECTF utilisé par les opérations de rectangles en masse |
TPdfMatrixFitMode | Politique d’ajustement pmfStretch, pmfContain ou pmfCover pour le mapping de rectangles |
TPdfMatrixDecomposition | Diagnostics 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 |
| Member | Description |
|---|---|
Create | Crée une matrice identité, une matrice à six valeurs ou une copie défensive depuis FS_MATRIX |
NewTranslation | Crée une nouvelle matrice de translation |
NewScale | Crée une nouvelle matrice d’échelle non uniforme |
NewRotation | Crée une matrice de rotation horaire ou anti-horaire en degrés ou en radians |
NewSkew | Crée une matrice avec des angles de cisaillement X et Y distincts |
NewRectMapping | Crée une matrice qui étire, contient ou couvre un rectangle source dans un rectangle destination |
TryCreateRectMapping | Renvoie un mapping FS_MATRIX et rejette les entrées de taille nulle, non finies ou débordantes sans allouer d’objet |
Reset | Réinitialise la matrice à l’identité |
SetElements | Remplace les six éléments de la matrice en un seul appel |
Assign | Copie une autre TPdfMatrix ou une FS_MATRIX brute dans cette instance |
Clone | Crée une copie indépendante de l’objet |
Determinant | Renvoie le déterminant de la composante linéaire 2 par 2 |
IsFinite | Indique si chaque élément est une valeur Single finie |
IsIdentity | Teste l’identité avec une tolérance choisie par l’appelant |
IsInvertible | Teste l’inversibilité finie et sensible à l’échelle sans calculer d’inverse |
IsTranslationOnly | Teste si la composante linéaire est l’identité |
IsAxisAligned | Teste si les rectangles restent alignés sur les axes, y compris les dispositions à quart de tour dans la tolérance |
NearlyEquals | Compare avec une TPdfMatrix ou une FS_MATRIX à l’aide d’une tolérance |
GetTranslation | Lit ensemble les éléments de translation X et Y |
SetTranslation | Remplace la translation X et Y en préservant la composante linéaire |
ClearTranslation | Met les deux éléments de translation à zéro |
TryDecompose | Extrait translation, échelle signée, rotation horaire, cisaillement, déterminant et état de réflexion lorsque la matrice est non singulière |
Multiply | Post-multiplie par une autre TPdfMatrix ou des valeurs explicites de a à f |
PreMultiply | Pré-multiplie par une autre TPdfMatrix ou une matrice explicite à six valeurs |
PreTranslate | Préfixe une translation dans l’espace d’entrée local de la matrice |
PreScale | Préfixe des facteurs d’échelle X et Y distincts |
PreRotate | Préfixe une rotation horaire ou anti-horaire |
PreSkew | Préfixe des angles de cisaillement X et Y distincts |
Translate | Ajoute une translation de deltaX et deltaY |
Scale | Ajoute des facteurs d’échelle X et Y distincts |
Rotate | Ajoute une rotation horaire ou anti-horaire en degrés ou en radians |
HorizontalFlip | Ajoute un retournement selon l’axe X |
VerticalFlip | Ajoute un retournement selon l’axe Y |
CentralFlip | Ajoute les deux retournements d’axes, équivalent à une rotation de 180 degrés sans trigonométrie |
Skew | Ajoute des angles de cisaillement X et Y distincts |
RotateAt | Ajoute une rotation autour d’un pivot qui reste fixe |
ScaleAt | Ajoute une échelle autour d’un pivot qui reste fixe |
SkewAt | Ajoute un cisaillement autour d’un pivot qui reste fixe |
HorizontalFlipAt | Ajoute un retournement horizontal autour d’une coordonnée X choisie par l’appelant |
VerticalFlipAt | Ajoute un retournement vertical autour d’une coordonnée Y choisie par l’appelant |
CentralFlipAt | Ajoute les deux retournements autour d’un pivot choisi par l’appelant |
MapRectToRect | Ajoute un mapping étirement, contient ou couvre entre des rectangles normalisés |
Invert | Remplace la matrice par son inverse ou lève EPdfMatrixError lorsqu’elle est singulière |
TryInvert | Remplace la matrice par son inverse et renvoie False sans mutation lorsqu’elle est singulière ou quasi singulière |
TryGetInverse | Calcule une FS_MATRIX inverse sans muter cette instance |
InverseCopy | Crée une matrice inverse indépendante ou lève EPdfMatrixError lorsqu’elle est singulière |
TransformPoint | Mappe une coordonnée à travers la transformation affine selon la convention PDF des vecteurs ligne |
TransformVector | Mappe une direction à travers la seule composante linéaire, la translation étant donc ignorée |
TryInverseTransformPoint | Mappe un point à travers l’inverse sans allouer de matrice et signale une transformation singulière par False |
InverseTransformPoint | Mappe un point à travers l’inverse ou lève EPdfMatrixError lorsqu’elle est singulière |
TransformQuad | Mappe les quatre points d’une valeur FS_QUADPOINTSF |
TransformPoints | Mappe un tableau de points avec une seule allocation de résultat |
TransformPointsInPlace | Mappe un tableau de points dans un stockage possédé par l’appelant sans allouer d’autre tableau |
TryTransformBounds | Accumule les bornes des points transformés en une seule passe et renvoie False pour une entrée vide |
TransformBounds | Accumule les bornes des points transformés en une seule passe ou lève EPdfMatrixError pour une entrée vide |
TransformRect | Normalise et mappe un rectangle via un chemin rapide exact aligné sur les axes ou des bornes serrées aux quatre coins |
TransformRects | Mappe un tableau de rectangles avec une seule allocation de résultat |
TransformRectsInPlace | Mappe un tableau de rectangles dans un stockage possédé par l’appelant sans allouer d’autre tableau |
| Property | Type | Description |
|---|---|---|
a | Single | Premier élément de matrice en lecture seule |
b | Single | Deuxième élément de matrice en lecture seule |
c | Single | Troisième élément de matrice en lecture seule |
d | Single | Quatrième élément de matrice en lecture seule |
e | Single | Élément de translation X en lecture seule |
f | Single | Élément de translation Y en lecture seule |
Handle | FS_MATRIX | Valeur de matrice brute pour les API PDFium qui acceptent FS_MATRIX ou PFS_MATRIX |
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
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;