From e9e8f61f5a7d19b447b31a720509eef485b6f8bc Mon Sep 17 00:00:00 2001 From: Jesus Reyes A Date: Fri, 5 Jul 2024 17:26:05 -0600 Subject: [PATCH] LazReport: TfrHTMExportFilter.ColorToHex can be optimized, from Alexey Torgashin, issue #40966 --- components/lazreport/source/lr_e_htm.pas | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/components/lazreport/source/lr_e_htm.pas b/components/lazreport/source/lr_e_htm.pas index 23da1f28c4..d936676fbb 100644 --- a/components/lazreport/source/lr_e_htm.pas +++ b/components/lazreport/source/lr_e_htm.pas @@ -384,14 +384,25 @@ end; function TfrHTMExportFilter.ColorToHex(c: TColor): AnsiString; +const + SHexDigits: PChar = '0123456789ABCDEF'; var - s: AnsiString; + r, g, b: byte; begin - s:= IntToHex(ColorToRGB(c), 8); - Result:= '#' + Copy(s, 7, 2) + Copy(s, 5, 2) + Copy(s, 3, 2); + C:= ColorToRGB(C); + r:= Red(C); + g:= Green(C); + b:= Blue(C); + SetLength(Result{%H-}, 7); // #rrggbb + Result[1]:= '#'; + Result[2]:= SHexDigits[Hi(r)]; + Result[3]:= SHexDigits[Lo(r)]; + Result[4]:= SHexDigits[Hi(g)]; + Result[5]:= SHexDigits[Lo(g)]; + Result[6]:= SHexDigits[Hi(b)]; + Result[7]:= SHexDigits[Lo(b)]; end; - procedure TfrHTMExportFilter.AppendLine(const s: AnsiString); begin outputLines.Add(s);