mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-01 09:40:28 +02:00
LCL: combined duplicate code IntersectRect
git-svn-id: trunk@27848 -
This commit is contained in:
parent
2c5c4c2609
commit
584dd6f786
@ -276,6 +276,8 @@ function CopyImageData(AWidth, AHeight, ARowStride: Integer; ABPP: Word;
|
|||||||
ADestinationOrder: TRawImageLineOrder; ADestinationEnd: TRawImageLineEnd;
|
ADestinationOrder: TRawImageLineOrder; ADestinationEnd: TRawImageLineEnd;
|
||||||
out ADestination: Pointer; out ASize: PtrUInt): Boolean;
|
out ADestination: Pointer; out ASize: PtrUInt): Boolean;
|
||||||
|
|
||||||
|
function GetRectIntersect(var DestRect: TRect; const SrcRect1, SrcRect2: TRect): Boolean;
|
||||||
|
|
||||||
var
|
var
|
||||||
MissingBits: array[0..15] of array[0..7] of word;
|
MissingBits: array[0..15] of array[0..7] of word;
|
||||||
|
|
||||||
@ -563,7 +565,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
{------------------------------------------------------------------------------
|
{------------------------------------------------------------------------------
|
||||||
Function: IntersectRect
|
Function: GetRectIntersect
|
||||||
Params: var DestRect: TRect; const SrcRect1, SrcRect2: TRect
|
Params: var DestRect: TRect; const SrcRect1, SrcRect2: TRect
|
||||||
Returns: Boolean
|
Returns: Boolean
|
||||||
|
|
||||||
@ -572,7 +574,7 @@ end;
|
|||||||
SrcRect2. If SrcRect1 and SrcRect2 do not overlapp the Result is false, else
|
SrcRect2. If SrcRect1 and SrcRect2 do not overlapp the Result is false, else
|
||||||
true.
|
true.
|
||||||
------------------------------------------------------------------------------}
|
------------------------------------------------------------------------------}
|
||||||
function IntersectRect(var DestRect: TRect;
|
function GetRectIntersect(var DestRect: TRect;
|
||||||
const SrcRect1, SrcRect2: TRect): Boolean;
|
const SrcRect1, SrcRect2: TRect): Boolean;
|
||||||
begin
|
begin
|
||||||
Result := False;
|
Result := False;
|
||||||
@ -1419,7 +1421,7 @@ begin
|
|||||||
ADst.ReleaseData;
|
ADst.ReleaseData;
|
||||||
|
|
||||||
// get intersection
|
// get intersection
|
||||||
IntersectRect(R, Rect(0, 0, Description.Width, Description.Height), ARect);
|
GetRectIntersect(R, Rect(0, 0, Description.Width, Description.Height), ARect);
|
||||||
ADst.Description.Width := R.Right - R.Left;
|
ADst.Description.Width := R.Right - R.Left;
|
||||||
ADst.Description.Height := R.Bottom - R.Top;
|
ADst.Description.Height := R.Bottom - R.Top;
|
||||||
if (ADst.Description.Width <= 0)
|
if (ADst.Description.Width <= 0)
|
||||||
|
@ -1313,22 +1313,7 @@ end;
|
|||||||
function IntersectRect(var DestRect: TRect;
|
function IntersectRect(var DestRect: TRect;
|
||||||
const SrcRect1, SrcRect2: TRect): Boolean;
|
const SrcRect1, SrcRect2: TRect): Boolean;
|
||||||
begin
|
begin
|
||||||
Result := False;
|
Result := GetRectIntersect(DestRect,SrcRect1,SrcRect2);
|
||||||
|
|
||||||
// test if rectangles intersects
|
|
||||||
Result:=(SrcRect2.Left < SrcRect1.Right)
|
|
||||||
and (SrcRect2.Right > SrcRect1.Left)
|
|
||||||
and (SrcRect2.Top < SrcRect1.Bottom)
|
|
||||||
and (SrcRect2.Bottom > SrcRect1.Top);
|
|
||||||
|
|
||||||
if Result then begin
|
|
||||||
DestRect.Left:=Max(SrcRect1.Left,SrcRect2.Left);
|
|
||||||
DestRect.Top:=Max(SrcRect1.Top,SrcRect2.Top);
|
|
||||||
DestRect.Right:=Min(SrcRect1.Right,SrcRect2.Right);
|
|
||||||
DestRect.Bottom:=Min(SrcRect1.Bottom,SrcRect2.Bottom);
|
|
||||||
end else begin
|
|
||||||
SetRectEmpty(DestRect);
|
|
||||||
end;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{------------------------------------------------------------------------------
|
{------------------------------------------------------------------------------
|
||||||
|
Loading…
Reference in New Issue
Block a user