PDFium Delphi Component Docs

TPdfMatrix Класс

Модуль: FPdfMatrix
Изменяемая объектная обёртка вокруг FS_MATRIX из PDFium для составления преобразований пользовательского пространства PDF

Syntax

type TPdfMatrix = class ... end;

Related types

TypeDescription
TPdfPointArrayДинамический массив значений FS_POINTF для групповых операций над точками
TPdfRectArrayДинамический массив значений FS_RECTF для групповых операций над прямоугольниками
TPdfMatrixFitModeПолитика вписывания pmfStretch, pmfContain или pmfCover для отображения прямоугольников
TPdfMatrixDecompositionСмещение, знаковый масштаб, вращение по часовой стрелке, сдвиг (shear), определитель и признаки отражения, которые TryDecompose возвращает в полях TranslationX, TranslationY, ScaleX, ScaleY, RotationDegrees, ShearDegrees, Determinant и IsReflected

Methods

MemberDescription
CreateСоздаёт единичную матрицу, матрицу из шести значений или защитную копию из FS_MATRIX
NewTranslationСоздаёт новую матрицу переноса
NewScaleСоздаёт новую матрицу неравномерного масштабирования
NewRotationСоздаёт матрицу вращения по или против часовой стрелки в градусах или радианах
NewSkewСоздаёт матрицу с отдельными углами сдвига по X и Y
NewRectMappingСоздаёт матрицу, которая растягивает, вписывает или покрывает исходный прямоугольник внутри целевого
TryCreateRectMappingВозвращает отображение FS_MATRIX и отклоняет входы нулевого размера, не-конечные или переполняющие, не выделяя объект
ResetСбрасывает матрицу к единичной
SetElementsЗаменяет все шесть элементов матрицы одним вызовом
AssignКопирует в экземпляр другую TPdfMatrix или сырую FS_MATRIX
CloneСоздаёт независимую копию объекта
DeterminantВозвращает определитель линейной части 2 на 2
IsFiniteСообщает, является ли каждый элемент конечным значением Single
IsIdentityПроверяет единичность с выбираемой вызывающим допуском
IsInvertibleПроверяет конечность и обратимость с учётом масштаба, не вычисляя обратную матрицу
IsTranslationOnlyПроверяет, является ли линейная часть единичной
IsAxisAlignedПроверяет, остаются ли прямоугольники выровненными по осям, включая повороты на четверть в пределах допуска
NearlyEqualsСравнивает с TPdfMatrix или FS_MATRIX с заданным допуском
GetTranslationЧитает элементы переноса X и Y вместе
SetTranslationЗаменяет перенос X и Y, сохраняя линейную часть
ClearTranslationОбнуляет оба элемента переноса
TryDecomposeИзвлекает перенос, знаковый масштаб, вращение по часовой стрелке, сдвиг, определитель и состояние отражения, когда матрица не вырождена
MultiplyДомножает справа на другую TPdfMatrix или явные значения a через f
PreMultiplyДомножает слева на другую TPdfMatrix или явную матрицу из шести значений
PreTranslateДобавляет перенос в начало, в локальном входном пространстве матрицы
PreScaleДобавляет в начало отдельные коэффициенты масштаба по X и Y
PreRotateДобавляет в начало вращение по или против часовой стрелки
PreSkewДобавляет в начало отдельные углы сдвига по X и Y
TranslateДобавляет в конец перенос на deltaX и deltaY
ScaleДобавляет в конец отдельные коэффициенты масштаба по X и Y
RotateДобавляет в конец вращение по или против часовой стрелки в градусах или радианах
HorizontalFlipДобавляет в конец отражение по оси X
VerticalFlipДобавляет в конец отражение по оси Y
CentralFlipДобавляет в конец оба отражения, что равно повороту на 180 градусов без тригонометрии
SkewДобавляет в конец отдельные углы сдвига по X и Y
RotateAtДобавляет в конец вращение вокруг неподвижной опорной точки
ScaleAtДобавляет в конец масштабирование вокруг неподвижной опорной точки
SkewAtДобавляет в конец сдвиг вокруг неподвижной опорной точки
HorizontalFlipAtДобавляет в конец горизонтальное отражение вокруг выбранной вызывающим координаты X
VerticalFlipAtДобавляет в конец вертикальное отражение вокруг выбранной вызывающим координаты Y
CentralFlipAtДобавляет в конец оба отражения вокруг выбранной вызывающим опорной точки
MapRectToRectДобавляет в конец отображение stretch, contain или cover между нормализованными прямоугольниками
InvertЗаменяет матрицу обратной или возбуждает EPdfMatrixError, когда она вырождена
TryInvertЗаменяет матрицу обратной и возвращает False без изменений, когда она вырождена или почти вырождена
TryGetInverseВычисляет обратную FS_MATRIX, не изменяя этот экземпляр
InverseCopyСоздаёт независимую обратную матрицу или возбуждает EPdfMatrixError при вырождении
TransformPointПреобразует координату аффинным преобразованием в соглашении строк-векторов PDF
TransformVectorПреобразует направление только линейной частью, игнорируя перенос
TryInverseTransformPointПреобразует точку обратным преобразованием без выделения матрицы и сообщает вырожденное преобразование как False
InverseTransformPointПреобразует точку обратным преобразованием или возбуждает EPdfMatrixError при вырождении
TransformQuadПреобразует все четыре точки значения FS_QUADPOINTSF
TransformPointsПреобразует массив точек с одним выделением результата
TransformPointsInPlaceПреобразует массив точек в хранилище вызывающего, не выделяя ещё один массив
TryTransformBoundsНакапливает границы преобразованных точек за один проход и возвращает False для пустого входа
TransformBoundsНакапливает границы преобразованных точек за один проход или возбуждает EPdfMatrixError для пустого входа
TransformRectНормализует и преобразует прямоугольник через точный быстрый путь для выравненных по осям случаев или плотные границы по четырём углам
TransformRectsПреобразует массив прямоугольников с одним выделением результата
TransformRectsInPlaceПреобразует массив прямоугольников в хранилище вызывающего, не выделяя ещё один массив

Properties

PropertyTypeDescription
aSingleПервый элемент матрицы, только чтение
bSingleВторой элемент матрицы, только чтение
cSingleТретий элемент матрицы, только чтение
dSingleЧетвёртый элемент матрицы, только чтение
eSingleЭлемент переноса X, только чтение
fSingleЭлемент переноса Y, только чтение
HandleFS_MATRIXСырое значение матрицы для API PDFium, принимающих FS_MATRIX или PFS_MATRIX

Description

TPdfMatrix использует аффинную раскладку PDF a b c d e f и домножает каждую операцию справа, поэтому вызовы читаются в том же порядке, в каком преобразования применяются к точкам

PreMultiply и помощники Pre* добавляют операции до текущего преобразования, а помощники с опорной точкой добавляют последовательности перенос-операция-перенос, которые оставляют выбранную точку неподвижной

pmfContain сохраняет весь исходный прямоугольник с центрированным неиспользованным пространством, pmfCover заполняет целевой прямоугольник с центрированным переполнением, а pmfStretch допускает независимое масштабирование по X и Y

Групповые методы для точек и прямоугольников выделяют один выходной массив, их in-place варианты не выделяют ничего, а TryTransformBounds просматривает преобразованные точки без построения промежуточного массива

Используйте Handle с такими API, как FPDFPageObj_SetMatrix, FPDFPageObj_Transform и 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