FS_MATRIX do PDFium para compor transformações do espaço de usuário PDFtype TPdfMatrix = class ... end;
| Type | Description |
|---|---|
TPdfPointArray | Array dinâmico de valores FS_POINTF usado por operações em massa de pontos |
TPdfRectArray | Array dinâmico de valores FS_RECTF usado por operações em massa de retângulos |
TPdfMatrixFitMode | Política de ajuste pmfStretch, pmfContain ou pmfCover para mapeamento de retângulos |
TPdfMatrixDecomposition | Diagnó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 |
| Member | Description |
|---|---|
Create | Cria uma matriz identidade, uma matriz de seis valores ou uma cópia defensiva a partir de FS_MATRIX |
NewTranslation | Cria uma nova matriz de translação |
NewScale | Cria uma nova matriz de escala não uniforme |
NewRotation | Cria uma matriz de rotação horária ou anti-horária em graus ou radianos |
NewSkew | Cria uma matriz com ângulos de cisalhamento X e Y separados |
NewRectMapping | Cria uma matriz que estica, contém ou cobre um retângulo de origem dentro de um retângulo de destino |
TryCreateRectMapping | Retorna um mapeamento FS_MATRIX e rejeita entradas de tamanho zero, não finitas ou com estouro sem alocar um objeto |
Reset | Redefine a matriz para a identidade |
SetElements | Substitui os seis elementos da matriz em uma única chamada |
Assign | Copia outro TPdfMatrix ou um FS_MATRIX bruto para esta instância |
Clone | Cria uma cópia independente do objeto |
Determinant | Retorna o determinante do componente linear 2 por 2 |
IsFinite | Relata se cada elemento é um valor Single finito |
IsIdentity | Testa a identidade usando uma tolerância escolhida pelo chamador |
IsInvertible | Testa a invertibilidade finita e consciente de escala sem calcular a inversa |
IsTranslationOnly | Testa se o componente linear é identidade |
IsAxisAligned | Testa se os retângulos permanecem alinhados aos eixos, incluindo layouts de quarto de volta dentro da tolerância |
NearlyEquals | Compara com TPdfMatrix ou FS_MATRIX usando uma tolerância |
GetTranslation | Lê os elementos de translação X e Y juntos |
SetTranslation | Substitui a translação X e Y preservando o componente linear |
ClearTranslation | Zera ambos os elementos de translação |
TryDecompose | Extrai translação, escala com sinal, rotação horária, cisalhamento, determinante e estado de reflexão quando a matriz é não singular |
Multiply | Pós-multiplica por outro TPdfMatrix ou por valores explícitos de a a f |
PreMultiply | Pré-multiplica por outro TPdfMatrix ou por uma matriz explícita de seis valores |
PreTranslate | Precede uma translação no espaço de entrada local da matriz |
PreScale | Precede fatores de escala X e Y separados |
PreRotate | Precede uma rotação horária ou anti-horária |
PreSkew | Precede ângulos de cisalhamento X e Y separados |
Translate | Anexa uma translação por deltaX e deltaY |
Scale | Anexa fatores de escala X e Y separados |
Rotate | Anexa uma rotação horária ou anti-horária em graus ou radianos |
HorizontalFlip | Anexa um espelhamento no eixo X |
VerticalFlip | Anexa um espelhamento no eixo Y |
CentralFlip | Anexa ambos os espelhamentos de eixo, equivalente a uma rotação de 180 graus sem trigonometria |
Skew | Anexa ângulos de cisalhamento X e Y separados |
RotateAt | Anexa uma rotação em torno de um pivô que permanece fixo |
ScaleAt | Anexa uma escala em torno de um pivô que permanece fixo |
SkewAt | Anexa um cisalhamento em torno de um pivô que permanece fixo |
HorizontalFlipAt | Anexa um espelhamento horizontal em torno de uma coordenada X escolhida pelo chamador |
VerticalFlipAt | Anexa um espelhamento vertical em torno de uma coordenada Y escolhida pelo chamador |
CentralFlipAt | Anexa ambos os espelhamentos em torno de um pivô escolhido pelo chamador |
MapRectToRect | Anexa um mapeamento de esticar, conter ou cobrir entre retângulos normalizados |
Invert | Substitui a matriz pela sua inversa ou dispara EPdfMatrixError quando ela é singular |
TryInvert | Substitui a matriz pela sua inversa e retorna False sem mutação quando ela é singular ou quase singular |
TryGetInverse | Calcula um FS_MATRIX inverso sem mutar esta instância |
InverseCopy | Cria uma matriz inversa independente ou dispara EPdfMatrixError quando singular |
TransformPoint | Mapeia uma coordenada pela transformação afim usando a convenção de vetor de linha do PDF |
TransformVector | Mapeia uma direção apenas pelo componente linear, de modo que a translação é ignorada |
TryInverseTransformPoint | Mapeia um ponto pela inversa sem alocar uma matriz e relata uma transformação singular como False |
InverseTransformPoint | Mapeia um ponto pela inversa ou dispara EPdfMatrixError quando singular |
TransformQuad | Mapeia os quatro pontos de um valor FS_QUADPOINTSF |
TransformPoints | Mapeia um array de pontos com uma única alocação de resultado |
TransformPointsInPlace | Mapeia um array de pontos em armazenamento de propriedade do chamador sem alocar outro array |
TryTransformBounds | Acumula os limites dos pontos transformados em uma passada e retorna False para entrada vazia |
TransformBounds | Acumula os limites dos pontos transformados em uma passada ou dispara EPdfMatrixError para entrada vazia |
TransformRect | Normaliza e mapeia um retângulo por um caminho rápido exato alinhado aos eixos ou por limites ajustados de quatro cantos |
TransformRects | Mapeia um array de retângulos com uma única alocação de resultado |
TransformRectsInPlace | Mapeia um array de retângulos em armazenamento de propriedade do chamador sem alocar outro array |
| Property | Type | Description |
|---|---|---|
a | Single | Primeiro elemento da matriz, somente leitura |
b | Single | Segundo elemento da matriz, somente leitura |
c | Single | Terceiro elemento da matriz, somente leitura |
d | Single | Quarto elemento da matriz, somente leitura |
e | Single | Elemento de translação X, somente leitura |
f | Single | Elemento de translação Y, somente leitura |
Handle | FS_MATRIX | Valor de matriz bruto para APIs do PDFium que aceitam FS_MATRIX ou PFS_MATRIX |
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
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;