LazBarcodes: Drop parameter ALastLine from TSimpleBarcode.RenderSymbol

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@8215 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2022-03-20 13:02:12 +00:00
parent f38c9ad537
commit 5094ef0d00

View File

@ -210,6 +210,7 @@ type
procedure CalculatePreferredSize(var PreferredWidth, PreferredHeight: Integer;
WithThemeSpace: Boolean); override;
procedure DrawBarcode(ADrawer: TBasicBarcodeDrawer; AFactor: Double);
function GetLastLine: PZintRenderLine;
procedure GetTextSize(const AText: String; out AWidth, AHeight: Integer);
function InternalGenerate: Integer; override;
procedure IntfPaintOnCanvas(const aTargetCanvas: TCanvas; const aRect: TRect); override;
@ -217,8 +218,7 @@ type
procedure Render(AWidth, AHeight: Integer); virtual;
procedure RenderBearerBars(AWidth, AHeight, ABorder: Integer; var ALastLine: PZintRenderline);
procedure RenderBox(AWidth, AHeight, ABorder: Integer; var ALastLine: PZintRenderLine);
procedure RenderSymbol(xLeft, yTop, ASymbolHeight, {%H-}ATextHeight, AFactor: Integer;
var ALastLine: PZintRenderLine); virtual;
procedure RenderSymbol(xLeft, yTop, ASymbolHeight, {%H-}ATextHeight, AFactor: Integer); virtual;
procedure RenderText(ASymbolWidth, ASymbolStart, ATextPos: Integer); virtual;
property AddCheckSum: Boolean read FAddCheckSum write SetAddCheckSum default true;
property DisplayCheckSum: Boolean read FDisplayCheckSum write SetDisplayCheckSum default false;
@ -352,8 +352,7 @@ type
function GetRightText: String;
function GetSampleText: String; override;
function InternalGenerate: Integer; override;
procedure RenderSymbol(xLeft, yTop, AHeight, ATextHeight, AFactor: Integer;
var ALastLine: PZintRenderLine); override;
procedure RenderSymbol(xLeft, yTop, AHeight, ATextHeight, AFactor: Integer); override;
procedure RenderText(ASymbolWidth, ASymbolStart, ATextPos: Integer); override;
procedure SetRecommendedSymbolSizeParams; override;
function UPC_EAN_Flag: Integer;
@ -610,6 +609,7 @@ type
TBarcodeMaxiCode = class(TBarcodeSquare)
protected
function InternalGenerate: Integer; override;
procedure RenderSymbol(xLeft, yTop, ASymbolHeight, {%H-}ATextHeight, AFactor: Integer); override;
public
constructor Create(AOwner: TComponent); override;
end;
@ -1433,6 +1433,26 @@ begin
ADrawer.EndDrawing;
end;
function TSimpleBarcode.GetLastLine: PZintRenderline;
var
next_line: PZintRenderline;
begin
Result := nil;
if (FSymbol <> nil) and (FSymbol^.rendered <> nil) then
begin
Result := FSymbol^.rendered^.Lines;
if Result <> nil then
begin
next_line := Result^.next;
while next_line <> nil do
begin
Result := next_line;
next_line := Result^.next;
end;
end;
end;
end;
{ Measures size of the specified text in pixels using the current barcode font. }
procedure TSimpleBarCode.GetTextSize(const AText: String; out AWidth, AHeight: Integer);
var
@ -1587,7 +1607,7 @@ begin
end;
// Render bars and spaces
RenderSymbol(x, border, hsymbol, htext, factor, lastline);
RenderSymbol(x, border, hsymbol, htext, factor);
// Render the human-readable text
if FShowHumanReadableText then
@ -1601,6 +1621,7 @@ begin
end;
// Render the horizontal bearer bars
lastline := GetLastLine;
if FBearerBarMode <> bbmNone then
RenderBearerBars(AWidth, hsymbol, border, lastline);
@ -1651,8 +1672,7 @@ end;
- ASymbolHeight: height of the entire symbol (without text)
- ATextHeight: height of the human-readable text. Needed by EAN code bar extensions.
- AFactor: current scaling factor with respect to pixels }
procedure TSimpleBarcode.RenderSymbol(xLeft, yTop, ASymbolHeight, ATextHeight, AFactor: Integer;
var ALastLine: PZintRenderline);
procedure TSimpleBarcode.RenderSymbol(xLeft, yTop, ASymbolHeight, ATextHeight, AFactor: Integer);
var
i: Integer; // general loop variable
x, y: Integer; // coordinates of the left/top corner of the currently rendered bar.
@ -1661,8 +1681,10 @@ var
hrow: Integer; // height of the currently rendered row
wblock: Integer; // width of an individual bar or space
isBar: Boolean; // flag indication whether the currently rendered feature is a bar or a space
line: PZintRenderLine;
line, lastline: PZintRenderLine;
begin
lastLine := GetLastLine;
// Calculate total row height from the Zint symbol
total_row_height := 0;
for row := 0 to FSymbol^.rows-1 do
@ -1694,7 +1716,7 @@ begin
if isBar then
begin
line := render_plot_create_line(x, y, wblock*AFactor, hrow);
render_plot_add_line(FSymbol, line, @ALastLine);
render_plot_add_line(FSymbol, line, @lastLine);
end;
// Advance to next block
@ -2181,8 +2203,7 @@ end;
{ Is overridden to handle the bar extensions of most of the UPC/EAN codes, i.e.
some bars are drawn longer than the others.}
procedure TBarcodeEAN.RenderSymbol(xLeft, yTop, AHeight, ATextHeight, AFactor: Integer;
var ALastLine: PZintRenderLine);
procedure TBarcodeEAN.RenderSymbol(xLeft, yTop, AHeight, ATextHeight, AFactor: Integer);
var
i, n: Integer;
line: PZintRenderLine;
@ -3171,6 +3192,10 @@ begin
Move(FText[1], FSymbol^.Primary[0], Length(FText));
Result := maxicode(FSymbol, @FText[1], Length(FText));
end;
procedure TBarcodeMaxiCode.RenderSymbol(xLeft, yTop, ASymbolHeight, {%H-}ATextHeight, AFactor: Integer);
begin
end;
end.