javax.media.j3d.CompressedGeometryHeader Maven / Gradle / Ivy
Show all versions of java3d-core Show documentation
/*
* Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Sun designates this
* particular file as subject to the "Classpath" exception as provided
* by Sun in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* have any questions.
*
*/
package javax.media.j3d;
import javax.vecmath.Point3d;
/**
* The CompressedGeometrHeader object is used in conjunction with
* the CompressedGeometry object. The CompressedGeometrHeader object
* contains information specific to the compressed geometry stored in
* CompressedGeometry NodeComponent object. This information
* is used to aid the decompression of the compressed geometry.
*
* All instance data is declared public and no get or set methods are
* provided.
*
* @see CompressedGeometry
*
* @deprecated As of Java 3D version 1.4.
*/
public class CompressedGeometryHeader extends Object {
/**
* bufferType: compressed geometry is made up of individual points.
*/
public static final int POINT_BUFFER = 0 ;
/**
* bufferType: compressed geometry is made up of line segments.
*/
public static final int LINE_BUFFER = 1 ;
/**
* bufferType: compressed geometry is made up of triangles.
*/
public static final int TRIANGLE_BUFFER = 2 ;
// Valid values for the bufferDataPresent field.
/**
* bufferDataPresent: bit indicating that normal information is
* bundled with the vertices in the compressed geometry buffer.
*/
public static final int NORMAL_IN_BUFFER = 1 ;
/**
* bufferDataPresent: bit indicating that RGB color information is
* bundled with the vertices in the compressed geometry buffer.
*/
public static final int COLOR_IN_BUFFER = 2 ;
/**
* bufferDataPresent: bit indicating that alpha information is
* bundled with the vertices in the compressed geometry buffer.
*/
public static final int ALPHA_IN_BUFFER = 4 ;
/**
* The major version number for the compressed geometry format that
* was used to compress the geometry.
* If the version number of compressed geometry is incompatible
* with the supported version of compressed geometry in the
* current version of Java 3D, the compressed geometry obejct will
* not be rendered.
*
* @see Canvas3D#queryProperties
*/
public int majorVersionNumber ;
/**
* The minor version number for the compressed geometry format that
* was used to compress the geometry.
* If the version number of compressed geometry is incompatible
* with the supported version of compressed geometry in the
* current version of Java 3D, the compressed geometry obejct will
* not be rendered.
*
* @see Canvas3D#queryProperties
*/
public int minorVersionNumber ;
/**
* The minor-minor version number for the compressed geometry format
* that was used to compress the geometry.
* If the version number of compressed geometry is incompatible
* with the supported version of compressed geometry in the
* current version of Java 3D, the compressed geometry obejct will
* not be rendered.
*
* @see Canvas3D#queryProperties
*/
public int minorMinorVersionNumber ;
/**
* Describes the type of data in the compressed geometry buffer.
* Only one type may be present in any given compressed geometry
* buffer.
*/
public int bufferType ;
/**
* Contains bits indicating what data is bundled with the vertices in the
* compressed geometry buffer. If this data is not present (e.g. color)
* then this info will be inherited from the Appearance node.
*/
public int bufferDataPresent ;
/**
* Size of the compressed geometry in bytes.
*/
public int size ;
/**
* Offset in bytes of the start of the compressed geometry from the
* beginning of the compressed geometry byte array passed to the
* CompressedGeometry constructor.
*
* If the CompressedGeometry is created with reference access semantics,
* then this allow external compressors or file readers to embed several
* blocks of compressed geometry in a single large byte array, possibly
* interspersed with metadata that is not specific to Java 3D, without
* having to copy each block to a separate byte array.
*
* If the CompressedGeometry is created with copy access semantics, then
* size
bytes of compressed geometry data are copied from the
* offset indicated by start
instead of copying the entire
* byte array. The getCompressedGeometry() method will return only the
* bytes used to construct the object, and the getCompressedGeometryHeader()
* method will return a header with the start
field set to 0.
*/
public int start ;
/**
* A point that defines the lower bound of the x,
* y, and z components for all positions in the
* compressed geometry buffer. If null, a lower bound of
* (-1,-1,-1) is assumed. Java 3D will use this information to
* construct a bounding box around compressed geometry objects
* that are used in nodes for which the auto compute bounds flag
* is true. The default value for this point is null.
*
* @since Java 3D 1.2
*/
public Point3d lowerBound = null ;
/**
* A point that defines the upper bound of the x,
* y, and z components for all positions in the
* compressed geometry buffer. If null, an upper bound of (1,1,1)
* is assumed. Java 3D will use this information to construct a
* bounding box around compressed geometry objects that are used
* in nodes for which the auto compute bounds flag is true. The
* default value for this point is null.
*
* @since Java 3D 1.2
*/
public Point3d upperBound = null ;
/**
* Creates a new CompressedGeometryHeader object used for the
* creation of a CompressedGeometry NodeComponent object.
* All instance data is declared public and no get or set methods are
* provided. All values are set to 0 by default and must be filled
* in by the application.
*
* @see CompressedGeometry
*/
public CompressedGeometryHeader() {
}
/**
* Package-scoped method to copy current CompressedGeometryHeader object
* to the passed-in CompressedGeometryHeader object.
*
* @param hdr the CompressedGeometryHeader object into which to copy the
* current CompressedGeometryHeader.
*/
void copy(CompressedGeometryHeader hdr) {
hdr.majorVersionNumber = this.majorVersionNumber ;
hdr.minorVersionNumber = this.minorVersionNumber ;
hdr.minorMinorVersionNumber = this.minorMinorVersionNumber ;
hdr.bufferType = this.bufferType ;
hdr.bufferDataPresent = this.bufferDataPresent ;
hdr.size = this.size ;
hdr.start = this.start ;
hdr.lowerBound = this.lowerBound ;
hdr.upperBound = this.upperBound ;
}
/**
* Returns a String describing the contents of the
* CompressedGeometryHeader object.
*
* @return a String describing contents of the compressed geometry header
*/
@Override
public String toString() {
String type = "UNKNOWN" ;
switch (bufferType) {
case POINT_BUFFER: type = "POINT_BUFFER" ; break ;
case LINE_BUFFER: type = "LINE_BUFFER" ; break ;
case TRIANGLE_BUFFER: type = "TRIANGLE_BUFFER" ; break ;
}
String data = "" ;
if ((bufferDataPresent & NORMAL_IN_BUFFER) != 0)
data = data + "NORMALS " ;
if ((bufferDataPresent & COLOR_IN_BUFFER) != 0)
data = data + "COLORS " ;
if ((bufferDataPresent & ALPHA_IN_BUFFER) != 0)
data = data + "ALPHA " ;
String lbound = "null" ;
if (lowerBound != null)
lbound = lowerBound.toString() ;
String ubound = "null" ;
if (upperBound != null)
ubound = upperBound.toString() ;
return
"majorVersionNumber: " + majorVersionNumber + " " +
"minorVersionNumber: " + minorVersionNumber + " " +
"minorMinorVersionNumber: " + minorMinorVersionNumber + "\n" +
"bufferType: " + type + " " +
"bufferDataPresent: " + data + "\n" +
"size: " + size + " " +
"start: " + start + "\n" +
"lower bound: " + lbound + "\n" +
"upper bound: " + ubound + " " ;
}
}