Skip to main content

draco_io/
lib.rs

1//! Low-level format I/O and glTF binary contracts for Draco.
2//!
3//! Full glTF documents, scene preservation, compression and compact views live
4//! in `draco-gltf`. This crate intentionally owns only container/resource and
5//! accessor-to-geometry primitives.
6
7#![cfg_attr(docsrs, feature(doc_cfg))]
8#![deny(missing_docs)]
9
10#[cfg(feature = "fbx-reader")]
11/// FBX ASCII container reader.
12pub mod fbx_ascii;
13#[cfg(any(feature = "fbx-reader", feature = "fbx-writer"))]
14mod fbx_ascii_syntax;
15#[cfg(feature = "fbx-writer")]
16mod fbx_ascii_writer;
17#[cfg(feature = "fbx-reader")]
18/// FBX binary container decoder.
19pub mod fbx_container;
20#[cfg(feature = "fbx-writer")]
21mod fbx_encoder;
22#[cfg(any(feature = "fbx-reader", feature = "fbx-writer"))]
23pub mod fbx_node;
24#[cfg(feature = "fbx-reader")]
25/// Byte order, resource limits, and read options for the FBX reader.
26pub mod fbx_options;
27#[cfg(feature = "fbx-reader")]
28/// FBX binary reader.
29pub mod fbx_reader;
30#[cfg(any(feature = "fbx-reader", feature = "fbx-writer"))]
31/// Polygon-corner-domain expansion of FBX geometry.
32pub mod fbx_render_mesh;
33#[cfg(any(feature = "fbx-reader", feature = "fbx-writer"))]
34mod fbx_scene;
35#[cfg(feature = "fbx-reader")]
36mod fbx_templates;
37#[cfg(feature = "fbx-reader")]
38/// Composition of the FBX transform stack into a local matrix.
39mod fbx_transform;
40#[cfg(feature = "fbx-writer")]
41/// FBX binary writer.
42pub mod fbx_writer;
43#[cfg(feature = "gltf-container")]
44/// glTF/GLB containers and resource resolution.
45pub mod gltf_container;
46#[cfg(feature = "gltf-container")]
47mod gltf_error;
48#[cfg(feature = "gltf-geometry")]
49/// Reader-agnostic accessor and Draco geometry contracts.
50pub mod gltf_geometry;
51#[cfg(feature = "gltf-container")]
52/// `EXT_meshopt_compression` bitstream decoders.
53pub mod meshopt;
54#[cfg(feature = "obj-reader")]
55/// Wavefront OBJ reader.
56pub mod obj_reader;
57#[cfg(feature = "obj-writer")]
58/// Wavefront OBJ writer.
59pub mod obj_writer;
60/// PLY format configuration.
61pub mod ply_format;
62#[cfg(feature = "ply-reader")]
63/// PLY reader.
64pub mod ply_reader;
65#[cfg(feature = "ply-writer")]
66/// PLY writer.
67pub mod ply_writer;
68/// Shared reader and writer traits.
69pub mod traits;
70
71#[cfg(feature = "fbx-reader")]
72pub use fbx_options::{FbxByteOrder, FbxDecodeLimits, FbxReadOptions};
73#[cfg(feature = "fbx-reader")]
74pub use fbx_reader::{FbxMemoryReader, FbxReader};
75#[cfg(any(feature = "fbx-reader", feature = "fbx-writer"))]
76pub use fbx_render_mesh::{FbxGeometryLayers, FbxRenderLayer, FbxRenderMesh};
77#[cfg(any(feature = "fbx-reader", feature = "fbx-writer"))]
78pub use fbx_scene::{
79    FbxAnimChannel, FbxAnimChannelPath, FbxAnimInterpolation, FbxAnimSampler, FbxAnimation,
80    FbxBinormalSet, FbxCamera, FbxColorSet, FbxCreaseKind, FbxCreaseLayer, FbxGlobalSettings,
81    FbxLayerSet, FbxLight, FbxMaterial, FbxMeshInstance, FbxMeshLayers, FbxMorphTarget,
82    FbxNodeAttribute, FbxNodeId, FbxNormalSet, FbxScene, FbxSceneNode, FbxSkin, FbxSkinCluster,
83    FbxSmoothingLayer, FbxTangentSet, FbxTexture, FbxTextureBinding, FbxTextureSlot, FbxTransform,
84    FbxTransformStack, FbxUvSet, FbxWarning, FbxWarningCode,
85};
86#[cfg(feature = "fbx-writer")]
87pub use fbx_writer::{FbxFormat, FbxWriter};
88#[cfg(feature = "gltf-container")]
89pub use gltf_container::{
90    decode_data_uri, inspect_glb, parse_glb_json_and_bin, parse_gltf_container,
91    resolve_gltf_buffers, resolve_resource_uri, ExternalFilePolicy, FileResourceResolver,
92    GlbChunkDescriptor, GlbLayout, GlbRangeReader, GltfBufferReference, GltfContainer,
93    GltfContainerFormat, ResourceLimits, ResourceResolver,
94};
95#[cfg(feature = "gltf-container")]
96pub use gltf_error::GltfError;
97#[cfg(feature = "gltf-geometry")]
98pub use gltf_geometry::{decode_geometry, AccessorSource, DecodedAccessor};
99#[cfg(feature = "gltf-container")]
100pub use meshopt::{MeshoptFilter, MeshoptMode};
101#[cfg(feature = "obj-reader")]
102pub use obj_reader::ObjReader;
103#[cfg(feature = "obj-writer")]
104pub use obj_writer::ObjWriter;
105pub use ply_format::PlyFormat;
106#[cfg(feature = "ply-reader")]
107pub use ply_reader::PlyReader;
108#[cfg(feature = "ply-writer")]
109pub use ply_writer::PlyWriter;
110pub use traits::{PointCloudReader, PointCloudWriter, ReadFromBytes, Reader, WriteToBytes, Writer};