1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.geometry.io.euclidean.threed.stl;
18
19 import java.nio.charset.Charset;
20
21 import org.apache.commons.geometry.io.core.GeometryFormat;
22 import org.apache.commons.geometry.io.core.input.GeometryInput;
23 import org.apache.commons.geometry.io.core.internal.GeometryIOUtils;
24 import org.apache.commons.geometry.io.euclidean.threed.AbstractBoundaryReadHandler3D;
25 import org.apache.commons.geometry.io.euclidean.threed.FacetDefinitionReader;
26 import org.apache.commons.geometry.io.euclidean.threed.GeometryFormat3D;
27
28
29
30
31 public class StlBoundaryReadHandler3D extends AbstractBoundaryReadHandler3D {
32
33
34 private Charset defaultCharset = StlConstants.DEFAULT_CHARSET;
35
36
37 @Override
38 public GeometryFormat getFormat() {
39 return GeometryFormat3D.STL;
40 }
41
42
43
44
45
46 public Charset getDefaultCharset() {
47 return defaultCharset;
48 }
49
50
51
52
53
54 public void setDefaultCharset(final Charset charset) {
55 this.defaultCharset = charset;
56 }
57
58
59 @Override
60 public FacetDefinitionReader facetDefinitionReader(final GeometryInput in) {
61 final Charset inputCharset = in.getCharset() != null ?
62 in.getCharset() :
63 defaultCharset;
64
65 return GeometryIOUtils.tryApplyCloseable(
66 inputStream -> StlFacetDefinitionReaders.create(inputStream, inputCharset),
67 in::getInputStream);
68 }
69 }