/*
*
* Copyright (c) 2000-2001 Silvere Martin-Michiellot All Rights Reserved.
*
* Silvere Martin-Michiellot grants you ("Licensee") a non-exclusive,
* royalty free, license to use, modify but not to redistribute this
* software in source and binary code form,
* provided that i) this copyright notice and license appear on all copies of
* the software; and ii) Licensee does not utilize the software in a manner
* which is disparaging to Silvere Martin-Michiellot.
*
* This software is provided "AS IS," without a warranty of any kind. ALL
* EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY
* IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
* NON-INFRINGEMENT, ARE HEREBY EXCLUDED. Silvere Martin-Michiellot
* AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES
* SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING
* OR DISTRIBUTING THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL
* Silvere Martin-Michiellot OR ITS LICENSORS BE LIABLE
* FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT,
* INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER
* CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF
* OR INABILITY TO USE SOFTWARE, EVEN IF Silvere Martin-Michiellot HAS BEEN
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
*
* This software is not designed or intended for use in on-line control of
* aircraft, air traffic, aircraft navigation or aircraft communications; or in
* the design, construction, operation or maintenance of any nuclear
* facility. Licensee represents and warrants that it will not use or
* redistribute the Software for such purposes.
*
* @Author: Silvere Martin-Michiellot
*
*/
package com.db.loaders;
import java.net.URL;
import java.io.Reader;
import java.io.FileNotFoundException;
/**
* The Loader interface is used to specify the location
* and elements of a file format to load.
* The interface is used to give loaders of various
* file formats a common public interface. Ideally
* the Scene interface will be implemented to give
* the user a consistent interface to extract the
* data.
*
* @see com.db.loaders.Scene
*/
public interface Loader {
/* These are the values to be used in constructing the
* load flags for the loader. Users should OR the selected
* values together to construct an aggregate flag integer
* (see the setFlags() method). Users wishing to load all
* data in a file should use the LOAD_ALL specifier.
*/
/** This flag enables the loading of light objects into the scene.*/
public static final int LOAD_LIGHT_NODES = 1;
/** This flag enables the loading of fog objects into the scene.*/
public static final int LOAD_FOG_NODES = 2;
/** This flag enables the loading of background objects into the scene.*/
public static final int LOAD_BACKGROUND_NODES = 4;
/** This flag enables the loading of behaviors into the scene.*/
public static final int LOAD_BEHAVIOR_NODES = 8;
/** This flag enables the loading of view (camera) objects into
* the scene.*/
public static final int LOAD_VIEW_GROUPS = 16;
/** This flag enables the loading of sound objects into the scene.*/
public static final int LOAD_SOUND_NODES = 32;
/** This flag enables the loading of all objects into the scene.*/
public static final int LOAD_ALL = 0xffffffff;
// Loading methods
/**
* This method loads the named file and returns the Scene
* containing the scene. Any data files referenced by this
* file should be located in the same place as the named file;
* otherwise users should specify an alternate base path with
* the setBasePath(String) method.
*/
public Scene load(String fileName) throws FileNotFoundException,
IncorrectFormatException, ParsingErrorException;
/**
* This method loads the named file and returns the Scene
* containing the scene. Any data files referenced by the Reader
* should be located in the same place as the named file; otherwise,
* users should specify an alternate base path with the setBaseUrl(URL)
* method.
*/
public Scene load(URL url) throws FileNotFoundException,
IncorrectFormatException, ParsingErrorException;
/**
* This method loads the Reader and returns the Scene
* containing the scene. Any data files referenced by the Reader should
* be located in the user's current working directory.
*/
public Scene load(Reader reader)
throws FileNotFoundException, IncorrectFormatException,
ParsingErrorException;
// Variable get/set methods
/**
* This method sets the base URL name for data files associated with
* the file passed into the load(URL) method.
* The basePath should be null by default, which is an indicator
* to the loader that it should look for any associated files starting
* from the same directory as the file passed into the load(URL) method.
*/
public void setBaseUrl(URL url);
/**
* This method sets the base path name for data files associated with
* the file passed into the load(String) method.
* The basePath should be null by default, which is an indicator
* to the loader that it should look for any associated files starting
* from the same directory as the file passed into the load(String)
* method.
*/
public void setBasePath(String pathName);
/**
* Returns the current base URL setting. By default this is null,
* implying the loader should look for associated files starting
* from the same directory as the file passed into the load(URL) method.
*/
public URL getBaseUrl();
/**
* Returns the current base path setting. By default this is null,
* implying the loader should look for associated files starting
* from the same directory as the file passed into the load(String)
* method.
*/
public String getBasePath();
/**
* This method sets the load flags for the file. The flags should
* equal 0 by default (which tells the loader to only load geometry).
* To enable the loading of any particular scene elements, pass
* in a logical OR of the LOAD values specified above.
*/
public void setFlags(int flags);
/**
* Returns the current loading flags setting.
*/
public int getFlags();
}
|