cz.cuni.jagrlib.piece
Class OBJFileFormat

java.lang.Object
  extended by cz.cuni.jagrlib.DefaultProperty
      extended by cz.cuni.jagrlib.Piece
          extended by cz.cuni.jagrlib.DefaultFileFormat
              extended by cz.cuni.jagrlib.DefaultBrepFileFormat
                  extended by cz.cuni.jagrlib.piece.OBJFileFormat
All Implemented Interfaces:
Breakable, DataFileFormat, Property, Template

public class OBJFileFormat
extends DefaultBrepFileFormat

Wavefront OBJ file format (persistence of B-rep 3D data).

See Also:
OBJFileFormat.java

Nested Class Summary
protected static class OBJFileFormat.Vertex
          Vertex triple [ coords, texture, normal ].
 
Field Summary
static RegPiece reg
          Static registration instance for this class.
protected  boolean reorient
          Change coordinate orientation?
static java.lang.String REORIENT
           
protected  int solid
          Id of solid read from input stream.
static java.lang.String SOLID
           
protected  boolean triangulate
          Triangulate all read faces?
static java.lang.String TRIANGULATE
           
 
Fields inherited from class cz.cuni.jagrlib.DefaultBrepFileFormat
CATEGORY, TEMPLATE_NAME
 
Fields inherited from class cz.cuni.jagrlib.Piece
channels, info, pl, plugs, TEMPLATE_TYPE, userBreak
 
Fields inherited from interface cz.cuni.jagrlib.iface.DataFileFormat
DOUBLE_STREAM
 
Fields inherited from interface cz.cuni.jagrlib.iface.Property
LOGGING, STATISTICS, TEXT_DESCRIPTION
 
Fields inherited from interface cz.cuni.jagrlib.Template
ALL_PLUGS, C_1D, C_2D, C_3D, C_ALPHA, C_BINARY, C_BREP, C_CAMERA, C_CIRCLE, C_CLIP, C_COMPRESSION, C_CURVE, C_DATA, C_DRAW, C_EDITOR, C_ELLIPSE, C_FILL, C_FILTER, C_FLOAT, C_FUNCTION, C_IMAGE, C_INTEGER, C_IO, C_LIGHT, C_LINE, C_METRIC, C_POLYGON, C_PROJECTION, C_RADIOSITY, C_RASTER, C_RENDER, C_SAMPLE, C_SCENE, C_SET, C_SOLID, C_TEXT, C_TRANSFORM, C_VECTOR, C_VIEWER, C_WORKER, CAT_EMPTY, EMPTY, IFACE, JAGRLIB, JAGRLIB2, MANIPULATOR_COMBO, MANIPULATOR_CUSTOM, MANIPULATOR_DEFAULT, MANIPULATOR_MULTILINE, PL_ALPHAMASK, PL_BITMASK, PL_CAUSTIC, PL_CODEC, PL_COLORMAP, PL_COMPARE, PL_DATA, PL_DIRECT, PL_EDITOR, PL_FILTER, PL_FUNCTION, PL_IMAGE, PL_IMPORT, PL_INPUT, PL_INTERSECTION, PL_LIGHTSOURCE, PL_ORDER, PL_OUTPUT, PL_PALETTE, PL_PHOTON, PL_PROPERTY, PL_QUANTIZER, PL_RASTER, PL_RENDER, PL_SHADOW, PL_STREAM, PL_TRANSFORM, PL_TRIGGER, PL_VOLUME, PL_WINDOW, TYPE_BOOLEAN, TYPE_DOUBLE, TYPE_FLOAT, TYPE_INTEGER, TYPE_LONG, TYPE_OBJECT, TYPE_STRING
 
Constructor Summary
OBJFileFormat()
           
 
Method Summary
protected  void commonLoad(BitStream stream, Brep b)
          Common load code.
protected  void commonSave(BitStream stream, Brep b)
          Common save code.
 java.lang.String[] fileNameMasks()
          Returns file-name masks associated with the file-format type.
 java.lang.Object get(java.lang.String key)
          Gets the given property.
 int headerLength()
          Length of file-format header (number of bytes which is necessary for file-format matching).
 double match(byte[] header, java.lang.String fileName)
          File-format match test.
protected static boolean parseDouble(java.lang.String token, double[] arr, int i)
          Parses double number, returns true if succeeded.
protected static int parseFace(java.lang.String[] tokens, int len, int vertices, int textures, int normals, OBJFileFormat.Vertex[] vert)
          Parse one face, parsed vertices are written into the vert array, their number is returned.
protected static int parseVector(java.lang.String[] tokens, int len, double[] arr)
          Parses double-precision vector starting at token[1], stores result in the arr array, returns its length.
 void set(java.lang.String key, java.lang.Object value)
          Sets the given property.
static int setTemplate(Template t, int ord)
          General-purpose registration routine.
 
Methods inherited from class cz.cuni.jagrlib.DefaultBrepFileFormat
loadFile, loadFile, saveFile, saveFile
 
Methods inherited from class cz.cuni.jagrlib.DefaultFileFormat
closeFile, init, readFloat, readLine, readParameters, readToken, readUnsigned16, readUnsigned16, readUnsigned32, writeFloat, writeLine, writeParameters, writeUnsigned16, writeUnsigned16, writeUnsigned32
 
Methods inherited from class cz.cuni.jagrlib.Piece
className, connect, findPlug, findPlug, getInfo, getInterface, getInterface, getPlug, getReg, isCompatible, isCompatible, isConnected, logError, logWarning, myInterface, newInputPlug, newOptOutputPlug, newOutputPlug, newPlug, noTemplates, propBegin, propBounds, propDefault, propEnd, propEnum, propManipulator, propManipulator, setProgressListener, setRegStrings, setTemplateDynamic, stop
 
Methods inherited from class cz.cuni.jagrlib.DefaultProperty
booleanProperty, booleanProperty, colorDoubleProperty, colorProperty, commit, doubleProperty, doubleProperty, doubleProperty, enumProperty, floatProperty, floatProperty, floatProperty, intProperty, intProperty, intProperty, longProperty, longProperty, longProperty, set, stringProperty
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface cz.cuni.jagrlib.iface.Property
commit
 
Methods inherited from interface cz.cuni.jagrlib.Breakable
setProgressListener, stop
 

Field Detail

triangulate

protected boolean triangulate
Triangulate all read faces?


reorient

protected boolean reorient
Change coordinate orientation?


solid

protected int solid
Id of solid read from input stream. All faces will go into this solid. If Brep.NULL, no solid identifiers will be set..


TRIANGULATE

public static final java.lang.String TRIANGULATE
See Also:
Constant Field Values

REORIENT

public static final java.lang.String REORIENT
See Also:
Constant Field Values

SOLID

public static final java.lang.String SOLID
See Also:
Constant Field Values

reg

public static final RegPiece reg
Static registration instance for this class. Automatically initialized in class-loading time.

Constructor Detail

OBJFileFormat

public OBJFileFormat()
Method Detail

parseDouble

protected static boolean parseDouble(java.lang.String token,
                                     double[] arr,
                                     int i)
Parses double number, returns true if succeeded.


parseVector

protected static int parseVector(java.lang.String[] tokens,
                                 int len,
                                 double[] arr)
Parses double-precision vector starting at token[1], stores result in the arr array, returns its length.


parseFace

protected static int parseFace(java.lang.String[] tokens,
                               int len,
                               int vertices,
                               int textures,
                               int normals,
                               OBJFileFormat.Vertex[] vert)
Parse one face, parsed vertices are written into the vert array, their number is returned.


commonLoad

protected void commonLoad(BitStream stream,
                          Brep b)
                   throws java.io.IOException
Common load code.

Overrides:
commonLoad in class DefaultBrepFileFormat
Parameters:
stream - Opened input bit-stream.
b - Checked B-rep database object.
Throws:
java.io.IOException

commonSave

protected void commonSave(BitStream stream,
                          Brep b)
                   throws java.io.IOException
Common save code.

Overrides:
commonSave in class DefaultBrepFileFormat
Parameters:
stream - Opened output bit-stream.
b - Checked B-rep database object.
Throws:
java.io.IOException

headerLength

public int headerLength()
Length of file-format header (number of bytes which is necessary for file-format matching).

Specified by:
headerLength in interface DataFileFormat
Specified by:
headerLength in class DefaultFileFormat
Returns:
Number of bytes from beginning of a file which are enough for file-format match test.
See Also:
match(byte[], java.lang.String)

match

public double match(byte[] header,
                    java.lang.String fileName)
File-format match test. Guesses whether the binary file-header (and file-name) can belong to this file-format type.

Specified by:
match in interface DataFileFormat
Specified by:
match in class DefaultFileFormat
Parameters:
header - Bytes from beginning of the file.
fileName - Optional file-name string.
Returns:
Probability of being my file-format type (0.0 .. no way, 0.5 .. maybe, 0.9 .. almost sure, 1.0 .. absolutely - no need to check another formats).
See Also:
headerLength(), fileNameMasks()

fileNameMasks

public java.lang.String[] fileNameMasks()
Returns file-name masks associated with the file-format type. Needs not be implemented in systems where "file-name -> file-type" mapping is irrelevant.

Specified by:
fileNameMasks in interface DataFileFormat
Specified by:
fileNameMasks in class DefaultFileFormat
Returns:
Array of wild-card file-name masks (e.g. ["*.png"]) or null.
See Also:
match(byte[], java.lang.String)

set

public void set(java.lang.String key,
                java.lang.Object value)
Sets the given property.

Specified by:
set in interface Property
Overrides:
set in class DefaultProperty
Parameters:
key - Key string.
value - The new value.
See Also:
Property.commit()

get

public java.lang.Object get(java.lang.String key)
Gets the given property.

Specified by:
get in interface Property
Overrides:
get in class DefaultProperty
Parameters:
key - Key string.
Returns:
The actual value or null.

setTemplate

public static int setTemplate(Template t,
                              int ord)
General-purpose registration routine. Sets all plugs, strings, etc. to the given Template.