LazMapViewer: Add new properties LineColor and LineWidth to TGpsTrack. Add demo showing several individually colored tracks. Add some utility functions.

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@8102 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2021-09-29 15:11:12 +00:00
parent 68da1ac936
commit 9fcf5de570
12 changed files with 14439 additions and 12 deletions

View File

@@ -166,6 +166,13 @@ uses
GraphType, Types,
mvJobQueue, mvExtraData, mvDLEFpc, mvDE_IntfGraphics;
{ Converts a length given in millimeters to screen pixels }
function mmToPx(AValue: Double): Integer;
begin
Result := round(AValue / 25.4 * ScreenInfo.PixelsPerInchX);
end;
type
{ TDrawObjJob }
@@ -575,18 +582,27 @@ var
trkColor: TColor;
trkWidth: Integer;
begin
if trk.Points.Count > 0 then
if trk.Visible and (trk.Points.Count > 0) then
begin
trkColor := ColorToRGB(FDefaultTrackColor);
trkWidth := FDefaultTrackWidth;
if trk.ExtraData <> nil then
// Determine track color
if trk.LineColor = clDefault then
begin
if trk.ExtraData.InheritsFrom(TDrawingExtraData) then
trkColor := ColorToRGB(FDefaultTrackColor);
if (trk.ExtraData <> nil) and trk.ExtraData.InheritsFrom(TDrawingExtraData) then
trkColor := TDrawingExtraData(trk.ExtraData).Color;
if trk.ExtraData.InheritsFrom(TTrackExtraData) then
trkWidth := round(ScreenInfo.PixelsPerInchX * TTrackExtraData(trk.ExtraData).Width / 25.4);
end;
end else
trkColor := ColorToRGB(trk.LineColor);
// Determine track width
if trk.LineWidth = -1 then
begin
trkWidth := FDefaultTrackWidth;
if (trk.ExtraData <> nil) and trk.ExtraData.InheritsFrom(TTrackExtraData) then
trkWidth := mmToPx(TTrackExtraData(trk.ExtraData).Width);
end else
trkWidth := mmToPx(trk.LineWidth);
if trkWidth < 1 then trkWidth := 1;
LastInside := false;
DrawingEngine.PenColor := trkColor;
DrawingEngine.PenWidth := trkWidth;