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