Class PolygonObjParser
java.lang.Object
org.apache.commons.geometry.io.euclidean.threed.obj.AbstractObjParser
org.apache.commons.geometry.io.euclidean.threed.obj.PolygonObjParser
Low-level parser class for reading 3D polygon (face) data in the OBJ file format.
This class provides access to OBJ data structures but does not retain any of the
parsed data. For example, it is up to callers to store vertices as they are parsed
for later reference. This allows callers to determine what values are stored and in
what format.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final classClass representing an OBJ face definition.static final classClass representing a set of attributes for a face vertex. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate booleanIf true, parsing will fail when non-polygon keywords are encountered in the OBJ content.Set containing OBJ keywords commonly used with files containing only polygon content.private intNumber of texture coordinate keywords encountered in the file so far.private intNumber of vertex keywords encountered in the file so far.private intNumber of vertex normal keywords encountered in the file so far. -
Constructor Summary
ConstructorsConstructorDescriptionPolygonObjParser(Reader reader) Construct a new instance for parsing OBJ content from the given reader.PolygonObjParser(SimpleTextParser parser) Construct a new instance for parsing OBJ content from the given text parser. -
Method Summary
Modifier and TypeMethodDescriptionintGet the number oftexture coordinate keywordsparsed so far.intGet the number ofvertex keywordsparsed so far.intGet the number ofvertex normal keywordsparsed so far.protected voidhandleKeyword(String keywordValue) Method called when a keyword is encountered in the parsed OBJ content.booleanReturn true if the instance is configured to throw anIllegalStateExceptionwhen OBJ keywords not commonly used with files containing only polygon data are encountered.readFace()Read an OBJ face definition from the current line.Read an OBJ face vertex definition from the current parser position.private intreadNormalizedVertexAttributeIndex(String type, int available) Read a vertex attribute index from the current parser position and normalize it to be 0-based and positive.voidsetFailOnNonPolygonKeywords(boolean failOnNonPolygonKeywords) Set the flag determining if the instance should throw anIllegalStateExceptionwhen encountering keywords not commonly used with OBJ files containing only polygon data.Methods inherited from class AbstractObjParser
discardDataLine, discardDataLineWhitespace, getCurrentKeyword, getTextParser, nextDataLineContent, nextDouble, nextKeyword, readDataLine, readDoubles, readVector
-
Field Details
-
STANDARD_POLYGON_KEYWORDS
-
vertexCount
private int vertexCountNumber of vertex keywords encountered in the file so far. -
vertexNormalCount
private int vertexNormalCountNumber of vertex normal keywords encountered in the file so far. -
textureCoordinateCount
private int textureCoordinateCountNumber of texture coordinate keywords encountered in the file so far. -
failOnNonPolygonKeywords
private boolean failOnNonPolygonKeywordsIf true, parsing will fail when non-polygon keywords are encountered in the OBJ content.
-
-
Constructor Details
-
PolygonObjParser
Construct a new instance for parsing OBJ content from the given reader.- Parameters:
reader- reader to parser content from
-
PolygonObjParser
Construct a new instance for parsing OBJ content from the given text parser.- Parameters:
parser- text parser to read content from
-
-
Method Details
-
getVertexCount
public int getVertexCount()Get the number ofvertex keywordsparsed so far.- Returns:
- the number of vertex keywords parsed so far
-
getVertexNormalCount
public int getVertexNormalCount()Get the number ofvertex normal keywordsparsed so far.- Returns:
- the number of vertex normal keywords parsed so far
-
getTextureCoordinateCount
public int getTextureCoordinateCount()Get the number oftexture coordinate keywordsparsed so far.- Returns:
- the number of texture coordinate keywords parsed so far
-
isFailOnNonPolygonKeywords
public boolean isFailOnNonPolygonKeywords()Return true if the instance is configured to throw anIllegalStateExceptionwhen OBJ keywords not commonly used with files containing only polygon data are encountered. The default value isfalse, meaning that no keyword validation is performed. When set to true, only the following keywords are accepted:vvnvtfogsmtllibusemtl
- Returns:
- true if the instance is configured to fail when a non-polygon keyword is encountered
-
setFailOnNonPolygonKeywords
public void setFailOnNonPolygonKeywords(boolean failOnNonPolygonKeywords) Set the flag determining if the instance should throw anIllegalStateExceptionwhen encountering keywords not commonly used with OBJ files containing only polygon data. If true, only the following keywords are accepted:vvnvtfogsmtllibusemtl
- Parameters:
failOnNonPolygonKeywords- new flag value
-
handleKeyword
Method called when a keyword is encountered in the parsed OBJ content. Subclasses should use this method to validate the keyword and/or update any internal state.- Specified by:
handleKeywordin classAbstractObjParser- Parameters:
keywordValue- keyword encountered in the OBJ content
-
readFace
Read an OBJ face definition from the current line.- Returns:
- OBJ face definition read from the current line
- Throws:
IllegalStateException- if a face definition is not able to be parsedUncheckedIOException- if an I/O error occurs
-
readFaceVertex
Read an OBJ face vertex definition from the current parser position.- Returns:
- OBJ face vertex definition
- Throws:
IllegalStateException- if a vertex definition is not able to be parsedUncheckedIOException- if an I/O error occurs
-
readNormalizedVertexAttributeIndex
Read a vertex attribute index from the current parser position and normalize it to be 0-based and positive.- Parameters:
type- type of attribute being read; this value is used in error messagesavailable- number of available values of the given type parsed from the content so far- Returns:
- 0-based positive attribute index
- Throws:
IllegalStateException- if the integer index cannot be parsed or the index is out of range for the number of parsed elements of the given typeUncheckedIOException- if an I/O error occurs
-