/* * 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 + " " ;
}
}