60 lines
1.7 KiB
Plaintext
60 lines
1.7 KiB
Plaintext
type TSPdfLineRange = class(TSPdfBasicRange)
|
|
public
|
|
function Create(pg: PdfPage);
|
|
function Do();override;
|
|
function AddRange(range: TSPdfBasicRange);
|
|
function SetAllRangeProp(pg: PdfPage; sx: real; sy: real; ex: real; ey: real; w: real; fh: real; dh: real);
|
|
function Align(jc: string);
|
|
|
|
private
|
|
range_array_: array of TSPdfBasicRange;
|
|
end;
|
|
|
|
function TSPdfLineRange.Create(pg: PdfPage);
|
|
begin
|
|
{self.}Page := pg;
|
|
range_array_ := array();
|
|
end;
|
|
|
|
function TSPdfLineRange.AddRange(range: TSPdfBasicRange);
|
|
begin
|
|
range_array_[length(range_array_)] := range;
|
|
end;
|
|
|
|
function TSPdfLineRange.Do();override;
|
|
begin
|
|
for _,range in range_array_ do
|
|
range.Do();
|
|
end;
|
|
|
|
function TSPdfLineRange.SetAllRangeProp(pg: PdfPage; sx: real; sy: real; ex: real; ey: real; w: real; fh: real; dh: real);
|
|
begin
|
|
for _,range in range_array_ do
|
|
begin
|
|
if not ifnil(pg) then range.Page := pg;
|
|
if not ifnil(sx) then range.StartX := sx;
|
|
if not ifnil(sy) then range.StartY := sy;
|
|
if not ifnil(ex) then range.EndX := ex;
|
|
if not ifnil(ey) then range.EndY := ey;
|
|
if not ifnil(w) then range.Width := w;
|
|
if not ifnil(fh) then range.FixedHeight := fh;
|
|
if not ifnil(dh) then range.DynamicHeight := dh;
|
|
end
|
|
end;
|
|
|
|
function TSPdfLineRange.Align(jc: string);
|
|
begin
|
|
offset := 0;
|
|
first := range_array_[0];
|
|
last := range_array_[length(range_array_)-1];
|
|
case jc of
|
|
"center":
|
|
offset := ({self.}Width - last.EndX + first.EndX - last.Width) / 2;
|
|
"right":
|
|
offset := {self.}Width - last.EndX + first.EndX - last.Width;
|
|
end;
|
|
if offset <= 0 then return;
|
|
for _,range in range_array_ do
|
|
range.EndX += offset;
|
|
end;
|