fpvectorial: Fixes reading huge DXF map files
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@1548 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
parent
c3e6a6e8eb
commit
b7777efdb9
@ -1056,7 +1056,6 @@ begin
|
|||||||
if not IsReadingPolyline then raise Exception.Create('[TvDXFVectorialReader.ReadENTITIES_VERTEX] Unexpected record: VERTEX before a POLYLINE');
|
if not IsReadingPolyline then raise Exception.Create('[TvDXFVectorialReader.ReadENTITIES_VERTEX] Unexpected record: VERTEX before a POLYLINE');
|
||||||
|
|
||||||
curPoint := Length(Polyline);
|
curPoint := Length(Polyline);
|
||||||
Inc(curPoint);
|
|
||||||
SetLength(Polyline, curPoint+1);
|
SetLength(Polyline, curPoint+1);
|
||||||
|
|
||||||
for i := 0 to ATokens.Count - 1 do
|
for i := 0 to ATokens.Count - 1 do
|
||||||
@ -1094,7 +1093,7 @@ begin
|
|||||||
{$ifdef FPVECTORIALDEBUG_POLYLINE}
|
{$ifdef FPVECTORIALDEBUG_POLYLINE}
|
||||||
Write(Format('POLYLINE %f,%f', [Polyline[0].X, Polyline[0].Y]));
|
Write(Format('POLYLINE %f,%f', [Polyline[0].X, Polyline[0].Y]));
|
||||||
{$endif}
|
{$endif}
|
||||||
for i := 1 to Length(Polyline) do
|
for i := 1 to Length(Polyline)-1 do
|
||||||
begin
|
begin
|
||||||
AData.AddLineToPath(Polyline[i].X, Polyline[i].Y);
|
AData.AddLineToPath(Polyline[i].X, Polyline[i].Y);
|
||||||
{$ifdef FPVECTORIALDEBUG_POLYLINE}
|
{$ifdef FPVECTORIALDEBUG_POLYLINE}
|
||||||
|
@ -76,8 +76,8 @@ object frmFPVViewer: TfrmFPVViewer
|
|||||||
object pageViewer: TPage
|
object pageViewer: TPage
|
||||||
end
|
end
|
||||||
object Page2: TPage
|
object Page2: TPage
|
||||||
ClientWidth = 264
|
ClientWidth = 528
|
||||||
ClientHeight = 312
|
ClientHeight = 624
|
||||||
object DXFTreeView: TTreeView
|
object DXFTreeView: TTreeView
|
||||||
Left = 8
|
Left = 8
|
||||||
Height = 313
|
Height = 313
|
||||||
|
@ -75,10 +75,12 @@ begin
|
|||||||
if Vec.Width * spinScale.Value > FPVVIEWER_MAX_IMAGE_SIZE then CanvasSize.X := FPVVIEWER_MAX_IMAGE_SIZE
|
if Vec.Width * spinScale.Value > FPVVIEWER_MAX_IMAGE_SIZE then CanvasSize.X := FPVVIEWER_MAX_IMAGE_SIZE
|
||||||
else if Vec.Width < FPVVIEWER_MIN_IMAGE_SIZE then CanvasSize.X := Drawer.Width
|
else if Vec.Width < FPVVIEWER_MIN_IMAGE_SIZE then CanvasSize.X := Drawer.Width
|
||||||
else CanvasSize.X := Round(Vec.Width * spinScale.Value);
|
else CanvasSize.X := Round(Vec.Width * spinScale.Value);
|
||||||
|
if CanvasSize.X < Drawer.Width then CanvasSize.X := Drawer.Width;
|
||||||
|
|
||||||
if Vec.Height * spinScale.Value > FPVVIEWER_MAX_IMAGE_SIZE then CanvasSize.Y := FPVVIEWER_MAX_IMAGE_SIZE
|
if Vec.Height * spinScale.Value > FPVVIEWER_MAX_IMAGE_SIZE then CanvasSize.Y := FPVVIEWER_MAX_IMAGE_SIZE
|
||||||
else if Vec.Height < FPVVIEWER_MIN_IMAGE_SIZE then CanvasSize.Y := Drawer.Height
|
else if Vec.Height < FPVVIEWER_MIN_IMAGE_SIZE then CanvasSize.Y := Drawer.Height
|
||||||
else CanvasSize.Y := Round(Vec.Height * spinScale.Value);
|
else CanvasSize.Y := Round(Vec.Height * spinScale.Value);
|
||||||
|
if CanvasSize.Y < Drawer.Height then CanvasSize.Y := Drawer.Height;
|
||||||
|
|
||||||
Drawer.Drawing.Width := CanvasSize.X;
|
Drawer.Drawing.Width := CanvasSize.X;
|
||||||
Drawer.Drawing.Height := CanvasSize.Y;
|
Drawer.Drawing.Height := CanvasSize.Y;
|
||||||
|
Loading…
Reference in New Issue
Block a user