FS_MATRIX di PDFium per comporre trasformazioni nello spazio utente PDFtype TPdfMatrix = class ... end;
| Type | Description |
|---|---|
TPdfPointArray | Array dinamico di valori FS_POINTF usato dalle operazioni in blocco sui punti |
TPdfRectArray | Array dinamico di valori FS_RECTF usato dalle operazioni in blocco sui rettangoli |
TPdfMatrixFitMode | Politica di adattamento pmfStretch, pmfContain o pmfCover per la mappatura dei rettangoli |
TPdfMatrixDecomposition | Diagnostica di traslazione, scala con segno, rotazione in senso orario, shear, determinante e riflessione restituita da TryDecompose nei campi TranslationX, TranslationY, ScaleX, ScaleY, RotationDegrees, ShearDegrees, Determinant e IsReflected |
| Member | Description |
|---|---|
Create | Crea una matrice identità, una matrice a sei valori o una copia difensiva da FS_MATRIX |
NewTranslation | Crea una nuova matrice di traslazione |
NewScale | Crea una nuova matrice di scala non uniforme |
NewRotation | Crea una matrice di rotazione in senso orario o antiorario in gradi o radianti |
NewSkew | Crea una matrice con angoli di shear separati per X e Y |
NewRectMapping | Crea una matrice che allarga, contiene o copre un rettangolo sorgente entro un rettangolo di destinazione |
TryCreateRectMapping | Restituisce una mappatura FS_MATRIX e rifiuta input di dimensione zero, non finiti o in overflow senza allocare un oggetto |
Reset | Riporta la matrice all'identità |
SetElements | Sostituisce tutti e sei gli elementi della matrice in una sola chiamata |
Assign | Copia un'altra TPdfMatrix o una FS_MATRIX grezza in questa istanza |
Clone | Crea una copia indipendente dell'oggetto |
Determinant | Restituisce il determinante della componente lineare 2 per 2 |
IsFinite | Indica se ogni elemento è un valore Single finito |
IsIdentity | Verifica l'identità usando una tolleranza selezionabile dal chiamante |
IsInvertible | Verifica l'invertibilità finita e consapevole della scala senza calcolare un'inversa |
IsTranslationOnly | Verifica se la componente lineare è l'identità |
IsAxisAligned | Verifica se i rettangoli restano allineati agli assi, incluse le disposizioni a quarto di giro entro la tolleranza |
NearlyEquals | Confronta con una TPdfMatrix o una FS_MATRIX usando una tolleranza |
GetTranslation | Legge insieme gli elementi di traslazione X e Y |
SetTranslation | Sostituisce la traslazione X e Y preservando la componente lineare |
ClearTranslation | Imposta a zero entrambi gli elementi di traslazione |
TryDecompose | Estrae traslazione, scala con segno, rotazione in senso orario, shear, determinante e stato di riflessione quando la matrice non è singolare |
Multiply | Moltiplica a destra per un'altra TPdfMatrix o per valori espliciti da a a f |
PreMultiply | Moltiplica a sinistra per un'altra TPdfMatrix o per una matrice esplicita a sei valori |
PreTranslate | Antepone una traslazione nello spazio di ingresso locale della matrice |
PreScale | Antepone fattori di scala separati per X e Y |
PreRotate | Antepone una rotazione in senso orario o antiorario |
PreSkew | Antepone angoli di shear separati per X e Y |
Translate | Aggiunge in coda una traslazione di deltaX e deltaY |
Scale | Aggiunge in coda fattori di scala separati per X e Y |
Rotate | Aggiunge in coda una rotazione in senso orario o antiorario in gradi o radianti |
HorizontalFlip | Aggiunge in coda un ribaltamento lungo l'asse X |
VerticalFlip | Aggiunge in coda un ribaltamento lungo l'asse Y |
CentralFlip | Aggiunge in coda entrambi i ribaltamenti degli assi, equivalente a una rotazione di 180 gradi senza trigonometria |
Skew | Aggiunge in coda angoli di shear separati per X e Y |
RotateAt | Aggiunge in coda una rotazione attorno a un perno che resta fisso |
ScaleAt | Aggiunge in coda una scala attorno a un perno che resta fisso |
SkewAt | Aggiunge in coda uno shear attorno a un perno che resta fisso |
HorizontalFlipAt | Aggiunge in coda un ribaltamento orizzontale attorno a una coordinata X selezionata dal chiamante |
VerticalFlipAt | Aggiunge in coda un ribaltamento verticale attorno a una coordinata Y selezionata dal chiamante |
CentralFlipAt | Aggiunge in coda entrambi i ribaltamenti attorno a un perno selezionato dal chiamante |
MapRectToRect | Aggiunge in coda una mappatura stretch, contain o cover tra rettangoli normalizzati |
Invert | Sostituisce la matrice con la sua inversa o solleva EPdfMatrixError quando è singolare |
TryInvert | Sostituisce la matrice con la sua inversa e restituisce False senza mutazioni quando è singolare o quasi singolare |
TryGetInverse | Calcola una FS_MATRIX inversa senza mutare questa istanza |
InverseCopy | Crea una matrice inversa indipendente o solleva EPdfMatrixError quando è singolare |
TransformPoint | Mappa una coordinata attraverso la trasformazione affine usando la convenzione dei vettori riga del PDF |
TransformVector | Mappa una direzione attraverso la sola componente lineare, così la traslazione viene ignorata |
TryInverseTransformPoint | Mappa un punto attraverso l'inversa senza allocare una matrice e riporta una trasformazione singolare come False |
InverseTransformPoint | Mappa un punto attraverso l'inversa o solleva EPdfMatrixError quando è singolare |
TransformQuad | Mappa tutti e quattro i punti di un valore FS_QUADPOINTSF |
TransformPoints | Mappa un array di punti con una sola allocazione del risultato |
TransformPointsInPlace | Mappa un array di punti in memoria di proprietà del chiamante senza allocare un altro array |
TryTransformBounds | Accumula i limiti dei punti trasformati in un solo passaggio e restituisce False per input vuoto |
TransformBounds | Accumula i limiti dei punti trasformati in un solo passaggio o solleva EPdfMatrixError per input vuoto |
TransformRect | Normalizza e mappa un rettangolo attraverso un percorso veloce esatto allineato agli assi o limiti stretti a quattro angoli |
TransformRects | Mappa un array di rettangoli con una sola allocazione del risultato |
TransformRectsInPlace | Mappa un array di rettangoli in memoria di proprietà del chiamante senza allocare un altro array |
| Property | Type | Description |
|---|---|---|
a | Single | Primo elemento della matrice in sola lettura |
b | Single | Secondo elemento della matrice in sola lettura |
c | Single | Terzo elemento della matrice in sola lettura |
d | Single | Quarto elemento della matrice in sola lettura |
e | Single | Elemento di traslazione X in sola lettura |
f | Single | Elemento di traslazione Y in sola lettura |
Handle | FS_MATRIX | Valore grezzo della matrice per le API PDFium che accettano FS_MATRIX o PFS_MATRIX |
TPdfMatrix usa il layout affine del PDF a b c d e f e moltiplica a destra ogni operazione, quindi le chiamate si leggono nello stesso ordine delle trasformazioni applicate ai punti
PreMultiply e gli helper Pre* aggiungono operazioni prima della trasformazione corrente, mentre gli helper con perno aggiungono in coda sequenze traslazione-operazione-traslazione che mantengono fisso il perno scelto
pmfContain preserva l'intero rettangolo sorgente con spazio inutilizzato centrato e pmfCover riempie la destinazione con l'overflow centrato, mentre pmfStretch consente scalature indipendenti di X e Y
I metodi in blocco su punti e rettangoli allocano un solo array di output, le loro varianti in-place non allocano nulla, e TryTransformBounds analizza i punti trasformati senza costruire un array intermedio
Usare Handle con API come FPDFPageObj_SetMatrix, FPDFPageObj_Transform e 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;