FastReport_FMX_2.8.12/LibD28x64/FMX.frxPreProgramClass.pas
2024-07-06 22:41:12 +02:00

62 lines
1.7 KiB
ObjectPascal

{******************************************}
{ }
{ FastReport FMX v2.0 }
{ Font parser }
{ }
{ Copyright (c) 1998-2013 }
{ by Aleksey Mandrykin, }
{ Fast Reports Inc. }
{ }
{******************************************}
unit FMX.frxPreProgramClass;
interface uses FMX.TTFHelpers, FMX.frxTrueTypeTable;
type
PreProgramClass = class(TrueTypeTable)
// Fields
strict private pre_program: Array of Byte;
// Methods
public constructor Create(src: TrueTypeTable);
public procedure Load(font: Pointer); override;
public function Save(font: Pointer; offset: Cardinal): Cardinal; override;
end;
implementation
// Methods
constructor PreProgramClass.Create(src: TrueTypeTable);
begin
inherited Create(src);
end;
procedure PreProgramClass.Load(font: Pointer);
var
Tppr: ^Byte;
i: Integer;
begin
length := (((self.entry.length + 3) div 4) * 4);
SetLength(self.pre_program, length);
Tppr := TTF_Helpers.Increment(font, self.entry.offset);
for i := 0 to Length - 1 do
begin
self.pre_program[i] := Tppr^;
Inc(Tppr);
end;
end;
function PreProgramClass.Save(font: Pointer; offset: Cardinal): Cardinal;
var
Tppr: ^Byte;
i: Integer;
begin
self.entry.offset := offset;
Tppr := TTF_Helpers.Increment(font, self.entry.offset);
for i := 0 to Length - 1 do
begin
Tppr^ := self.pre_program[i];
Inc(Tppr);
end;
Result := offset + Length;
end;
end.