mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-27 12:10:36 +02:00
* Patch from Ondrej Pokorny to improve performance
git-svn-id: trunk@39747 -
This commit is contained in:
parent
6fbff7f7a6
commit
a84554ef9f
@ -298,18 +298,25 @@ end;
|
||||
|
||||
function AlphaBlend(color1, color2: TFPColor): TFPColor;
|
||||
var
|
||||
factor: single;
|
||||
factor1, factor2: single;
|
||||
begin
|
||||
if color2.alpha = $ffff then
|
||||
Result := color2
|
||||
else
|
||||
if color2.alpha = 0 then
|
||||
Result := color1
|
||||
else
|
||||
if color1.alpha = 0 then
|
||||
Result := color2
|
||||
else
|
||||
begin
|
||||
factor := (color1.alpha / $ffff) * (1 - color2.alpha / $ffff);
|
||||
factor1 := (color1.alpha / $ffff) * (1 - color2.alpha / $ffff);
|
||||
factor2 := color2.alpha / $ffff;
|
||||
|
||||
Result.red := Round(color1.red * factor + color2.red * color2.alpha / $ffff);
|
||||
Result.green := Round(color1.green * factor + color2.green * color2.alpha / $ffff);
|
||||
Result.blue := Round(color1.blue * factor + color2.blue * color2.alpha / $ffff);
|
||||
Result.alpha := Round(factor * $ffff + color2.alpha);
|
||||
Result.red := Round(color1.red * factor1 + color2.red * factor2);
|
||||
Result.green := Round(color1.green * factor1 + color2.green * factor2);
|
||||
Result.blue := Round(color1.blue * factor1 + color2.blue * factor2);
|
||||
Result.alpha := Round(factor1 * $ffff + color2.alpha);
|
||||
end;
|
||||
end;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user