Class TextStlFacetDefinitionReader
- java.lang.Object
-
- org.apache.commons.geometry.io.euclidean.threed.stl.TextStlFacetDefinitionReader
-
- All Implemented Interfaces:
java.lang.AutoCloseable,FacetDefinitionReader
public class TextStlFacetDefinitionReader extends java.lang.Object implements FacetDefinitionReader
FacetDefinitionReaderfor reading the text (i.e., "ASCII") version of the STL file format.- See Also:
- ASCII STL
-
-
Field Summary
Fields Modifier and Type Field Description private booleanfoundSolidEndFlag indicating if the end of a solid definition was detected.private booleanfoundSolidStartFlag indicating if the start of a solid definition was detected.private SimpleTextParserparserText parser.private java.io.ReaderreaderUnderlying reader instance.private java.lang.StringsolidNameThe name of the solid being read.
-
Constructor Summary
Constructors Constructor Description TextStlFacetDefinitionReader(java.io.Reader reader)Construct a new instance for reading text STL content from the given reader.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private voidbeginSolid()Begin reading an STL solid definition.voidclose()Close this instance and release all associated resources.private voidensureSolidStarted()Ensure that an STL solid definition is in the process of being read.java.lang.StringgetSolidName()Get the name of the STL solid being read or null if no name was specified.private voidmatchKeyword(java.lang.String keyword)Read the next word from the content and match it against the given keyword.private voidnextWord()Read the next word from the content, discarding preceding whitespace.private doublereadDouble()Read a double value from the input.FacetDefinitionreadFacet()Return the next facet definition from the input source or null if no more facets are available.private FacetDefinitionreadFacetInternal()Internal method to read a single facet from the STL content.private Vector3DreadVector()Read a vector from the input.private static java.lang.StringtrimmedOrNull(java.lang.String str)Return a trimmed version of the given string or null if the string contains only whitespace.
-
-
-
Field Detail
-
reader
private java.io.Reader reader
Underlying reader instance.
-
parser
private SimpleTextParser parser
Text parser.
-
foundSolidStart
private boolean foundSolidStart
Flag indicating if the start of a solid definition was detected.
-
foundSolidEnd
private boolean foundSolidEnd
Flag indicating if the end of a solid definition was detected.
-
solidName
private java.lang.String solidName
The name of the solid being read.
-
-
Method Detail
-
getSolidName
public java.lang.String getSolidName()
Get the name of the STL solid being read or null if no name was specified.- Returns:
- the name of the STL solid being read or null if no name was specified
- Throws:
java.lang.IllegalStateException- if a data format error occursjava.io.UncheckedIOException- if an I/O error occurs
-
readFacet
public FacetDefinition readFacet()
Return the next facet definition from the input source or null if no more facets are available.- Specified by:
readFacetin interfaceFacetDefinitionReader- Returns:
- the next facet definition or null if no more facets are available
-
close
public void close()
Close this instance and release all associated resources.- Specified by:
closein interfacejava.lang.AutoCloseable- Specified by:
closein interfaceFacetDefinitionReader
-
readFacetInternal
private FacetDefinition readFacetInternal()
Internal method to read a single facet from the STL content.- Returns:
- next facet definition
- Throws:
java.lang.IllegalStateException- if a data format error occursjava.io.UncheckedIOException- if an I/O error occurs
-
ensureSolidStarted
private void ensureSolidStarted()
Ensure that an STL solid definition is in the process of being read. If not, the beginning of a the definition is attempted to be read from the input.- Throws:
java.lang.IllegalStateException- if a data format error occursjava.io.UncheckedIOException- if an I/O error occurs
-
beginSolid
private void beginSolid()
Begin reading an STL solid definition. The "solid" keyword is read along with the name of the solid.- Throws:
java.lang.IllegalStateException- if a data format error occursjava.io.UncheckedIOException- if an I/O error occurs
-
nextWord
private void nextWord()
Read the next word from the content, discarding preceding whitespace.- Throws:
java.lang.IllegalStateException- if a data format error occursjava.io.UncheckedIOException- if an I/O error occurs
-
matchKeyword
private void matchKeyword(java.lang.String keyword)
Read the next word from the content and match it against the given keyword.- Parameters:
keyword- keyword to match against- Throws:
java.lang.IllegalStateException- if the read content does not match the given keywordjava.io.UncheckedIOException- if an I/O error occurs or
-
readVector
private Vector3D readVector()
Read a vector from the input.- Returns:
- the vector read from the input
- Throws:
java.lang.IllegalStateException- if a data format error occursjava.io.UncheckedIOException- if an I/O error occurs
-
readDouble
private double readDouble()
Read a double value from the input.- Returns:
- double value read from the input
- Throws:
java.lang.IllegalStateException- if a data format error occursjava.io.UncheckedIOException- if an I/O error occurs
-
trimmedOrNull
private static java.lang.String trimmedOrNull(java.lang.String str)
Return a trimmed version of the given string or null if the string contains only whitespace.- Parameters:
str- input stream- Returns:
- a trimmed version of the given string or null if the string contains only whitespace
-
-