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 class
Class representing an OBJ face definition.static final class
Class representing a set of attributes for a face vertex. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate boolean
If 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 int
Number of texture coordinate keywords encountered in the file so far.private int
Number of vertex keywords encountered in the file so far.private int
Number 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 TypeMethodDescriptionint
Get the number oftexture coordinate keywords
parsed so far.int
Get the number ofvertex keywords
parsed so far.int
Get the number ofvertex normal keywords
parsed so far.protected void
handleKeyword
(String keywordValue) Method called when a keyword is encountered in the parsed OBJ content.boolean
Return true if the instance is configured to throw anIllegalStateException
when 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 int
readNormalizedVertexAttributeIndex
(String type, int available) Read a vertex attribute index from the current parser position and normalize it to be 0-based and positive.void
setFailOnNonPolygonKeywords
(boolean failOnNonPolygonKeywords) Set the flag determining if the instance should throw anIllegalStateException
when encountering keywords not commonly used with OBJ files containing only polygon data.Methods inherited from class org.apache.commons.geometry.io.euclidean.threed.obj.AbstractObjParser
discardDataLine, discardDataLineWhitespace, getCurrentKeyword, getTextParser, nextDataLineContent, nextDouble, nextKeyword, readDataLine, readDoubles, readVector
-
Field Details
-
STANDARD_POLYGON_KEYWORDS
Set containing OBJ keywords commonly used with files containing only polygon content. -
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 keywords
parsed so far.- Returns:
- the number of vertex keywords parsed so far
-
getVertexNormalCount
public int getVertexNormalCount()Get the number ofvertex normal keywords
parsed so far.- Returns:
- the number of vertex normal keywords parsed so far
-
getTextureCoordinateCount
public int getTextureCoordinateCount()Get the number oftexture coordinate keywords
parsed 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 anIllegalStateException
when 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:v
vn
vt
f
o
g
s
mtllib
usemtl
- 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 anIllegalStateException
when encountering keywords not commonly used with OBJ files containing only polygon data. If true, only the following keywords are accepted:v
vn
vt
f
o
g
s
mtllib
usemtl
- 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:
handleKeyword
in 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
-