You've already forked lazarus-ccr
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@1529 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -41,32 +41,34 @@ interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, FPImage, IntfGraphics, Graphics, Math, LCLProc,
|
||||
BmpRGBUtils;
|
||||
BmpRGBUtils, rgbdrawutils;
|
||||
|
||||
const
|
||||
MAXRANDOMDENSITY = $FFFF;
|
||||
|
||||
type
|
||||
TRandomDensity = Word;
|
||||
TRandomDensity = word;
|
||||
TDrawMode = (dmFillAndOutline, dmOutline, dmFill);
|
||||
TEraseMode = (ermNone, ermErase, ermReplace);
|
||||
TDrawPixelProcedure = procedure (X, Y: Integer) of Object;
|
||||
TDrawPixelProcedure = procedure(X, Y: integer) of object;
|
||||
|
||||
TPixelDifference = word;
|
||||
|
||||
TPixelDifference = Word;
|
||||
const
|
||||
MAXDIFFERENCE = 255 + 255 + 255;
|
||||
|
||||
type
|
||||
// integral float with 1/256 precision
|
||||
TIntensityFloat = Integer;
|
||||
TIntensityFloatTable = Array [0..255] of TIntensityFloat;
|
||||
TIntensityFloat = integer;
|
||||
TIntensityFloatTable = array [0..255] of TIntensityFloat;
|
||||
|
||||
{ TRGBBitmapCore }
|
||||
|
||||
TRGBBitmapCore = class(TBitmap)
|
||||
TRGBBitmapCore = class(TCustomRGBBitmapCore)
|
||||
private
|
||||
FSizeOfPixel: Integer;
|
||||
FRowPixelStride: Integer;
|
||||
FDataOwner: Boolean;
|
||||
FSizeOfPixel: integer;
|
||||
FRowPixelStride: integer;
|
||||
FDataOwner: boolean;
|
||||
FDrawMode: TDrawMode;
|
||||
FEraseMode: TEraseMode;
|
||||
FFillColor: TColor;
|
||||
@ -74,97 +76,91 @@ type
|
||||
FOutlineColor: TColor;
|
||||
FPaperColor: TColor;
|
||||
FRandomDensity: TRandomDensity;
|
||||
FRandomEnabled: Boolean;
|
||||
FRectangleRoundness: Integer;
|
||||
function GetFillColor: TColor;
|
||||
function GetOutlineColor: TColor;
|
||||
function GetPaperColor: TColor;
|
||||
procedure SetFillColor(const AValue: TColor);
|
||||
procedure SetOutlineColor(const AValue: TColor);
|
||||
procedure SetPaperColor(const AValue: TColor);
|
||||
function GetSize: Integer;
|
||||
FRandomEnabled: boolean;
|
||||
FRectangleRoundness: integer;
|
||||
function GetSize: integer;
|
||||
protected
|
||||
function PixelMasked(X, Y: Integer): Boolean;
|
||||
function PixelMasked(X, Y: integer): boolean;
|
||||
|
||||
procedure DrawOutlinePixel(X, Y: Integer);
|
||||
procedure DrawFillPixel(X, Y: Integer);
|
||||
procedure DrawPaperPixel(X, Y: Integer);
|
||||
procedure DrawOutlinePixel(X, Y: integer);
|
||||
procedure DrawFillPixel(X, Y: integer);
|
||||
procedure DrawPaperPixel(X, Y: integer);
|
||||
|
||||
procedure DrawReplacePixel(X, Y: Integer);
|
||||
procedure DrawReplacePixel(X, Y: integer);
|
||||
|
||||
procedure DrawRandomOutlinePixel(X, Y: Integer);
|
||||
procedure DrawRandomFillPixel(X, Y: Integer);
|
||||
procedure DrawRandomPaperPixel(X, Y: Integer);
|
||||
procedure DrawRandomOutlinePixel(X, Y: integer);
|
||||
procedure DrawRandomFillPixel(X, Y: integer);
|
||||
procedure DrawRandomPaperPixel(X, Y: integer);
|
||||
|
||||
procedure DrawEmptyPixel(X, Y: Integer);
|
||||
procedure DrawEmptyPixel(X, Y: integer);
|
||||
|
||||
function GetOutlineProcedure: TDrawPixelProcedure; virtual;
|
||||
function GetFillProcedure: TDrawPixelProcedure; virtual;
|
||||
public
|
||||
constructor Create(AWidth, AHeight: Integer; ASizeOfPixel: Integer); virtual;
|
||||
constructor CreateAsCopy(ABitmap: TRGBBitmapCore; ASizeOfPixel: Integer); virtual;
|
||||
constructor CreateFromData(AData: Pointer; AWidth, AHeight: Integer; ASizeOfPixel: Integer; ADataOwner: Boolean = False); virtual;
|
||||
constructor Create(AWidth, AHeight: integer; ASizeOfPixel: integer); virtual;
|
||||
constructor CreateAsCopy(ABitmap: TRGBBitmapCore; ASizeOfPixel: integer); virtual;
|
||||
constructor CreateFromData(AData: Pointer; AWidth, AHeight: integer;
|
||||
ASizeOfPixel: integer; ADataOwner: boolean = False); virtual;
|
||||
destructor Destroy; override;
|
||||
|
||||
procedure Assign(Source: TPersistent); override;
|
||||
procedure SwapWith(ABitmap: TRGBBitmapCore); virtual;
|
||||
public
|
||||
procedure Clear; virtual;
|
||||
procedure ClearWhite; virtual;
|
||||
procedure Invert; virtual;
|
||||
procedure Clear; override;
|
||||
procedure ClearWhite; override;
|
||||
procedure Invert; override;
|
||||
|
||||
procedure FlipHorz; virtual;
|
||||
procedure FlipVert; virtual;
|
||||
procedure Rotate90; virtual;
|
||||
procedure Rotate180; virtual;
|
||||
procedure Rotate270; virtual;
|
||||
procedure FlipHorz; override;
|
||||
procedure FlipVert; override;
|
||||
procedure Rotate90; override;
|
||||
procedure Rotate180; override;
|
||||
procedure Rotate270; override;
|
||||
public
|
||||
procedure SetColor(X, Y: Integer; Value: TColor);
|
||||
function GetColor(X, Y: Integer): TColor;
|
||||
procedure SetColor(X, Y: integer; Value: TColor);
|
||||
function GetColor(X, Y: integer): TColor;
|
||||
|
||||
procedure Fill(Color: TColor);
|
||||
procedure FillEllipse(X1, Y1, X2, Y2: Integer);
|
||||
procedure MaskFloodFill(X, Y: Integer);
|
||||
procedure FillEllipse(X1, Y1, X2, Y2: integer); override;
|
||||
procedure MaskFloodFill(X, Y: integer);
|
||||
// Alpha drawing methods
|
||||
procedure AlphaRectangle(X1, Y1, X2, Y2, AAlpha: Integer);
|
||||
procedure AlphaRectangle(X1, Y1, X2, Y2, AAlpha: integer);
|
||||
// Effect drawing methods
|
||||
procedure FuzzyRectangle(X1, Y1, X2, Y2: Integer);
|
||||
procedure FuzzyRectangle(X1, Y1, X2, Y2: integer);
|
||||
public
|
||||
procedure DrawTo(ACanvas: TCanvas; X, Y: Integer);
|
||||
procedure StretchDrawTo(ACanvas: TCanvas; DstX, DstY, DstWidth, DstHeight: Integer);
|
||||
procedure DrawTo(ACanvas: TCanvas; X, Y: integer);
|
||||
procedure StretchDrawTo(ACanvas: TCanvas; DstX, DstY, DstWidth, DstHeight: integer);
|
||||
|
||||
property EraseMode: TEraseMode read FEraseMode write FEraseMode;
|
||||
property DrawMode: TDrawMode read FDrawMode write FDrawMode;
|
||||
property FloodFillTolerance: TPixelDifference read FFloodFillTolerance
|
||||
write FFloodFillTolerance;
|
||||
property FloodFillTolerance: TPixelDifference
|
||||
read FFloodFillTolerance write FFloodFillTolerance;
|
||||
|
||||
property Width;
|
||||
property Height;
|
||||
|
||||
property FillColor: TColor read GetFillColor write SetFillColor;
|
||||
property OutlineColor: TColor read GetOutlineColor write SetOutlineColor;
|
||||
property PaperColor: TColor read GetPaperColor write SetPaperColor;
|
||||
|
||||
property RandomEnabled: Boolean read FRandomEnabled write FRandomEnabled;
|
||||
property RandomEnabled: boolean read FRandomEnabled write FRandomEnabled;
|
||||
property RandomDensity: TRandomDensity read FRandomDensity write FRandomDensity;
|
||||
|
||||
property RectangleRoundness: Integer read FRectangleRoundness write FRectangleRoundness;
|
||||
property DataOwner: Boolean read FDataOwner;
|
||||
property Size: Integer read GetSize;
|
||||
property SizeOfPixel: Integer read FSizeOfPixel;
|
||||
property RectangleRoundness: integer read FRectangleRoundness
|
||||
write FRectangleRoundness;
|
||||
property DataOwner: boolean read FDataOwner;
|
||||
property Size: integer read GetSize;
|
||||
property SizeOfPixel: integer read FSizeOfPixel;
|
||||
end;
|
||||
|
||||
{ TRGB8BitmapCore }
|
||||
|
||||
TRGB8BitmapCore = class(TRGBBitmapCore)
|
||||
public
|
||||
constructor Create(AWidth, AHeight: Integer); virtual;
|
||||
constructor Create(AWidth, AHeight: integer); virtual;
|
||||
constructor CreateAsCopy(ABitmap: TRGBBitmapCore); virtual;
|
||||
constructor CreateFromData(AData: Pointer; AWidth, AHeight: Integer; ADataOwner: Boolean = False); virtual;
|
||||
constructor CreateFromData(AData: Pointer; AWidth, AHeight: integer;
|
||||
ADataOwner: boolean = False); virtual;
|
||||
|
||||
procedure LoadFromLazIntfImageAlpha(AImage: TLazIntfImage); virtual;
|
||||
procedure SaveToLazIntfImageAlpha(AImage: TLazIntfImage); virtual;
|
||||
procedure SaveToLazIntfImageAlpha(AImage: TLazIntfImage; const ARect: TRect); virtual;
|
||||
procedure SaveToLazIntfImageAlpha(AImage: TLazIntfImage;
|
||||
const ARect: TRect); virtual;
|
||||
|
||||
procedure Assign(Source: TPersistent); override;
|
||||
procedure SwapWith(ABitmap: TRGBBitmapCore); override;
|
||||
@ -176,10 +172,11 @@ type
|
||||
TRGB32BitmapCore = class(TRGBBitmapCore)
|
||||
private
|
||||
public
|
||||
constructor Create(AWidth, AHeight: Integer); virtual;
|
||||
constructor Create(AWidth, AHeight: integer); virtual;
|
||||
constructor CreateAsCopy(ABitmap: TRGBBitmapCore); virtual;
|
||||
constructor CreateFromLazIntfImage(AImage: TLazIntfImage); virtual;
|
||||
constructor CreateFromData(AData: Pointer; AWidth, AHeight: Integer; ADataOwner: Boolean = False); virtual;
|
||||
constructor CreateFromData(AData: Pointer; AWidth, AHeight: integer;
|
||||
ADataOwner: boolean = False); virtual;
|
||||
destructor Destroy; override;
|
||||
procedure Assign(Source: TPersistent); override;
|
||||
procedure SwapWith(ABitmap: TRGBBitmapCore); override;
|
||||
@ -193,7 +190,7 @@ type
|
||||
procedure FlipVertRGBBitmap(Bitmap: TRGBBitmapCore);
|
||||
|
||||
// intensity tables
|
||||
function GetIntensityFloatTable(A, B: Single): TIntensityFloatTable;
|
||||
function GetIntensityFloatTable(A, B: single): TIntensityFloatTable;
|
||||
|
||||
// rotate clockwise
|
||||
procedure Rotate90CWRGBBitmap(Bitmap: TRGBBitmapCore);
|
||||
@ -208,13 +205,15 @@ implementation
|
||||
|
||||
uses BmpRGBGraph;
|
||||
|
||||
function AbsByte(Src: Integer): Byte; inline;
|
||||
function AbsByte(Src: integer): byte; inline;
|
||||
begin
|
||||
if Src >= 0 then Result := Src
|
||||
else Result := -Src;
|
||||
if Src >= 0 then
|
||||
Result := Src
|
||||
else
|
||||
Result := -Src;
|
||||
end;
|
||||
|
||||
function RoundIntensityFloatInline(V: TIntensityFloat): Byte; inline;
|
||||
function RoundIntensityFloatInline(V: TIntensityFloat): byte; inline;
|
||||
begin
|
||||
Result := Max(0, Min(255, (V + 128) shr 8));
|
||||
end;
|
||||
@ -223,10 +222,10 @@ end;
|
||||
Creates look-up table T[I = 0..255] = A + I * B.
|
||||
*)
|
||||
|
||||
function GetIntensityFloatTable(A, B: Single): TIntensityFloatTable;
|
||||
function GetIntensityFloatTable(A, B: single): TIntensityFloatTable;
|
||||
var
|
||||
I: Integer;
|
||||
C: Single;
|
||||
I: integer;
|
||||
C: single;
|
||||
begin
|
||||
C := A;
|
||||
for I := 0 to High(Result) do
|
||||
@ -278,12 +277,12 @@ end;
|
||||
|
||||
{ TRGBBitmapCore }
|
||||
|
||||
function TRGBBitmapCore.GetSize: Integer;
|
||||
function TRGBBitmapCore.GetSize: integer;
|
||||
begin
|
||||
|
||||
end;
|
||||
|
||||
constructor TRGBBitmapCore.Create(AWidth, AHeight: Integer; ASizeOfPixel: Integer);
|
||||
constructor TRGBBitmapCore.Create(AWidth, AHeight: integer; ASizeOfPixel: integer);
|
||||
begin
|
||||
inherited Create;
|
||||
|
||||
@ -301,7 +300,7 @@ begin
|
||||
FRectangleRoundness := 0;
|
||||
end;
|
||||
|
||||
constructor TRGBBitmapCore.CreateAsCopy(ABitmap: TRGBBitmapCore; ASizeOfPixel: Integer);
|
||||
constructor TRGBBitmapCore.CreateAsCopy(ABitmap: TRGBBitmapCore; ASizeOfPixel: integer);
|
||||
begin
|
||||
inherited Create;
|
||||
|
||||
@ -312,8 +311,8 @@ begin
|
||||
FDataOwner := True;
|
||||
end;
|
||||
|
||||
constructor TRGBBitmapCore.CreateFromData(AData: Pointer; AWidth, AHeight: Integer;
|
||||
ASizeOfPixel: Integer; ADataOwner: Boolean);
|
||||
constructor TRGBBitmapCore.CreateFromData(AData: Pointer; AWidth, AHeight: integer;
|
||||
ASizeOfPixel: integer; ADataOwner: boolean);
|
||||
begin
|
||||
inherited Create;
|
||||
|
||||
@ -333,8 +332,10 @@ end;
|
||||
|
||||
procedure TRGBBitmapCore.Assign(Source: TPersistent);
|
||||
begin
|
||||
if Source = nil then Exit;
|
||||
if Source = Self then Exit;
|
||||
if Source = nil then
|
||||
Exit;
|
||||
if Source = Self then
|
||||
Exit;
|
||||
if Source is TRGBBitmapCore then
|
||||
begin
|
||||
Width := (Source as TRGBBitmapCore).Width;
|
||||
@ -347,7 +348,8 @@ end;
|
||||
|
||||
procedure TRGBBitmapCore.SwapWith(ABitmap: TRGBBitmapCore);
|
||||
begin
|
||||
if ABitmap = nil then Exit;
|
||||
if ABitmap = nil then
|
||||
Exit;
|
||||
SwapInt(Width, ABitmap.Width);
|
||||
SwapInt(Height, ABitmap.Height);
|
||||
SwapInt(FRowPixelStride, ABitmap.FRowPixelStride);
|
||||
@ -356,131 +358,103 @@ end;
|
||||
|
||||
procedure TRGBBitmapCore.Clear;
|
||||
begin
|
||||
|
||||
inherited;
|
||||
end;
|
||||
|
||||
procedure TRGBBitmapCore.ClearWhite;
|
||||
begin
|
||||
|
||||
inherited;
|
||||
end;
|
||||
|
||||
procedure TRGBBitmapCore.Invert;
|
||||
begin
|
||||
|
||||
inherited;
|
||||
end;
|
||||
|
||||
procedure TRGBBitmapCore.FlipHorz;
|
||||
begin
|
||||
|
||||
inherited;
|
||||
end;
|
||||
|
||||
procedure TRGBBitmapCore.FlipVert;
|
||||
begin
|
||||
|
||||
inherited;
|
||||
end;
|
||||
|
||||
procedure TRGBBitmapCore.Rotate90;
|
||||
begin
|
||||
|
||||
inherited;
|
||||
end;
|
||||
|
||||
procedure TRGBBitmapCore.Rotate180;
|
||||
begin
|
||||
|
||||
inherited;
|
||||
end;
|
||||
|
||||
procedure TRGBBitmapCore.Rotate270;
|
||||
begin
|
||||
|
||||
inherited;
|
||||
end;
|
||||
|
||||
procedure TRGBBitmapCore.SetColor(X, Y: Integer; Value: TColor);
|
||||
procedure TRGBBitmapCore.SetColor(X, Y: integer; Value: TColor);
|
||||
begin
|
||||
Canvas.Pixels[X, Y] := Value;
|
||||
end;
|
||||
|
||||
function TRGBBitmapCore.GetColor(X, Y: Integer): TColor;
|
||||
function TRGBBitmapCore.GetColor(X, Y: integer): TColor;
|
||||
begin
|
||||
if (X > 0) and (X < Width) and (Y > 0) and (Y < Height) then Result := Canvas.Pixels[X, Y]
|
||||
else Result := clNone;
|
||||
if (X > 0) and (X < Width) and (Y > 0) and (Y < Height) then
|
||||
Result := Canvas.Pixels[X, Y]
|
||||
else
|
||||
Result := clNone;
|
||||
end;
|
||||
|
||||
function TRGBBitmapCore.GetFillColor: TColor;
|
||||
begin
|
||||
Result := FFillColor;
|
||||
end;
|
||||
|
||||
function TRGBBitmapCore.GetOutlineColor: TColor;
|
||||
begin
|
||||
Result := FOutlineColor;
|
||||
end;
|
||||
|
||||
function TRGBBitmapCore.GetPaperColor: TColor;
|
||||
begin
|
||||
Result := FPaperColor;
|
||||
end;
|
||||
|
||||
procedure TRGBBitmapCore.SetFillColor(const AValue: TColor);
|
||||
begin
|
||||
FFillColor := AValue;
|
||||
end;
|
||||
|
||||
procedure TRGBBitmapCore.SetOutlineColor(const AValue: TColor);
|
||||
begin
|
||||
FOutlineColor := AValue;
|
||||
end;
|
||||
|
||||
procedure TRGBBitmapCore.SetPaperColor(const AValue: TColor);
|
||||
begin
|
||||
FPaperColor := AValue;
|
||||
end;
|
||||
|
||||
function TRGBBitmapCore.PixelMasked(X, Y: Integer): Boolean;
|
||||
function TRGBBitmapCore.PixelMasked(X, Y: integer): boolean;
|
||||
begin
|
||||
|
||||
end;
|
||||
|
||||
procedure TRGBBitmapCore.DrawOutlinePixel(X, Y: Integer);
|
||||
procedure TRGBBitmapCore.DrawOutlinePixel(X, Y: integer);
|
||||
begin
|
||||
|
||||
end;
|
||||
|
||||
procedure TRGBBitmapCore.DrawFillPixel(X, Y: Integer);
|
||||
procedure TRGBBitmapCore.DrawFillPixel(X, Y: integer);
|
||||
begin
|
||||
|
||||
end;
|
||||
|
||||
procedure TRGBBitmapCore.DrawPaperPixel(X, Y: Integer);
|
||||
procedure TRGBBitmapCore.DrawPaperPixel(X, Y: integer);
|
||||
begin
|
||||
|
||||
end;
|
||||
|
||||
procedure TRGBBitmapCore.DrawReplacePixel(X, Y: Integer);
|
||||
procedure TRGBBitmapCore.DrawReplacePixel(X, Y: integer);
|
||||
begin
|
||||
|
||||
end;
|
||||
|
||||
procedure TRGBBitmapCore.DrawRandomOutlinePixel(X, Y: Integer);
|
||||
procedure TRGBBitmapCore.DrawRandomOutlinePixel(X, Y: integer);
|
||||
begin
|
||||
if PixelMasked(X, Y) and (Random(MAXRANDOMDENSITY) < FRandomDensity) then
|
||||
if PixelMasked(X, Y) and (Random(MAXRANDOMDENSITY) < FRandomDensity) then;
|
||||
|
||||
end;
|
||||
|
||||
procedure TRGBBitmapCore.DrawRandomFillPixel(X, Y: Integer);
|
||||
procedure TRGBBitmapCore.DrawRandomFillPixel(X, Y: integer);
|
||||
begin
|
||||
if PixelMasked(X, Y) and (Random(MAXRANDOMDENSITY) < FRandomDensity) then
|
||||
if PixelMasked(X, Y) and (Random(MAXRANDOMDENSITY) < FRandomDensity) then;
|
||||
|
||||
end;
|
||||
|
||||
procedure TRGBBitmapCore.DrawRandomPaperPixel(X, Y: Integer);
|
||||
procedure TRGBBitmapCore.DrawRandomPaperPixel(X, Y: integer);
|
||||
begin
|
||||
if PixelMasked(X, Y) and (Random(MAXRANDOMDENSITY) < FRandomDensity) then
|
||||
if PixelMasked(X, Y) and (Random(MAXRANDOMDENSITY) < FRandomDensity) then;
|
||||
|
||||
end;
|
||||
|
||||
procedure TRGBBitmapCore.DrawEmptyPixel(X, Y: Integer);
|
||||
procedure TRGBBitmapCore.DrawEmptyPixel(X, Y: integer);
|
||||
begin
|
||||
//
|
||||
|
||||
end;
|
||||
|
||||
function TRGBBitmapCore.GetOutlineProcedure: TDrawPixelProcedure;
|
||||
@ -539,19 +513,18 @@ end;
|
||||
|
||||
procedure TRGBBitmapCore.Fill(Color: TColor);
|
||||
var
|
||||
I, J: Integer;
|
||||
I, J: integer;
|
||||
begin
|
||||
Canvas.Brush.Color := Color;
|
||||
Canvas.FillRect(Rect(0, 0, Width, Height));
|
||||
end;
|
||||
|
||||
procedure TRGBBitmapCore.FillEllipse(X1, Y1, X2, Y2: Integer);
|
||||
procedure TRGBBitmapCore.FillEllipse(X1, Y1, X2, Y2: integer);
|
||||
begin
|
||||
Canvas.Brush.Color := clRed;
|
||||
Canvas.FillRect(Rect(0, 0, Width, Height));
|
||||
inherited;
|
||||
end;
|
||||
|
||||
procedure TRGBBitmapCore.MaskFloodFill(X, Y: Integer);
|
||||
procedure TRGBBitmapCore.MaskFloodFill(X, Y: integer);
|
||||
begin
|
||||
Canvas.Brush.Color := clBlack;
|
||||
Canvas.FillRect(Rect(0, 0, Width, Height));
|
||||
@ -559,11 +532,11 @@ end;
|
||||
|
||||
// AAlpha is the alpha of the rectangle, ranging from
|
||||
// 0 - fully transparent to 100 - fully opaque
|
||||
procedure TRGBBitmapCore.AlphaRectangle(X1, Y1, X2, Y2, AAlpha: Integer);
|
||||
procedure TRGBBitmapCore.AlphaRectangle(X1, Y1, X2, Y2, AAlpha: integer);
|
||||
var
|
||||
OldColor, NewColor: Integer;
|
||||
X, Y: LongInt;
|
||||
OldR, OldG, OldB, NewR, NewG, NewB: Byte;
|
||||
OldColor, NewColor: integer;
|
||||
X, Y: longint;
|
||||
OldR, OldG, OldB, NewR, NewG, NewB: byte;
|
||||
begin
|
||||
// If the rectangle is fully opaque this is the same as a normal rectangle
|
||||
if AAlpha = 100 then
|
||||
@ -573,7 +546,8 @@ begin
|
||||
end;
|
||||
|
||||
// if it is fully transparent there is nothing to draw
|
||||
if AAlpha = 0 then Exit;
|
||||
if AAlpha = 0 then
|
||||
Exit;
|
||||
|
||||
// A partially transparent rectangle
|
||||
for Y := Y1 to Y2 do
|
||||
@ -590,10 +564,10 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TRGBBitmapCore.FuzzyRectangle(X1, Y1, X2, Y2: Integer);
|
||||
procedure TRGBBitmapCore.FuzzyRectangle(X1, Y1, X2, Y2: integer);
|
||||
var
|
||||
X, Y: LongInt;
|
||||
deltaX, deltaY: Integer;
|
||||
X, Y: longint;
|
||||
deltaX, deltaY: integer;
|
||||
begin
|
||||
for Y := Y1 to Y2 do
|
||||
for X := X1 to X2 do
|
||||
@ -604,22 +578,24 @@ begin
|
||||
deltaY := deltaX;
|
||||
|
||||
// Makes sure we won't get any invalid pixel positions
|
||||
if X < 5 then deltaX := -deltaX;
|
||||
if Y < 5 then deltaY := -deltaY;
|
||||
if X < 5 then
|
||||
deltaX := -deltaX;
|
||||
if Y < 5 then
|
||||
deltaY := -deltaY;
|
||||
|
||||
// Change the color
|
||||
SetColor(X, Y, GetColor(X - deltaX, Y - deltaY));
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TRGBBitmapCore.DrawTo(ACanvas: TCanvas; X, Y: Integer);
|
||||
procedure TRGBBitmapCore.DrawTo(ACanvas: TCanvas; X, Y: integer);
|
||||
begin
|
||||
if ACanvas <> nil then
|
||||
ACanvas.Draw(X, Y, Self);
|
||||
end;
|
||||
|
||||
procedure TRGBBitmapCore.StretchDrawTo(ACanvas: TCanvas; DstX, DstY, DstWidth,
|
||||
DstHeight: Integer);
|
||||
procedure TRGBBitmapCore.StretchDrawTo(ACanvas: TCanvas;
|
||||
DstX, DstY, DstWidth, DstHeight: integer);
|
||||
begin
|
||||
if ACanvas <> nil then
|
||||
ACanvas.StretchDraw(Rect(DstX, DstY, DstWidth, DstHeight), Self);
|
||||
@ -627,7 +603,7 @@ end;
|
||||
|
||||
{ TRGB32BitmapCore }
|
||||
|
||||
constructor TRGB32BitmapCore.Create(AWidth, AHeight: Integer);
|
||||
constructor TRGB32BitmapCore.Create(AWidth, AHeight: integer);
|
||||
begin
|
||||
inherited Create(AWidth, AHeight, 1);
|
||||
end;
|
||||
@ -640,7 +616,7 @@ end;
|
||||
|
||||
constructor TRGB32BitmapCore.CreateFromLazIntfImage(AImage: TLazIntfImage);
|
||||
var
|
||||
I, J: Integer;
|
||||
I, J: integer;
|
||||
begin
|
||||
Create(AImage.Width, AImage.Height);
|
||||
|
||||
@ -650,8 +626,8 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
constructor TRGB32BitmapCore.CreateFromData(AData: Pointer; AWidth, AHeight: Integer;
|
||||
ADataOwner: Boolean);
|
||||
constructor TRGB32BitmapCore.CreateFromData(AData: Pointer;
|
||||
AWidth, AHeight: integer; ADataOwner: boolean);
|
||||
begin
|
||||
inherited CreateFromData(AData, AWidth, AHeight, 0, ADataOwner);
|
||||
end;
|
||||
@ -675,8 +651,8 @@ end;
|
||||
|
||||
procedure TRGB32BitmapCore.SaveToLazIntfImage(AImage: TLazIntfImage; const ARect: TRect);
|
||||
var
|
||||
I, J: Integer;
|
||||
W, H: Integer;
|
||||
I, J: integer;
|
||||
W, H: integer;
|
||||
begin
|
||||
W := ARect.Right - ARect.Left;
|
||||
H := ARect.Bottom - ARect.Top;
|
||||
@ -688,7 +664,6 @@ begin
|
||||
for I := 0 to Pred(W) do
|
||||
begin
|
||||
|
||||
|
||||
end;
|
||||
end;
|
||||
except
|
||||
@ -703,7 +678,7 @@ end;
|
||||
|
||||
{ TRGB8BitmapCore }
|
||||
|
||||
constructor TRGB8BitmapCore.Create(AWidth, AHeight: Integer);
|
||||
constructor TRGB8BitmapCore.Create(AWidth, AHeight: integer);
|
||||
begin
|
||||
inherited Create(AWidth, AHeight, 1);
|
||||
end;
|
||||
@ -714,15 +689,15 @@ begin
|
||||
inherited CreateAsCopy(ABitmap, 1);
|
||||
end;
|
||||
|
||||
constructor TRGB8BitmapCore.CreateFromData(AData: Pointer; AWidth, AHeight: Integer;
|
||||
ADataOwner: Boolean);
|
||||
constructor TRGB8BitmapCore.CreateFromData(AData: Pointer;
|
||||
AWidth, AHeight: integer; ADataOwner: boolean);
|
||||
begin
|
||||
inherited CreateFromData(AData, AWidth, AHeight, 0, ADataOwner);
|
||||
end;
|
||||
|
||||
procedure TRGB8BitmapCore.LoadFromLazIntfImageAlpha(AImage: TLazIntfImage);
|
||||
var
|
||||
I, J: Integer;
|
||||
I, J: integer;
|
||||
begin
|
||||
for J := 0 to Pred(Height) do
|
||||
begin
|
||||
@ -741,7 +716,7 @@ end;
|
||||
procedure TRGB8BitmapCore.SaveToLazIntfImageAlpha(AImage: TLazIntfImage;
|
||||
const ARect: TRect);
|
||||
var
|
||||
I, J: Integer;
|
||||
I, J: integer;
|
||||
F: TFPColor;
|
||||
begin
|
||||
for J := 0 to Pred(AImage.Height) do
|
||||
|
Reference in New Issue
Block a user