You've already forked lazarus-ccr
button + and - updated.
RoundRectagle works. add the Brightness,etc function to TDLBitmap. git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@1585 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -16,11 +16,7 @@ type
|
|||||||
rgbtAlpha: byte;
|
rgbtAlpha: byte;
|
||||||
end;
|
end;
|
||||||
PRGBATriple = ^TRGBATriple;
|
PRGBATriple = ^TRGBATriple;
|
||||||
{$ifdef MSWINDOWS}
|
|
||||||
TRGBATriple = tagRGBTRIPLE;
|
|
||||||
{$else}
|
|
||||||
TRGBATriple = tagRGBATRIPLE;
|
TRGBATriple = tagRGBATRIPLE;
|
||||||
{$endif}
|
|
||||||
PRGBATripleArray = ^TRGBATripleArray;
|
PRGBATripleArray = ^TRGBATripleArray;
|
||||||
TRGBATripleArray = array[word] of TRGBATriple;
|
TRGBATripleArray = array[word] of TRGBATriple;
|
||||||
|
|
||||||
@ -56,6 +52,9 @@ type
|
|||||||
procedure Rotate90; virtual;
|
procedure Rotate90; virtual;
|
||||||
procedure Rotate180; virtual;
|
procedure Rotate180; virtual;
|
||||||
procedure Rotate270; virtual;
|
procedure Rotate270; virtual;
|
||||||
|
procedure RGBDelta(RedChange, GreenChange, BlueChange: integer);
|
||||||
|
procedure Brightness(ValueChange: integer);
|
||||||
|
procedure Contrast(ValueChange: integer);
|
||||||
property ScanLine[Row: integer]: pRGBATriple read GetScanLine;
|
property ScanLine[Row: integer]: pRGBATriple read GetScanLine;
|
||||||
procedure FillEllipse(X1, Y1, X2, Y2: integer); virtual;
|
procedure FillEllipse(X1, Y1, X2, Y2: integer); virtual;
|
||||||
procedure CutToClipboard; virtual;
|
procedure CutToClipboard; virtual;
|
||||||
@ -76,362 +75,22 @@ function RotateBitmap(Bitmap: TDLBitmap; Angle: integer; BackColor: TColor): TDL
|
|||||||
function BitmapFlip(const Vertical: boolean; const Horizontal: boolean;
|
function BitmapFlip(const Vertical: boolean; const Horizontal: boolean;
|
||||||
var BitmapIn: TDLBitmap; out BitmapOut: TDLBitmap): boolean;
|
var BitmapIn: TDLBitmap; out BitmapOut: TDLBitmap): boolean;
|
||||||
procedure InvertBitmap(aBitmap: TDLBitmap);
|
procedure InvertBitmap(aBitmap: TDLBitmap);
|
||||||
|
procedure ChangeRGB(SrcBmp: TDLBitmap; RedChange, GreenChange, BlueChange: integer);
|
||||||
|
procedure ChangeBrightness(SrcBmp: TDLBitmap; ValueChange: integer);
|
||||||
|
procedure ChangeContrast(SrcBmp: TDLBitmap; ValueChange: integer);
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
procedure LazBMPRotate90(const aBitmap: TDLBitmap; IsTurnRight: boolean);
|
{$I DLBmpUtils.inc}
|
||||||
var
|
|
||||||
i, j: integer;
|
|
||||||
rowIn, rowOut: PRGBATripleArray;
|
|
||||||
Bmp: TDLBitmap;
|
|
||||||
Width, Height: integer;
|
|
||||||
IntfImg1, IntfImg2: TLazIntfImage;
|
|
||||||
ImgHandle, ImgMaskHandle: HBitmap;
|
|
||||||
begin
|
|
||||||
Bmp := TDLBitmap.Create;
|
|
||||||
Bmp.Width := aBitmap.Height;
|
|
||||||
Bmp.Height := aBitmap.Width;
|
|
||||||
Bmp.PixelFormat := pf24bit;
|
|
||||||
IntfImg1 := TLazIntfImage.Create(0, 0);
|
|
||||||
IntfImg1.LoadFromBitmap(Bmp.Handle, Bmp.MaskHandle);
|
|
||||||
IntfImg2 := TLazIntfImage.Create(0, 0);
|
|
||||||
IntfImg2.LoadFromBitmap(aBitmap.Handle, aBitmap.MaskHandle);
|
|
||||||
Width := aBitmap.Width - 1;
|
|
||||||
Height := aBitmap.Height - 1;
|
|
||||||
for j := 0 to Height do
|
|
||||||
begin
|
|
||||||
rowIn := IntfImg2.GetDataLineStart(j);
|
|
||||||
for i := 0 to Width do
|
|
||||||
begin
|
|
||||||
rowOut := IntfImg1.GetDataLineStart(i);
|
|
||||||
if IsTurnRight then
|
|
||||||
rowOut^[Height - j] := rowIn^[i]
|
|
||||||
else
|
|
||||||
rowOut^[j] := rowIn^[Width - i];
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
IntfImg1.CreateBitmaps(ImgHandle, ImgMaskHandle, False);
|
|
||||||
Bmp.Handle := ImgHandle;
|
|
||||||
Bmp.MaskHandle := ImgMaskHandle;
|
|
||||||
IntfImg1.Free;
|
|
||||||
IntfImg2.Free;
|
|
||||||
aBitmap.Assign(Bmp);
|
|
||||||
Bmp.Free;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure BMPRotate90(const Bitmap: TDLBitmap);
|
|
||||||
var
|
|
||||||
i, j: integer;
|
|
||||||
rowIn, rowOut: pRGBATriple;
|
|
||||||
Bmp: TDLBitmap;
|
|
||||||
Width, Height: integer;
|
|
||||||
begin
|
|
||||||
Bmp := TDLBitmap.Create;
|
|
||||||
Bmp.Width := Bitmap.Height;
|
|
||||||
Bmp.Height := Bitmap.Width;
|
|
||||||
Width := Bitmap.Width - 1;
|
|
||||||
Height := Bitmap.Height - 1;
|
|
||||||
for j := 0 to Height do
|
|
||||||
begin
|
|
||||||
rowIn := Bitmap.ScanLine[j];
|
|
||||||
for i := 0 to Width do
|
|
||||||
begin
|
|
||||||
rowOut := Bmp.ScanLine[i];
|
|
||||||
rowOut[Height - j] := rowIn[i];
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
Bmp.InvalidateScanLine;
|
|
||||||
Bitmap.Assign(Bmp);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure BMPRotate180(const Bitmap: TDLBitmap);
|
|
||||||
var
|
|
||||||
i, j: integer;
|
|
||||||
rowIn, rowOut: pRGBATriple;
|
|
||||||
Bmp: TDLBitmap;
|
|
||||||
Width, Height: integer;
|
|
||||||
begin
|
|
||||||
Bmp := TDLBitmap.Create;
|
|
||||||
Bmp.Width := Bitmap.Width;
|
|
||||||
Bmp.Height := Bitmap.Height;
|
|
||||||
Width := Bitmap.Width - 1;
|
|
||||||
Height := Bitmap.Height - 1;
|
|
||||||
for j := 0 to Height do
|
|
||||||
begin
|
|
||||||
rowIn := Bitmap.ScanLine[j];
|
|
||||||
for i := 0 to Width do
|
|
||||||
begin
|
|
||||||
rowOut := Bmp.ScanLine[Height - j];
|
|
||||||
Inc(rowOut, Width - i);
|
|
||||||
rowOut^ := rowIn^;
|
|
||||||
Inc(rowIn);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
Bmp.InvalidateScanLine;
|
|
||||||
Bitmap.InvalidateScanLine;
|
|
||||||
Bitmap.Assign(Bmp);
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure BMPRotate270(const Bitmap: TDLBitmap);
|
|
||||||
var
|
|
||||||
i, j: integer;
|
|
||||||
rowIn, rowOut: pRGBATriple;
|
|
||||||
Bmp: TDLBitmap;
|
|
||||||
Width, Height: integer;
|
|
||||||
begin
|
|
||||||
Bmp := TDLBitmap.Create;
|
|
||||||
Bmp.Width := Bitmap.Height;
|
|
||||||
Bmp.Height := Bitmap.Width;
|
|
||||||
Width := Bitmap.Width - 1;
|
|
||||||
Height := Bitmap.Height - 1;
|
|
||||||
for j := 0 to Height do
|
|
||||||
begin
|
|
||||||
rowIn := Bitmap.ScanLine[j];
|
|
||||||
for i := 0 to Width do
|
|
||||||
begin
|
|
||||||
rowOut := Bmp.ScanLine[Width - i];
|
|
||||||
Inc(rowOut, j);
|
|
||||||
rowOut^ := rowIn^;
|
|
||||||
Inc(rowIn);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
Bmp.InvalidateScanLine;
|
|
||||||
Bitmap.Assign(Bmp);
|
|
||||||
end;
|
|
||||||
|
|
||||||
function RotateBitmap(Bitmap: TDLBitmap; Angle: integer; BackColor: TColor): TDLBitmap;
|
|
||||||
var
|
|
||||||
i, j, iOriginal, jOriginal, CosPoint, SinPoint: integer;
|
|
||||||
RowOriginal, RowRotated: pRGBATriple;
|
|
||||||
SinTheta, CosTheta: extended;
|
|
||||||
AngleAdd: integer;
|
|
||||||
begin
|
|
||||||
Result := TDLBitmap.Create;
|
|
||||||
Result.Canvas.Brush.Color := BackColor;
|
|
||||||
Angle := Angle mod 360;
|
|
||||||
if Angle < 0 then
|
|
||||||
Angle := 360 - Abs(Angle);
|
|
||||||
if Angle = 0 then
|
|
||||||
Result.Assign(Bitmap)
|
|
||||||
else if Angle = 90 then
|
|
||||||
begin
|
|
||||||
Result.Assign(Bitmap);
|
|
||||||
BMPRotate90(Result);
|
|
||||||
end
|
|
||||||
else if (Angle > 90) and (Angle < 180) then
|
|
||||||
begin
|
|
||||||
AngleAdd := 90;
|
|
||||||
Angle := Angle - AngleAdd;
|
|
||||||
end
|
|
||||||
else if Angle = 180 then
|
|
||||||
begin
|
|
||||||
Result.Assign(Bitmap);
|
|
||||||
BMPRotate180(Result);
|
|
||||||
end
|
|
||||||
else if (Angle > 180) and (Angle < 270) then
|
|
||||||
begin
|
|
||||||
AngleAdd := 180;
|
|
||||||
Angle := Angle - AngleAdd;
|
|
||||||
end
|
|
||||||
else if Angle = 270 then
|
|
||||||
begin
|
|
||||||
Result.Assign(Bitmap);
|
|
||||||
BMPRotate270(Result);
|
|
||||||
end
|
|
||||||
else if (Angle > 270) and (Angle < 360) then
|
|
||||||
begin
|
|
||||||
AngleAdd := 270;
|
|
||||||
Angle := Angle - AngleAdd;
|
|
||||||
end
|
|
||||||
else
|
|
||||||
AngleAdd := 0;
|
|
||||||
if (Angle > 0) and (Angle < 90) then
|
|
||||||
begin
|
|
||||||
SinCos((Angle + AngleAdd) * Pi / 180, SinTheta, CosTheta);
|
|
||||||
if (SinTheta * CosTheta) < 0 then
|
|
||||||
begin
|
|
||||||
Result.Width := Round(Abs(Bitmap.Width * CosTheta - Bitmap.Height * SinTheta));
|
|
||||||
Result.Height := Round(Abs(Bitmap.Width * SinTheta - Bitmap.Height * CosTheta));
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
Result.Width := Round(Abs(Bitmap.Width * CosTheta + Bitmap.Height * SinTheta));
|
|
||||||
Result.Height := Round(Abs(Bitmap.Width * SinTheta + Bitmap.Height * CosTheta));
|
|
||||||
end;
|
|
||||||
CosTheta := Abs(CosTheta);
|
|
||||||
SinTheta := Abs(SinTheta);
|
|
||||||
if (AngleAdd = 0) or (AngleAdd = 180) then
|
|
||||||
begin
|
|
||||||
CosPoint := Round(Bitmap.Height * CosTheta);
|
|
||||||
SinPoint := Round(Bitmap.Height * SinTheta);
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
SinPoint := Round(Bitmap.Width * CosTheta);
|
|
||||||
CosPoint := Round(Bitmap.Width * SinTheta);
|
|
||||||
end;
|
|
||||||
for j := 0 to Result.Height - 1 do
|
|
||||||
begin
|
|
||||||
RowRotated := Result.Scanline[j];
|
|
||||||
for i := 0 to Result.Width - 1 do
|
|
||||||
begin
|
|
||||||
case AngleAdd of
|
|
||||||
0:
|
|
||||||
begin
|
|
||||||
jOriginal := Round((j + 1) * CosTheta - (i + 1 - SinPoint) * SinTheta) - 1;
|
|
||||||
iOriginal := Round((i + 1) * CosTheta - (CosPoint - j - 1) * SinTheta) - 1;
|
|
||||||
end;
|
|
||||||
90:
|
|
||||||
begin
|
|
||||||
iOriginal := Round((j + 1) * SinTheta - (i + 1 - SinPoint) * CosTheta) - 1;
|
|
||||||
jOriginal := Bitmap.Height - Round((i + 1) * SinTheta -
|
|
||||||
(CosPoint - j - 1) * CosTheta);
|
|
||||||
end;
|
|
||||||
180:
|
|
||||||
begin
|
|
||||||
jOriginal := Bitmap.Height - Round((j + 1) * CosTheta -
|
|
||||||
(i + 1 - SinPoint) * SinTheta);
|
|
||||||
iOriginal := Bitmap.Width - Round((i + 1) * CosTheta -
|
|
||||||
(CosPoint - j - 1) * SinTheta);
|
|
||||||
end;
|
|
||||||
270:
|
|
||||||
begin
|
|
||||||
iOriginal := Bitmap.Width - Round((j + 1) * SinTheta -
|
|
||||||
(i + 1 - SinPoint) * CosTheta);
|
|
||||||
jOriginal := Round((i + 1) * SinTheta - (CosPoint - j - 1) * CosTheta) - 1;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
if (iOriginal >= 0) and (iOriginal <= Bitmap.Width - 1) and
|
|
||||||
(jOriginal >= 0) and (jOriginal <= Bitmap.Height - 1) then
|
|
||||||
begin
|
|
||||||
RowOriginal := Bitmap.Scanline[jOriginal];
|
|
||||||
Inc(RowOriginal, iOriginal);
|
|
||||||
RowRotated^ := RowOriginal^;
|
|
||||||
Inc(RowRotated);
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
Inc(RowRotated);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
Result.InvalidateScanLine;
|
|
||||||
Bitmap.InvalidateScanLine;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure DrawSamePixel(ABitmap: TDLBitmap; Value: integer);
|
|
||||||
var
|
|
||||||
LNew: TRGBATriple;
|
|
||||||
LMinusRatio: real;
|
|
||||||
LScan: pRGBATriple;
|
|
||||||
i, j: integer;
|
|
||||||
begin
|
|
||||||
for i := 0 to ABitmap.Height - 1 do
|
|
||||||
begin
|
|
||||||
LScan := ABitmap.Scanline[i];
|
|
||||||
for j := 0 to ABitmap.Width - 1 do
|
|
||||||
begin
|
|
||||||
LNew := LScan[j];
|
|
||||||
LScan[j].rgbtBlue := LScan[j].rgbtBlue * Value div 100; //Value; //LNew.rgbtBlue;
|
|
||||||
LScan[j].rgbtGreen := LScan[j].rgbtGreen * Value div 100; //LNew.rgbtGreen;
|
|
||||||
LScan[j].rgbtRed := LScan[j].rgbtRed * Value div 100; //LNew.rgbtRed;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
ABitmap.InvalidateScanLine;
|
|
||||||
end;
|
|
||||||
|
|
||||||
function BitmapFlip(const Vertical: boolean; const Horizontal: boolean;
|
|
||||||
var BitmapIn: TDLBitmap; out BitmapOut: TDLBitmap): boolean;
|
|
||||||
var
|
|
||||||
DataIn: pRGBATriple;
|
|
||||||
DataOut: pRGBATriple;
|
|
||||||
inRow: integer;
|
|
||||||
inCol: integer;
|
|
||||||
begin
|
|
||||||
Result := False;
|
|
||||||
try
|
|
||||||
with BitmapOut do
|
|
||||||
begin
|
|
||||||
Width := BitmapIn.Width;
|
|
||||||
Height := BitmapIn.Height;
|
|
||||||
PixelFormat := BitmapIn.PixelFormat;
|
|
||||||
end;
|
|
||||||
for inRow := 0 to BitmapIn.Height - 1 do
|
|
||||||
begin
|
|
||||||
DataIn := BitmapIn.Scanline[inRow];
|
|
||||||
if Vertical then
|
|
||||||
begin
|
|
||||||
DataOut := BitmapOut.ScanLine[BitmapIn.Height - 1 - inRow];
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
DataOut := BitmapOut.ScanLine[inRow];
|
|
||||||
end;
|
|
||||||
if Horizontal then
|
|
||||||
begin
|
|
||||||
for inCol := 0 to BitmapIn.Width - 1 do
|
|
||||||
DataOut[inCol] := DataIn[BitmapIn.Width - 1 - inCol];
|
|
||||||
end
|
|
||||||
else
|
|
||||||
begin
|
|
||||||
for inCol := 0 to BitmapIn.Width - 1 do
|
|
||||||
DataOut[inCol] := DataIn[inCol];
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
Result := True;
|
|
||||||
BitmapOut.InvalidateScanLine;
|
|
||||||
except
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure InvertBitmap(aBitmap: TDLBitmap);
|
|
||||||
var
|
|
||||||
LNew: TRGBATriple;
|
|
||||||
LMinusRatio: real;
|
|
||||||
LScan: pRGBATriple;
|
|
||||||
i, j: integer;
|
|
||||||
begin
|
|
||||||
for i := 0 to ABitmap.Height - 1 do
|
|
||||||
begin
|
|
||||||
LScan := ABitmap.Scanline[i];
|
|
||||||
for j := 0 to ABitmap.Width - 1 do
|
|
||||||
begin
|
|
||||||
LNew := LScan[j];
|
|
||||||
LScan[j].rgbtBlue := not LScan[j].rgbtBlue;
|
|
||||||
LScan[j].rgbtGreen := not LScan[j].rgbtGreen;
|
|
||||||
LScan[j].rgbtRed := not LScan[j].rgbtRed;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
ABitmap.InvalidateScanLine;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure ConvertBitmapToGrayScale(const Bitmap: TDLBitmap);
|
|
||||||
var
|
|
||||||
X: integer;
|
|
||||||
Y: integer;
|
|
||||||
P: pRGBATriple;
|
|
||||||
Gray: byte;
|
|
||||||
begin
|
|
||||||
for Y := 0 to (Bitmap.Height - 1) do
|
|
||||||
begin
|
|
||||||
P := Bitmap.ScanLine[Y];
|
|
||||||
for X := 0 to (Bitmap.Width - 1) do
|
|
||||||
begin
|
|
||||||
Gray := Round(0.30 * P[X].rgbtBlue + 0.59 * P[X].rgbtGreen +
|
|
||||||
0.11 * P[X].rgbtRed);
|
|
||||||
P[X].rgbtRed := Gray;
|
|
||||||
P[X].rgbtGreen := Gray;
|
|
||||||
P[X].rgbtBlue := Gray;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
Bitmap.InvalidateScanLine;
|
|
||||||
end;
|
|
||||||
|
|
||||||
constructor TDLBitmap.Create;
|
constructor TDLBitmap.Create;
|
||||||
begin
|
begin
|
||||||
inherited;
|
inherited;
|
||||||
|
{$ifdef MSWINDOWS}
|
||||||
|
PixelFormat := pf32bit;
|
||||||
|
{$else}
|
||||||
PixelFormat := pf24bit;
|
PixelFormat := pf24bit;
|
||||||
|
{$endif}
|
||||||
FIntfImgA := TLazIntfImage.Create(0, 0);
|
FIntfImgA := TLazIntfImage.Create(0, 0);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -665,6 +324,45 @@ begin
|
|||||||
tmp.Free;
|
tmp.Free;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TDLBitmap.RGBDelta(RedChange, GreenChange, BlueChange: integer);
|
||||||
|
var
|
||||||
|
tmp: TDLBitmap;
|
||||||
|
begin
|
||||||
|
tmp := TDLBitmap.Create;
|
||||||
|
tmp.Width := Width;
|
||||||
|
tmp.Height := Height;
|
||||||
|
tmp.Canvas.Draw(0, 0, Self);
|
||||||
|
ChangeRGB(Tmp, RedChange, GreenChange, BlueChange);
|
||||||
|
Canvas.Draw(0, 0, tmp);
|
||||||
|
tmp.Free;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TDLBitmap.Brightness(ValueChange: integer);
|
||||||
|
var
|
||||||
|
tmp: TDLBitmap;
|
||||||
|
begin
|
||||||
|
tmp := TDLBitmap.Create;
|
||||||
|
tmp.Width := Width;
|
||||||
|
tmp.Height := Height;
|
||||||
|
tmp.Canvas.Draw(0, 0, Self);
|
||||||
|
ChangeBrightness(Tmp, ValueChange);
|
||||||
|
Canvas.Draw(0, 0, tmp);
|
||||||
|
tmp.Free;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TDLBitmap.Contrast(ValueChange: integer);
|
||||||
|
var
|
||||||
|
tmp: TDLBitmap;
|
||||||
|
begin
|
||||||
|
tmp := TDLBitmap.Create;
|
||||||
|
tmp.Width := Width;
|
||||||
|
tmp.Height := Height;
|
||||||
|
tmp.Canvas.Draw(0, 0, Self);
|
||||||
|
ChangeContrast(Tmp, ValueChange);
|
||||||
|
Canvas.Draw(0, 0, tmp);
|
||||||
|
tmp.Free;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TDLBitmap.FillEllipse(X1, Y1, X2, Y2: integer);
|
procedure TDLBitmap.FillEllipse(X1, Y1, X2, Y2: integer);
|
||||||
begin
|
begin
|
||||||
|
|
||||||
|
490
applications/lazimageeditor/DLBmpUtils.inc
Normal file
490
applications/lazimageeditor/DLBmpUtils.inc
Normal file
@ -0,0 +1,490 @@
|
|||||||
|
{
|
||||||
|
These are the TDLBitmap process functions.
|
||||||
|
}
|
||||||
|
|
||||||
|
procedure LazBMPRotate90(const aBitmap: TDLBitmap; IsTurnRight: boolean);
|
||||||
|
var
|
||||||
|
i, j: integer;
|
||||||
|
rowIn, rowOut: PRGBATripleArray;
|
||||||
|
Bmp: TDLBitmap;
|
||||||
|
Width, Height: integer;
|
||||||
|
IntfImg1, IntfImg2: TLazIntfImage;
|
||||||
|
ImgHandle, ImgMaskHandle: HBitmap;
|
||||||
|
begin
|
||||||
|
Bmp := TDLBitmap.Create;
|
||||||
|
Bmp.Width := aBitmap.Height;
|
||||||
|
Bmp.Height := aBitmap.Width;
|
||||||
|
{$ifdef MSWINDOWS}
|
||||||
|
Bmp.PixelFormat := pf32bit;
|
||||||
|
{$else}
|
||||||
|
Bmp.PixelFormat := pf24bit;
|
||||||
|
{$endif}
|
||||||
|
IntfImg1 := TLazIntfImage.Create(0, 0);
|
||||||
|
IntfImg1.LoadFromBitmap(Bmp.Handle, Bmp.MaskHandle);
|
||||||
|
IntfImg2 := TLazIntfImage.Create(0, 0);
|
||||||
|
IntfImg2.LoadFromBitmap(aBitmap.Handle, aBitmap.MaskHandle);
|
||||||
|
Width := aBitmap.Width - 1;
|
||||||
|
Height := aBitmap.Height - 1;
|
||||||
|
for j := 0 to Height do
|
||||||
|
begin
|
||||||
|
rowIn := IntfImg2.GetDataLineStart(j);
|
||||||
|
for i := 0 to Width do
|
||||||
|
begin
|
||||||
|
rowOut := IntfImg1.GetDataLineStart(i);
|
||||||
|
if IsTurnRight then
|
||||||
|
rowOut^[Height - j] := rowIn^[i]
|
||||||
|
else
|
||||||
|
rowOut^[j] := rowIn^[Width - i];
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
IntfImg1.CreateBitmaps(ImgHandle, ImgMaskHandle, False);
|
||||||
|
Bmp.Handle := ImgHandle;
|
||||||
|
Bmp.MaskHandle := ImgMaskHandle;
|
||||||
|
IntfImg1.Free;
|
||||||
|
IntfImg2.Free;
|
||||||
|
aBitmap.Assign(Bmp);
|
||||||
|
Bmp.Free;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure BMPRotate90(const Bitmap: TDLBitmap);
|
||||||
|
var
|
||||||
|
i, j: integer;
|
||||||
|
rowIn, rowOut: pRGBATriple;
|
||||||
|
Bmp: TDLBitmap;
|
||||||
|
Width, Height: integer;
|
||||||
|
begin
|
||||||
|
Bmp := TDLBitmap.Create;
|
||||||
|
Bmp.Width := Bitmap.Height;
|
||||||
|
Bmp.Height := Bitmap.Width;
|
||||||
|
Width := Bitmap.Width - 1;
|
||||||
|
Height := Bitmap.Height - 1;
|
||||||
|
for j := 0 to Height do
|
||||||
|
begin
|
||||||
|
rowIn := Bitmap.ScanLine[j];
|
||||||
|
for i := 0 to Width do
|
||||||
|
begin
|
||||||
|
rowOut := Bmp.ScanLine[i];
|
||||||
|
rowOut[Height - j] := rowIn[i];
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
Bmp.InvalidateScanLine;
|
||||||
|
Bitmap.Assign(Bmp);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure BMPRotate180(const Bitmap: TDLBitmap);
|
||||||
|
var
|
||||||
|
i, j: integer;
|
||||||
|
rowIn, rowOut: pRGBATriple;
|
||||||
|
Bmp: TDLBitmap;
|
||||||
|
Width, Height: integer;
|
||||||
|
begin
|
||||||
|
Bmp := TDLBitmap.Create;
|
||||||
|
Bmp.Width := Bitmap.Width;
|
||||||
|
Bmp.Height := Bitmap.Height;
|
||||||
|
Width := Bitmap.Width - 1;
|
||||||
|
Height := Bitmap.Height - 1;
|
||||||
|
for j := 0 to Height do
|
||||||
|
begin
|
||||||
|
rowIn := Bitmap.ScanLine[j];
|
||||||
|
for i := 0 to Width do
|
||||||
|
begin
|
||||||
|
rowOut := Bmp.ScanLine[Height - j];
|
||||||
|
Inc(rowOut, Width - i);
|
||||||
|
rowOut^ := rowIn^;
|
||||||
|
Inc(rowIn);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
Bmp.InvalidateScanLine;
|
||||||
|
Bitmap.InvalidateScanLine;
|
||||||
|
Bitmap.Assign(Bmp);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure BMPRotate270(const Bitmap: TDLBitmap);
|
||||||
|
var
|
||||||
|
i, j: integer;
|
||||||
|
rowIn, rowOut: pRGBATriple;
|
||||||
|
Bmp: TDLBitmap;
|
||||||
|
Width, Height: integer;
|
||||||
|
begin
|
||||||
|
Bmp := TDLBitmap.Create;
|
||||||
|
Bmp.Width := Bitmap.Height;
|
||||||
|
Bmp.Height := Bitmap.Width;
|
||||||
|
Width := Bitmap.Width - 1;
|
||||||
|
Height := Bitmap.Height - 1;
|
||||||
|
for j := 0 to Height do
|
||||||
|
begin
|
||||||
|
rowIn := Bitmap.ScanLine[j];
|
||||||
|
for i := 0 to Width do
|
||||||
|
begin
|
||||||
|
rowOut := Bmp.ScanLine[Width - i];
|
||||||
|
Inc(rowOut, j);
|
||||||
|
rowOut^ := rowIn^;
|
||||||
|
Inc(rowIn);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
Bmp.InvalidateScanLine;
|
||||||
|
Bitmap.Assign(Bmp);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function RotateBitmap(Bitmap: TDLBitmap; Angle: integer; BackColor: TColor): TDLBitmap;
|
||||||
|
var
|
||||||
|
i, j, iOriginal, jOriginal, CosPoint, SinPoint: integer;
|
||||||
|
RowOriginal, RowRotated: pRGBATriple;
|
||||||
|
SinTheta, CosTheta: extended;
|
||||||
|
AngleAdd: integer;
|
||||||
|
begin
|
||||||
|
Result := TDLBitmap.Create;
|
||||||
|
Result.Canvas.Brush.Color := BackColor;
|
||||||
|
Angle := Angle mod 360;
|
||||||
|
if Angle < 0 then
|
||||||
|
Angle := 360 - Abs(Angle);
|
||||||
|
if Angle = 0 then
|
||||||
|
Result.Assign(Bitmap)
|
||||||
|
else if Angle = 90 then
|
||||||
|
begin
|
||||||
|
Result.Assign(Bitmap);
|
||||||
|
BMPRotate90(Result);
|
||||||
|
end
|
||||||
|
else if (Angle > 90) and (Angle < 180) then
|
||||||
|
begin
|
||||||
|
AngleAdd := 90;
|
||||||
|
Angle := Angle - AngleAdd;
|
||||||
|
end
|
||||||
|
else if Angle = 180 then
|
||||||
|
begin
|
||||||
|
Result.Assign(Bitmap);
|
||||||
|
BMPRotate180(Result);
|
||||||
|
end
|
||||||
|
else if (Angle > 180) and (Angle < 270) then
|
||||||
|
begin
|
||||||
|
AngleAdd := 180;
|
||||||
|
Angle := Angle - AngleAdd;
|
||||||
|
end
|
||||||
|
else if Angle = 270 then
|
||||||
|
begin
|
||||||
|
Result.Assign(Bitmap);
|
||||||
|
BMPRotate270(Result);
|
||||||
|
end
|
||||||
|
else if (Angle > 270) and (Angle < 360) then
|
||||||
|
begin
|
||||||
|
AngleAdd := 270;
|
||||||
|
Angle := Angle - AngleAdd;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
AngleAdd := 0;
|
||||||
|
if (Angle > 0) and (Angle < 90) then
|
||||||
|
begin
|
||||||
|
SinCos((Angle + AngleAdd) * Pi / 180, SinTheta, CosTheta);
|
||||||
|
if (SinTheta * CosTheta) < 0 then
|
||||||
|
begin
|
||||||
|
Result.Width := Round(Abs(Bitmap.Width * CosTheta - Bitmap.Height * SinTheta));
|
||||||
|
Result.Height := Round(Abs(Bitmap.Width * SinTheta - Bitmap.Height * CosTheta));
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
Result.Width := Round(Abs(Bitmap.Width * CosTheta + Bitmap.Height * SinTheta));
|
||||||
|
Result.Height := Round(Abs(Bitmap.Width * SinTheta + Bitmap.Height * CosTheta));
|
||||||
|
end;
|
||||||
|
CosTheta := Abs(CosTheta);
|
||||||
|
SinTheta := Abs(SinTheta);
|
||||||
|
if (AngleAdd = 0) or (AngleAdd = 180) then
|
||||||
|
begin
|
||||||
|
CosPoint := Round(Bitmap.Height * CosTheta);
|
||||||
|
SinPoint := Round(Bitmap.Height * SinTheta);
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
SinPoint := Round(Bitmap.Width * CosTheta);
|
||||||
|
CosPoint := Round(Bitmap.Width * SinTheta);
|
||||||
|
end;
|
||||||
|
for j := 0 to Result.Height - 1 do
|
||||||
|
begin
|
||||||
|
RowRotated := Result.Scanline[j];
|
||||||
|
for i := 0 to Result.Width - 1 do
|
||||||
|
begin
|
||||||
|
case AngleAdd of
|
||||||
|
0:
|
||||||
|
begin
|
||||||
|
jOriginal := Round((j + 1) * CosTheta - (i + 1 - SinPoint) * SinTheta) - 1;
|
||||||
|
iOriginal := Round((i + 1) * CosTheta - (CosPoint - j - 1) * SinTheta) - 1;
|
||||||
|
end;
|
||||||
|
90:
|
||||||
|
begin
|
||||||
|
iOriginal := Round((j + 1) * SinTheta - (i + 1 - SinPoint) * CosTheta) - 1;
|
||||||
|
jOriginal := Bitmap.Height - Round((i + 1) * SinTheta -
|
||||||
|
(CosPoint - j - 1) * CosTheta);
|
||||||
|
end;
|
||||||
|
180:
|
||||||
|
begin
|
||||||
|
jOriginal := Bitmap.Height - Round((j + 1) * CosTheta -
|
||||||
|
(i + 1 - SinPoint) * SinTheta);
|
||||||
|
iOriginal := Bitmap.Width - Round((i + 1) * CosTheta -
|
||||||
|
(CosPoint - j - 1) * SinTheta);
|
||||||
|
end;
|
||||||
|
270:
|
||||||
|
begin
|
||||||
|
iOriginal := Bitmap.Width - Round((j + 1) * SinTheta -
|
||||||
|
(i + 1 - SinPoint) * CosTheta);
|
||||||
|
jOriginal := Round((i + 1) * SinTheta - (CosPoint - j - 1) * CosTheta) - 1;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
if (iOriginal >= 0) and (iOriginal <= Bitmap.Width - 1) and
|
||||||
|
(jOriginal >= 0) and (jOriginal <= Bitmap.Height - 1) then
|
||||||
|
begin
|
||||||
|
RowOriginal := Bitmap.Scanline[jOriginal];
|
||||||
|
Inc(RowOriginal, iOriginal);
|
||||||
|
RowRotated^ := RowOriginal^;
|
||||||
|
Inc(RowRotated);
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
Inc(RowRotated);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
Result.InvalidateScanLine;
|
||||||
|
Bitmap.InvalidateScanLine;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure DrawSamePixel(ABitmap: TDLBitmap; Value: integer);
|
||||||
|
var
|
||||||
|
LNew: TRGBATriple;
|
||||||
|
LMinusRatio: real;
|
||||||
|
LScan: pRGBATriple;
|
||||||
|
i, j: integer;
|
||||||
|
begin
|
||||||
|
for i := 0 to ABitmap.Height - 1 do
|
||||||
|
begin
|
||||||
|
LScan := ABitmap.Scanline[i];
|
||||||
|
for j := 0 to ABitmap.Width - 1 do
|
||||||
|
begin
|
||||||
|
LNew := LScan[j];
|
||||||
|
LScan[j].rgbtBlue := LScan[j].rgbtBlue * Value div 100; //Value; //LNew.rgbtBlue;
|
||||||
|
LScan[j].rgbtGreen := LScan[j].rgbtGreen * Value div 100; //LNew.rgbtGreen;
|
||||||
|
LScan[j].rgbtRed := LScan[j].rgbtRed * Value div 100; //LNew.rgbtRed;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
ABitmap.InvalidateScanLine;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function BitmapFlip(const Vertical: boolean; const Horizontal: boolean;
|
||||||
|
var BitmapIn: TDLBitmap; out BitmapOut: TDLBitmap): boolean;
|
||||||
|
var
|
||||||
|
DataIn: pRGBATriple;
|
||||||
|
DataOut: pRGBATriple;
|
||||||
|
inRow: integer;
|
||||||
|
inCol: integer;
|
||||||
|
begin
|
||||||
|
Result := False;
|
||||||
|
try
|
||||||
|
if BitmapIn.PixelFormat <> pf24bit then
|
||||||
|
Exit;
|
||||||
|
with BitmapOut do
|
||||||
|
begin
|
||||||
|
Width := BitmapIn.Width;
|
||||||
|
Height := BitmapIn.Height;
|
||||||
|
PixelFormat := BitmapIn.PixelFormat;
|
||||||
|
end;
|
||||||
|
for inRow := 0 to BitmapIn.Height - 1 do
|
||||||
|
begin
|
||||||
|
DataIn := BitmapIn.Scanline[inRow];
|
||||||
|
if Vertical then
|
||||||
|
begin
|
||||||
|
DataOut := BitmapOut.ScanLine[BitmapIn.Height - 1 - inRow];
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
DataOut := BitmapOut.ScanLine[inRow];
|
||||||
|
end;
|
||||||
|
if Horizontal then
|
||||||
|
begin
|
||||||
|
for inCol := 0 to BitmapIn.Width - 1 do
|
||||||
|
DataOut[inCol] := DataIn[BitmapIn.Width - 1 - inCol];
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
for inCol := 0 to BitmapIn.Width - 1 do
|
||||||
|
DataOut[inCol] := DataIn[inCol];
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
Result := True;
|
||||||
|
BitmapOut.InvalidateScanLine;
|
||||||
|
except
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure InvertBitmap(aBitmap: TDLBitmap);
|
||||||
|
var
|
||||||
|
LNew: TRGBATriple;
|
||||||
|
LMinusRatio: real;
|
||||||
|
LScan: pRGBATriple;
|
||||||
|
i, j: integer;
|
||||||
|
begin
|
||||||
|
for i := 0 to ABitmap.Height - 1 do
|
||||||
|
begin
|
||||||
|
LScan := ABitmap.Scanline[i];
|
||||||
|
for j := 0 to ABitmap.Width - 1 do
|
||||||
|
begin
|
||||||
|
LNew := LScan[j];
|
||||||
|
LScan[j].rgbtBlue := not LScan[j].rgbtBlue;
|
||||||
|
LScan[j].rgbtGreen := not LScan[j].rgbtGreen;
|
||||||
|
LScan[j].rgbtRed := not LScan[j].rgbtRed;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
ABitmap.InvalidateScanLine;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure ConvertBitmapToGrayScale(const Bitmap: TDLBitmap);
|
||||||
|
var
|
||||||
|
X: integer;
|
||||||
|
Y: integer;
|
||||||
|
P: pRGBATriple;
|
||||||
|
Gray: byte;
|
||||||
|
begin
|
||||||
|
for Y := 0 to (Bitmap.Height - 1) do
|
||||||
|
begin
|
||||||
|
P := Bitmap.ScanLine[Y];
|
||||||
|
for X := 0 to (Bitmap.Width - 1) do
|
||||||
|
begin
|
||||||
|
Gray := Round(0.30 * P[X].rgbtBlue + 0.59 * P[X].rgbtGreen +
|
||||||
|
0.11 * P[X].rgbtRed);
|
||||||
|
P[X].rgbtRed := Gray;
|
||||||
|
P[X].rgbtGreen := Gray;
|
||||||
|
P[X].rgbtBlue := Gray;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
Bitmap.InvalidateScanLine;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure ChangeRGB(SrcBmp: TDLBitmap; RedChange, GreenChange, BlueChange: integer);
|
||||||
|
var
|
||||||
|
SrcRow, DestRow: pRGBATriple;
|
||||||
|
i, j: integer; DestBmp: TDLBitmap;
|
||||||
|
begin
|
||||||
|
DestBmp := TDLBitmap.Create;
|
||||||
|
DestBmp.Width := SrcBmp.Width;
|
||||||
|
DestBmp.Height := SrcBmp.Height;
|
||||||
|
for i := 0 to SrcBmp.Height - 1 do
|
||||||
|
begin
|
||||||
|
SrcRow := SrcBmp.ScanLine[i];
|
||||||
|
DestRow := DestBmp.ScanLine[i];
|
||||||
|
for j := 0 to SrcBmp.Width - 1 do
|
||||||
|
begin
|
||||||
|
if RedChange > 0 then
|
||||||
|
DestRow[j].rgbtRed :=
|
||||||
|
Min(255, SrcRow[j].rgbtRed + RedChange)
|
||||||
|
else
|
||||||
|
DestRow[j].rgbtRed :=
|
||||||
|
Max(0, SrcRow[j].rgbtRed + RedChange);
|
||||||
|
if GreenChange > 0 then
|
||||||
|
DestRow[j].rgbtGreen :=
|
||||||
|
Min(255, SrcRow[j].rgbtGreen + GreenChange)
|
||||||
|
else
|
||||||
|
DestRow[j].rgbtGreen :=
|
||||||
|
Max(0, SrcRow[j].rgbtGreen + GreenChange);
|
||||||
|
if BlueChange > 0 then
|
||||||
|
DestRow[j].rgbtBlue :=
|
||||||
|
Min(255, SrcRow[j].rgbtBlue + BlueChange)
|
||||||
|
else
|
||||||
|
DestRow[j].rgbtBlue :=
|
||||||
|
Max(0, SrcRow[j].rgbtBlue + BlueChange);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
DestBmp.InvalidateScanLine;
|
||||||
|
SrcBmp.Assign(DestBmp);
|
||||||
|
DestBmp.Free;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure ChangeBrightness(SrcBmp: TDLBitmap; ValueChange: integer);
|
||||||
|
var
|
||||||
|
i, j: integer; DestBmp: TDLBitmap;
|
||||||
|
SrcRow, DestRow: pRGBATriple;
|
||||||
|
begin
|
||||||
|
DestBmp := TDLBitmap.Create;
|
||||||
|
DestBmp.Width := SrcBmp.Width;
|
||||||
|
DestBmp.Height := SrcBmp.Height;
|
||||||
|
for i := 0 to SrcBmp.Height - 1 do
|
||||||
|
begin
|
||||||
|
SrcRow := SrcBmp.ScanLine[i];
|
||||||
|
DestRow := DestBmp.ScanLine[i];
|
||||||
|
for j := 0 to SrcBmp.Width - 1 do
|
||||||
|
begin
|
||||||
|
if ValueChange > 0 then
|
||||||
|
begin
|
||||||
|
DestRow[j].rgbtRed :=
|
||||||
|
Min(255, SrcRow[j].rgbtRed + ValueChange);
|
||||||
|
DestRow[j].rgbtGreen :=
|
||||||
|
Min(255, SrcRow[j].rgbtGreen + ValueChange);
|
||||||
|
DestRow[j].rgbtBlue :=
|
||||||
|
Min(255, SrcRow[j].rgbtBlue + ValueChange);
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
DestRow[j].rgbtRed := Max(0, SrcRow[j].rgbtRed + ValueChange);
|
||||||
|
DestRow[j].rgbtGreen :=
|
||||||
|
Max(0, SrcRow[j].rgbtGreen + ValueChange);
|
||||||
|
DestRow[j].rgbtBlue :=
|
||||||
|
Max(0, SrcRow[j].rgbtBlue + ValueChange);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
DestBmp.InvalidateScanLine;
|
||||||
|
SrcBmp.Assign(DestBmp);
|
||||||
|
DestBmp.Free;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure ChangeContrast(SrcBmp: TDLBitmap; ValueChange: integer);
|
||||||
|
var
|
||||||
|
X, Y: integer; DestBmp: TDLBitmap;
|
||||||
|
SrcRow, DestRow: pRGBATriple;
|
||||||
|
begin
|
||||||
|
DestBmp := TDLBitmap.Create;
|
||||||
|
DestBmp.Width := SrcBmp.Width;
|
||||||
|
DestBmp.Height := SrcBmp.Height;
|
||||||
|
if valuechange >= 0 then
|
||||||
|
begin
|
||||||
|
for Y := 0 to SrcBmp.Height - 1 do
|
||||||
|
begin
|
||||||
|
SrcRow := SrcBmp.ScanLine[Y];
|
||||||
|
DestRow := DestBmp.ScanLine[y];
|
||||||
|
for X := 0 to SrcBmp.Width - 1 do
|
||||||
|
begin
|
||||||
|
if SrcRow[x].rgbtRed >= 128 then
|
||||||
|
DestRow[x].rgbtRed := min(255, SrcRow[x].rgbtRed + ValueChange)
|
||||||
|
else
|
||||||
|
DestRow[x].rgbtRed := max(0, SrcRow[x].rgbtRed - ValueChange);
|
||||||
|
if SrcRow[x].rgbtGreen >= 128 then
|
||||||
|
DestRow[x].rgbtGreen := min(255, SrcRow[x].rgbtGreen + ValueChange)
|
||||||
|
else
|
||||||
|
DestRow[x].rgbtGreen :=
|
||||||
|
max(0, SrcRow[x].rgbtGreen - ValueChange);
|
||||||
|
if SrcRow[x].rgbtBlue >= 128 then
|
||||||
|
DestRow[x].rgbtBlue := min(255, SrcRow[x].rgbtBlue + ValueChange)
|
||||||
|
else
|
||||||
|
DestRow[x].rgbtBlue :=
|
||||||
|
max(0, SrcRow[x].rgbtBlue - ValueChange);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
for Y := 0 to SrcBmp.Height - 1 do
|
||||||
|
begin
|
||||||
|
SrcRow := SrcBmp.ScanLine[Y];
|
||||||
|
DestRow := DestBmp.ScanLine[y];
|
||||||
|
for X := 0 to SrcBmp.Width - 1 do
|
||||||
|
begin
|
||||||
|
DestRow[x].rgbtRed := min(128, SrcRow[x].rgbtRed - ValueChange);
|
||||||
|
DestRow[x].rgbtGreen :=
|
||||||
|
min(128, SrcRow[x].rgbtGreen - ValueChange);
|
||||||
|
DestRow[x].rgbtBlue := min(128, SrcRow[x].rgbtBlue - ValueChange);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
DestBmp.InvalidateScanLine;
|
||||||
|
SrcBmp.Assign(DestBmp);
|
||||||
|
DestBmp.Free;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
@ -49,8 +49,8 @@
|
|||||||
<EditorIndex Value="1"/>
|
<EditorIndex Value="1"/>
|
||||||
<WindowIndex Value="0"/>
|
<WindowIndex Value="0"/>
|
||||||
<TopLine Value="1"/>
|
<TopLine Value="1"/>
|
||||||
<CursorPos X="73" Y="11"/>
|
<CursorPos X="14" Y="4"/>
|
||||||
<UsageCount Value="62"/>
|
<UsageCount Value="64"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit0>
|
</Unit0>
|
||||||
<Unit1>
|
<Unit1>
|
||||||
@ -62,19 +62,20 @@
|
|||||||
<UnitName Value="Main"/>
|
<UnitName Value="Main"/>
|
||||||
<EditorIndex Value="0"/>
|
<EditorIndex Value="0"/>
|
||||||
<WindowIndex Value="0"/>
|
<WindowIndex Value="0"/>
|
||||||
<TopLine Value="756"/>
|
<TopLine Value="1203"/>
|
||||||
<CursorPos X="72" Y="769"/>
|
<CursorPos X="30" Y="1220"/>
|
||||||
<UsageCount Value="62"/>
|
<UsageCount Value="64"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
<LoadedDesigner Value="True"/>
|
<LoadedDesigner Value="True"/>
|
||||||
</Unit1>
|
</Unit1>
|
||||||
<Unit2>
|
<Unit2>
|
||||||
<Filename Value="picturectrls.pas"/>
|
<Filename Value="picturectrls.pas"/>
|
||||||
<UnitName Value="PictureCtrls"/>
|
<UnitName Value="PictureCtrls"/>
|
||||||
<EditorIndex Value="5"/>
|
<IsVisibleTab Value="True"/>
|
||||||
|
<EditorIndex Value="4"/>
|
||||||
<WindowIndex Value="0"/>
|
<WindowIndex Value="0"/>
|
||||||
<TopLine Value="831"/>
|
<TopLine Value="117"/>
|
||||||
<CursorPos X="51" Y="849"/>
|
<CursorPos X="24" Y="137"/>
|
||||||
<UsageCount Value="28"/>
|
<UsageCount Value="28"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit2>
|
</Unit2>
|
||||||
@ -178,10 +179,10 @@
|
|||||||
<Unit13>
|
<Unit13>
|
||||||
<Filename Value="picturemanager.pas"/>
|
<Filename Value="picturemanager.pas"/>
|
||||||
<UnitName Value="PictureManager"/>
|
<UnitName Value="PictureManager"/>
|
||||||
<EditorIndex Value="3"/>
|
<EditorIndex Value="2"/>
|
||||||
<WindowIndex Value="0"/>
|
<WindowIndex Value="0"/>
|
||||||
<TopLine Value="188"/>
|
<TopLine Value="1"/>
|
||||||
<CursorPos X="62" Y="103"/>
|
<CursorPos X="100" Y="4"/>
|
||||||
<UsageCount Value="29"/>
|
<UsageCount Value="29"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit13>
|
</Unit13>
|
||||||
@ -244,10 +245,10 @@
|
|||||||
<Unit21>
|
<Unit21>
|
||||||
<Filename Value="bmprgbtypes.pas"/>
|
<Filename Value="bmprgbtypes.pas"/>
|
||||||
<UnitName Value="BmpRGBTypes"/>
|
<UnitName Value="BmpRGBTypes"/>
|
||||||
<EditorIndex Value="7"/>
|
<EditorIndex Value="6"/>
|
||||||
<WindowIndex Value="0"/>
|
<WindowIndex Value="0"/>
|
||||||
<TopLine Value="119"/>
|
<TopLine Value="539"/>
|
||||||
<CursorPos X="24" Y="44"/>
|
<CursorPos X="40" Y="535"/>
|
||||||
<UsageCount Value="26"/>
|
<UsageCount Value="26"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit21>
|
</Unit21>
|
||||||
@ -277,7 +278,7 @@
|
|||||||
<Unit25>
|
<Unit25>
|
||||||
<Filename Value="bmprgbutils.pas"/>
|
<Filename Value="bmprgbutils.pas"/>
|
||||||
<UnitName Value="BmpRGBUtils"/>
|
<UnitName Value="BmpRGBUtils"/>
|
||||||
<EditorIndex Value="6"/>
|
<EditorIndex Value="5"/>
|
||||||
<WindowIndex Value="0"/>
|
<WindowIndex Value="0"/>
|
||||||
<TopLine Value="85"/>
|
<TopLine Value="85"/>
|
||||||
<CursorPos X="72" Y="5"/>
|
<CursorPos X="72" Y="5"/>
|
||||||
@ -303,10 +304,10 @@
|
|||||||
<Unit28>
|
<Unit28>
|
||||||
<Filename Value="bmprgbgraph.pas"/>
|
<Filename Value="bmprgbgraph.pas"/>
|
||||||
<UnitName Value="BmpRGBGraph"/>
|
<UnitName Value="BmpRGBGraph"/>
|
||||||
<EditorIndex Value="8"/>
|
<EditorIndex Value="7"/>
|
||||||
<WindowIndex Value="0"/>
|
<WindowIndex Value="0"/>
|
||||||
<TopLine Value="20"/>
|
<TopLine Value="500"/>
|
||||||
<CursorPos X="76" Y="25"/>
|
<CursorPos X="27" Y="532"/>
|
||||||
<UsageCount Value="20"/>
|
<UsageCount Value="20"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit28>
|
</Unit28>
|
||||||
@ -363,10 +364,10 @@
|
|||||||
<Unit35>
|
<Unit35>
|
||||||
<Filename Value="DLBitmap.pas"/>
|
<Filename Value="DLBitmap.pas"/>
|
||||||
<UnitName Value="DLBitmap"/>
|
<UnitName Value="DLBitmap"/>
|
||||||
<EditorIndex Value="4"/>
|
<EditorIndex Value="3"/>
|
||||||
<WindowIndex Value="0"/>
|
<WindowIndex Value="0"/>
|
||||||
<TopLine Value="631"/>
|
<TopLine Value="10"/>
|
||||||
<CursorPos X="61" Y="336"/>
|
<CursorPos X="102" Y="6"/>
|
||||||
<UsageCount Value="11"/>
|
<UsageCount Value="11"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit35>
|
</Unit35>
|
||||||
@ -374,142 +375,139 @@
|
|||||||
<Filename Value="T:\LazColorPalette\colorpalette.pas"/>
|
<Filename Value="T:\LazColorPalette\colorpalette.pas"/>
|
||||||
<UnitName Value="ColorPalette"/>
|
<UnitName Value="ColorPalette"/>
|
||||||
<WindowIndex Value="0"/>
|
<WindowIndex Value="0"/>
|
||||||
<TopLine Value="183"/>
|
<TopLine Value="185"/>
|
||||||
<CursorPos X="53" Y="201"/>
|
<CursorPos X="58" Y="173"/>
|
||||||
<UsageCount Value="10"/>
|
<UsageCount Value="10"/>
|
||||||
</Unit36>
|
</Unit36>
|
||||||
<Unit37>
|
<Unit37>
|
||||||
<Filename Value="colorpalette.pas"/>
|
<Filename Value="colorpalette.pas"/>
|
||||||
<UnitName Value="ColorPalette"/>
|
<UnitName Value="ColorPalette"/>
|
||||||
<IsVisibleTab Value="True"/>
|
|
||||||
<EditorIndex Value="2"/>
|
|
||||||
<WindowIndex Value="0"/>
|
<WindowIndex Value="0"/>
|
||||||
<TopLine Value="56"/>
|
<TopLine Value="56"/>
|
||||||
<CursorPos X="21" Y="68"/>
|
<CursorPos X="21" Y="68"/>
|
||||||
<UsageCount Value="10"/>
|
<UsageCount Value="10"/>
|
||||||
<Loaded Value="True"/>
|
|
||||||
</Unit37>
|
</Unit37>
|
||||||
</Units>
|
</Units>
|
||||||
<JumpHistory Count="30" HistoryIndex="29">
|
<JumpHistory Count="30" HistoryIndex="29">
|
||||||
<Position1>
|
<Position1>
|
||||||
<Filename Value="main.pas"/>
|
<Filename Value="picturectrls.pas"/>
|
||||||
<Caret Line="725" Column="35" TopLine="708"/>
|
<Caret Line="2" Column="101" TopLine="1"/>
|
||||||
</Position1>
|
</Position1>
|
||||||
<Position2>
|
<Position2>
|
||||||
<Filename Value="main.pas"/>
|
<Filename Value="picturectrls.pas"/>
|
||||||
<Caret Line="286" Column="33" TopLine="270"/>
|
<Caret Line="109" Column="54" TopLine="77"/>
|
||||||
</Position2>
|
</Position2>
|
||||||
<Position3>
|
<Position3>
|
||||||
<Filename Value="main.pas"/>
|
<Filename Value="picturectrls.pas"/>
|
||||||
<Caret Line="733" Column="68" TopLine="705"/>
|
<Caret Line="657" Column="41" TopLine="625"/>
|
||||||
</Position3>
|
</Position3>
|
||||||
<Position4>
|
<Position4>
|
||||||
<Filename Value="main.pas"/>
|
<Filename Value="picturectrls.pas"/>
|
||||||
<Caret Line="1122" Column="10" TopLine="1120"/>
|
<Caret Line="681" Column="25" TopLine="649"/>
|
||||||
</Position4>
|
</Position4>
|
||||||
<Position5>
|
<Position5>
|
||||||
<Filename Value="main.pas"/>
|
<Filename Value="picturectrls.pas"/>
|
||||||
<Caret Line="1123" Column="10" TopLine="1121"/>
|
<Caret Line="109" Column="54" TopLine="90"/>
|
||||||
</Position5>
|
</Position5>
|
||||||
<Position6>
|
<Position6>
|
||||||
<Filename Value="main.pas"/>
|
<Filename Value="picturectrls.pas"/>
|
||||||
<Caret Line="1130" Column="10" TopLine="1128"/>
|
<Caret Line="657" Column="41" TopLine="625"/>
|
||||||
</Position6>
|
</Position6>
|
||||||
<Position7>
|
<Position7>
|
||||||
<Filename Value="main.pas"/>
|
<Filename Value="main.pas"/>
|
||||||
<Caret Line="473" Column="3" TopLine="460"/>
|
<Caret Line="8" Column="78" TopLine="1"/>
|
||||||
</Position7>
|
</Position7>
|
||||||
<Position8>
|
<Position8>
|
||||||
<Filename Value="main.pas"/>
|
<Filename Value="main.pas"/>
|
||||||
<Caret Line="479" Column="6" TopLine="457"/>
|
<Caret Line="179" Column="22" TopLine="147"/>
|
||||||
</Position8>
|
</Position8>
|
||||||
<Position9>
|
<Position9>
|
||||||
<Filename Value="main.pas"/>
|
<Filename Value="main.pas"/>
|
||||||
<Caret Line="795" Column="7" TopLine="763"/>
|
<Caret Line="197" Column="18" TopLine="165"/>
|
||||||
</Position9>
|
</Position9>
|
||||||
<Position10>
|
<Position10>
|
||||||
<Filename Value="main.pas"/>
|
<Filename Value="main.pas"/>
|
||||||
<Caret Line="797" Column="7" TopLine="765"/>
|
<Caret Line="272" Column="32" TopLine="240"/>
|
||||||
</Position10>
|
</Position10>
|
||||||
<Position11>
|
<Position11>
|
||||||
<Filename Value="main.pas"/>
|
<Filename Value="main.pas"/>
|
||||||
<Caret Line="799" Column="37" TopLine="767"/>
|
<Caret Line="276" Column="28" TopLine="244"/>
|
||||||
</Position11>
|
</Position11>
|
||||||
<Position12>
|
<Position12>
|
||||||
<Filename Value="main.pas"/>
|
<Filename Value="main.pas"/>
|
||||||
<Caret Line="800" Column="40" TopLine="768"/>
|
<Caret Line="386" Column="37" TopLine="363"/>
|
||||||
</Position12>
|
</Position12>
|
||||||
<Position13>
|
<Position13>
|
||||||
<Filename Value="main.pas"/>
|
<Filename Value="main.pas"/>
|
||||||
<Caret Line="4" Column="99" TopLine="1"/>
|
<Caret Line="391" Column="42" TopLine="375"/>
|
||||||
</Position13>
|
</Position13>
|
||||||
<Position14>
|
<Position14>
|
||||||
<Filename Value="main.pas"/>
|
<Filename Value="main.pas"/>
|
||||||
<Caret Line="463" Column="51" TopLine="431"/>
|
<Caret Line="578" Column="38" TopLine="558"/>
|
||||||
</Position14>
|
</Position14>
|
||||||
<Position15>
|
<Position15>
|
||||||
<Filename Value="main.pas"/>
|
<Filename Value="main.pas"/>
|
||||||
<Caret Line="479" Column="7" TopLine="447"/>
|
<Caret Line="582" Column="44" TopLine="558"/>
|
||||||
</Position15>
|
</Position15>
|
||||||
<Position16>
|
<Position16>
|
||||||
<Filename Value="main.pas"/>
|
<Filename Value="main.pas"/>
|
||||||
<Caret Line="5" Column="101" TopLine="1"/>
|
<Caret Line="606" Column="34" TopLine="586"/>
|
||||||
</Position16>
|
</Position16>
|
||||||
<Position17>
|
<Position17>
|
||||||
<Filename Value="main.pas"/>
|
<Filename Value="main.pas"/>
|
||||||
<Caret Line="497" Column="11" TopLine="476"/>
|
<Caret Line="610" Column="25" TopLine="586"/>
|
||||||
</Position17>
|
</Position17>
|
||||||
<Position18>
|
<Position18>
|
||||||
<Filename Value="main.pas"/>
|
<Filename Value="main.pas"/>
|
||||||
<Caret Line="501" Column="6" TopLine="475"/>
|
<Caret Line="797" Column="29" TopLine="777"/>
|
||||||
</Position18>
|
</Position18>
|
||||||
<Position19>
|
<Position19>
|
||||||
<Filename Value="main.pas"/>
|
<Filename Value="main.pas"/>
|
||||||
<Caret Line="500" Column="6" TopLine="474"/>
|
<Caret Line="798" Column="16" TopLine="777"/>
|
||||||
</Position19>
|
</Position19>
|
||||||
<Position20>
|
<Position20>
|
||||||
<Filename Value="main.pas"/>
|
<Filename Value="main.pas"/>
|
||||||
<Caret Line="1007" Column="12" TopLine="988"/>
|
<Caret Line="887" Column="16" TopLine="864"/>
|
||||||
</Position20>
|
</Position20>
|
||||||
<Position21>
|
<Position21>
|
||||||
<Filename Value="lazimageeditor.pas"/>
|
<Filename Value="main.pas"/>
|
||||||
<Caret Line="26" Column="11" TopLine="1"/>
|
<Caret Line="1031" Column="16" TopLine="1011"/>
|
||||||
</Position21>
|
</Position21>
|
||||||
<Position22>
|
<Position22>
|
||||||
<Filename Value="lazimageeditor.pas"/>
|
<Filename Value="main.pas"/>
|
||||||
<Caret Line="11" Column="30" TopLine="1"/>
|
<Caret Line="1033" Column="43" TopLine="1011"/>
|
||||||
</Position22>
|
</Position22>
|
||||||
<Position23>
|
<Position23>
|
||||||
<Filename Value="lazimageeditor.pas"/>
|
<Filename Value="picturectrls.pas"/>
|
||||||
<Caret Line="26" Column="6" TopLine="1"/>
|
<Caret Line="681" Column="29" TopLine="649"/>
|
||||||
</Position23>
|
</Position23>
|
||||||
<Position24>
|
<Position24>
|
||||||
<Filename Value="lazimageeditor.pas"/>
|
<Filename Value="picturectrls.pas"/>
|
||||||
<Caret Line="11" Column="30" TopLine="1"/>
|
<Caret Line="171" Column="15" TopLine="152"/>
|
||||||
</Position24>
|
</Position24>
|
||||||
<Position25>
|
<Position25>
|
||||||
<Filename Value="main.pas"/>
|
<Filename Value="picturectrls.pas"/>
|
||||||
<Caret Line="767" Column="1" TopLine="748"/>
|
<Caret Line="916" Column="7" TopLine="897"/>
|
||||||
</Position25>
|
</Position25>
|
||||||
<Position26>
|
<Position26>
|
||||||
<Filename Value="main.pas"/>
|
<Filename Value="picturectrls.pas"/>
|
||||||
<Caret Line="772" Column="3" TopLine="769"/>
|
<Caret Line="879" Column="12" TopLine="857"/>
|
||||||
</Position26>
|
</Position26>
|
||||||
<Position27>
|
<Position27>
|
||||||
<Filename Value="main.pas"/>
|
<Filename Value="picturectrls.pas"/>
|
||||||
<Caret Line="749" Column="1" TopLine="743"/>
|
<Caret Line="874" Column="3" TopLine="861"/>
|
||||||
</Position27>
|
</Position27>
|
||||||
<Position28>
|
<Position28>
|
||||||
<Filename Value="main.pas"/>
|
<Filename Value="picturectrls.pas"/>
|
||||||
<Caret Line="774" Column="47" TopLine="754"/>
|
<Caret Line="878" Column="25" TopLine="861"/>
|
||||||
</Position28>
|
</Position28>
|
||||||
<Position29>
|
<Position29>
|
||||||
<Filename Value="main.pas"/>
|
<Filename Value="bmprgbtypes.pas"/>
|
||||||
<Caret Line="289" Column="1" TopLine="273"/>
|
<Caret Line="126" Column="29" TopLine="107"/>
|
||||||
</Position29>
|
</Position29>
|
||||||
<Position30>
|
<Position30>
|
||||||
<Filename Value="main.pas"/>
|
<Filename Value="picturectrls.pas"/>
|
||||||
<Caret Line="724" Column="1" TopLine="708"/>
|
<Caret Line="859" Column="24" TopLine="852"/>
|
||||||
</Position30>
|
</Position30>
|
||||||
</JumpHistory>
|
</JumpHistory>
|
||||||
</ProjectOptions>
|
</ProjectOptions>
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
object MainForm: TMainForm
|
object MainForm: TMainForm
|
||||||
Left = 180
|
Left = 260
|
||||||
Height = 666
|
Height = 681
|
||||||
Top = 135
|
Top = 147
|
||||||
Width = 905
|
Width = 935
|
||||||
Caption = 'Lazarus Image Editor'
|
Caption = 'Lazarus Image Editor'
|
||||||
ClientHeight = 644
|
ClientHeight = 659
|
||||||
ClientWidth = 905
|
ClientWidth = 935
|
||||||
Font.CharSet = GB2312_CHARSET
|
Font.CharSet = GB2312_CHARSET
|
||||||
Font.Height = -13
|
Font.Height = -13
|
||||||
Font.Name = '微软雅黑'
|
Font.Name = '微软雅黑'
|
||||||
@ -18,18 +18,18 @@
|
|||||||
LCLVersion = '0.9.31'
|
LCLVersion = '0.9.31'
|
||||||
object PanelTools: TPanel
|
object PanelTools: TPanel
|
||||||
Left = 0
|
Left = 0
|
||||||
Height = 517
|
Height = 532
|
||||||
Top = 105
|
Top = 105
|
||||||
Width = 40
|
Width = 40
|
||||||
Align = alLeft
|
Align = alLeft
|
||||||
BevelOuter = bvNone
|
BevelOuter = bvNone
|
||||||
ClientHeight = 517
|
ClientHeight = 532
|
||||||
ClientWidth = 40
|
ClientWidth = 40
|
||||||
ParentColor = False
|
ParentColor = False
|
||||||
TabOrder = 0
|
TabOrder = 0
|
||||||
object ToolBarTools: TToolBar
|
object ToolBarTools: TToolBar
|
||||||
Left = 0
|
Left = 0
|
||||||
Height = 517
|
Height = 532
|
||||||
Top = 0
|
Top = 0
|
||||||
Width = 40
|
Width = 40
|
||||||
Align = alLeft
|
Align = alLeft
|
||||||
@ -120,7 +120,7 @@
|
|||||||
end
|
end
|
||||||
object ToolRectangle: TToolButton
|
object ToolRectangle: TToolButton
|
||||||
Left = 0
|
Left = 0
|
||||||
Hint = 'Polygon'
|
Hint = 'RecTangle / Round Rectangle'
|
||||||
Top = 202
|
Top = 202
|
||||||
Grouped = True
|
Grouped = True
|
||||||
ImageIndex = 5
|
ImageIndex = 5
|
||||||
@ -131,7 +131,7 @@
|
|||||||
end
|
end
|
||||||
object ToolPolygon: TToolButton
|
object ToolPolygon: TToolButton
|
||||||
Left = 0
|
Left = 0
|
||||||
Hint = 'Ellipse'
|
Hint = 'Polygon'
|
||||||
Top = 282
|
Top = 282
|
||||||
Grouped = True
|
Grouped = True
|
||||||
ImageIndex = 7
|
ImageIndex = 7
|
||||||
@ -142,7 +142,7 @@
|
|||||||
end
|
end
|
||||||
object ToolEllipse: TToolButton
|
object ToolEllipse: TToolButton
|
||||||
Left = 0
|
Left = 0
|
||||||
Hint = 'Rectangle/Round rectangle'
|
Hint = 'Ellipse'
|
||||||
Top = 242
|
Top = 242
|
||||||
Grouped = True
|
Grouped = True
|
||||||
ImageIndex = 6
|
ImageIndex = 6
|
||||||
@ -156,8 +156,8 @@
|
|||||||
object StatusBar: TStatusBar
|
object StatusBar: TStatusBar
|
||||||
Left = 0
|
Left = 0
|
||||||
Height = 22
|
Height = 22
|
||||||
Top = 622
|
Top = 637
|
||||||
Width = 905
|
Width = 935
|
||||||
Panels = <
|
Panels = <
|
||||||
item
|
item
|
||||||
Width = 250
|
Width = 250
|
||||||
@ -182,19 +182,19 @@
|
|||||||
SimplePanel = False
|
SimplePanel = False
|
||||||
end
|
end
|
||||||
object PanelPallete: TPanel
|
object PanelPallete: TPanel
|
||||||
Left = 830
|
Left = 860
|
||||||
Height = 517
|
Height = 532
|
||||||
Top = 105
|
Top = 105
|
||||||
Width = 75
|
Width = 75
|
||||||
Align = alRight
|
Align = alRight
|
||||||
AutoSize = True
|
AutoSize = True
|
||||||
BevelOuter = bvNone
|
BevelOuter = bvNone
|
||||||
ClientHeight = 517
|
ClientHeight = 532
|
||||||
ClientWidth = 75
|
ClientWidth = 75
|
||||||
TabOrder = 1
|
TabOrder = 1
|
||||||
object Palette: TColorPalette
|
object Palette: TColorPalette
|
||||||
Left = 0
|
Left = 0
|
||||||
Height = 517
|
Height = 532
|
||||||
Top = 0
|
Top = 0
|
||||||
Width = 75
|
Width = 75
|
||||||
Align = alClient
|
Align = alClient
|
||||||
@ -209,17 +209,17 @@
|
|||||||
Left = 0
|
Left = 0
|
||||||
Height = 105
|
Height = 105
|
||||||
Top = 0
|
Top = 0
|
||||||
Width = 905
|
Width = 935
|
||||||
Align = alTop
|
Align = alTop
|
||||||
BevelOuter = bvNone
|
BevelOuter = bvNone
|
||||||
ClientHeight = 105
|
ClientHeight = 105
|
||||||
ClientWidth = 905
|
ClientWidth = 935
|
||||||
TabOrder = 2
|
TabOrder = 2
|
||||||
object Bevel1: TBevel
|
object Bevel1: TBevel
|
||||||
Left = 0
|
Left = 0
|
||||||
Height = 2
|
Height = 2
|
||||||
Top = 69
|
Top = 69
|
||||||
Width = 905
|
Width = 935
|
||||||
Align = alTop
|
Align = alTop
|
||||||
Shape = bsBottomLine
|
Shape = bsBottomLine
|
||||||
end
|
end
|
||||||
@ -227,7 +227,7 @@
|
|||||||
Left = 0
|
Left = 0
|
||||||
Height = 2
|
Height = 2
|
||||||
Top = 33
|
Top = 33
|
||||||
Width = 905
|
Width = 935
|
||||||
Align = alTop
|
Align = alTop
|
||||||
Shape = bsBottomLine
|
Shape = bsBottomLine
|
||||||
end
|
end
|
||||||
@ -235,7 +235,7 @@
|
|||||||
Left = 0
|
Left = 0
|
||||||
Height = 33
|
Height = 33
|
||||||
Top = 0
|
Top = 0
|
||||||
Width = 905
|
Width = 935
|
||||||
ButtonHeight = 32
|
ButtonHeight = 32
|
||||||
ButtonWidth = 36
|
ButtonWidth = 36
|
||||||
Color = clBtnFace
|
Color = clBtnFace
|
||||||
@ -402,14 +402,14 @@
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
object ZoomInBtn: TToolButton
|
object ZoomInBtn: TToolButton
|
||||||
Left = 385
|
Left = 498
|
||||||
Top = 0
|
Top = 0
|
||||||
Caption = 'ZoomInBtn'
|
Caption = 'ZoomInBtn'
|
||||||
ImageIndex = 10
|
ImageIndex = 10
|
||||||
OnClick = ZoomInBtnClick
|
OnClick = ZoomInBtnClick
|
||||||
end
|
end
|
||||||
object ZoomOutBtn: TToolButton
|
object ZoomOutBtn: TToolButton
|
||||||
Left = 498
|
Left = 385
|
||||||
Top = 0
|
Top = 0
|
||||||
Caption = 'ZoomOutBtn'
|
Caption = 'ZoomOutBtn'
|
||||||
ImageIndex = 11
|
ImageIndex = 11
|
||||||
@ -420,13 +420,13 @@
|
|||||||
Left = 0
|
Left = 0
|
||||||
Height = 34
|
Height = 34
|
||||||
Top = 35
|
Top = 35
|
||||||
Width = 905
|
Width = 935
|
||||||
Align = alTop
|
Align = alTop
|
||||||
BorderSpacing.InnerBorder = 4
|
BorderSpacing.InnerBorder = 4
|
||||||
BorderSpacing.CellAlignVertical = ccaCenter
|
BorderSpacing.CellAlignVertical = ccaCenter
|
||||||
BevelOuter = bvNone
|
BevelOuter = bvNone
|
||||||
ClientHeight = 34
|
ClientHeight = 34
|
||||||
ClientWidth = 905
|
ClientWidth = 935
|
||||||
TabOrder = 1
|
TabOrder = 1
|
||||||
object LabelFillOutline: TLabel
|
object LabelFillOutline: TLabel
|
||||||
Left = 103
|
Left = 103
|
||||||
@ -462,7 +462,7 @@
|
|||||||
ParentColor = False
|
ParentColor = False
|
||||||
end
|
end
|
||||||
object PanelColors: TPanel
|
object PanelColors: TPanel
|
||||||
Left = 693
|
Left = 723
|
||||||
Height = 34
|
Height = 34
|
||||||
Top = 0
|
Top = 0
|
||||||
Width = 212
|
Width = 212
|
||||||
@ -1054,11 +1054,11 @@
|
|||||||
Left = 0
|
Left = 0
|
||||||
Height = 34
|
Height = 34
|
||||||
Top = 71
|
Top = 71
|
||||||
Width = 905
|
Width = 935
|
||||||
Align = alTop
|
Align = alTop
|
||||||
BevelOuter = bvNone
|
BevelOuter = bvNone
|
||||||
ClientHeight = 34
|
ClientHeight = 34
|
||||||
ClientWidth = 905
|
ClientWidth = 935
|
||||||
TabOrder = 2
|
TabOrder = 2
|
||||||
object LabelSize: TLabel
|
object LabelSize: TLabel
|
||||||
Left = 0
|
Left = 0
|
||||||
@ -1292,9 +1292,9 @@
|
|||||||
TabOrder = 5
|
TabOrder = 5
|
||||||
object checkFuzzy: TCheckBox
|
object checkFuzzy: TCheckBox
|
||||||
Left = 4
|
Left = 4
|
||||||
Height = 23
|
Height = 19
|
||||||
Top = 9
|
Top = 9
|
||||||
Width = 24
|
Width = 20
|
||||||
OnChange = checkFuzzyChange
|
OnChange = checkFuzzyChange
|
||||||
TabOrder = 0
|
TabOrder = 0
|
||||||
end
|
end
|
||||||
@ -1303,9 +1303,9 @@
|
|||||||
end
|
end
|
||||||
object PanelPictures: TPanel
|
object PanelPictures: TPanel
|
||||||
Left = 40
|
Left = 40
|
||||||
Height = 517
|
Height = 532
|
||||||
Top = 105
|
Top = 105
|
||||||
Width = 790
|
Width = 820
|
||||||
Align = alClient
|
Align = alClient
|
||||||
BevelOuter = bvLowered
|
BevelOuter = bvLowered
|
||||||
TabOrder = 3
|
TabOrder = 3
|
||||||
|
@ -1,166 +1,152 @@
|
|||||||
{ This is an automatically generated lazarus resource file }
|
{ This is an automatically generated lazarus resource file }
|
||||||
|
|
||||||
LazarusResources.Add('TMainForm','FORMDATA',[
|
LazarusResources.Add('TMainForm','FORMDATA',[
|
||||||
'TPF0'#9'TMainForm'#8'MainForm'#4'Left'#3#180#0#6'Height'#3#154#2#3'Top'#3#135
|
'TPF0'#9'TMainForm'#8'MainForm'#4'Left'#3#4#1#6'Height'#3#169#2#3'Top'#3#147#0
|
||||||
+#0#5'Width'#3#137#3#7'Caption'#6#20'Lazarus Image Editor'#12'ClientHeight'#3
|
+#5'Width'#3#167#3#7'Caption'#6#20'Lazarus Image Editor'#12'ClientHeight'#3
|
||||||
+#132#2#11'ClientWidth'#3#137#3#12'Font.CharSet'#7#14'GB2312_CHARSET'#11'Font'
|
+#147#2#11'ClientWidth'#3#167#3#12'Font.CharSet'#7#14'GB2312_CHARSET'#11'Font'
|
||||||
+'.Height'#2#243#9'Font.Name'#6#12#229#190#174#232#189#175#233#155#133#233#187
|
+'.Height'#2#243#9'Font.Name'#6#12#229#190#174#232#189#175#233#155#133#233#187
|
||||||
+#145#10'Font.Pitch'#7#10'fpVariable'#12'Font.Quality'#7#7'fqDraft'#4'Menu'#7
|
+#145#10'Font.Pitch'#7#10'fpVariable'#12'Font.Quality'#7#7'fqDraft'#4'Menu'#7
|
||||||
+#8'MainMenu'#12'OnCloseQuery'#7#14'FormCloseQuery'#8'OnCreate'#7#10'FormCrea'
|
+#8'MainMenu'#12'OnCloseQuery'#7#14'FormCloseQuery'#8'OnCreate'#7#10'FormCrea'
|
||||||
+'te'#6'OnShow'#7#8'FormShow'#10'LCLVersion'#6#6'0.9.31'#0#6'TPanel'#10'Panel'
|
+'te'#6'OnShow'#7#8'FormShow'#10'LCLVersion'#6#6'0.9.31'#0#6'TPanel'#10'Panel'
|
||||||
+'Tools'#4'Left'#2#0#6'Height'#3#5#2#3'Top'#2'i'#5'Width'#2'('#5'Align'#7#6'a'
|
+'Tools'#4'Left'#2#0#6'Height'#3#20#2#3'Top'#2'i'#5'Width'#2'('#5'Align'#7#6
|
||||||
+'lLeft'#10'BevelOuter'#7#6'bvNone'#12'ClientHeight'#3#5#2#11'ClientWidth'#2
|
+'alLeft'#10'BevelOuter'#7#6'bvNone'#12'ClientHeight'#3#20#2#11'ClientWidth'#2
|
||||||
+'('#11'ParentColor'#8#8'TabOrder'#2#0#0#8'TToolBar'#12'ToolBarTools'#4'Left'
|
+'('#11'ParentColor'#8#8'TabOrder'#2#0#0#8'TToolBar'#12'ToolBarTools'#4'Left'
|
||||||
+#2#0#6'Height'#3#5#2#3'Top'#2#0#5'Width'#2'('#5'Align'#7#6'alLeft'#12'Button'
|
+#2#0#6'Height'#3#20#2#3'Top'#2#0#5'Width'#2'('#5'Align'#7#6'alLeft'#12'Butto'
|
||||||
+'Height'#2'('#11'ButtonWidth'#2'('#7'Caption'#6#12'ToolBarTools'#21'Constrai'
|
+'nHeight'#2'('#11'ButtonWidth'#2'('#7'Caption'#6#12'ToolBarTools'#21'Constra'
|
||||||
+'nts.MinHeight'#3#146#1#6'Images'#7#14'ImageListTools'#6'Indent'#2#0#8'TabOr'
|
+'ints.MinHeight'#3#146#1#6'Images'#7#14'ImageListTools'#6'Indent'#2#0#8'TabO'
|
||||||
+'der'#2#0#0#11'TToolButton'#9'ToolSpray'#4'Left'#2#0#4'Hint'#6#5'Spray'#3'To'
|
+'rder'#2#0#0#11'TToolButton'#9'ToolSpray'#4'Left'#2#0#4'Hint'#6#5'Spray'#3'T'
|
||||||
+'p'#3'j'#1#7'Grouped'#9#10'ImageIndex'#2#9#7'OnClick'#7#14'ToolSprayClick'#14
|
+'op'#3'j'#1#7'Grouped'#9#10'ImageIndex'#2#9#7'OnClick'#7#14'ToolSprayClick'
|
||||||
+'ParentShowHint'#8#8'ShowHint'#9#5'Style'#7#8'tbsCheck'#0#0#11'TToolButton'
|
|
||||||
+#13'ToolFloodFill'#4'Left'#2#0#4'Hint'#6#10'Flood Fill'#3'Top'#3'B'#1#7'Grou'
|
|
||||||
+'ped'#9#10'ImageIndex'#2#8#7'OnClick'#7#18'ToolFloodFillClick'#14'ParentShow'
|
|
||||||
+'Hint'#8#8'ShowHint'#9#5'Style'#7#8'tbsCheck'#0#0#11'TToolButton'#10'ToolEra'
|
|
||||||
+'ser'#4'Left'#2#0#4'Hint'#6#15'Eraser/Replacer'#3'Top'#2'z'#7'Grouped'#9#10
|
|
||||||
+'ImageIndex'#2#3#7'OnClick'#7#15'ToolEraserClick'#14'ParentShowHint'#8#8'Sho'
|
|
||||||
+'wHint'#9#5'Style'#7#8'tbsCheck'#0#0#11'TToolButton'#7'ToolPen'#4'Left'#2#0#4
|
|
||||||
+'Hint'#6#3'Pen'#3'Top'#2'R'#7'Grouped'#9#10'ImageIndex'#2#2#7'OnClick'#7#12
|
|
||||||
+'ToolPenClick'#14'ParentShowHint'#8#8'ShowHint'#9#5'Style'#7#8'tbsCheck'#0#0
|
|
||||||
+#11'TToolButton'#13'ToolColorPick'#4'Left'#2#0#4'Hint'#6#10'Color Pick'#3'To'
|
|
||||||
+'p'#2'*'#7'Grouped'#9#10'ImageIndex'#2#1#7'OnClick'#7#18'ToolColorPickClick'
|
|
||||||
+#14'ParentShowHint'#8#8'ShowHint'#9#5'Style'#7#8'tbsCheck'#0#0#11'TToolButto'
|
+#14'ParentShowHint'#8#8'ShowHint'#9#5'Style'#7#8'tbsCheck'#0#0#11'TToolButto'
|
||||||
+'n'#8'ToolMask'#4'Left'#2#0#4'Hint'#6#4'Mask'#3'Top'#2#2#7'Grouped'#9#10'Ima'
|
+'n'#13'ToolFloodFill'#4'Left'#2#0#4'Hint'#6#10'Flood Fill'#3'Top'#3'B'#1#7'G'
|
||||||
+'geIndex'#2#0#7'OnClick'#7#13'ToolMaskClick'#14'ParentShowHint'#8#8'ShowHint'
|
+'rouped'#9#10'ImageIndex'#2#8#7'OnClick'#7#18'ToolFloodFillClick'#14'ParentS'
|
||||||
+#9#5'Style'#7#8'tbsCheck'#0#0#11'TToolButton'#8'ToolLine'#4'Left'#2#0#4'Hint'
|
+'howHint'#8#8'ShowHint'#9#5'Style'#7#8'tbsCheck'#0#0#11'TToolButton'#10'Tool'
|
||||||
+#6#4'Line'#3'Top'#3#162#0#4'Down'#9#7'Grouped'#9#10'ImageIndex'#2#4#7'OnClic'
|
+'Eraser'#4'Left'#2#0#4'Hint'#6#15'Eraser/Replacer'#3'Top'#2'z'#7'Grouped'#9
|
||||||
+'k'#7#13'ToolLineClick'#14'ParentShowHint'#8#8'ShowHint'#9#5'Style'#7#8'tbsC'
|
+#10'ImageIndex'#2#3#7'OnClick'#7#15'ToolEraserClick'#14'ParentShowHint'#8#8
|
||||||
+'heck'#0#0#11'TToolButton'#13'ToolRectangle'#4'Left'#2#0#4'Hint'#6#7'Polygon'
|
+'ShowHint'#9#5'Style'#7#8'tbsCheck'#0#0#11'TToolButton'#7'ToolPen'#4'Left'#2
|
||||||
+#3'Top'#3#202#0#7'Grouped'#9#10'ImageIndex'#2#5#7'OnClick'#7#18'ToolRectangl'
|
+#0#4'Hint'#6#3'Pen'#3'Top'#2'R'#7'Grouped'#9#10'ImageIndex'#2#2#7'OnClick'#7
|
||||||
+'eClick'#14'ParentShowHint'#8#8'ShowHint'#9#5'Style'#7#8'tbsCheck'#0#0#11'TT'
|
+#12'ToolPenClick'#14'ParentShowHint'#8#8'ShowHint'#9#5'Style'#7#8'tbsCheck'#0
|
||||||
+'oolButton'#11'ToolPolygon'#4'Left'#2#0#4'Hint'#6#7'Ellipse'#3'Top'#3#26#1#7
|
+#0#11'TToolButton'#13'ToolColorPick'#4'Left'#2#0#4'Hint'#6#10'Color Pick'#3
|
||||||
+'Grouped'#9#10'ImageIndex'#2#7#7'OnClick'#7#16'ToolPolygonClick'#14'ParentSh'
|
+'Top'#2'*'#7'Grouped'#9#10'ImageIndex'#2#1#7'OnClick'#7#18'ToolColorPickClic'
|
||||||
+'owHint'#8#8'ShowHint'#9#5'Style'#7#8'tbsCheck'#0#0#11'TToolButton'#11'ToolE'
|
+'k'#14'ParentShowHint'#8#8'ShowHint'#9#5'Style'#7#8'tbsCheck'#0#0#11'TToolBu'
|
||||||
+'llipse'#4'Left'#2#0#4'Hint'#6#25'Rectangle/Round rectangle'#3'Top'#3#242#0#7
|
+'tton'#8'ToolMask'#4'Left'#2#0#4'Hint'#6#4'Mask'#3'Top'#2#2#7'Grouped'#9#10
|
||||||
+'Grouped'#9#10'ImageIndex'#2#6#7'OnClick'#7#12'ToolEllClick'#14'ParentShowHi'
|
+'ImageIndex'#2#0#7'OnClick'#7#13'ToolMaskClick'#14'ParentShowHint'#8#8'ShowH'
|
||||||
+'nt'#8#8'ShowHint'#9#5'Style'#7#8'tbsCheck'#0#0#0#0#10'TStatusBar'#9'StatusB'
|
+'int'#9#5'Style'#7#8'tbsCheck'#0#0#11'TToolButton'#8'ToolLine'#4'Left'#2#0#4
|
||||||
+'ar'#4'Left'#2#0#6'Height'#2#22#3'Top'#3'n'#2#5'Width'#3#137#3#6'Panels'#14#1
|
+'Hint'#6#4'Line'#3'Top'#3#162#0#4'Down'#9#7'Grouped'#9#10'ImageIndex'#2#4#7
|
||||||
+#5'Width'#3#250#0#0#1#9'Alignment'#7#8'taCenter'#5'Width'#2'P'#0#1#9'Alignme'
|
+'OnClick'#7#13'ToolLineClick'#14'ParentShowHint'#8#8'ShowHint'#9#5'Style'#7#8
|
||||||
+'nt'#7#8'taCenter'#5'Width'#2'P'#0#1#5'Width'#2'P'#0#1#5'Width'#2'P'#0#1#5'W'
|
+'tbsCheck'#0#0#11'TToolButton'#13'ToolRectangle'#4'Left'#2#0#4'Hint'#6#27'Re'
|
||||||
+'idth'#2'2'#0#0#11'SimplePanel'#8#0#0#6'TPanel'#12'PanelPallete'#4'Left'#3'>'
|
+'cTangle / Round Rectangle'#3'Top'#3#202#0#7'Grouped'#9#10'ImageIndex'#2#5#7
|
||||||
+#3#6'Height'#3#5#2#3'Top'#2'i'#5'Width'#2'K'#5'Align'#7#7'alRight'#8'AutoSiz'
|
+'OnClick'#7#18'ToolRectangleClick'#14'ParentShowHint'#8#8'ShowHint'#9#5'Styl'
|
||||||
+'e'#9#10'BevelOuter'#7#6'bvNone'#12'ClientHeight'#3#5#2#11'ClientWidth'#2'K'
|
+'e'#7#8'tbsCheck'#0#0#11'TToolButton'#11'ToolPolygon'#4'Left'#2#0#4'Hint'#6#7
|
||||||
+#8'TabOrder'#2#1#0#13'TColorPalette'#7'Palette'#4'Left'#2#0#6'Height'#3#5#2#3
|
+'Polygon'#3'Top'#3#26#1#7'Grouped'#9#10'ImageIndex'#2#7#7'OnClick'#7#16'Tool'
|
||||||
+'Top'#2#0#5'Width'#2'K'#5'Align'#7#8'alClient'#11'ButtonWidth'#2#12#12'Butto'
|
+'PolygonClick'#14'ParentShowHint'#8#8'ShowHint'#9#5'Style'#7#8'tbsCheck'#0#0
|
||||||
+'nHeight'#2#12#8'DragMode'#7#11'dmAutomatic'#16'OnColorMouseMove'#7#21'Palet'
|
+#11'TToolButton'#11'ToolEllipse'#4'Left'#2#0#4'Hint'#6#7'Ellipse'#3'Top'#3
|
||||||
+'teColorMouseMove'#11'OnColorPick'#7#16'PaletteColorPick'#0#0#0#6'TPanel'#12
|
+#242#0#7'Grouped'#9#10'ImageIndex'#2#6#7'OnClick'#7#12'ToolEllClick'#14'Pare'
|
||||||
+'PanelToolBar'#4'Left'#2#0#6'Height'#2'i'#3'Top'#2#0#5'Width'#3#137#3#5'Alig'
|
+'ntShowHint'#8#8'ShowHint'#9#5'Style'#7#8'tbsCheck'#0#0#0#0#10'TStatusBar'#9
|
||||||
+'n'#7#5'alTop'#10'BevelOuter'#7#6'bvNone'#12'ClientHeight'#2'i'#11'ClientWid'
|
+'StatusBar'#4'Left'#2#0#6'Height'#2#22#3'Top'#3'}'#2#5'Width'#3#167#3#6'Pane'
|
||||||
+'th'#3#137#3#8'TabOrder'#2#2#0#6'TBevel'#6'Bevel1'#4'Left'#2#0#6'Height'#2#2
|
+'ls'#14#1#5'Width'#3#250#0#0#1#9'Alignment'#7#8'taCenter'#5'Width'#2'P'#0#1#9
|
||||||
+#3'Top'#2'E'#5'Width'#3#137#3#5'Align'#7#5'alTop'#5'Shape'#7#12'bsBottomLine'
|
+'Alignment'#7#8'taCenter'#5'Width'#2'P'#0#1#5'Width'#2'P'#0#1#5'Width'#2'P'#0
|
||||||
+#0#0#6'TBevel'#6'Bevel2'#4'Left'#2#0#6'Height'#2#2#3'Top'#2'!'#5'Width'#3#137
|
+#1#5'Width'#2'2'#0#0#11'SimplePanel'#8#0#0#6'TPanel'#12'PanelPallete'#4'Left'
|
||||||
+#3#5'Align'#7#5'alTop'#5'Shape'#7#12'bsBottomLine'#0#0#8'TToolBar'#7'ToolBar'
|
+#3'\'#3#6'Height'#3#20#2#3'Top'#2'i'#5'Width'#2'K'#5'Align'#7#7'alRight'#8'A'
|
||||||
+#4'Left'#2#0#6'Height'#2'!'#3'Top'#2#0#5'Width'#3#137#3#12'ButtonHeight'#2' '
|
+'utoSize'#9#10'BevelOuter'#7#6'bvNone'#12'ClientHeight'#3#20#2#11'ClientWidt'
|
||||||
+#11'ButtonWidth'#2'$'#5'Color'#7#9'clBtnFace'#11'EdgeBorders'#11#0#6'Images'
|
+'h'#2'K'#8'TabOrder'#2#1#0#13'TColorPalette'#7'Palette'#4'Left'#2#0#6'Height'
|
||||||
+#7#16'ImageListActions'#11'ParentColor'#8#8'TabOrder'#2#0#0#11'TToolButton'#9
|
+#3#20#2#3'Top'#2#0#5'Width'#2'K'#5'Align'#7#8'alClient'#11'ButtonWidth'#2#12
|
||||||
+'ToolClose'#4'Left'#2'm'#4'Hint'#6#5'Close'#3'Top'#2#0#7'Caption'#6#6'&Close'
|
+#12'ButtonHeight'#2#12#8'DragMode'#7#11'dmAutomatic'#16'OnColorMouseMove'#7
|
||||||
+#10'ImageIndex'#2#3#7'OnClick'#7#16'FileCloseExecute'#14'ParentShowHint'#8#8
|
+#21'PaletteColorMouseMove'#11'OnColorPick'#7#16'PaletteColorPick'#0#0#0#6'TP'
|
||||||
+'ShowHint'#9#0#0#11'TToolButton'#8'ToolSave'#4'Left'#2'I'#4'Hint'#6#4'Save'#3
|
+'anel'#12'PanelToolBar'#4'Left'#2#0#6'Height'#2'i'#3'Top'#2#0#5'Width'#3#167
|
||||||
+'Top'#2#0#7'Caption'#6#5'&Save'#10'ImageIndex'#2#2#7'OnClick'#7#15'FileSaveE'
|
+#3#5'Align'#7#5'alTop'#10'BevelOuter'#7#6'bvNone'#12'ClientHeight'#2'i'#11'C'
|
||||||
,'xecute'#14'ParentShowHint'#8#8'ShowHint'#9#0#0#11'TToolButton'#8'ToolOpen'#4
|
+'lientWidth'#3#167#3#8'TabOrder'#2#2#0#6'TBevel'#6'Bevel1'#4'Left'#2#0#6'Hei'
|
||||||
+'Left'#2'%'#4'Hint'#6#4'Open'#3'Top'#2#0#7'Caption'#6#8'&Open...'#10'ImageIn'
|
+'ght'#2#2#3'Top'#2'E'#5'Width'#3#167#3#5'Align'#7#5'alTop'#5'Shape'#7#12'bsB'
|
||||||
+'dex'#2#1#7'OnClick'#7#15'FileOpenExecute'#14'ParentShowHint'#8#8'ShowHint'#9
|
+'ottomLine'#0#0#6'TBevel'#6'Bevel2'#4'Left'#2#0#6'Height'#2#2#3'Top'#2'!'#5
|
||||||
+#0#0#11'TToolButton'#7'ToolNew'#4'Left'#2#1#4'Hint'#6#3'New'#3'Top'#2#0#7'Ca'
|
+'Width'#3#167#3#5'Align'#7#5'alTop'#5'Shape'#7#12'bsBottomLine'#0#0#8'TToolB'
|
||||||
+'ption'#6#7'&New...'#10'ImageIndex'#2#0#7'OnClick'#7#14'FileNewExecute'#14'P'
|
+'ar'#7'ToolBar'#4'Left'#2#0#6'Height'#2'!'#3'Top'#2#0#5'Width'#3#167#3#12'Bu'
|
||||||
+'arentShowHint'#8#8'ShowHint'#9#0#0#11'TToolButton'#11'ToolButton6'#4'Left'#3
|
+'ttonHeight'#2' '#11'ButtonWidth'#2'$'#5'Color'#7#9'clBtnFace'#11'EdgeBorder'
|
||||||
+#145#0#3'Top'#2#0#5'Width'#2#8#7'Caption'#6#11'ToolButton6'#5'Style'#7#12'tb'
|
+'s'#11#0#6'Images'#7#16'ImageListActions'#11'ParentColor'#8#8'TabOrder'#2#0#0
|
||||||
+'sSeparator'#0#0#11'TToolButton'#7'ToolCut'#4'Left'#3#233#0#4'Hint'#6#3'Cut'
|
+#11'TToolButton'#9'ToolClose'#4'Left'#2'm'#4'Hint'#6#5'Close'#3'Top'#2#0#7'C'
|
||||||
+#3'Top'#2#0#7'Caption'#6#4'Cu&t'#7'Enabled'#8#10'ImageIndex'#2#6#7'OnClick'#7
|
+'aption'#6#6'&Close'#10'ImageIndex'#2#3#7'OnClick'#7#16'FileCloseExecute'#14
|
||||||
+#14'EditCutExecute'#14'ParentShowHint'#8#8'ShowHint'#9#0#0#11'TToolButton'#11
|
+'ParentShowHint'#8#8'ShowHint'#9#0#0#11'TToolButton'#8'ToolSave'#4'Left'#2'I'
|
||||||
+'ToolButton8'#4'Left'#3#13#1#4'Hint'#6#4'Copy'#3'Top'#2#0#7'Caption'#6#5'&Co'
|
+#4'Hint'#6#4'Save'#3'Top'#2#0#7'Caption'#6#5'&Save'#10'ImageIndex'#2#2#7'OnC'
|
||||||
+'py'#7'Enabled'#8#10'ImageIndex'#2#7#7'OnClick'#7#15'EditCopyExecute'#14'Par'
|
,'lick'#7#15'FileSaveExecute'#14'ParentShowHint'#8#8'ShowHint'#9#0#0#11'TTool'
|
||||||
+'entShowHint'#8#8'ShowHint'#9#0#0#11'TToolButton'#11'ToolButton9'#4'Left'#3
|
+'Button'#8'ToolOpen'#4'Left'#2'%'#4'Hint'#6#4'Open'#3'Top'#2#0#7'Caption'#6#8
|
||||||
+'1'#1#4'Hint'#6#5'Paste'#3'Top'#2#0#7'Caption'#6#6'&Paste'#7'Enabled'#8#10'I'
|
+'&Open...'#10'ImageIndex'#2#1#7'OnClick'#7#15'FileOpenExecute'#14'ParentShow'
|
||||||
+'mageIndex'#2#8#7'OnClick'#7#16'EditPasteExecute'#14'ParentShowHint'#8#8'Sho'
|
+'Hint'#8#8'ShowHint'#9#0#0#11'TToolButton'#7'ToolNew'#4'Left'#2#1#4'Hint'#6#3
|
||||||
+'wHint'#9#0#0#11'TToolButton'#12'ToolButton10'#4'Left'#3'y'#1#3'Top'#2#0#5'W'
|
+'New'#3'Top'#2#0#7'Caption'#6#7'&New...'#10'ImageIndex'#2#0#7'OnClick'#7#14
|
||||||
+'idth'#2#8#7'Caption'#6#12'ToolButton10'#5'Style'#7#12'tbsSeparator'#0#0#11
|
+'FileNewExecute'#14'ParentShowHint'#8#8'ShowHint'#9#0#0#11'TToolButton'#11'T'
|
||||||
+'TToolButton'#12'ToolButton11'#4'Left'#3'U'#1#4'Hint'#6#6'Delete'#3'Top'#2#0
|
+'oolButton6'#4'Left'#3#145#0#3'Top'#2#0#5'Width'#2#8#7'Caption'#6#11'ToolBut'
|
||||||
+#7'Caption'#6#7'&Delete'#7'Enabled'#8#10'ImageIndex'#2#9#7'OnClick'#7#17'Edi'
|
+'ton6'#5'Style'#7#12'tbsSeparator'#0#0#11'TToolButton'#7'ToolCut'#4'Left'#3
|
||||||
+'tDeleteExecute'#14'ParentShowHint'#8#8'ShowHint'#9#0#0#11'TToolButton'#8'To'
|
+#233#0#4'Hint'#6#3'Cut'#3'Top'#2#0#7'Caption'#6#4'Cu&t'#7'Enabled'#8#10'Imag'
|
||||||
+'olUndo'#4'Left'#3#153#0#4'Hint'#6#4'Undo'#3'Top'#2#0#7'Caption'#6#5'&Undo'#7
|
+'eIndex'#2#6#7'OnClick'#7#14'EditCutExecute'#14'ParentShowHint'#8#8'ShowHint'
|
||||||
+'Enabled'#8#10'ImageIndex'#2#4#14'ParentShowHint'#8#8'ShowHint'#9#0#0#11'TTo'
|
+#9#0#0#11'TToolButton'#11'ToolButton8'#4'Left'#3#13#1#4'Hint'#6#4'Copy'#3'To'
|
||||||
+'olButton'#11'ToolButton2'#4'Left'#3#225#0#3'Top'#2#0#5'Width'#2#8#7'Caption'
|
+'p'#2#0#7'Caption'#6#5'&Copy'#7'Enabled'#8#10'ImageIndex'#2#7#7'OnClick'#7#15
|
||||||
+#6#11'ToolButton2'#5'Style'#7#12'tbsSeparator'#0#0#11'TToolButton'#8'ToolRed'
|
+'EditCopyExecute'#14'ParentShowHint'#8#8'ShowHint'#9#0#0#11'TToolButton'#11
|
||||||
+'o'#4'Left'#3#189#0#4'Hint'#6#4'Redo'#3'Top'#2#0#7'Caption'#6#5'&Redo'#7'Ena'
|
+'ToolButton9'#4'Left'#3'1'#1#4'Hint'#6#5'Paste'#3'Top'#2#0#7'Caption'#6#6'&P'
|
||||||
+'bled'#8#10'ImageIndex'#2#5#14'ParentShowHint'#8#8'ShowHint'#9#0#0#6'TPanel'
|
+'aste'#7'Enabled'#8#10'ImageIndex'#2#8#7'OnClick'#7#16'EditPasteExecute'#14
|
||||||
+#9'PanelZoom'#4'Left'#3#165#1#6'Height'#2' '#3'Top'#2#0#5'Width'#2'M'#10'Bev'
|
+'ParentShowHint'#8#8'ShowHint'#9#0#0#11'TToolButton'#12'ToolButton10'#4'Left'
|
||||||
+'elOuter'#7#6'bvNone'#12'ClientHeight'#2' '#11'ClientWidth'#2'M'#8'TabOrder'
|
+#3'y'#1#3'Top'#2#0#5'Width'#2#8#7'Caption'#6#12'ToolButton10'#5'Style'#7#12
|
||||||
+#2#0#0#9'TComboBox'#12'ComboBoxZoom'#4'Left'#2#0#6'Height'#2#27#3'Top'#2#2#5
|
+'tbsSeparator'#0#0#11'TToolButton'#12'ToolButton11'#4'Left'#3'U'#1#4'Hint'#6
|
||||||
+'Width'#2'L'#7'Anchors'#11#6'akLeft'#0#10'ItemHeight'#2#19#9'ItemIndex'#2#2
|
+#6'Delete'#3'Top'#2#0#7'Caption'#6#7'&Delete'#7'Enabled'#8#10'ImageIndex'#2#9
|
||||||
+#13'Items.Strings'#1#6#4'25 %'#6#4'50 %'#6#5'100 %'#6#5'200 %'#6#5'400 %'#6#5
|
+#7'OnClick'#7#17'EditDeleteExecute'#14'ParentShowHint'#8#8'ShowHint'#9#0#0#11
|
||||||
+'800 %'#6#6'1000 %'#0#8'OnChange'#7#18'ComboBoxZoomChange'#13'OnEditingDone'
|
+'TToolButton'#8'ToolUndo'#4'Left'#3#153#0#4'Hint'#6#4'Undo'#3'Top'#2#0#7'Cap'
|
||||||
+#7#23'ComboBoxZoomEditingDone'#14'ParentShowHint'#8#8'TabOrder'#2#0#4'Text'#6
|
+'tion'#6#5'&Undo'#7'Enabled'#8#10'ImageIndex'#2#4#14'ParentShowHint'#8#8'Sho'
|
||||||
+#5'100 %'#0#0#0#11'TToolButton'#9'ZoomInBtn'#4'Left'#3#129#1#3'Top'#2#0#7'Ca'
|
+'wHint'#9#0#0#11'TToolButton'#11'ToolButton2'#4'Left'#3#225#0#3'Top'#2#0#5'W'
|
||||||
+'ption'#6#9'ZoomInBtn'#10'ImageIndex'#2#10#7'OnClick'#7#14'ZoomInBtnClick'#0
|
+'idth'#2#8#7'Caption'#6#11'ToolButton2'#5'Style'#7#12'tbsSeparator'#0#0#11'T'
|
||||||
+#0#11'TToolButton'#10'ZoomOutBtn'#4'Left'#3#242#1#3'Top'#2#0#7'Caption'#6#10
|
+'ToolButton'#8'ToolRedo'#4'Left'#3#189#0#4'Hint'#6#4'Redo'#3'Top'#2#0#7'Capt'
|
||||||
+'ZoomOutBtn'#10'ImageIndex'#2#11#7'OnClick'#7#15'ZoomOutBtnClick'#0#0#0#6'TP'
|
+'ion'#6#5'&Redo'#7'Enabled'#8#10'ImageIndex'#2#5#14'ParentShowHint'#8#8'Show'
|
||||||
+'anel'#12'PanelOptions'#4'Left'#2#0#6'Height'#2'"'#3'Top'#2'#'#5'Width'#3#137
|
+'Hint'#9#0#0#6'TPanel'#9'PanelZoom'#4'Left'#3#165#1#6'Height'#2' '#3'Top'#2#0
|
||||||
+#3#5'Align'#7#5'alTop'#25'BorderSpacing.InnerBorder'#2#4#31'BorderSpacing.Ce'
|
+#5'Width'#2'M'#10'BevelOuter'#7#6'bvNone'#12'ClientHeight'#2' '#11'ClientWid'
|
||||||
+'llAlignVertical'#7#9'ccaCenter'#10'BevelOuter'#7#6'bvNone'#12'ClientHeight'
|
+'th'#2'M'#8'TabOrder'#2#0#0#9'TComboBox'#12'ComboBoxZoom'#4'Left'#2#0#6'Heig'
|
||||||
+#2'"'#11'ClientWidth'#3#137#3#8'TabOrder'#2#1#0#6'TLabel'#16'LabelFillOutlin'
|
+'ht'#2#27#3'Top'#2#2#5'Width'#2'L'#7'Anchors'#11#6'akLeft'#0#10'ItemHeight'#2
|
||||||
+'e'#4'Left'#2'g'#6'Height'#2'"'#3'Top'#2#0#5'Width'#2'H'#5'Align'#7#6'alLeft'
|
+#19#9'ItemIndex'#2#2#13'Items.Strings'#1#6#4'25 %'#6#4'50 %'#6#5'100 %'#6#5
|
||||||
+#7'Caption'#6#14'Fill, Outline:'#21'Constraints.MinHeight'#2' '#6'Layout'#7#8
|
+'200 %'#6#5'400 %'#6#5'800 %'#6#6'1000 %'#0#8'OnChange'#7#18'ComboBoxZoomCha'
|
||||||
+'tlCenter'#11'ParentColor'#8#0#0#6'TLabel'#10'LabelShape'#4'Left'#2#0#6'Heig'
|
+'nge'#13'OnEditingDone'#7#23'ComboBoxZoomEditingDone'#14'ParentShowHint'#8#8
|
||||||
+'ht'#2'"'#3'Top'#2#0#5'Width'#2'*'#5'Align'#7#6'alLeft'#7'Caption'#6#6'Shape'
|
+'TabOrder'#2#0#4'Text'#6#5'100 %'#0#0#0#11'TToolButton'#9'ZoomInBtn'#4'Left'
|
||||||
+':'#21'Constraints.MinHeight'#2' '#6'Layout'#7#8'tlCenter'#11'ParentColor'#8
|
+#3#242#1#3'Top'#2#0#7'Caption'#6#9'ZoomInBtn'#10'ImageIndex'#2#10#7'OnClick'
|
||||||
+#0#0#6'TLabel'#13'LabelMaskTool'#4'Left'#3#2#1#6'Height'#2'"'#3'Top'#2#0#5'W'
|
+#7#14'ZoomInBtnClick'#0#0#11'TToolButton'#10'ZoomOutBtn'#4'Left'#3#129#1#3'T'
|
||||||
+'idth'#2'C'#5'Align'#7#6'alLeft'#7'Caption'#6#10'Mask Tool:'#21'Constraints.'
|
+'op'#2#0#7'Caption'#6#10'ZoomOutBtn'#10'ImageIndex'#2#11#7'OnClick'#7#15'Zoo'
|
||||||
+'MinHeight'#2' '#6'Layout'#7#8'tlCenter'#11'ParentColor'#8#0#0#6'TPanel'#11
|
+'mOutBtnClick'#0#0#0#6'TPanel'#12'PanelOptions'#4'Left'#2#0#6'Height'#2'"'#3
|
||||||
+'PanelColors'#4'Left'#3#181#2#6'Height'#2'"'#3'Top'#2#0#5'Width'#3#212#0#5'A'
|
+'Top'#2'#'#5'Width'#3#167#3#5'Align'#7#5'alTop'#25'BorderSpacing.InnerBorder'
|
||||||
+'lign'#7#7'alRight'#8'AutoSize'#9#25'BorderSpacing.InnerBorder'#2#4'!BorderS'
|
+#2#4#31'BorderSpacing.CellAlignVertical'#7#9'ccaCenter'#10'BevelOuter'#7#6'b'
|
||||||
+'pacing.CellAlignHorizontal'#7#10'ccaLeftTop'#31'BorderSpacing.CellAlignVert'
|
+'vNone'#12'ClientHeight'#2'"'#11'ClientWidth'#3#167#3#8'TabOrder'#2#1#0#6'TL'
|
||||||
+'ical'#7#9'ccaCenter'#10'BevelOuter'#7#6'bvNone'#12'ClientHeight'#2'"'#11'Cl'
|
+'abel'#16'LabelFillOutline'#4'Left'#2'g'#6'Height'#2'"'#3'Top'#2#0#5'Width'#2
|
||||||
+'ientWidth'#3#212#0#8'TabOrder'#2#0#0#6'TLabel'#12'LabelOutline'#4'Left'#2#8
|
+'H'#5'Align'#7#6'alLeft'#7'Caption'#6#14'Fill, Outline:'#21'Constraints.MinH'
|
||||||
+#6'Height'#2'"'#3'Top'#2#0#5'Width'#2'1'#5'Align'#7#7'alRight'#7'Caption'#6#8
|
+'eight'#2' '#6'Layout'#7#8'tlCenter'#11'ParentColor'#8#0#0#6'TLabel'#10'Labe'
|
||||||
+'Outline:'#6'Layout'#7#8'tlCenter'#11'ParentColor'#8#0#0#6'TLabel'#9'LabelFi'
|
+'lShape'#4'Left'#2#0#6'Height'#2'"'#3'Top'#2#0#5'Width'#2'*'#5'Align'#7#6'al'
|
||||||
+'ll'#4'Left'#2'Y'#6'Height'#2'"'#3'Top'#2#0#5'Width'#2#20#5'Align'#7#7'alRig'
|
+'Left'#7'Caption'#6#6'Shape:'#21'Constraints.MinHeight'#2' '#6'Layout'#7#8't'
|
||||||
+'ht'#7'Caption'#6#5'Fill:'#6'Layout'#7#8'tlCenter'#11'ParentColor'#8#0#0#6'T'
|
+'lCenter'#11'ParentColor'#8#0#0#6'TLabel'#13'LabelMaskTool'#4'Left'#3#2#1#6
|
||||||
+'Label'#10'LabelPaper'#4'Left'#3#141#0#6'Height'#2'"'#3'Top'#2#0#5'Width'#2
|
+'Height'#2'"'#3'Top'#2#0#5'Width'#2'C'#5'Align'#7#6'alLeft'#7'Caption'#6#10
|
||||||
+''''#5'Align'#7#7'alRight'#7'Caption'#6#6'Paper:'#6'Layout'#7#8'tlCenter'#11
|
+'Mask Tool:'#21'Constraints.MinHeight'#2' '#6'Layout'#7#8'tlCenter'#11'Paren'
|
||||||
+'ParentColor'#8#0#0#6'TPanel'#12'PanelOutline'#4'Left'#2'?'#6'Height'#2#22#3
|
+'tColor'#8#0#0#6'TPanel'#11'PanelColors'#4'Left'#3#211#2#6'Height'#2'"'#3'To'
|
||||||
+'Top'#2#6#5'Width'#2#20#5'Align'#7#7'alRight'#20'BorderSpacing.Around'#2#6#10
|
+'p'#2#0#5'Width'#3#212#0#5'Align'#7#7'alRight'#8'AutoSize'#9#25'BorderSpacin'
|
||||||
+'BevelInner'#7#9'bvLowered'#5'Color'#7#7'clWhite'#8'DragMode'#7#11'dmAutomat'
|
+'g.InnerBorder'#2#4'!BorderSpacing.CellAlignHorizontal'#7#10'ccaLeftTop'#31
|
||||||
+'ic'#11'ParentColor'#8#8'TabOrder'#2#0#10'OnDragOver'#7#18'PanelPaperDragOve'
|
+'BorderSpacing.CellAlignVertical'#7#9'ccaCenter'#10'BevelOuter'#7#6'bvNone'
|
||||||
,'r'#0#0#6'TPanel'#9'PanelFill'#4'Left'#2's'#6'Height'#2#22#3'Top'#2#6#5'Widt'
|
+#12'ClientHeight'#2'"'#11'ClientWidth'#3#212#0#8'TabOrder'#2#0#0#6'TLabel'#12
|
||||||
+'h'#2#20#5'Align'#7#7'alRight'#20'BorderSpacing.Around'#2#6#10'BevelInner'#7
|
+'LabelOutline'#4'Left'#2#8#6'Height'#2'"'#3'Top'#2#0#5'Width'#2'1'#5'Align'#7
|
||||||
+#9'bvLowered'#5'Color'#7#7'clWhite'#8'DragMode'#7#11'dmAutomatic'#11'ParentC'
|
+#7'alRight'#7'Caption'#6#8'Outline:'#6'Layout'#7#8'tlCenter'#11'ParentColor'
|
||||||
+'olor'#8#8'TabOrder'#2#1#10'OnDragOver'#7#18'PanelPaperDragOver'#0#0#6'TPane'
|
+#8#0#0#6'TLabel'#9'LabelFill'#4'Left'#2'Y'#6'Height'#2'"'#3'Top'#2#0#5'Width'
|
||||||
+'l'#10'PanelPaper'#4'Left'#3#186#0#6'Height'#2#22#3'Top'#2#6#5'Width'#2#20#5
|
+#2#20#5'Align'#7#7'alRight'#7'Caption'#6#5'Fill:'#6'Layout'#7#8'tlCenter'#11
|
||||||
+'Align'#7#7'alRight'#20'BorderSpacing.Around'#2#6#10'BevelInner'#7#9'bvLower'
|
+'ParentColor'#8#0#0#6'TLabel'#10'LabelPaper'#4'Left'#3#141#0#6'Height'#2'"'#3
|
||||||
+'ed'#5'Color'#7#7'clWhite'#8'DragMode'#7#11'dmAutomatic'#11'ParentColor'#8#8
|
+'Top'#2#0#5'Width'#2''''#5'Align'#7#7'alRight'#7'Caption'#6#6'Paper:'#6'Layo'
|
||||||
+'TabOrder'#2#2#10'OnDblClick'#7#18'PanelPaperDblClick'#10'OnDragOver'#7#18'P'
|
+'ut'#7#8'tlCenter'#11'ParentColor'#8#0#0#6'TPanel'#12'PanelOutline'#4'Left'#2
|
||||||
+'anelPaperDragOver'#0#0#0#6'TPanel'#16'PanelFillOutline'#4'Left'#3#175#0#6'H'
|
+'?'#6'Height'#2#22#3'Top'#2#6#5'Width'#2#20#5'Align'#7#7'alRight'#20'BorderS'
|
||||||
+'eight'#2'"'#3'Top'#2#0#5'Width'#2'S'#5'Align'#7#6'alLeft'#10'BevelOuter'#7#6
|
+'pacing.Around'#2#6#10'BevelInner'#7#9'bvLowered'#5'Color'#7#7'clWhite'#8'Dr'
|
||||||
+'bvNone'#12'ClientHeight'#2'"'#11'ClientWidth'#2'S'#8'TabOrder'#2#1#0#12'TSp'
|
+'agMode'#7#11'dmAutomatic'#11'ParentColor'#8#8'TabOrder'#2#0#10'OnDragOver'#7
|
||||||
+'eedButton'#15'ToolFillOutline'#4'Left'#2#4#6'Height'#2#24#3'Top'#2#5#5'Widt'
|
,#18'PanelPaperDragOver'#0#0#6'TPanel'#9'PanelFill'#4'Left'#2's'#6'Height'#2
|
||||||
+'h'#2#25#7'Anchors'#11#6'akLeft'#0#4'Down'#9#10'Glyph.Data'#10#234#4#0#0#230
|
+#22#3'Top'#2#6#5'Width'#2#20#5'Align'#7#7'alRight'#20'BorderSpacing.Around'#2
|
||||||
+#4#0#0'BM'#230#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#20#0#0#0#20#0#0#0#1#0#24#0#0#0
|
+#6#10'BevelInner'#7#9'bvLowered'#5'Color'#7#7'clWhite'#8'DragMode'#7#11'dmAu'
|
||||||
+#0#0#176#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
+'tomatic'#11'ParentColor'#8#8'TabOrder'#2#1#10'OnDragOver'#7#18'PanelPaperDr'
|
||||||
|
+'agOver'#0#0#6'TPanel'#10'PanelPaper'#4'Left'#3#186#0#6'Height'#2#22#3'Top'#2
|
||||||
|
+#6#5'Width'#2#20#5'Align'#7#7'alRight'#20'BorderSpacing.Around'#2#6#10'Bevel'
|
||||||
|
+'Inner'#7#9'bvLowered'#5'Color'#7#7'clWhite'#8'DragMode'#7#11'dmAutomatic'#11
|
||||||
|
+'ParentColor'#8#8'TabOrder'#2#2#10'OnDblClick'#7#18'PanelPaperDblClick'#10'O'
|
||||||
|
+'nDragOver'#7#18'PanelPaperDragOver'#0#0#0#6'TPanel'#16'PanelFillOutline'#4
|
||||||
|
+'Left'#3#175#0#6'Height'#2'"'#3'Top'#2#0#5'Width'#2'S'#5'Align'#7#6'alLeft'
|
||||||
|
+#10'BevelOuter'#7#6'bvNone'#12'ClientHeight'#2'"'#11'ClientWidth'#2'S'#8'Tab'
|
||||||
|
+'Order'#2#1#0#12'TSpeedButton'#15'ToolFillOutline'#4'Left'#2#4#6'Height'#2#24
|
||||||
|
+#3'Top'#2#5#5'Width'#2#25#7'Anchors'#11#6'akLeft'#0#4'Down'#9#10'Glyph.Data'
|
||||||
|
+#10#234#4#0#0#230#4#0#0'BM'#230#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#20#0#0#0#20#0
|
||||||
|
+#0#0#1#0#24#0#0#0#0#0#176#4#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||||
|
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#128
|
|
||||||
+#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128
|
|
||||||
+#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128
|
|
||||||
+#128#128#128#128#128#128#128#128#128#0#0#0#0#0#0#0#0#0#0#0#0#128#128#128#128
|
|
||||||
+#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128
|
|
||||||
+#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128
|
|
||||||
+#128#128#128#128#128#128#0#0#0#0#0#0#0#0#0#0#0#0#128#128#128#128#128#128#128
|
|
||||||
+#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128
|
|
||||||
+#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128
|
|
||||||
+#128#128#128#0#0#0#0#0#0#0#0#0#0#0#0#128#128#128#128#128#128#128#128#128#128
|
|
||||||
+#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128
|
|
||||||
+#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128
|
|
||||||
+#0#0#0#0#0#0#0#0#0#0#0#0#128#128#128#128#128#128#128#128#128#128#128#128#128
|
|
||||||
+#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128
|
|
||||||
+#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#0#0#0#0#0#0
|
|
||||||
+#0#0#0#0#0#0#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128
|
+#0#0#0#0#0#0#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128
|
||||||
+#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128
|
+#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128
|
||||||
+#128#128#128#128#128#128#128#128#128#128#128#128#128#0#0#0#0#0#0#0#0#0#0#0#0
|
+#128#128#128#128#128#128#128#128#128#128#128#128#128#0#0#0#0#0#0#0#0#0#0#0#0
|
||||||
@ -192,31 +178,45 @@ LazarusResources.Add('TMainForm','FORMDATA',[
|
|||||||
+#128#128#128#128#128#0#0#0#0#0#0#0#0#0#0#0#0#128#128#128#128#128#128#128#128
|
+#128#128#128#128#128#0#0#0#0#0#0#0#0#0#0#0#0#128#128#128#128#128#128#128#128
|
||||||
+#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128
|
+#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128
|
||||||
+#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128
|
+#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128
|
||||||
+#128#128#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
+#128#128#0#0#0#0#0#0#0#0#0#0#0#0#128#128#128#128#128#128#128#128#128#128#128
|
||||||
|
+#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128
|
||||||
|
+#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#0#0
|
||||||
|
+#0#0#0#0#0#0#0#0#0#0#128#128#128#128#128#128#128#128#128#128#128#128#128#128
|
||||||
|
+#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128
|
||||||
|
+#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#0#0#0#0#0#0#0#0
|
||||||
|
+#0#0#0#0#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128
|
||||||
|
+#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128
|
||||||
|
+#128#128#128#128#128#128#128#128#128#128#128#128#0#0#0#0#0#0#0#0#0#0#0#0#128
|
||||||
|
+#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128
|
||||||
|
+#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128
|
||||||
|
+#128#128#128#128#128#128#128#128#128#0#0#0#0#0#0#0#0#0#0#0#0#128#128#128#128
|
||||||
|
+#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128
|
||||||
|
+#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128#128
|
||||||
|
+#128#128#128#128#128#128#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||||
,#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
,#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#10'GroupIndex'#2#1#9'NumGlyphs'#2#0#7'OnCli'
|
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#10'GroupIndex'#2#1#9'NumGly'
|
||||||
+'ck'#7#20'ToolFillOutlineClick'#0#0#12'TSpeedButton'#11'ToolOutline'#4'Left'
|
+'phs'#2#0#7'OnClick'#7#20'ToolFillOutlineClick'#0#0#12'TSpeedButton'#11'Tool'
|
||||||
+#2#29#6'Height'#2#24#3'Top'#2#5#5'Width'#2#25#7'Anchors'#11#6'akLeft'#0#10'G'
|
+'Outline'#4'Left'#2#29#6'Height'#2#24#3'Top'#2#5#5'Width'#2#25#7'Anchors'#11
|
||||||
+'lyph.Data'#10'z'#6#0#0'v'#6#0#0'BMv'#6#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#20#0#0
|
+#6'akLeft'#0#10'Glyph.Data'#10'z'#6#0#0'v'#6#0#0'BMv'#6#0#0#0#0#0#0'6'#0#0#0
|
||||||
+#0#20#0#0#0#1#0' '#0#0#0#0#0'@'#6#0#0'd'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
+'('#0#0#0#20#0#0#0#20#0#0#0#1#0' '#0#0#0#0#0'@'#6#0#0'd'#0#0#0'd'#0#0#0#0#0#0
|
||||||
|
+#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0
|
||||||
+#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0
|
+#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0
|
||||||
+#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0
|
+#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0
|
||||||
+#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0
|
+#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0
|
||||||
+#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0
|
+#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0
|
||||||
+#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0
|
+#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#255#255#255#0#255#255
|
||||||
+#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#255#255#255#0#255#255#255#0#255#255
|
|
||||||
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
|
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
|
||||||
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
+#255#255#0#255#255#255#0#255#255#255#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#0#0#0#255#0#0#0#255#0#0
|
||||||
+#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
|
+#0#255#0#0#0#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
|
||||||
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
+#255#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#255#255#255#0#255#255#255#0
|
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
|
||||||
|
+#255#255#255#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#255#255#255#0#255#255
|
||||||
|
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
|
||||||
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#0#0#0#255#0#0#0#255#0#0
|
||||||
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#0#0#0#255#0#0#0#255#0#0#0
|
+#0#255#0#0#0#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
||||||
+#255#0#0#0#255#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255
|
|
||||||
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
+#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255
|
||||||
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
|
+#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0
|
||||||
+#255#255#255#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#255#255#255#0#255#255
|
+#255#255#255#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#255#255#255#0#255#255
|
||||||
@ -678,8 +678,8 @@ LazarusResources.Add('TMainForm','FORMDATA',[
|
|||||||
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#10'Gr'
|
+#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#255#255#255#0#10'Gr'
|
||||||
+'oupIndex'#2#1#9'NumGlyphs'#2#0#7'OnClick'#7#22'ToolMaskFloodFillClick'#0#0#0
|
+'oupIndex'#2#1#9'NumGlyphs'#2#0#7'OnClick'#7#22'ToolMaskFloodFillClick'#0#0#0
|
||||||
+#0#6'TPanel'#16'PanelToolOptions'#4'Left'#2#0#6'Height'#2'"'#3'Top'#2'G'#5'W'
|
+#0#6'TPanel'#16'PanelToolOptions'#4'Left'#2#0#6'Height'#2'"'#3'Top'#2'G'#5'W'
|
||||||
+'idth'#3#137#3#5'Align'#7#5'alTop'#10'BevelOuter'#7#6'bvNone'#12'ClientHeigh'
|
+'idth'#3#167#3#5'Align'#7#5'alTop'#10'BevelOuter'#7#6'bvNone'#12'ClientHeigh'
|
||||||
+'t'#2'"'#11'ClientWidth'#3#137#3#8'TabOrder'#2#2#0#6'TLabel'#9'LabelSize'#4
|
+'t'#2'"'#11'ClientWidth'#3#167#3#8'TabOrder'#2#2#0#6'TLabel'#9'LabelSize'#4
|
||||||
+'Left'#2#0#6'Height'#2'"'#3'Top'#2#0#5'Width'#2#28#5'Align'#7#6'alLeft'#7'Ca'
|
+'Left'#2#0#6'Height'#2'"'#3'Top'#2#0#5'Width'#2#28#5'Align'#7#6'alLeft'#7'Ca'
|
||||||
+'ption'#6#5'Size:'#21'Constraints.MinHeight'#2' '#6'Layout'#7#8'tlCenter'#11
|
+'ption'#6#5'Size:'#21'Constraints.MinHeight'#2' '#6'Layout'#7#8'tlCenter'#11
|
||||||
+'ParentColor'#8#0#0#6'TLabel'#12'LabelDensity'#4'Left'#3#234#0#6'Height'#2'"'
|
+'ParentColor'#8#0#0#6'TLabel'#12'LabelDensity'#4'Left'#3#234#0#6'Height'#2'"'
|
||||||
@ -733,12 +733,12 @@ LazarusResources.Add('TMainForm','FORMDATA',[
|
|||||||
+'rentColor'#8#0#0#6'TPanel'#15'PanelTolerance2'#4'Left'#3#134#2#6'Height'#2
|
+'rentColor'#8#0#0#6'TPanel'#15'PanelTolerance2'#4'Left'#3#134#2#6'Height'#2
|
||||||
+'"'#3'Top'#2#0#5'Width'#2#30#5'Align'#7#6'alLeft'#10'BevelOuter'#7#6'bvNone'
|
+'"'#3'Top'#2#0#5'Width'#2#30#5'Align'#7#6'alLeft'#10'BevelOuter'#7#6'bvNone'
|
||||||
+#12'ClientHeight'#2'"'#11'ClientWidth'#2#30#8'TabOrder'#2#5#0#9'TCheckBox'#10
|
+#12'ClientHeight'#2'"'#11'ClientWidth'#2#30#8'TabOrder'#2#5#0#9'TCheckBox'#10
|
||||||
+'checkFuzzy'#4'Left'#2#4#6'Height'#2#23#3'Top'#2#9#5'Width'#2#24#8'OnChange'
|
+'checkFuzzy'#4'Left'#2#4#6'Height'#2#19#3'Top'#2#9#5'Width'#2#20#8'OnChange'
|
||||||
+#7#16'checkFuzzyChange'#8'TabOrder'#2#0#0#0#0#0#0#6'TPanel'#13'PanelPictures'
|
+#7#16'checkFuzzyChange'#8'TabOrder'#2#0#0#0#0#0#0#6'TPanel'#13'PanelPictures'
|
||||||
+#4'Left'#2'('#6'Height'#3#5#2#3'Top'#2'i'#5'Width'#3#22#3#5'Align'#7#8'alCli'
|
+#4'Left'#2'('#6'Height'#3#20#2#3'Top'#2'i'#5'Width'#3'4'#3#5'Align'#7#8'alCl'
|
||||||
+'ent'#10'BevelOuter'#7#9'bvLowered'#8'TabOrder'#2#3#0#0#9'TMainMenu'#8'MainM'
|
+'ient'#10'BevelOuter'#7#9'bvLowered'#8'TabOrder'#2#3#0#0#9'TMainMenu'#8'Main'
|
||||||
+'enu'#6'Images'#7#16'ImageListActions'#4'left'#2'r'#3'top'#2'~'#0#9'TMenuIte'
|
+'Menu'#6'Images'#7#16'ImageListActions'#4'left'#2'r'#3'top'#2'~'#0#9'TMenuIt'
|
||||||
+'m'#12'MenuItemFile'#7'Caption'#6#5'&File'#0#9'TMenuItem'#11'MenuItemNew'#7
|
+'em'#12'MenuItemFile'#7'Caption'#6#5'&File'#0#9'TMenuItem'#11'MenuItemNew'#7
|
||||||
+'Caption'#6#7'&New...'#11'Bitmap.Data'#10'z'#6#0#0'v'#6#0#0'BMv'#6#0#0#0#0#0
|
+'Caption'#6#7'&New...'#11'Bitmap.Data'#10'z'#6#0#0'v'#6#0#0'BMv'#6#0#0#0#0#0
|
||||||
+#0'6'#0#0#0'('#0#0#0#20#0#0#0#20#0#0#0#1#0' '#0#0#0#0#0'@'#6#0#0'd'#0#0#0'd'
|
+#0'6'#0#0#0'('#0#0#0#20#0#0#0#20#0#0#0#1#0' '#0#0#0#0#0'@'#6#0#0'd'#0#0#0'd'
|
||||||
+#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#0#0#0#31#0#0#0#254#4#4#4
|
+#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0#255#255#255#0#0#0#0#31#0#0#0#254#4#4#4
|
||||||
|
@ -473,7 +473,10 @@ begin
|
|||||||
else
|
else
|
||||||
S := Trim(ComboBoxZoom.Text);
|
S := Trim(ComboBoxZoom.Text);
|
||||||
E := StrToInt(S);
|
E := StrToInt(S);
|
||||||
V := E + 10;
|
if E < 100 then
|
||||||
|
V := E + 10
|
||||||
|
else
|
||||||
|
V := E + 100;
|
||||||
if V <= 0 then
|
if V <= 0 then
|
||||||
V := 100;
|
V := 100;
|
||||||
ActivePictureEdit.Zoom := V / 100;
|
ActivePictureEdit.Zoom := V / 100;
|
||||||
@ -492,7 +495,10 @@ begin
|
|||||||
else
|
else
|
||||||
S := Trim(ComboBoxZoom.Text);
|
S := Trim(ComboBoxZoom.Text);
|
||||||
E := StrToInt(S);
|
E := StrToInt(S);
|
||||||
V := E - 10;
|
if E <= 100 then
|
||||||
|
V := E - 10
|
||||||
|
else
|
||||||
|
V := E - 100;
|
||||||
if V <= 0 then
|
if V <= 0 then
|
||||||
V := 100;
|
V := 100;
|
||||||
ActivePictureEdit.Zoom := V / 100;
|
ActivePictureEdit.Zoom := V / 100;
|
||||||
|
@ -672,8 +672,7 @@ begin
|
|||||||
|
|
||||||
Canvas.Pen.Mode := pmNot;
|
Canvas.Pen.Mode := pmNot;
|
||||||
Canvas.Brush.Style := bsClear;
|
Canvas.Brush.Style := bsClear;
|
||||||
|
|
||||||
|
|
||||||
S := PictureToClient(Point(X1, Y1));
|
S := PictureToClient(Point(X1, Y1));
|
||||||
E := PictureToClient(Point(X2, Y2));
|
E := PictureToClient(Point(X2, Y2));
|
||||||
R := Round(RectangleRoundness * Zoom);
|
R := Round(RectangleRoundness * Zoom);
|
||||||
@ -874,7 +873,7 @@ begin
|
|||||||
else
|
else
|
||||||
begin
|
begin
|
||||||
if FFillAlpha = 100 then
|
if FFillAlpha = 100 then
|
||||||
Picture.Canvas.Rectangle(X1, Y1, X2, Y2)
|
Picture.Canvas.RoundRect(X1, Y1, X2, Y2, FRectangleRoundness, FRectangleRoundness)
|
||||||
else
|
else
|
||||||
Picture.AlphaRectangle(X1, Y1, X2, Y2, FFillAlpha);
|
Picture.AlphaRectangle(X1, Y1, X2, Y2, FFillAlpha);
|
||||||
end;
|
end;
|
||||||
|
Reference in New Issue
Block a user