mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-02 00:20:24 +02:00
LCL-Gtk3: fixed RoundRect to be consistent with other widgetsets, patch by Anton Kavalenka, issue #41129
This commit is contained in:
parent
c55033b82c
commit
936c19caf3
@ -2082,23 +2082,25 @@ end;
|
|||||||
|
|
||||||
function TGtk3DeviceContext.RoundRect(X1, Y1, X2, Y2: Integer; RX, RY: Integer): Boolean;
|
function TGtk3DeviceContext.RoundRect(X1, Y1, X2, Y2: Integer; RX, RY: Integer): Boolean;
|
||||||
var
|
var
|
||||||
DX, DY: Double;
|
DX, DY,drx,dry: Double;
|
||||||
begin
|
begin
|
||||||
Result := False;
|
Result := False;
|
||||||
cairo_surface_get_device_offset(cairo_get_target(pcr), @DX, @DY);
|
cairo_surface_get_device_offset(cairo_get_target(pcr), @DX, @DY);
|
||||||
DX := DX+PixelOffset;
|
DX := DX+PixelOffset;
|
||||||
DY := DY+PixelOffset;
|
DY := DY+PixelOffset;
|
||||||
|
drx:=rx/2;
|
||||||
|
dry:=ry/2;
|
||||||
cairo_translate(pcr, DX, DY);
|
cairo_translate(pcr, DX, DY);
|
||||||
try
|
try
|
||||||
cairo_move_to(pcr, SX(X1+RX), SY(Y1));
|
cairo_move_to(pcr, X1+dRX, Y1);
|
||||||
cairo_line_to(pcr, SX(X2-RX), SY(Y1));
|
cairo_line_to(pcr, X2-dRX-PixelOffset, Y1);
|
||||||
EllipseArcPath(X2-RX, Y1+RY, RX, RY, -PI/2, 0, True, True);
|
EllipseArcPath(X2-dRX-PixelOffset, Y1+dRY, dRX, dRY, -PI/2, 0, True, True);
|
||||||
cairo_line_to(pcr, SX(X2), SY(Y2-RY));
|
cairo_line_to(pcr, X2-PixelOffset, Y2-dRY-PixelOffset);
|
||||||
EllipseArcPath(X2-RX, Y2-RY, RX, RY, 0, PI/2, True, True);
|
EllipseArcPath(X2-dRX-PixelOffset, Y2-dRY-PixelOffset, dRX, dRY, 0, PI/2, True, True);
|
||||||
cairo_line_to(pcr, SX(X1+RX), SY(Y2));
|
cairo_line_to(pcr, X1+dRX, Y2-PixelOffset);
|
||||||
EllipseArcPath(X1+RX, Y2-RY, RX, RY, PI/2, PI, True, True);
|
EllipseArcPath(X1+dRX, Y2-dRY-PixelOffset, dRX, dRY, PI/2, PI, True, True);
|
||||||
cairo_line_to(pcr, SX(X1), SY(Y1+RX));
|
cairo_line_to(pcr, X1, Y1+dRX);
|
||||||
EllipseArcPath(X1+RX, Y1+RY, RX, RY, PI, PI*1.5, True, True);
|
EllipseArcPath(X1+dRX, Y1+dRY, dRX, dRY, PI, PI*1.5, True, True);
|
||||||
FillAndStroke;
|
FillAndStroke;
|
||||||
Result := True;
|
Result := True;
|
||||||
finally
|
finally
|
||||||
|
Loading…
Reference in New Issue
Block a user