LazMapViewer: Simplify drawing of tracks.

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@8811 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2023-04-25 21:31:28 +00:00
parent 6bf9e8a2c7
commit e05872d079

View File

@ -626,10 +626,9 @@ end;
procedure TMapView.DrawTrack(const Area: TRealArea; trk: TGPSTrack);
var
Old,New: TPoint;
i: integer;
aPt: TRealPoint;
LastInside, IsInside: boolean;
iPt1, iPt2: TPoint;
pt1, pt2: TRealPoint;
trkColor: TColor;
trkWidth: Integer;
begin
@ -657,25 +656,17 @@ begin
trkWidth := mmToPx(trk.LineWidth);
if trkWidth < 1 then trkWidth := 1;
LastInside := false;
DrawingEngine.PenColor := trkColor;
DrawingEngine.PenWidth := trkWidth;
for i:=0 to pred(trk.Points.Count) do
pt1 := trk.Points[0].RealPoint;
iPt1 := Engine.LonLatToScreen(pt1);
for i := 1 to pred(trk.Points.Count) do
begin
aPt := trk.Points[i].RealPoint;
IsInside := PtInsideArea(aPt,Area);
if IsInside or LastInside then
begin
New := Engine.LonLatToScreen(aPt);
if i > 0 then
begin
if not LastInside then
Old := Engine.LonLatToScreen(trk.Points[pred(i)].RealPoint);
DrawingEngine.Line(Old.X, Old.Y, New.X, New.Y);
end;
Old := New;
LastInside := IsInside;
end;
pt2 := trk.Points[i].RealPoint;
iPt2 := Engine.LonLatToScreen(pt2);
DrawingEngine.Line(iPt1.X, iPt1.Y, iPt2.X, iPt2.Y);
pt1 := pt2;
iPt1 := iPt2;
end;
finally
GPSItems.Unlock;