63 lines
1.1 KiB
ObjectPascal
63 lines
1.1 KiB
ObjectPascal
|
unit GradientHlpr;
|
||
|
|
||
|
interface
|
||
|
|
||
|
uses
|
||
|
windows, Graphics;
|
||
|
|
||
|
const
|
||
|
PixelCountMax = 32768;
|
||
|
|
||
|
type
|
||
|
pRGBTripleArray = ^TRGBTripleArray;
|
||
|
TRGBTripleArray = array[0..PixelCountMax - 1] of TRGBTriple;
|
||
|
|
||
|
type
|
||
|
TGradientHelper = class
|
||
|
private
|
||
|
public
|
||
|
function GetGradientBitmap(Index: integer; const hue_rotation: double): TBitmap;
|
||
|
end;
|
||
|
|
||
|
var
|
||
|
GradientHelper: TGradientHelper;
|
||
|
|
||
|
implementation
|
||
|
|
||
|
uses
|
||
|
Cmap;
|
||
|
|
||
|
{ TGradientHelper }
|
||
|
|
||
|
function TGradientHelper.GetGradientBitmap(Index: integer; const hue_rotation: double): TBitmap;
|
||
|
var
|
||
|
BitMap: TBitMap;
|
||
|
i, j: integer;
|
||
|
Row: pRGBTripleArray;
|
||
|
pal: TColorMap;
|
||
|
begin
|
||
|
GetCMap(index, hue_rotation, pal);
|
||
|
|
||
|
BitMap := TBitMap.create;
|
||
|
Bitmap.PixelFormat := pf24bit;
|
||
|
BitMap.Width := 256;
|
||
|
BitMap.Height := 2;
|
||
|
|
||
|
for j := 0 to Bitmap.Height - 1 do begin
|
||
|
Row := Bitmap.Scanline[j];
|
||
|
for i := 0 to Bitmap.Width - 1 do begin
|
||
|
Row[i].rgbtRed := Pal[i][0];
|
||
|
Row[i].rgbtGreen := Pal[i][1];
|
||
|
Row[i].rgbtBlue := Pal[i][2];
|
||
|
end
|
||
|
end;
|
||
|
|
||
|
Result := BitMap;
|
||
|
end;
|
||
|
|
||
|
initialization
|
||
|
GradientHelper := TGradientHelper.create;
|
||
|
finalization
|
||
|
GradientHelper.Free;
|
||
|
end.
|