This commit is contained in:
1 parent
19ee837986
commit
c2127c3f31
14 files changed
+3621
-5
No files matched your search
@@ -0,0 +1,45 @@
|
||||
unit KaMResourceInput;
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes;
|
||||
|
||||
function KaMResourceExists(const aReference: string): Boolean;
|
||||
function KaMOpenResourceStream(const aReference: string): TStream;
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
CastleUriUtils, CastleDownload;
|
||||
|
||||
function ResourceProtocol(const aReference: string): string;
|
||||
begin
|
||||
if aReference = '' then
|
||||
raise EDownloadError.Create('KaMResourceInput: empty resource reference');
|
||||
|
||||
Result := UriProtocol(aReference);
|
||||
if (Result <> '') and (Result <> 'file') and (Result <> 'castle-data') then
|
||||
raise EDownloadError.Create('KaMResourceInput: unsupported resource protocol: ' + Result);
|
||||
end;
|
||||
|
||||
function KaMResourceExists(const aReference: string): Boolean;
|
||||
begin
|
||||
ResourceProtocol(aReference);
|
||||
case UriExists(aReference) of
|
||||
ueFile: Result := True;
|
||||
ueNotExists, ueDirectory: Result := False;
|
||||
ueUnknown:
|
||||
raise EDownloadError.Create('KaMResourceInput: resource existence is unknown: ' + aReference);
|
||||
end;
|
||||
end;
|
||||
|
||||
function KaMOpenResourceStream(const aReference: string): TStream;
|
||||
begin
|
||||
if ResourceProtocol(aReference) = '' then
|
||||
Result := TFileStream.Create(aReference, fmOpenRead)
|
||||
else
|
||||
Result := Download(aReference, [soForceMemoryStream]);
|
||||
end;
|
||||
|
||||
end.
|
||||
Reference in new issue
Block a user