mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-12-25 13:30:28 +01:00
move code from DefaultDockImage to new LCLinf method DrawDefaultDockImage and add Erase parameter (reason: not all widgetset supports on screen drawing and pen ROPs like XOR)
git-svn-id: trunk@13607 -
This commit is contained in:
parent
82db25ed28
commit
1c8516a77f
@ -60,7 +60,7 @@ type
|
||||
TDockPerformer = class(TDragDockComon)
|
||||
private
|
||||
FDockObject: TDragDockObject;
|
||||
procedure DefaultDockImage(ADrawRect: TRect);
|
||||
procedure DefaultDockImage(ADrawRect: TRect; Erase: Boolean);
|
||||
protected
|
||||
function Dragging(AControl: TControl): boolean; override;
|
||||
procedure DragStarted(APosition: TPoint); override;
|
||||
@ -304,7 +304,7 @@ begin
|
||||
FDragImageList := FDockObject.GetDragImages;
|
||||
if FDragImageList <> nil then
|
||||
FDragImageList.BeginDrag(0, APosition.X, APosition.Y);
|
||||
DefaultDockImage(FDockObject.DockRect);
|
||||
DefaultDockImage(FDockObject.DockRect, False);
|
||||
FDockObject.EraseDockRect := FDockObject.DockRect;
|
||||
end;
|
||||
|
||||
@ -468,8 +468,8 @@ begin
|
||||
if not CompareMem(@DockRect, @EraseDockRect, SizeOf(TRect)) then
|
||||
begin
|
||||
if EraseDockRect.Left <> Maxint then
|
||||
DefaultDockImage(FDockObject.EraseDockRect);
|
||||
DefaultDockImage(FDockObject.DockRect);
|
||||
DefaultDockImage(FDockObject.EraseDockRect, True);
|
||||
DefaultDockImage(FDockObject.DockRect, False);
|
||||
EraseDockRect := DockRect;
|
||||
end;
|
||||
end;
|
||||
@ -489,7 +489,7 @@ begin
|
||||
FDockObject := nil;
|
||||
SetCaptureControl(nil);
|
||||
|
||||
DefaultDockImage(ADockObjectCopy.EraseDockRect);
|
||||
DefaultDockImage(ADockObjectCopy.EraseDockRect, True);
|
||||
ADockObjectCopy.Floating := ADockObjectCopy.DragTarget = nil;
|
||||
|
||||
Accepted := ADockObjectCopy.DragTarget <> nil;
|
||||
@ -545,32 +545,9 @@ begin
|
||||
end;
|
||||
|
||||
|
||||
procedure TDockPerformer.DefaultDockImage(ADrawRect: TRect);
|
||||
const
|
||||
PenSize=4;
|
||||
var
|
||||
ACanvas: TCanvas;
|
||||
DC: HDC;
|
||||
procedure TDockPerformer.DefaultDockImage(ADrawRect: TRect; Erase: Boolean);
|
||||
begin
|
||||
DC := GetDC(0);
|
||||
ACanvas:= TCanvas.Create;
|
||||
try
|
||||
ACanvas.Handle:= DC;
|
||||
ACanvas.Pen.Mode := pmXOR;
|
||||
ACanvas.Pen.Color := clWhite;
|
||||
ACanvas.Pen.Width := PenSize;
|
||||
with ADrawRect do
|
||||
begin
|
||||
ACanvas.MoveTo(Left+PenSize, Top+PenSize);
|
||||
ACanvas.LineTo(Right-PenSize,Top+PenSize);
|
||||
ACanvas.LineTo(Right-PenSize, Bottom-PenSize);
|
||||
ACanvas.LineTo(Left+PenSize,Bottom-PenSize);
|
||||
ACanvas.LineTo(Left+PenSize, Top+PenSize);
|
||||
end;
|
||||
finally
|
||||
ACanvas.Free;
|
||||
ReleaseDC(0, DC);
|
||||
end;
|
||||
WidgetSet.DrawDefaultDockImage(ADrawRect, Erase);
|
||||
end;
|
||||
|
||||
{ TDragManagerDefault }
|
||||
|
||||
@ -97,16 +97,6 @@ begin
|
||||
Result := false;
|
||||
end;
|
||||
|
||||
{$ifdef OldRawImageProcs}
|
||||
function TWidgetSet.CreateBitmapFromRawImage(const RawImage: TRawImage;
|
||||
var Bitmap, MaskBitmap: HBitmap; AlwaysCreateMask: boolean): boolean;
|
||||
begin
|
||||
Bitmap:=0;
|
||||
MaskBitmap:=0;
|
||||
Result := false;
|
||||
end;
|
||||
{$endif}
|
||||
|
||||
//todo: remove ?
|
||||
function TWidgetSet.CreateEmptyRegion: hRGN;
|
||||
begin
|
||||
@ -150,6 +140,38 @@ procedure TWidgetSet.DrawArrow(Arrow: TComponent; Canvas: TPersistent);
|
||||
begin
|
||||
end;
|
||||
|
||||
procedure TWidgetSet.DrawDefaultDockImage(ARect: TRect; Erase: Boolean);
|
||||
const
|
||||
PenSize=4;
|
||||
var
|
||||
DC: HDC;
|
||||
OldPen, NewPen: HPen;
|
||||
OldRop: Integer;
|
||||
LogPen: TLogPen;
|
||||
begin
|
||||
LogPen.lopnColor := $00FFFFFF;
|
||||
LogPen.lopnWidth := Point(PenSize, 0);
|
||||
LogPen.lopnStyle := PS_SOLID;
|
||||
DC := GetDC(0);
|
||||
try
|
||||
NewPen := CreatePenIndirect(LogPen);
|
||||
OldPen := SelectObject(DC, NewPen);
|
||||
OldRop := SetROP2(DC, R2_XORPEN);
|
||||
with ARect do
|
||||
begin
|
||||
MoveToEx(DC, Left+PenSize, Top+PenSize, nil);
|
||||
LineTo(DC, Right-PenSize,Top+PenSize);
|
||||
LineTo(DC, Right-PenSize, Bottom-PenSize);
|
||||
LineTo(DC, Left+PenSize,Bottom-PenSize);
|
||||
LineTo(DC, Left+PenSize, Top+PenSize);
|
||||
end;
|
||||
finally
|
||||
SetROP2(DC, OldRop);
|
||||
DeleteObject(SelectObject(DC, OldPen));
|
||||
ReleaseDC(0, DC);
|
||||
end;
|
||||
end;
|
||||
|
||||
function TWidgetSet.ExtUTF8Out(DC: HDC; X, Y: Integer; Options: Longint;
|
||||
Rect: PRect; Str: PChar; Count: Longint; Dx: PInteger): Boolean;
|
||||
begin
|
||||
@ -296,14 +318,6 @@ begin
|
||||
AddKey;
|
||||
end;
|
||||
|
||||
{$ifdef OldRawImageProcs}
|
||||
function TWidgetSet.GetBitmapRawImageDescription(Bitmap: HBITMAP;
|
||||
Desc: PRawImageDescription): boolean;
|
||||
begin
|
||||
Result:=false;
|
||||
end;
|
||||
{$endif}
|
||||
|
||||
function TWidgetSet.GetCaretRespondToFocus(handle: HWND;
|
||||
var ShowHideOnFocus: boolean): Boolean;
|
||||
begin
|
||||
@ -326,14 +340,6 @@ begin
|
||||
Result:=true;
|
||||
end;
|
||||
|
||||
{$ifdef OldRawImageProcs}
|
||||
function TWidgetSet.GetDeviceRawImageDescription(DC: HDC;
|
||||
Desc: PRawImageDescription): boolean;
|
||||
begin
|
||||
Result := false;
|
||||
end;
|
||||
{$endif}
|
||||
|
||||
function TWidgetSet.GetDeviceSize(DC: HDC; var p: TPoint): boolean;
|
||||
begin
|
||||
p.X := 0;
|
||||
@ -361,22 +367,6 @@ begin
|
||||
else Result := nil;
|
||||
end;
|
||||
|
||||
{$ifdef OldRawImageProcs}
|
||||
function TWidgetSet.GetRawImageFromDevice(SrcDC: HDC;
|
||||
const SrcRect: TRect; var NewRawImage: TRawImage): boolean;
|
||||
begin
|
||||
Result:=false;
|
||||
end;
|
||||
{$endif}
|
||||
|
||||
{$ifdef OldRawImageProcs}
|
||||
function TWidgetSet.GetRawImageFromBitmap(SrcBitmap, SrcMaskBitmap: HBITMAP;
|
||||
const SrcRect: TRect; var NewRawImage: TRawImage): boolean;
|
||||
begin
|
||||
Result:=false;
|
||||
end;
|
||||
{$endif}
|
||||
|
||||
// TODO: remove
|
||||
function TWidgetSet.GetScrollBarSize(Handle: HWND;
|
||||
SBStyle: Integer): integer;
|
||||
|
||||
@ -149,6 +149,11 @@ begin
|
||||
WidgetSet.DrawArrow(Arrow, Canvas);
|
||||
end;
|
||||
|
||||
procedure DrawDefaultDockImage(ARect: TRect; Erase: Boolean);
|
||||
begin
|
||||
WidgetSet.DrawDefaultDockImage(ARect, Erase);
|
||||
end;
|
||||
|
||||
function ExtUTF8Out(DC: HDC; X, Y: Integer; Options: Longint; Rect: PRect;
|
||||
Str: PChar; Count: Longint; Dx: PInteger): Boolean;
|
||||
begin
|
||||
|
||||
@ -66,6 +66,7 @@ function CreateStandardCursor(ACursor: SmallInt): hCursor; {$IFDEF IF_BASE_MEMBE
|
||||
function DCClipRegionValid(DC: HDC): boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
|
||||
procedure DeallocateHWnd(Wnd: HWND); {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
|
||||
procedure DrawArrow(Arrow: TComponent; Canvas: TPersistent); {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
|
||||
procedure DrawDefaultDockImage(ARect: TRect; Erase: Boolean); {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
|
||||
|
||||
function ExtUTF8Out(DC: HDC; X, Y: Integer; Options: Longint; Rect: PRect; Str: PChar; Count: Longint; Dx: PInteger): Boolean; {$IFDEF IF_BASE_MEMBER}virtual;{$ENDIF}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user