PDFium Delphi Component Docs

TPdfMatrix Klasse

Unit: FPdfMatrix
Veränderlicher OO-Wrapper um PDFiums FS_MATRIX zum Verketten von PDF-User-Space-Transformationen

Syntax

type TPdfMatrix = class ... end;

Verwandte Typen

TypBeschreibung
TPdfPointArrayDynamisches Array von FS_POINTF-Werten für Sammel-Punkt-Operationen
TPdfRectArrayDynamisches Array von FS_RECTF-Werten für Sammel-Rechteck-Operationen
TPdfMatrixFitModepmfStretch-, pmfContain- oder pmfCover-Anpassungsstrategie für die Rechteck-Zuordnung
TPdfMatrixDecompositionTranslation, vorzeichenbehaftete Skalierung, Drehung im Uhrzeigersinn, Scherung, Determinante und Spiegelungs-Diagnostik, die TryDecompose in den Feldern TranslationX, TranslationY, ScaleX, ScaleY, RotationDegrees, ShearDegrees, Determinant und IsReflected liefert

Methoden

MemberBeschreibung
CreateErstellt eine Einheitsmatrix, eine Sechswert-Matrix oder eine defensive Kopie aus FS_MATRIX
NewTranslationErstellt eine neue Translationsmatrix
NewScaleErstellt eine neue nicht-uniforme Skalierungsmatrix
NewRotationErstellt eine Drehmatrix im oder gegen den Uhrzeigersinn, in Grad oder Radiant
NewSkewErstellt eine Matrix mit getrennten X- und Y-Scherwinkeln
NewRectMappingErstellt eine Matrix, die ein Quellrechteck in einem Zielrechteck streckt, einpasst oder überdeckt
TryCreateRectMappingLiefert eine FS_MATRIX-Zuordnung und weist null-große, nicht-finite oder überlaufende Eingaben ohne Objektallokation zurück
ResetSetzt die Matrix auf die Einheitsmatrix zurück
SetElementsErsetzt alle sechs Matrixelemente in einem Aufruf
AssignKopiert eine andere TPdfMatrix oder eine rohe FS_MATRIX in diese Instanz
CloneErstellt eine unabhängige Objektkopie
DeterminantLiefert die Determinante der linearen 2-mal-2-Komponente
IsFiniteMeldet, ob jedes Element ein endlicher Single-Wert ist
IsIdentityPrüft die Einheitsmatrix mit einer vom Aufrufer wählbaren Toleranz
IsInvertiblePrüft endliche und skalenbewusste Invertierbarkeit, ohne eine Inverse zu berechnen
IsTranslationOnlyPrüft, ob die lineare Komponente die Einheitsmatrix ist
IsAxisAlignedPrüft, ob Rechtecke achsenparallel bleiben, einschließlich Vierteldrehungs-Anordnungen innerhalb der Toleranz
NearlyEqualsVergleicht mit TPdfMatrix oder FS_MATRIX unter Verwendung einer Toleranz
GetTranslationLiest die X- und Y-Translationselemente gemeinsam
SetTranslationErsetzt die X- und Y-Translation, während die lineare Komponente erhalten bleibt
ClearTranslationSetzt beide Translationselemente auf null
TryDecomposeExtrahiert Translation, vorzeichenbehaftete Skalierung, Drehung im Uhrzeigersinn, Scherung, Determinante und Spiegelungszustand, wenn die Matrix nichtsingulär ist
MultiplyMultipliziert von rechts mit einer anderen TPdfMatrix oder expliziten a- bis f-Werten
PreMultiplyMultipliziert von links mit einer anderen TPdfMatrix oder einer expliziten Sechswert-Matrix
PreTranslateStellt eine Translation im lokalen Eingaberaum der Matrix voran
PreScaleStellt getrennte X- und Y-Skalfaktoren voran
PreRotateStellt eine Drehung im oder gegen den Uhrzeigersinn voran
PreSkewStellt getrennte X- und Y-Scherwinkel voran
TranslateHängt eine Translation um deltaX und deltaY an
ScaleHängt getrennte X- und Y-Skalfaktoren an
RotateHängt eine Drehung im oder gegen den Uhrzeigersinn in Grad oder Radiant an
HorizontalFlipHängt eine X-Achsen-Spiegelung an
VerticalFlipHängt eine Y-Achsen-Spiegelung an
CentralFlipHängt beide Achsenspiegelungen an, äquivalent zu einer 180-Grad-Drehung ohne Trigonometrie
SkewHängt getrennte X- und Y-Scherwinkel an
RotateAtHängt eine Drehung um einen fest bleibenden Drehpunkt an
ScaleAtHängt eine Skalierung um einen fest bleibenden Drehpunkt an
SkewAtHängt eine Scherung um einen fest bleibenden Drehpunkt an
HorizontalFlipAtHängt eine horizontale Spiegelung um eine vom Aufrufer gewählte X-Koordinate an
VerticalFlipAtHängt eine vertikale Spiegelung um eine vom Aufrufer gewählte Y-Koordinate an
CentralFlipAtHängt beide Spiegelungen um einen vom Aufrufer gewählten Drehpunkt an
MapRectToRectHängt eine Stretch-, Contain- oder Cover-Zuordnung zwischen normalisierten Rechtecken an
InvertErsetzt die Matrix durch ihre Inverse oder löst EPdfMatrixError aus, wenn sie singulär ist
TryInvertErsetzt die Matrix durch ihre Inverse und liefert False ohne Mutation, wenn sie singulär oder nahezu singulär ist
TryGetInverseBerechnet eine inverse FS_MATRIX, ohne diese Instanz zu verändern
InverseCopyErstellt eine unabhängige inverse Matrix oder löst EPdfMatrixError aus, wenn sie singulär ist
TransformPointAbbildet eine Koordinate durch die affine Transformation unter Verwendung der PDF-Zeilenvektor-Konvention
TransformVectorAbbildet eine Richtung ausschließlich durch die lineare Komponente, sodass die Translation ignoriert wird
TryInverseTransformPointAbbildet einen Punkt durch die Inverse, ohne eine Matrix zu allokieren, und meldet eine singuläre Transformation als False
InverseTransformPointAbbildet einen Punkt durch die Inverse oder löst EPdfMatrixError aus, wenn sie singulär ist
TransformQuadAbbildet alle vier Punkte eines FS_QUADPOINTSF-Werts
TransformPointsAbbildet ein Punkte-Array mit einer einzigen Ergebnis-Allokation
TransformPointsInPlaceAbbildet ein Punkte-Array im Speicher des Aufrufers, ohne ein weiteres Array zu allokieren
TryTransformBoundsAkkumuliert transformierte Punktgrenzen in einem Durchlauf und liefert False bei leerer Eingabe
TransformBoundsAkkumuliert transformierte Punktgrenzen in einem Durchlauf oder löst EPdfMatrixError bei leerer Eingabe aus
TransformRectNormalisiert und bildet ein Rechteck über einen exakten achsenparallelen Schnellpfad oder enge Vier-Ecken-Grenzen ab
TransformRectsAbbildet ein Rechteck-Array mit einer einzigen Ergebnis-Allokation
TransformRectsInPlaceAbbildet ein Rechteck-Array im Speicher des Aufrufers, ohne ein weiteres Array zu allokieren

Eigenschaften

EigenschaftTypBeschreibung
aSingleSchreibgeschütztes erstes Matrixelement
bSingleSchreibgeschütztes zweites Matrixelement
cSingleSchreibgeschütztes drittes Matrixelement
dSingleSchreibgeschütztes viertes Matrixelement
eSingleSchreibgeschütztes Translation-X-Element
fSingleSchreibgeschütztes Translation-Y-Element
HandleFS_MATRIXRohwert der Matrix für PDFium-APIs, die FS_MATRIX oder PFS_MATRIX akzeptieren

Beschreibung

TPdfMatrix verwendet das affine PDF-Layout a b c d e f und multipliziert jede Operation von rechts, sodass Aufrufe in derselben Reihenfolge gelesen werden, in der die Transformationen auf Punkte angewendet werden

PreMultiply und die Pre*-Helfer fügen Operationen vor der aktuellen Transformation ein, während die Pivot-Helfer Translation-Operation-Translation-Sequenzen anhängen, die den gewählten Drehpunkt fest halten

pmfContain bewahrt das vollständige Quellrechteck mit zentriertem ungenutztem Raum, pmfCover füllt das Ziel mit zentriertem Überlauf, während pmfStretch eine unabhängige X- und Y-Skalierung erlaubt

Sammel-Punkt- und Rechteck-Methoden allokieren genau ein Ausgabearray, ihre In-Place-Varianten allokieren keines, und TryTransformBounds durchsucht transformierte Punkte, ohne ein Zwischenarray zu konstruieren

Verwenden Sie Handle mit APIs wie FPDFPageObj_SetMatrix, FPDFPageObj_Transform und FPDFText_SetMatrix

Beispiel

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;

Siehe auch

TPdf.CreateXObjectFromPage, TPdf.InsertFormObjectFromXObject