Loader.java :  » 6.0-JDK-Modules » java-3d » com » db » loaders » Java Open Source

Java Open Source » 6.0 JDK Modules » java 3d 
java 3d » com » db » loaders » Loader.java
/*
 *
 * 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();

}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.