PDFium Delphi Component Docs

TPdfMatrix classe

Unidade: FPdfMatrix
Wrapper OO mutável em torno do FS_MATRIX do PDFium para compor transformações do espaço de usuário PDF

Syntax

type TPdfMatrix = class ... end;

Related types

TypeDescription
TPdfPointArrayArray dinâmico de valores FS_POINTF usado por operações em massa de pontos
TPdfRectArrayArray dinâmico de valores FS_RECTF usado por operações em massa de retângulos
TPdfMatrixFitModePolítica de ajuste pmfStretch, pmfContain ou pmfCover para mapeamento de retângulos
TPdfMatrixDecompositionDiagnósticos de translação, escala com sinal, rotação horária, cisalhamento, determinante e reflexão retornados por TryDecompose nos campos TranslationX, TranslationY, ScaleX, ScaleY, RotationDegrees, ShearDegrees, Determinant e IsReflected

Methods

MemberDescription
CreateCria uma matriz identidade, uma matriz de seis valores ou uma cópia defensiva a partir de FS_MATRIX
NewTranslationCria uma nova matriz de translação
NewScaleCria uma nova matriz de escala não uniforme
NewRotationCria uma matriz de rotação horária ou anti-horária em graus ou radianos
NewSkewCria uma matriz com ângulos de cisalhamento X e Y separados
NewRectMappingCria uma matriz que estica, contém ou cobre um retângulo de origem dentro de um retângulo de destino
TryCreateRectMappingRetorna um mapeamento FS_MATRIX e rejeita entradas de tamanho zero, não finitas ou com estouro sem alocar um objeto
ResetRedefine a matriz para a identidade
SetElementsSubstitui os seis elementos da matriz em uma única chamada
AssignCopia outro TPdfMatrix ou um FS_MATRIX bruto para esta instância
CloneCria uma cópia independente do objeto
DeterminantRetorna o determinante do componente linear 2 por 2
IsFiniteRelata se cada elemento é um valor Single finito
IsIdentityTesta a identidade usando uma tolerância escolhida pelo chamador
IsInvertibleTesta a invertibilidade finita e consciente de escala sem calcular a inversa
IsTranslationOnlyTesta se o componente linear é identidade
IsAxisAlignedTesta se os retângulos permanecem alinhados aos eixos, incluindo layouts de quarto de volta dentro da tolerância
NearlyEqualsCompara com TPdfMatrix ou FS_MATRIX usando uma tolerância
GetTranslationLê os elementos de translação X e Y juntos
SetTranslationSubstitui a translação X e Y preservando o componente linear
ClearTranslationZera ambos os elementos de translação
TryDecomposeExtrai translação, escala com sinal, rotação horária, cisalhamento, determinante e estado de reflexão quando a matriz é não singular
MultiplyPós-multiplica por outro TPdfMatrix ou por valores explícitos de a a f
PreMultiplyPré-multiplica por outro TPdfMatrix ou por uma matriz explícita de seis valores
PreTranslatePrecede uma translação no espaço de entrada local da matriz
PreScalePrecede fatores de escala X e Y separados
PreRotatePrecede uma rotação horária ou anti-horária
PreSkewPrecede ângulos de cisalhamento X e Y separados
TranslateAnexa uma translação por deltaX e deltaY
ScaleAnexa fatores de escala X e Y separados
RotateAnexa uma rotação horária ou anti-horária em graus ou radianos
HorizontalFlipAnexa um espelhamento no eixo X
VerticalFlipAnexa um espelhamento no eixo Y
CentralFlipAnexa ambos os espelhamentos de eixo, equivalente a uma rotação de 180 graus sem trigonometria
SkewAnexa ângulos de cisalhamento X e Y separados
RotateAtAnexa uma rotação em torno de um pivô que permanece fixo
ScaleAtAnexa uma escala em torno de um pivô que permanece fixo
SkewAtAnexa um cisalhamento em torno de um pivô que permanece fixo
HorizontalFlipAtAnexa um espelhamento horizontal em torno de uma coordenada X escolhida pelo chamador
VerticalFlipAtAnexa um espelhamento vertical em torno de uma coordenada Y escolhida pelo chamador
CentralFlipAtAnexa ambos os espelhamentos em torno de um pivô escolhido pelo chamador
MapRectToRectAnexa um mapeamento de esticar, conter ou cobrir entre retângulos normalizados
InvertSubstitui a matriz pela sua inversa ou dispara EPdfMatrixError quando ela é singular
TryInvertSubstitui a matriz pela sua inversa e retorna False sem mutação quando ela é singular ou quase singular
TryGetInverseCalcula um FS_MATRIX inverso sem mutar esta instância
InverseCopyCria uma matriz inversa independente ou dispara EPdfMatrixError quando singular
TransformPointMapeia uma coordenada pela transformação afim usando a convenção de vetor de linha do PDF
TransformVectorMapeia uma direção apenas pelo componente linear, de modo que a translação é ignorada
TryInverseTransformPointMapeia um ponto pela inversa sem alocar uma matriz e relata uma transformação singular como False
InverseTransformPointMapeia um ponto pela inversa ou dispara EPdfMatrixError quando singular
TransformQuadMapeia os quatro pontos de um valor FS_QUADPOINTSF
TransformPointsMapeia um array de pontos com uma única alocação de resultado
TransformPointsInPlaceMapeia um array de pontos em armazenamento de propriedade do chamador sem alocar outro array
TryTransformBoundsAcumula os limites dos pontos transformados em uma passada e retorna False para entrada vazia
TransformBoundsAcumula os limites dos pontos transformados em uma passada ou dispara EPdfMatrixError para entrada vazia
TransformRectNormaliza e mapeia um retângulo por um caminho rápido exato alinhado aos eixos ou por limites ajustados de quatro cantos
TransformRectsMapeia um array de retângulos com uma única alocação de resultado
TransformRectsInPlaceMapeia um array de retângulos em armazenamento de propriedade do chamador sem alocar outro array

Properties

PropertyTypeDescription
aSinglePrimeiro elemento da matriz, somente leitura
bSingleSegundo elemento da matriz, somente leitura
cSingleTerceiro elemento da matriz, somente leitura
dSingleQuarto elemento da matriz, somente leitura
eSingleElemento de translação X, somente leitura
fSingleElemento de translação Y, somente leitura
HandleFS_MATRIXValor de matriz bruto para APIs do PDFium que aceitam FS_MATRIX ou PFS_MATRIX

Description

TPdfMatrix usa o layout afim do PDF a b c d e f e pós-multiplica cada operação, de modo que as chamadas são lidas na mesma ordem das transformações aplicadas aos pontos

PreMultiply e os auxiliares Pre* adicionam operações antes da transformação atual, enquanto os auxiliares de pivô anexam sequências de translação-operação-translação que mantêm o pivô escolhido fixo

pmfContain preserva o retângulo de origem completo com espaço não usado centralizado e pmfCover preenche o destino com estouro centralizado, enquanto pmfStretch permite escala independente de X e Y

Os métodos em massa de pontos e retângulos alocam um array de saída, suas variantes in-place não alocam nada, e TryTransformBounds varre pontos transformados sem construir um array intermediário

Use Handle com APIs como FPDFPageObj_SetMatrix, FPDFPageObj_Transform e 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