fpvectorial: Fixes the svgz compression issue: I just had to change a virtual tag to override!

git-svn-id: trunk@40706 -
This commit is contained in:
sekelsenmat 2013-04-03 12:13:21 +00:00
parent fb96d706e6
commit d18fae7b03
2 changed files with 31 additions and 6 deletions

View File

@ -14,7 +14,7 @@ interface
uses
Classes, SysUtils, math,
fpimage, fpcanvas, xmlread, dom, fgl,
fpimage, fpcanvas, laz2_xmlread, laz2_dom, fgl,
fpvectorial, fpvutils, lazutf8;
type

View File

@ -15,7 +15,8 @@ type
TvSVGZVectorialReader = class(TvSVGVectorialReader)
public
{ General reading methods }
procedure ReadFromFile(AFileName: string; AData: TvVectorialDocument); virtual;
procedure InflateGZ(AGZFilename: string; ADest: TStream);
procedure ReadFromFile(AFileName: string; AData: TvVectorialDocument); override;
procedure ReadFromStream(AStream: TStream; AData: TvVectorialDocument); override;
end;
@ -23,16 +24,40 @@ implementation
{ TvSVGZVectorialReader }
procedure TvSVGZVectorialReader.InflateGZ(AGZFilename: string; ADest: TStream);
var
GZStream: TGZFileStream;
chunk:string;
cnt:integer;
const
CHUNKSIZE=4096;
begin
GZStream := TGZFileStream.Create(AGZFilename, gzopenread);
try
setlength(chunk,CHUNKSIZE);
repeat
cnt := GZStream.read(chunk[1],CHUNKSIZE);
if cnt<CHUNKSIZE then
setlength(chunk,cnt);
ADest.Write(chunk[1], Length(chunk));
until cnt<CHUNKSIZE;
finally
GZStream.Free;
end;
end;
procedure TvSVGZVectorialReader.ReadFromFile(AFileName: string;
AData: TvVectorialDocument);
var
FileStream: TGZFileStream;
DataStream: TMemoryStream;
begin
FileStream := TGZFileStream.Create(AFileName, gzopenread);
DataStream := TMemoryStream.Create;
try
ReadFromStream(FileStream, AData);
InflateGZ(AFileName, DataStream);
DataStream.Position := 0;
ReadFromStream(DataStream, AData);
finally
FileStream.Free;
DataStream.Free;
end;
end;