blob: b83b58ead8c75789e5e98f9ed4a418b53ec7e8c2 [file] [log] [blame]
/*
* Copyright 2009, Google Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following disclaimer
* in the documentation and/or other materials provided with the
* distribution.
* * Neither the name of Google Inc. nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
namespace o3d {
[include="core/cross/file_request.h", async]
callback void FileRequestCallback();
%[
A FileRequest is used to carry out an asynchronous request for a file
to be loaded. Its use parallels that of XMLHttpRequest; you create one, call
open, set the onreadystatechange callback, and call send.
Note that unlike XMLHttpRequests, FileRequests cannot be reused.
For RawData loads, on success the RawData will be stored in the data field
on the FileRequest itself. It is only valid until the FileRequest is freed by
calling pack.removeObject(request).
\code
var request = pack.createFileRequest("RAWDATA");
request.open("GET", url, true);
request.onreadystatechange = function() {
if (request.done) {
if (request.success) {
var rawData = request.data;
// do something with raw data like create a bitmap.
...
} else {
dump('Load of rawdata returned failure.');
}
// Free the request (and the rawData)
pack.removeObject(request);
}
};
request.send();
\endcode
%]
[nocpp, include="core/cross/file_request.h"] class FileRequest
: ObjectBase {
%[
A callback to call whenever the ready state of the request changes.
%]
[setter=set_onreadystatechange]
FileRequestCallback onreadystatechange;
%[
The URI this request is for.
%]
[getter=uri] String uri;
%[
On completion of successful texture file loads, this holds the loaded
texture. Loading textures through FileRequest is depreated.
@deprecated
%]
[getter=texture] Texture? texture;
%[
On completion of successful RawData file loads, this holds the loaded
RawData.
%]
[getter=data] RawData? data;
%[
Whether or not to generate mip-maps on textures that are loaded (default:
true). Mip-maps are not generated for DXTC textures. DDS files can contain
pre-computed mip-maps for DXTC textures though.
Loading textures through FileRequest is depreated.
@deprecated
%]
[getter, setter] bool generate_mipmaps;
%[
This holds the same values as in XMLHttpRequest:
\li 0 = uninitialized
\li 1 = opened
\li 2 = sent
\li 3 = receiving
\li 4 = loaded (the file has been downloaded, but may or may not have been
parsed yet)
%]
[getter=ready_state] int readyState;
%[
This indicates whether any further processing will be done on this
FileRequest.
%]
[getter=done] bool done;
%[
This field is only valid if done is true. It indicates whether or not the
request succeeded. If it failed error holds an error message.
%]
[getter=success] bool success;
%[
An error message.
If done is true and success is false this will be an error message
describing what went wrong.
%]
[getter] String error;
%[
Set up several of the request fields.
\param method "GET" is the only supported method at this time
\param uri the location of the file to fetch
\param async true is the only legal value at this time
%]
[nocpp, userglue, plugin_data] void open(
String method, String uri, bool async);
%[
Send the request.
Unlike XMLHttpRequest the onreadystatechange callback will be called no
matter what, with success or failure.
%]
[nocpp, userglue, plugin_data] void send();
};
} // namespace o3d