You've already forked lazarus-ccr
LazMapViewer: Introduce a drawing engine class to avoid the IFDEF'ed drawing instructions. Implement TIntfGraphicsDrawingEngine as default.
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@6923 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -1,7 +1,7 @@
|
|||||||
object MainForm: TMainForm
|
object MainForm: TMainForm
|
||||||
Left = 304
|
Left = 332
|
||||||
Height = 640
|
Height = 640
|
||||||
Top = 109
|
Top = 183
|
||||||
Width = 883
|
Width = 883
|
||||||
Caption = 'MainForm'
|
Caption = 'MainForm'
|
||||||
ClientHeight = 640
|
ClientHeight = 640
|
||||||
|
@ -7,7 +7,7 @@ interface
|
|||||||
uses
|
uses
|
||||||
Classes, SysUtils, Types, Forms, Controls, Graphics, Dialogs,
|
Classes, SysUtils, Types, Forms, Controls, Graphics, Dialogs,
|
||||||
ExtCtrls, StdCtrls, ComCtrls, Buttons,
|
ExtCtrls, StdCtrls, ComCtrls, Buttons,
|
||||||
mvGeoNames, mvMapViewer, mvTypes, mvGpsObj;
|
mvGeoNames, mvMapViewer, mvTypes, mvGpsObj, mvDrawingEngine;
|
||||||
|
|
||||||
type
|
type
|
||||||
|
|
||||||
@ -71,7 +71,9 @@ type
|
|||||||
procedure GeoNamesNameFound(const AName: string; const ADescr: String;
|
procedure GeoNamesNameFound(const AName: string; const ADescr: String;
|
||||||
const ALoc: TRealPoint);
|
const ALoc: TRealPoint);
|
||||||
procedure MapViewChange(Sender: TObject);
|
procedure MapViewChange(Sender: TObject);
|
||||||
procedure MapViewDrawGpsPoint(Sender, ACanvas: TObject; APoint: TGpsPoint);
|
procedure MapViewDrawGpsPoint(Sender: TObject;
|
||||||
|
ADrawer: TMvCustomDrawingEngine; APoint: TGpsPoint);
|
||||||
|
// procedure MapViewDrawGpsPoint(Sender, ACanvas: TObject; APoint: TGpsPoint);
|
||||||
procedure MapViewMouseLeave(Sender: TObject);
|
procedure MapViewMouseLeave(Sender: TObject);
|
||||||
procedure MapViewMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
|
procedure MapViewMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
|
||||||
procedure MapViewMouseUp(Sender: TObject; Button: TMouseButton;
|
procedure MapViewMouseUp(Sender: TObject; Button: TMouseButton;
|
||||||
@ -328,48 +330,26 @@ begin
|
|||||||
UpdateViewportSize;
|
UpdateViewportSize;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainForm.MapViewDrawGpsPoint(Sender, ACanvas: TObject;
|
procedure TMainForm.MapViewDrawGpsPoint(Sender: TObject;
|
||||||
APoint: TGpsPoint);
|
ADrawer: TMvCustomDrawingEngine; APoint: TGpsPoint);
|
||||||
const
|
const
|
||||||
R = 5;
|
R = 5;
|
||||||
var
|
var
|
||||||
P: TPoint;
|
P: TPoint;
|
||||||
cnv: TFPCustomCanvas;
|
ext: TSize;
|
||||||
txt: String;
|
|
||||||
w, h: Integer;
|
|
||||||
bmp: TBitmap;
|
|
||||||
img: TLazIntfImage;
|
|
||||||
begin
|
begin
|
||||||
if not (ACanvas is TFPCustomCanvas) then
|
|
||||||
exit;
|
|
||||||
|
|
||||||
// Screen coordinates of the GPS point
|
// Screen coordinates of the GPS point
|
||||||
P := TMapView(Sender).LonLatToScreen(APoint.RealPoint);
|
P := TMapView(Sender).LonLatToScreen(APoint.RealPoint);
|
||||||
|
|
||||||
// Draw the GPS point as a circle
|
// Draw the GPS point as a circle
|
||||||
cnv := TFPCustomCanvas(ACanvas);
|
ADrawer.BrushColor := clRed;
|
||||||
cnv.Brush.FPColor := colRed;
|
ADrawer.Ellipse(P.X - R, P.Y - R, P.X + R, P.Y + R);
|
||||||
cnv.Ellipse(P.X-R, P.Y-R, P.X+R, P.Y+R);
|
|
||||||
|
|
||||||
// Draw the "name" of the GPS point. Note: FPCustomCanvas, by default,
|
// Draw the caption of the GPS point
|
||||||
// does not support text output. Therefore we paint to a bitmap first and
|
ext := ADrawer.TextExtent(APoint.Name);
|
||||||
// render this on the FPCustomCanvas.
|
ADrawer.BrushColor := clWhite;
|
||||||
txt := APoint.Name;
|
ADrawer.BrushStyle := bsClear;
|
||||||
bmp := TBitmap.Create;
|
ADrawer.TextOut(P.X - ext.CX div 2, P.Y - ext.CY - R - 5, APoint.Name);
|
||||||
try
|
|
||||||
// bmp.PixelFormat := pf32Bit; // crashes Linux!
|
|
||||||
w := bmp.Canvas.TextWidth(txt);
|
|
||||||
h := bmp.Canvas.TextHeight(txt);
|
|
||||||
bmp.SetSize(w, h);
|
|
||||||
bmp.Canvas.Brush.Color := clWhite;
|
|
||||||
bmp.Canvas.FillRect(0, 0, w, h);
|
|
||||||
bmp.Canvas.TextOut(0, 0, txt);
|
|
||||||
img := bmp.CreateIntfImage;
|
|
||||||
cnv.Draw(P.X - w div 2, P.Y - h - 2*R, img);
|
|
||||||
img.Free;
|
|
||||||
finally
|
|
||||||
bmp.Free;
|
|
||||||
end;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainForm.MapViewMouseLeave(Sender: TObject);
|
procedure TMainForm.MapViewMouseLeave(Sender: TObject);
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
<Description Value="Component for viewing maps (Google, OpenStreetMap, etc).
|
<Description Value="Component for viewing maps (Google, OpenStreetMap, etc).
|
||||||
This is a fork of MapViewer by ti_dic (https://sourceforge.net/p/roadbook/code/ci/master/tree/mapviewer/) which itself is based on the MapViewer by Maciej Kaczkowski (https://github.com/maciejkaczkowski/mapviewer)."/>
|
This is a fork of MapViewer by ti_dic (https://sourceforge.net/p/roadbook/code/ci/master/tree/mapviewer/) which itself is based on the MapViewer by Maciej Kaczkowski (https://github.com/maciejkaczkowski/mapviewer)."/>
|
||||||
<License Value="GPL2 or later"/>
|
<License Value="GPL2 or later"/>
|
||||||
<Files Count="15">
|
<Files Count="17">
|
||||||
<Item1>
|
<Item1>
|
||||||
<Filename Value="source/mvcache.pas"/>
|
<Filename Value="source/mvcache.pas"/>
|
||||||
<UnitName Value="mvCache"/>
|
<UnitName Value="mvCache"/>
|
||||||
@ -76,6 +76,14 @@ This is a fork of MapViewer by ti_dic (https://sourceforge.net/p/roadbook/code/c
|
|||||||
<Filename Value="source/mvgpx.pas"/>
|
<Filename Value="source/mvgpx.pas"/>
|
||||||
<UnitName Value="mvgpx"/>
|
<UnitName Value="mvgpx"/>
|
||||||
</Item15>
|
</Item15>
|
||||||
|
<Item16>
|
||||||
|
<Filename Value="source/mvdrawingengine.pas"/>
|
||||||
|
<UnitName Value="mvdrawingengine"/>
|
||||||
|
</Item16>
|
||||||
|
<Item17>
|
||||||
|
<Filename Value="source/mvdeintfgraphics.pas"/>
|
||||||
|
<UnitName Value="mvdeintfgraphics"/>
|
||||||
|
</Item17>
|
||||||
</Files>
|
</Files>
|
||||||
<RequiredPkgs Count="1">
|
<RequiredPkgs Count="1">
|
||||||
<Item1>
|
<Item1>
|
||||||
|
@ -10,7 +10,8 @@ interface
|
|||||||
uses
|
uses
|
||||||
mvCache, mvDownloadEngine, mvDragObj, mvEngine, mvGeoNames, mvGpsObj,
|
mvCache, mvDownloadEngine, mvDragObj, mvEngine, mvGeoNames, mvGpsObj,
|
||||||
mvJobQueue, mvJobs, mvMapProvider, mvTypes, mvMapViewer, mvExtraData,
|
mvJobQueue, mvJobs, mvMapProvider, mvTypes, mvMapViewer, mvExtraData,
|
||||||
mvDLEFpc, mvMapViewerReg, mvGPX, LazarusPackageIntf;
|
mvDLEFpc, mvMapViewerReg, mvGPX, mvDrawingEngine, mvDEIntfGraphics,
|
||||||
|
LazarusPackageIntf;
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
unit mvMapViewer;
|
unit mvMapViewer;
|
||||||
|
|
||||||
{$MODE objfpc}{$H+}
|
{$MODE objfpc}{$H+}
|
||||||
|
(*
|
||||||
// Activate one of the following defines
|
// Activate one of the following defines
|
||||||
{$DEFINE USE_LAZINTFIMAGE}
|
{$DEFINE USE_LAZINTFIMAGE}
|
||||||
{.$DEFINE USE_RGBGRAPHICS} // NOTE: This needs package "rgb_graphics" in requirements
|
{.$DEFINE USE_RGBGRAPHICS} // NOTE: This needs package "rgb_graphics" in requirements
|
||||||
@ -28,18 +28,19 @@ unit mvMapViewer;
|
|||||||
// Make sure that one of the USE_XXXX defines is active. Default is USE_LAZINTFIMAGE
|
// Make sure that one of the USE_XXXX defines is active. Default is USE_LAZINTFIMAGE
|
||||||
{$IFNDEF USE_RGBGRAPHICS}{$IFNDEF USE_LAZINTFIMAGE}{$DEFINE USE_LAZINTFIMAGES}{$ENDIF}{$ENDIF}
|
{$IFNDEF USE_RGBGRAPHICS}{$IFNDEF USE_LAZINTFIMAGE}{$DEFINE USE_LAZINTFIMAGES}{$ENDIF}{$ENDIF}
|
||||||
{$IFDEF USE_RGBGRAPHICS}{$IFDEF USE_LAZINTFIMAGE}{$UNDEF USE_RGBGRAPHICS}{$ENDIF}{$ENDIF}
|
{$IFDEF USE_RGBGRAPHICS}{$IFDEF USE_LAZINTFIMAGE}{$UNDEF USE_RGBGRAPHICS}{$ENDIF}{$ENDIF}
|
||||||
|
*)
|
||||||
interface
|
interface
|
||||||
|
|
||||||
uses
|
uses
|
||||||
Classes, SysUtils, Controls, Graphics, IntfGraphics,
|
Classes, SysUtils, Controls, Graphics, IntfGraphics,
|
||||||
{$IFDEF USE_RGBGRAPHICS}RGBGraphics,{$ENDIF}
|
// {$IFDEF USE_RGBGRAPHICS}RGBGraphics,{$ENDIF}
|
||||||
{$IFDEF USE_LAZINTFIMAGE}FPCanvas,{$ENDIF}
|
// {$IFDEF USE_LAZINTFIMAGE}FPCanvas,{$ENDIF}
|
||||||
MvTypes, MvGPSObj, MvEngine, MvMapProvider, MvDownloadEngine;
|
MvTypes, MvGPSObj, MvEngine, MvMapProvider, MvDownloadEngine, MvDrawingEngine;
|
||||||
|
|
||||||
Type
|
Type
|
||||||
|
|
||||||
TDrawGpsPointEvent = procedure (Sender, ACanvas: TObject; APoint: TGpsPoint) of object;
|
TDrawGpsPointEvent = procedure (Sender: TObject;
|
||||||
|
ADrawer: TMvCustomDrawingEngine; APoint: TGpsPoint) of object;
|
||||||
|
|
||||||
{ TMapView }
|
{ TMapView }
|
||||||
|
|
||||||
@ -48,6 +49,9 @@ Type
|
|||||||
FDownloadEngine: TMvCustomDownloadEngine;
|
FDownloadEngine: TMvCustomDownloadEngine;
|
||||||
FBuiltinDownloadEngine: TMvCustomDownloadEngine;
|
FBuiltinDownloadEngine: TMvCustomDownloadEngine;
|
||||||
FEngine: TMapViewerEngine;
|
FEngine: TMapViewerEngine;
|
||||||
|
FBuiltinDrawingEngine: TMvCustomDrawingEngine;
|
||||||
|
FDrawingEngine: TMvCustomDrawingEngine;
|
||||||
|
(*
|
||||||
{$IFDEF USE_RGBGRAPHICS}
|
{$IFDEF USE_RGBGRAPHICS}
|
||||||
Buffer: TRGB32Bitmap;
|
Buffer: TRGB32Bitmap;
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
@ -55,6 +59,7 @@ Type
|
|||||||
Buffer: TLazIntfImage;
|
Buffer: TLazIntfImage;
|
||||||
BufferCanvas: TFPCustomCanvas;
|
BufferCanvas: TFPCustomCanvas;
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
|
*)
|
||||||
FActive: boolean;
|
FActive: boolean;
|
||||||
FGPSItems: TGPSObjectList;
|
FGPSItems: TGPSObjectList;
|
||||||
FInactiveColor: TColor;
|
FInactiveColor: TColor;
|
||||||
@ -72,6 +77,7 @@ Type
|
|||||||
function GetCachePath: String;
|
function GetCachePath: String;
|
||||||
function GetCenter: TRealPoint;
|
function GetCenter: TRealPoint;
|
||||||
function GetDownloadEngine: TMvCustomDownloadEngine;
|
function GetDownloadEngine: TMvCustomDownloadEngine;
|
||||||
|
function GetDrawingEngine: TMvCustoMDrawingEngine;
|
||||||
function GetMapProvider: String;
|
function GetMapProvider: String;
|
||||||
function GetOnCenterMove: TNotifyEvent;
|
function GetOnCenterMove: TNotifyEvent;
|
||||||
function GetOnChange: TNotifyEvent;
|
function GetOnChange: TNotifyEvent;
|
||||||
@ -86,6 +92,7 @@ Type
|
|||||||
procedure SetDefaultTrackColor(AValue: TColor);
|
procedure SetDefaultTrackColor(AValue: TColor);
|
||||||
procedure SetDefaultTrackWidth(AValue: Integer);
|
procedure SetDefaultTrackWidth(AValue: Integer);
|
||||||
procedure SetDownloadEngine(AValue: TMvCustomDownloadEngine);
|
procedure SetDownloadEngine(AValue: TMvCustomDownloadEngine);
|
||||||
|
procedure SetDrawingEngine(AValue: TMvCustomDrawingEngine);
|
||||||
procedure SetInactiveColor(AValue: TColor);
|
procedure SetInactiveColor(AValue: TColor);
|
||||||
procedure SetMapProvider(AValue: String);
|
procedure SetMapProvider(AValue: String);
|
||||||
procedure SetOnCenterMove(AValue: TNotifyEvent);
|
procedure SetOnCenterMove(AValue: TNotifyEvent);
|
||||||
@ -97,10 +104,12 @@ Type
|
|||||||
protected
|
protected
|
||||||
AsyncInvalidate : boolean;
|
AsyncInvalidate : boolean;
|
||||||
procedure ActivateEngine;
|
procedure ActivateEngine;
|
||||||
|
(*
|
||||||
{$IFDEF USE_LAZINTFIMAGE}
|
{$IFDEF USE_LAZINTFIMAGE}
|
||||||
procedure CreateLazIntfImageAndCanvas(out ABuffer: TLazIntfImage;
|
procedure CreateLazIntfImageAndCanvas(out ABuffer: TLazIntfImage;
|
||||||
out ACanvas: TFPCustomCanvas; AWidth, AHeight: Integer);
|
out ACanvas: TFPCustomCanvas; AWidth, AHeight: Integer);
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
|
*)
|
||||||
procedure DblClick; override;
|
procedure DblClick; override;
|
||||||
procedure DoDrawTile(const TileId: TTileId; X,Y: integer; TileImg: TLazIntfImage);
|
procedure DoDrawTile(const TileId: TTileId; X,Y: integer; TileImg: TLazIntfImage);
|
||||||
procedure DoDrawTileInfo(const TileID: TTileID; X,Y: Integer);
|
procedure DoDrawTileInfo(const TileID: TTileID; X,Y: Integer);
|
||||||
@ -143,6 +152,7 @@ Type
|
|||||||
property DefaultTrackColor: TColor read FDefaultTrackColor write SetDefaultTrackColor default clRed;
|
property DefaultTrackColor: TColor read FDefaultTrackColor write SetDefaultTrackColor default clRed;
|
||||||
property DefaultTrackWidth: Integer read FDefaultTrackWidth write SetDefaultTrackWidth default 1;
|
property DefaultTrackWidth: Integer read FDefaultTrackWidth write SetDefaultTrackWidth default 1;
|
||||||
property DownloadEngine: TMvCustomDownloadEngine read GetDownloadEngine write SetDownloadEngine;
|
property DownloadEngine: TMvCustomDownloadEngine read GetDownloadEngine write SetDownloadEngine;
|
||||||
|
property DrawingEngine: TMvCustomDrawingEngine read GetDrawingEngine write SetDrawingEngine;
|
||||||
property Height default 150;
|
property Height default 150;
|
||||||
property InactiveColor: TColor read FInactiveColor write SetInactiveColor;
|
property InactiveColor: TColor read FInactiveColor write SetInactiveColor;
|
||||||
property MapProvider: String read GetMapProvider write SetMapProvider;
|
property MapProvider: String read GetMapProvider write SetMapProvider;
|
||||||
@ -169,9 +179,9 @@ uses
|
|||||||
{$IFDEF USE_LAZINTFIMAGE}
|
{$IFDEF USE_LAZINTFIMAGE}
|
||||||
Math, FPImgCanv, FPImage, LCLVersion,
|
Math, FPImgCanv, FPImage, LCLVersion,
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
GraphType, mvJobQueue, mvExtraData, mvDLEFpc;
|
GraphType, mvJobQueue, mvExtraData, mvDLEFpc, mvDEIntfGraphics;
|
||||||
|
|
||||||
|
|
||||||
|
(*
|
||||||
{$IFDEF USE_LAZINTFIMAGE}
|
{$IFDEF USE_LAZINTFIMAGE}
|
||||||
// Workaround for http://mantis.freepascal.org/view.php?id=27144
|
// Workaround for http://mantis.freepascal.org/view.php?id=27144
|
||||||
procedure CopyPixels(ASource, ADest: TLazIntfImage;
|
procedure CopyPixels(ASource, ADest: TLazIntfImage;
|
||||||
@ -224,7 +234,7 @@ begin
|
|||||||
ADest.Masked[x+XDst,y+YDst] := True;
|
ADest.Masked[x+XDst,y+YDst] := True;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
{$ENDIF}
|
{$ENDIF} *)
|
||||||
|
|
||||||
Type
|
Type
|
||||||
|
|
||||||
@ -363,6 +373,14 @@ begin
|
|||||||
Result := FDownloadEngine;
|
Result := FDownloadEngine;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TMapView.GetDrawingEngine: TMvCustomDrawingEngine;
|
||||||
|
begin
|
||||||
|
if FDrawingEngine = nil then
|
||||||
|
Result := FBuiltinDrawingEngine
|
||||||
|
else
|
||||||
|
Result := FDrawingEngine;
|
||||||
|
end;
|
||||||
|
|
||||||
function TMapView.GetMapProvider: String;
|
function TMapView.GetMapProvider: String;
|
||||||
begin
|
begin
|
||||||
result := Engine.MapProvider;
|
result := Engine.MapProvider;
|
||||||
@ -435,6 +453,17 @@ begin
|
|||||||
FEngine.DownloadEngine := GetDownloadEngine;
|
FEngine.DownloadEngine := GetDownloadEngine;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TMapView.SetDrawingEngine(AValue: TMvCustomDrawingEngine);
|
||||||
|
begin
|
||||||
|
FDrawingEngine := AValue;
|
||||||
|
if AValue = nil then
|
||||||
|
FBuiltinDrawingEngine.CreateBuffer(ClientWidth, ClientHeight)
|
||||||
|
else begin
|
||||||
|
FBuiltinDrawingEngine.CreateBuffer(0, 0);
|
||||||
|
FDrawingEngine.CreateBuffer(ClientWidth, ClientHeight);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TMapView.SetInactiveColor(AValue: TColor);
|
procedure TMapView.SetInactiveColor(AValue: TColor);
|
||||||
begin
|
begin
|
||||||
if FInactiveColor = AValue then
|
if FInactiveColor = AValue then
|
||||||
@ -523,6 +552,7 @@ begin
|
|||||||
inherited DoOnResize;
|
inherited DoOnResize;
|
||||||
//cancel all rendering threads
|
//cancel all rendering threads
|
||||||
Engine.CancelCurrentDrawing;
|
Engine.CancelCurrentDrawing;
|
||||||
|
(*
|
||||||
FreeAndNil(Buffer);
|
FreeAndNil(Buffer);
|
||||||
{$IFDEF USE_RGBGRAPHICS}
|
{$IFDEF USE_RGBGRAPHICS}
|
||||||
Buffer := TRGB32Bitmap.Create(ClientWidth,ClientHeight);
|
Buffer := TRGB32Bitmap.Create(ClientWidth,ClientHeight);
|
||||||
@ -531,6 +561,8 @@ begin
|
|||||||
BufferCanvas.Free;
|
BufferCanvas.Free;
|
||||||
CreateLazIntfImageAndCanvas(Buffer, BufferCanvas, ClientWidth, ClientHeight);
|
CreateLazIntfImageAndCanvas(Buffer, BufferCanvas, ClientWidth, ClientHeight);
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
|
*)
|
||||||
|
DrawingEngine.CreateBuffer(ClientWidth, ClientHeight);
|
||||||
if IsActive then
|
if IsActive then
|
||||||
Engine.SetSize(ClientWidth, ClientHeight);
|
Engine.SetSize(ClientWidth, ClientHeight);
|
||||||
end;
|
end;
|
||||||
@ -540,6 +572,9 @@ var
|
|||||||
bmp: TBitmap;
|
bmp: TBitmap;
|
||||||
begin
|
begin
|
||||||
inherited Paint;
|
inherited Paint;
|
||||||
|
if IsActive then
|
||||||
|
DrawingEngine.PaintToCanvas(Canvas)
|
||||||
|
(*
|
||||||
if IsActive and Assigned(Buffer) then
|
if IsActive and Assigned(Buffer) then
|
||||||
begin
|
begin
|
||||||
{$IFDEF USE_RGBGRAPHICS}
|
{$IFDEF USE_RGBGRAPHICS}
|
||||||
@ -557,6 +592,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
end
|
end
|
||||||
|
*)
|
||||||
else
|
else
|
||||||
begin
|
begin
|
||||||
Canvas.Brush.Color := InactiveColor;
|
Canvas.Brush.Color := InactiveColor;
|
||||||
@ -622,6 +658,7 @@ begin
|
|||||||
begin
|
begin
|
||||||
if not LastInside then
|
if not LastInside then
|
||||||
Old := Engine.LonLatToScreen(trk.Points[pred(i)].RealPoint);
|
Old := Engine.LonLatToScreen(trk.Points[pred(i)].RealPoint);
|
||||||
|
(*
|
||||||
{$IFDEF USE_RGBGRAPHICS}
|
{$IFDEF USE_RGBGRAPHICS}
|
||||||
Buffer.Canvas.OutlineColor := trkColor;
|
Buffer.Canvas.OutlineColor := trkColor;
|
||||||
// --- no linewidth support in RGBGraphics ---
|
// --- no linewidth support in RGBGraphics ---
|
||||||
@ -632,6 +669,8 @@ begin
|
|||||||
BufferCanvas.Pen.Width := trkWidth;
|
BufferCanvas.Pen.Width := trkWidth;
|
||||||
BufferCanvas.Line(Old.X, Old.Y, New.X, New.Y);
|
BufferCanvas.Line(Old.X, Old.Y, New.X, New.Y);
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
|
*)
|
||||||
|
DrawingEngine.Line(Old.X, Old.Y, New.X, New.Y);
|
||||||
end;
|
end;
|
||||||
Old := New;
|
Old := New;
|
||||||
LastInside := IsInside;
|
LastInside := IsInside;
|
||||||
@ -646,12 +685,15 @@ var
|
|||||||
PtColor: TColor;
|
PtColor: TColor;
|
||||||
begin
|
begin
|
||||||
if Assigned(FOnDrawGpsPoint) then begin
|
if Assigned(FOnDrawGpsPoint) then begin
|
||||||
|
FOnDrawGpsPoint(Self, DrawingEngine, aPOI);
|
||||||
|
(*
|
||||||
{$IFDEF USE_RGBGRAPHICS}
|
{$IFDEF USE_RGBGRAPHICS}
|
||||||
FOnDrawGpsPoint(Self, Buffer, aPOI);
|
FOnDrawGpsPoint(Self, Buffer, aPOI);
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
{$IFDEF USE_LAZINTFIMAGE}
|
{$IFDEF USE_LAZINTFIMAGE}
|
||||||
FOnDrawGpsPoint(Self, BufferCanvas, aPOI);
|
FOnDrawGpsPoint(Self, BufferCanvas, aPOI);
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
|
*)
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -662,6 +704,7 @@ begin
|
|||||||
if aPOI.ExtraData.inheritsFrom(TDrawingExtraData) then
|
if aPOI.ExtraData.inheritsFrom(TDrawingExtraData) then
|
||||||
PtColor := TDrawingExtraData(aPOI.ExtraData).Color;
|
PtColor := TDrawingExtraData(aPOI.ExtraData).Color;
|
||||||
end;
|
end;
|
||||||
|
(*
|
||||||
{$IFDEF USE_RGBGRAPHICS}
|
{$IFDEF USE_RGBGRAPHICS}
|
||||||
Buffer.Canvas.OutlineColor := ptColor;
|
Buffer.Canvas.OutlineColor := ptColor;
|
||||||
Buffer.Canvas.Line(Pt.X, Pt.y-5, Pt.X, Pt.Y+5);
|
Buffer.Canvas.Line(Pt.X, Pt.y-5, Pt.X, Pt.Y+5);
|
||||||
@ -672,6 +715,10 @@ begin
|
|||||||
BufferCanvas.Line(Pt.X, Pt.Y-5, Pt.X, Pt.Y+5);
|
BufferCanvas.Line(Pt.X, Pt.Y-5, Pt.X, Pt.Y+5);
|
||||||
BufferCanvas.Line(Pt.X-5, Pt.Y, Pt.X+5, Pt.Y);
|
BufferCanvas.Line(Pt.X-5, Pt.Y, Pt.X+5, Pt.Y);
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
|
*)
|
||||||
|
DrawingEngine.PenColor := ptColor;
|
||||||
|
DrawingEngine.Line(Pt.X, Pt.Y - 5, Pt.X, Pt.Y + 5);
|
||||||
|
DrawingEngine.Line(Pt.X - 5, Pt.Y, Pt.X + 5, Pt.Y);
|
||||||
|
|
||||||
// Buffer.Draw();
|
// Buffer.Draw();
|
||||||
end;
|
end;
|
||||||
@ -721,17 +768,22 @@ end;
|
|||||||
|
|
||||||
procedure TMapView.DoDrawTile(const TileId: TTileId; X, Y: integer;
|
procedure TMapView.DoDrawTile(const TileId: TTileId; X, Y: integer;
|
||||||
TileImg: TLazIntfImage);
|
TileImg: TLazIntfImage);
|
||||||
|
(*
|
||||||
{$IFDEF USE_RGBGRAPHICS}
|
{$IFDEF USE_RGBGRAPHICS}
|
||||||
var
|
var
|
||||||
temp: TRGB32Bitmap;
|
temp: TRGB32Bitmap;
|
||||||
ri: TRawImage;
|
ri: TRawImage;
|
||||||
BuffLaz: TLazIntfImage;
|
BuffLaz: TLazIntfImage;
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
|
*)
|
||||||
begin
|
begin
|
||||||
|
{
|
||||||
if Assigned(Buffer) then
|
if Assigned(Buffer) then
|
||||||
begin
|
begin
|
||||||
|
}
|
||||||
if Assigned(TileImg) then
|
if Assigned(TileImg) then
|
||||||
begin
|
begin
|
||||||
|
(*
|
||||||
{$IFDEF USE_RGBGRAPHICS}
|
{$IFDEF USE_RGBGRAPHICS}
|
||||||
if (X >= 0) and (Y >= 0) then //http://mantis.freepascal.org/view.php?id=27144
|
if (X >= 0) and (Y >= 0) then //http://mantis.freepascal.org/view.php?id=27144
|
||||||
begin
|
begin
|
||||||
@ -765,8 +817,13 @@ begin
|
|||||||
Buffer.CopyPixels(TileImg, X, Y);
|
Buffer.CopyPixels(TileImg, X, Y);
|
||||||
{$IFEND}
|
{$IFEND}
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
|
*)
|
||||||
|
DrawingEngine.DrawLazIntfImage(X, Y, TileImg);
|
||||||
end
|
end
|
||||||
else
|
else begin
|
||||||
|
DrawingEngine.BrushColor := clWhite;
|
||||||
|
DrawingEngine.FillRect(X, Y, X + TILE_SIZE, Y + TILE_SIZE);
|
||||||
|
(*
|
||||||
{$IFDEF USE_RGBGRAPHICS}
|
{$IFDEF USE_RGBGRAPHICS}
|
||||||
Buffer.Canvas.FillRect(X, Y, X + TILE_SIZE, Y + TILE_SIZE);
|
Buffer.Canvas.FillRect(X, Y, X + TILE_SIZE, Y + TILE_SIZE);
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
@ -776,7 +833,9 @@ begin
|
|||||||
BufferCanvas.FillRect(X, Y, X + TILE_SIZE, Y + TILE_SIZE);
|
BufferCanvas.FillRect(X, Y, X + TILE_SIZE, Y + TILE_SIZE);
|
||||||
end;
|
end;
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
end;
|
*)
|
||||||
|
end;
|
||||||
|
// end;
|
||||||
if FDebugTiles then
|
if FDebugTiles then
|
||||||
DoDrawTileInfo(TileID, X, Y);
|
DoDrawTileInfo(TileID, X, Y);
|
||||||
DrawObjects(TileId, X, Y, X + TILE_SIZE, Y + TILE_SIZE);
|
DrawObjects(TileId, X, Y, X + TILE_SIZE, Y + TILE_SIZE);
|
||||||
@ -784,6 +843,13 @@ end;
|
|||||||
|
|
||||||
procedure TMapView.DoDrawTileInfo(const TileID: TTileID; X, Y: Integer);
|
procedure TMapView.DoDrawTileInfo(const TileID: TTileID; X, Y: Integer);
|
||||||
begin
|
begin
|
||||||
|
DrawingEngine.PenColor := clGray;
|
||||||
|
DrawingEngine.PenWidth := 1;
|
||||||
|
DrawingEngine.Line(X, Y, X, Y + TILE_SIZE);
|
||||||
|
DrawingEngine.Line(X, Y, X + TILE_SIZE, Y);
|
||||||
|
DrawingEngine.Line(X + TILE_SIZE, Y, X + TILE_SIZE, Y + TILE_SIZE);
|
||||||
|
DrawingEngine.Line(X, Y + TILE_SIZE, X + TILE_SIZE, Y + TILE_SIZE);
|
||||||
|
(*
|
||||||
{$IFDEF USE_LCL}
|
{$IFDEF USE_LCL}
|
||||||
Buffer.Canvas.Pen.Color := clGray;
|
Buffer.Canvas.Pen.Color := clGray;
|
||||||
Buffer.Canvas.Pen.Style := psSolid;
|
Buffer.Canvas.Pen.Style := psSolid;
|
||||||
@ -804,6 +870,7 @@ begin
|
|||||||
BufferCanvas.Line(X + TILE_SIZE, Y, X + TILE_SIZE, Y + TILE_SIZE);
|
BufferCanvas.Line(X + TILE_SIZE, Y, X + TILE_SIZE, Y + TILE_SIZE);
|
||||||
BufferCanvas.Line(X, Y + TILE_SIZE, X + TILE_SIZE, Y + TILE_SIZE);
|
BufferCanvas.Line(X, Y + TILE_SIZE, X + TILE_SIZE, Y + TILE_SIZE);
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
|
*)
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TMapView.IsActive: Boolean;
|
function TMapView.IsActive: Boolean;
|
||||||
@ -825,12 +892,14 @@ begin
|
|||||||
FBuiltinDownLoadEngine.Name := 'BuiltIn';
|
FBuiltinDownLoadEngine.Name := 'BuiltIn';
|
||||||
FDefaultTrackColor := clRed;
|
FDefaultTrackColor := clRed;
|
||||||
FDefaultTrackWidth := 1;
|
FDefaultTrackWidth := 1;
|
||||||
|
(*
|
||||||
{$IFDEF USE_RGBGRAPHICS}
|
{$IFDEF USE_RGBGRAPHICS}
|
||||||
Buffer := TRGB32Bitmap.Create(Width, Height);
|
Buffer := TRGB32Bitmap.Create(Width, Height);
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
{$IFDEF USE_LAZINTFIMAGE}
|
{$IFDEF USE_LAZINTFIMAGE}
|
||||||
CreateLazIntfImageAndCanvas(Buffer, BufferCanvas, Width, Height);
|
CreateLazIntfImageAndCanvas(Buffer, BufferCanvas, Width, Height);
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
|
*)
|
||||||
Engine.CachePath := 'cache/';
|
Engine.CachePath := 'cache/';
|
||||||
Engine.CacheOnDisk := true;
|
Engine.CacheOnDisk := true;
|
||||||
Engine.OnDrawTile := @DoDrawTile;
|
Engine.OnDrawTile := @DoDrawTile;
|
||||||
@ -839,18 +908,23 @@ begin
|
|||||||
inherited Create(AOwner);
|
inherited Create(AOwner);
|
||||||
Width := 150;
|
Width := 150;
|
||||||
Height := 150;
|
Height := 150;
|
||||||
|
FBuiltinDrawingEngine := TIntfGraphicsDrawingEngine.Create(self);
|
||||||
|
FbuiltinDrawingEngine.CreateBuffer(Width, Height);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
destructor TMapView.Destroy;
|
destructor TMapView.Destroy;
|
||||||
begin
|
begin
|
||||||
|
FBuiltinDrawingEngine.Free;
|
||||||
|
{
|
||||||
{$IFDEF USE_LAZINTFIMAGE}
|
{$IFDEF USE_LAZINTFIMAGE}
|
||||||
BufferCanvas.Free;
|
BufferCanvas.Free;
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
Buffer.Free;
|
Buffer.Free;
|
||||||
inherited Destroy;
|
}
|
||||||
FreeAndNil(FGPSItems);
|
FreeAndNil(FGPSItems);
|
||||||
|
inherited Destroy;
|
||||||
end;
|
end;
|
||||||
|
(*
|
||||||
{$IFDEF USE_LAZINTFIMAGE}
|
{$IFDEF USE_LAZINTFIMAGE}
|
||||||
procedure TMapView.CreateLazIntfImageAndCanvas(out ABuffer: TLazIntfImage;
|
procedure TMapView.CreateLazIntfImageAndCanvas(out ABuffer: TLazIntfImage;
|
||||||
out ACanvas: TFPCustomCanvas; AWidth, AHeight: Integer);
|
out ACanvas: TFPCustomCanvas; AWidth, AHeight: Integer);
|
||||||
@ -869,7 +943,7 @@ begin
|
|||||||
ACanvas.Brush.FPColor := colWhite;
|
ACanvas.Brush.FPColor := colWhite;
|
||||||
ACanvas.FillRect(0, 0, AWidth, AHeight);
|
ACanvas.FillRect(0, 0, AWidth, AHeight);
|
||||||
end;
|
end;
|
||||||
{$ENDIF}
|
{$ENDIF} *)
|
||||||
|
|
||||||
procedure TMapView.SaveToFile(AClass: TRasterImageClass; const AFileName: String);
|
procedure TMapView.SaveToFile(AClass: TRasterImageClass; const AFileName: String);
|
||||||
var
|
var
|
||||||
@ -885,6 +959,8 @@ end;
|
|||||||
|
|
||||||
function TMapView.SaveToImage(AClass: TRasterImageClass): TRasterImage;
|
function TMapView.SaveToImage(AClass: TRasterImageClass): TRasterImage;
|
||||||
begin
|
begin
|
||||||
|
Result := DrawingEngine.SaveToImage(AClass);
|
||||||
|
(*
|
||||||
Result := AClass.Create;
|
Result := AClass.Create;
|
||||||
Result.Width := Width;
|
Result.Width := Width;
|
||||||
Result.Height := Height;
|
Result.Height := Height;
|
||||||
@ -895,6 +971,7 @@ begin
|
|||||||
{$IFDEF USE_LAZINTFIMAGE}
|
{$IFDEF USE_LAZINTFIMAGE}
|
||||||
Result.LoadFromIntfImage(Buffer);
|
Result.LoadFromIntfImage(Buffer);
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
|
*)
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMapView.SaveToStream(AClass: TRasterImageClass; AStream: TStream);
|
procedure TMapView.SaveToStream(AClass: TRasterImageClass; AStream: TStream);
|
||||||
@ -967,9 +1044,12 @@ end;
|
|||||||
|
|
||||||
procedure TMapView.ClearBuffer;
|
procedure TMapView.ClearBuffer;
|
||||||
begin
|
begin
|
||||||
|
DrawingEngine.CreateBuffer(ClientWidth, ClientHeight); // ???
|
||||||
|
(*
|
||||||
{$IFDEF USE_LAZINTFIMAGE}
|
{$IFDEF USE_LAZINTFIMAGE}
|
||||||
CreateLazIntfImageAndCanvas(Buffer, BufferCanvas, ClientWidth, ClientHeight);
|
CreateLazIntfImageAndCanvas(Buffer, BufferCanvas, ClientWidth, ClientHeight);
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
|
*)
|
||||||
end;
|
end;
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
Reference in New Issue
Block a user