Class TextStlFacetDefinitionReader

java.lang.Object
org.apache.commons.geometry.io.euclidean.threed.stl.TextStlFacetDefinitionReader
All Implemented Interfaces:
AutoCloseable, FacetDefinitionReader

public class TextStlFacetDefinitionReader extends Object implements FacetDefinitionReader
FacetDefinitionReader for reading the text (i.e., "ASCII") version of the STL file format.
See Also:
  • Field Details

    • reader

      private 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 String solidName
      The name of the solid being read.
  • Constructor Details

    • TextStlFacetDefinitionReader

      public TextStlFacetDefinitionReader(Reader reader)
      Construct a new instance for reading text STL content from the given reader.
      Parameters:
      reader - reader to read characters from
  • Method Details

    • getSolidName

      public 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:
      IllegalStateException - if a data format error occurs
      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:
      readFacet in interface FacetDefinitionReader
      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:
      close in interface AutoCloseable
      Specified by:
      close in interface FacetDefinitionReader
    • readFacetInternal

      private FacetDefinition readFacetInternal()
      Internal method to read a single facet from the STL content.
      Returns:
      next facet definition
      Throws:
      IllegalStateException - if a data format error occurs
      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:
      IllegalStateException - if a data format error occurs
      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:
      IllegalStateException - if a data format error occurs
      UncheckedIOException - if an I/O error occurs
    • nextWord

      private void nextWord()
      Read the next word from the content, discarding preceding whitespace.
      Throws:
      IllegalStateException - if a data format error occurs
      UncheckedIOException - if an I/O error occurs
    • matchKeyword

      private void matchKeyword(String keyword)
      Read the next word from the content and match it against the given keyword.
      Parameters:
      keyword - keyword to match against
      Throws:
      IllegalStateException - if the read content does not match the given keyword
      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:
      IllegalStateException - if a data format error occurs
      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:
      IllegalStateException - if a data format error occurs
      UncheckedIOException - if an I/O error occurs
    • trimmedOrNull

      private static String trimmedOrNull(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