You've already forked lazarus-ccr
TDLBitmap gets faster.
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@1608 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -41,9 +41,13 @@ type
|
||||
function GetScanLinePixel(X, Y: Integer): TColor;
|
||||
procedure SetScanLinePixel(X, Y: Integer; Value: TColor);
|
||||
protected
|
||||
ImgHandle, ImgMaskHandle: HBitmap;
|
||||
procedure SetWidth(Value: integer); override;
|
||||
procedure SetHeight(Value: integer); override;
|
||||
procedure Changed(Sender: TObject); override;
|
||||
procedure InitializeReader(AImage: TLazIntfImage; AReader: TFPCustomImageReader); override;
|
||||
procedure InitializeWriter(AImage: TLazIntfImage; AWriter: TFPCustomImageWriter); override;
|
||||
procedure FinalizeWriter(AWriter: TFPCustomImageWriter); override;
|
||||
public
|
||||
constructor Create; override;
|
||||
destructor Destroy; override;
|
||||
@ -140,6 +144,7 @@ operator div (const A, B: TRGBATriple): TRGBATriple;
|
||||
function DWordTrans(SrcRow: TRGBATriple): DWORD;
|
||||
function DWordToTriple(SrcRow: DWORD): TRGBATriple;
|
||||
procedure StretchLinear(Dest, Src: TDLBitmap);
|
||||
procedure StretchDLBMP(Src: TDLBitmap; MultiX, MultiY: integer);
|
||||
|
||||
implementation
|
||||
|
||||
@ -214,25 +219,15 @@ begin
|
||||
end;
|
||||
|
||||
procedure TDLBitmap.InvalidateScanLine;
|
||||
var
|
||||
TmpBmp: TDLBitmap;
|
||||
ImgHandle, ImgMaskHandle: HBitmap;
|
||||
begin
|
||||
TmpBmp := TDLBitmap.Create;
|
||||
FIntfImgA.CreateBitmaps(ImgHandle, ImgMaskHandle, True);
|
||||
TmpBmp.Handle := ImgHandle;
|
||||
TmpBmp.MaskHandle := ImgMaskHandle;
|
||||
Empty;
|
||||
Width := TmpBmp.Width;
|
||||
Height := TmpBmp.Height;
|
||||
Canvas.Draw(0, 0, TmpBmp);
|
||||
TmpBmp.Free;
|
||||
Handle := ImgHandle;
|
||||
MaskHandle := ImgMaskHandle;
|
||||
end;
|
||||
|
||||
procedure TDLBitmap.InvalidateScanLineRect(aRect: TRect);
|
||||
var
|
||||
TmpBmp: TDLBitmap;
|
||||
ImgHandle, ImgMaskHandle: HBitmap;
|
||||
begin
|
||||
TmpBmp := TDLBitmap.Create;
|
||||
FIntfImgA.CreateBitmaps(ImgHandle, ImgMaskHandle, True);
|
||||
@ -517,6 +512,22 @@ begin
|
||||
SprayPoints(Self, x, y, radian, PColor);
|
||||
end;
|
||||
|
||||
procedure TDLBitmap.InitializeReader(AImage: TLazIntfImage; AReader: TFPCustomImageReader);
|
||||
begin
|
||||
inherited;
|
||||
FIntfImgA := AImage;
|
||||
end;
|
||||
|
||||
procedure TDLBitmap.InitializeWriter(AImage: TLazIntfImage; AWriter: TFPCustomImageWriter);
|
||||
begin
|
||||
inherited;
|
||||
end;
|
||||
|
||||
procedure TDLBitmap.FinalizeWriter(AWriter: TFPCustomImageWriter);
|
||||
begin
|
||||
inherited;
|
||||
end;
|
||||
|
||||
procedure TDLBitmap.FillEllipse(X1, Y1, X2, Y2: integer);
|
||||
begin
|
||||
|
||||
@ -659,11 +670,8 @@ begin
|
||||
TextLeft := TextX + IMGCanvas.TextWidth(LeftText);
|
||||
if IMGCanvas = nil then
|
||||
Exit;
|
||||
//IMGCanvas.TextOut(22, 22, FEdit.Text);
|
||||
IMGCanvas.Brush.Style := bsClear;
|
||||
IMGCanvas.TextOut(TextLeft, TextY, RightText);
|
||||
//if PositionIndex <> FEdit.SelStart then
|
||||
// PositionIndex := FEdit.SelStart;
|
||||
PositionIndex := Length(FEdit.Text);
|
||||
end;
|
||||
|
||||
|
@ -535,7 +535,7 @@ begin
|
||||
if (a * a + b * b < Sqr(Round(Radian3 * 0.65))) then
|
||||
DLBmp.Pixels[X + a, Y + b] := PColor;
|
||||
end;
|
||||
DLBmp.InvalidateScanLineRect(Rect(X - Radians, Y - Radians, X + Radians, Y + Radians));
|
||||
DLBmp.InvalidateScanLine;//Rect(Rect(X - Radians, Y - Radians, X + Radians, Y + Radians));
|
||||
end;
|
||||
|
||||
function GetRColor(const Color: TColor): Byte;
|
||||
@ -677,24 +677,26 @@ end;
|
||||
|
||||
procedure StretchDLBMP(Src: TDLBitmap; MultiX, MultiY: integer);
|
||||
var
|
||||
sw, sh, dw, dh, B, N, x, y, i, j, k, nPixelSize: DWord;
|
||||
sw, sh, dw, dh, i, j, k, l, nPixelSize: DWord;
|
||||
Dest: TDLBitmap;
|
||||
begin
|
||||
sw := Src.Width - 1;
|
||||
sh := Src.Height - 1;
|
||||
dw := (Src.Width - 1) * MultiX;
|
||||
dh := (Src.Height - 1) * MultiY;
|
||||
nPixelSize := 3;
|
||||
for i := 0 to sh do
|
||||
begin
|
||||
for j := 0 to sw do
|
||||
begin
|
||||
for k := 0 to nPixelSize - 1 do
|
||||
begin
|
||||
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
Dest := TDLBitmap.Create;
|
||||
sw := Src.Width;
|
||||
sh := Src.Height;
|
||||
dw := Src.Width * MultiX;
|
||||
dh := Src.Height * MultiY;
|
||||
Dest.Width := dw;
|
||||
Dest.Height := dh;
|
||||
for i := 0 to sh - 1 do
|
||||
for j := 0 to sw - 1 do
|
||||
for k := 0 to MultiY - 1 do
|
||||
for l := 0 to MultiX - 1 do
|
||||
Dest.Pixels[j * MultiX + k, i * MultiY + l] := Src.Pixels[j, i];
|
||||
Dest.InvalidateScanLine;
|
||||
//Src.Assign(Dest);
|
||||
Src.Width := dw;
|
||||
Src.Height := dh;
|
||||
Src.Canvas.Draw(0, 0, Dest);
|
||||
Dest.Free;
|
||||
end;
|
||||
|
||||
|
@ -600,8 +600,10 @@ procedure TRGBBitmapCore.StretchDrawTo(ACanvas: TCanvas;
|
||||
begin
|
||||
if ACanvas <> nil then
|
||||
// ACanvas.StretchDraw(Rect(DstX, DstY, DstWidth, DstHeight), Self);
|
||||
// StretchDLBMP(Self, 3, 3);
|
||||
begin
|
||||
ACanvas.AntialiasingMode:=amOff;
|
||||
ACanvas.CopyMode:=cmSrcPaint;
|
||||
ACanvas.CopyRect(Rect(DstX, DstY, DstWidth, DstHeight), Self.Canvas, Rect(0,0,Width,Height));
|
||||
end;
|
||||
end;
|
||||
|
@ -72,7 +72,7 @@
|
||||
<EditorIndex Value="1"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="430"/>
|
||||
<CursorPos X="22" Y="443"/>
|
||||
<CursorPos X="23" Y="443"/>
|
||||
<UsageCount Value="32"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit2>
|
||||
@ -170,8 +170,8 @@
|
||||
<UnitName Value="Graphics"/>
|
||||
<EditorIndex Value="3"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="1083"/>
|
||||
<CursorPos X="15" Y="1094"/>
|
||||
<TopLine Value="386"/>
|
||||
<CursorPos X="13" Y="411"/>
|
||||
<UsageCount Value="10"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit12>
|
||||
@ -242,10 +242,11 @@
|
||||
<Unit21>
|
||||
<Filename Value="bmprgbtypes.pas"/>
|
||||
<UnitName Value="BmpRGBTypes"/>
|
||||
<IsVisibleTab Value="True"/>
|
||||
<EditorIndex Value="2"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="589"/>
|
||||
<CursorPos X="36" Y="604"/>
|
||||
<TopLine Value="593"/>
|
||||
<CursorPos X="29" Y="608"/>
|
||||
<UsageCount Value="28"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit21>
|
||||
@ -359,8 +360,8 @@
|
||||
<UnitName Value="DLBitmap"/>
|
||||
<EditorIndex Value="4"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="170"/>
|
||||
<CursorPos X="15" Y="180"/>
|
||||
<TopLine Value="124"/>
|
||||
<CursorPos X="66" Y="143"/>
|
||||
<UsageCount Value="16"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit35>
|
||||
@ -390,11 +391,10 @@
|
||||
</Unit38>
|
||||
<Unit39>
|
||||
<Filename Value="DLBmpUtils.inc"/>
|
||||
<IsVisibleTab Value="True"/>
|
||||
<EditorIndex Value="5"/>
|
||||
<WindowIndex Value="0"/>
|
||||
<TopLine Value="616"/>
|
||||
<CursorPos X="32" Y="661"/>
|
||||
<TopLine Value="671"/>
|
||||
<CursorPos X="28" Y="701"/>
|
||||
<UsageCount Value="14"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit39>
|
||||
@ -431,124 +431,124 @@
|
||||
</Units>
|
||||
<JumpHistory Count="30" HistoryIndex="29">
|
||||
<Position1>
|
||||
<Filename Value="picturectrls.pas"/>
|
||||
<Caret Line="298" Column="27" TopLine="288"/>
|
||||
<Filename Value="DLBmpUtils.inc"/>
|
||||
<Caret Line="626" Column="33" TopLine="616"/>
|
||||
</Position1>
|
||||
<Position2>
|
||||
<Filename Value="picturectrls.pas"/>
|
||||
<Caret Line="443" Column="26" TopLine="430"/>
|
||||
<Filename Value="DLBmpUtils.inc"/>
|
||||
<Caret Line="620" Column="59" TopLine="606"/>
|
||||
</Position2>
|
||||
<Position3>
|
||||
<Filename Value="bmprgbtypes.pas"/>
|
||||
<Caret Line="131" Column="28" TopLine="120"/>
|
||||
<Filename Value="DLBmpUtils.inc"/>
|
||||
<Caret Line="536" Column="13" TopLine="516"/>
|
||||
</Position3>
|
||||
<Position4>
|
||||
<Filename Value="bmprgbtypes.pas"/>
|
||||
<Caret Line="603" Column="33" TopLine="591"/>
|
||||
<Filename Value="DLBitmap.pas"/>
|
||||
<Caret Line="147" Column="47" TopLine="137"/>
|
||||
</Position4>
|
||||
<Position5>
|
||||
<Filename Value="bmprgbtypes.pas"/>
|
||||
<Caret Line="602" Column="22" TopLine="591"/>
|
||||
<Filename Value="DLBmpUtils.inc"/>
|
||||
<Caret Line="662" Column="20" TopLine="655"/>
|
||||
</Position5>
|
||||
<Position6>
|
||||
<Filename Value="bmprgbtypes.pas"/>
|
||||
<Caret Line="602" Column="20" TopLine="591"/>
|
||||
<Filename Value="DLBmpUtils.inc"/>
|
||||
<Caret Line="661" Column="34" TopLine="651"/>
|
||||
</Position6>
|
||||
<Position7>
|
||||
<Filename Value="DLBitmap.pas"/>
|
||||
<Caret Line="430" Column="17" TopLine="419"/>
|
||||
<Filename Value="DLBmpUtils.inc"/>
|
||||
<Caret Line="662" Column="30" TopLine="651"/>
|
||||
</Position7>
|
||||
<Position8>
|
||||
<Filename Value="DLBmpUtils.inc"/>
|
||||
<Caret Line="573" Column="18" TopLine="557"/>
|
||||
<Caret Line="664" Column="35" TopLine="652"/>
|
||||
</Position8>
|
||||
<Position9>
|
||||
<Filename Value="DLBmpUtils.inc"/>
|
||||
<Caret Line="573" Column="17" TopLine="557"/>
|
||||
<Caret Line="665" Column="26" TopLine="653"/>
|
||||
</Position9>
|
||||
<Position10>
|
||||
<Filename Value="DLBitmap.pas"/>
|
||||
<Caret Line="439" Column="56" TopLine="435"/>
|
||||
<Filename Value="DLBmpUtils.inc"/>
|
||||
<Caret Line="666" Column="40" TopLine="655"/>
|
||||
</Position10>
|
||||
<Position11>
|
||||
<Filename Value="DLBitmap.pas"/>
|
||||
<Caret Line="449" Column="52" TopLine="438"/>
|
||||
<Filename Value="DLBmpUtils.inc"/>
|
||||
<Caret Line="662" Column="18" TopLine="654"/>
|
||||
</Position11>
|
||||
<Position12>
|
||||
<Filename Value="DLBitmap.pas"/>
|
||||
<Caret Line="41" Column="68" TopLine="34"/>
|
||||
<Caret Line="184" Column="23" TopLine="167"/>
|
||||
</Position12>
|
||||
<Position13>
|
||||
<Filename Value="DLBitmap.pas"/>
|
||||
<Caret Line="41" Column="44" TopLine="31"/>
|
||||
<Caret Line="176" Column="5" TopLine="165"/>
|
||||
</Position13>
|
||||
<Position14>
|
||||
<Filename Value="DLBmpUtils.inc"/>
|
||||
<Caret Line="626" Column="33" TopLine="616"/>
|
||||
</Position14>
|
||||
<Position15>
|
||||
<Filename Value="DLBmpUtils.inc"/>
|
||||
<Caret Line="620" Column="59" TopLine="606"/>
|
||||
</Position15>
|
||||
<Position16>
|
||||
<Filename Value="DLBmpUtils.inc"/>
|
||||
<Caret Line="536" Column="13" TopLine="516"/>
|
||||
</Position16>
|
||||
<Position17>
|
||||
<Filename Value="DLBitmap.pas"/>
|
||||
<Caret Line="147" Column="47" TopLine="137"/>
|
||||
</Position17>
|
||||
<Position18>
|
||||
<Filename Value="DLBmpUtils.inc"/>
|
||||
<Caret Line="662" Column="20" TopLine="655"/>
|
||||
</Position18>
|
||||
<Position19>
|
||||
<Filename Value="DLBmpUtils.inc"/>
|
||||
<Caret Line="661" Column="34" TopLine="651"/>
|
||||
</Position19>
|
||||
<Position20>
|
||||
<Filename Value="DLBmpUtils.inc"/>
|
||||
<Caret Line="662" Column="30" TopLine="651"/>
|
||||
</Position20>
|
||||
<Position21>
|
||||
<Filename Value="DLBmpUtils.inc"/>
|
||||
<Caret Line="664" Column="35" TopLine="652"/>
|
||||
</Position21>
|
||||
<Position22>
|
||||
<Filename Value="DLBmpUtils.inc"/>
|
||||
<Caret Line="665" Column="26" TopLine="653"/>
|
||||
</Position22>
|
||||
<Position23>
|
||||
<Filename Value="DLBmpUtils.inc"/>
|
||||
<Caret Line="666" Column="40" TopLine="655"/>
|
||||
</Position23>
|
||||
<Position24>
|
||||
<Filename Value="DLBmpUtils.inc"/>
|
||||
<Caret Line="662" Column="18" TopLine="654"/>
|
||||
</Position24>
|
||||
<Position25>
|
||||
<Filename Value="DLBitmap.pas"/>
|
||||
<Caret Line="184" Column="23" TopLine="167"/>
|
||||
</Position25>
|
||||
<Position26>
|
||||
<Filename Value="DLBitmap.pas"/>
|
||||
<Caret Line="176" Column="5" TopLine="165"/>
|
||||
</Position26>
|
||||
<Position27>
|
||||
<Filename Value="DLBitmap.pas"/>
|
||||
<Caret Line="180" Column="16" TopLine="167"/>
|
||||
</Position27>
|
||||
<Position28>
|
||||
</Position14>
|
||||
<Position15>
|
||||
<Filename Value="picturectrls.pas"/>
|
||||
<Caret Line="443" Column="22" TopLine="430"/>
|
||||
</Position15>
|
||||
<Position16>
|
||||
<Filename Value="bmprgbtypes.pas"/>
|
||||
<Caret Line="131" Column="28" TopLine="120"/>
|
||||
</Position16>
|
||||
<Position17>
|
||||
<Filename Value="bmprgbtypes.pas"/>
|
||||
<Caret Line="603" Column="18" TopLine="589"/>
|
||||
</Position17>
|
||||
<Position18>
|
||||
<Filename Value="picturectrls.pas"/>
|
||||
<Caret Line="443" Column="23" TopLine="430"/>
|
||||
</Position18>
|
||||
<Position19>
|
||||
<Filename Value="bmprgbtypes.pas"/>
|
||||
<Caret Line="131" Column="28" TopLine="116"/>
|
||||
</Position19>
|
||||
<Position20>
|
||||
<Filename Value="bmprgbtypes.pas"/>
|
||||
<Caret Line="603" Column="27" TopLine="585"/>
|
||||
</Position20>
|
||||
<Position21>
|
||||
<Filename Value="DLBitmap.pas"/>
|
||||
<Caret Line="232" Column="14" TopLine="218"/>
|
||||
</Position21>
|
||||
<Position22>
|
||||
<Filename Value="bmprgbtypes.pas"/>
|
||||
<Caret Line="603" Column="17" TopLine="588"/>
|
||||
</Position22>
|
||||
<Position23>
|
||||
<Filename Value="bmprgbtypes.pas"/>
|
||||
<Caret Line="606" Column="16" TopLine="588"/>
|
||||
</Position23>
|
||||
<Position24>
|
||||
<Filename Value="T:\fpclaz\laz\lcl\graphics.pp"/>
|
||||
<Caret Line="1158" Column="28" TopLine="1143"/>
|
||||
</Position24>
|
||||
<Position25>
|
||||
<Filename Value="bmprgbtypes.pas"/>
|
||||
<Caret Line="606" Column="16" TopLine="588"/>
|
||||
</Position25>
|
||||
<Position26>
|
||||
<Filename Value="T:\fpclaz\laz\lcl\graphics.pp"/>
|
||||
<Caret Line="1158" Column="27" TopLine="1143"/>
|
||||
</Position26>
|
||||
<Position27>
|
||||
<Filename Value="bmprgbtypes.pas"/>
|
||||
<Caret Line="606" Column="17" TopLine="588"/>
|
||||
</Position27>
|
||||
<Position28>
|
||||
<Filename Value="T:\fpclaz\laz\lcl\graphics.pp"/>
|
||||
<Caret Line="1158" Column="75" TopLine="1143"/>
|
||||
</Position28>
|
||||
<Position29>
|
||||
<Filename Value="bmprgbtypes.pas"/>
|
||||
<Caret Line="131" Column="28" TopLine="120"/>
|
||||
<Caret Line="606" Column="28" TopLine="591"/>
|
||||
</Position29>
|
||||
<Position30>
|
||||
<Filename Value="bmprgbtypes.pas"/>
|
||||
<Caret Line="603" Column="18" TopLine="589"/>
|
||||
<Caret Line="608" Column="63" TopLine="593"/>
|
||||
</Position30>
|
||||
</JumpHistory>
|
||||
</ProjectOptions>
|
||||
|
Reference in New Issue
Block a user