mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-12 09:56:12 +02:00
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:
parent
fb96d706e6
commit
d18fae7b03
@ -14,7 +14,7 @@ interface
|
|||||||
|
|
||||||
uses
|
uses
|
||||||
Classes, SysUtils, math,
|
Classes, SysUtils, math,
|
||||||
fpimage, fpcanvas, xmlread, dom, fgl,
|
fpimage, fpcanvas, laz2_xmlread, laz2_dom, fgl,
|
||||||
fpvectorial, fpvutils, lazutf8;
|
fpvectorial, fpvutils, lazutf8;
|
||||||
|
|
||||||
type
|
type
|
||||||
|
@ -15,7 +15,8 @@ type
|
|||||||
TvSVGZVectorialReader = class(TvSVGVectorialReader)
|
TvSVGZVectorialReader = class(TvSVGVectorialReader)
|
||||||
public
|
public
|
||||||
{ General reading methods }
|
{ 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;
|
procedure ReadFromStream(AStream: TStream; AData: TvVectorialDocument); override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -23,16 +24,40 @@ implementation
|
|||||||
|
|
||||||
{ TvSVGZVectorialReader }
|
{ 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;
|
procedure TvSVGZVectorialReader.ReadFromFile(AFileName: string;
|
||||||
AData: TvVectorialDocument);
|
AData: TvVectorialDocument);
|
||||||
var
|
var
|
||||||
FileStream: TGZFileStream;
|
DataStream: TMemoryStream;
|
||||||
begin
|
begin
|
||||||
FileStream := TGZFileStream.Create(AFileName, gzopenread);
|
DataStream := TMemoryStream.Create;
|
||||||
try
|
try
|
||||||
ReadFromStream(FileStream, AData);
|
InflateGZ(AFileName, DataStream);
|
||||||
|
DataStream.Position := 0;
|
||||||
|
ReadFromStream(DataStream, AData);
|
||||||
finally
|
finally
|
||||||
FileStream.Free;
|
DataStream.Free;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user