1#![warn(missing_docs)]
2pub mod error;
19
20pub mod camera;
22pub mod geometry;
24pub mod interaction;
26pub mod renderer;
28pub mod resources;
30pub mod scene;
32pub mod widgets;
34
35pub use geometry::bvh;
40pub use geometry::primitives;
41pub use interaction::annotation;
42pub use interaction::gizmo;
43pub use interaction::input;
44pub use interaction::manipulation;
45pub use interaction::picking;
46pub use interaction::selection;
47pub use interaction::snap;
48pub use scene::aabb;
49pub use scene::material;
50pub use scene::traits;
51pub use widgets::axes_indicator;
52
53pub use error::{ViewportError, ViewportResult};
58
59pub use camera::animator::{CameraAnimator, CameraDamping, Easing};
60pub use camera::camera::{Camera, CameraTarget, Projection};
61pub use camera::frustum::{CullStats, Frustum};
62pub use camera::view_preset::ViewPreset;
63
64pub use scene::aabb::Aabb;
65pub use scene::material::Material;
66pub use scene::scene::{Group, GroupId, Layer, LayerId, Scene, SceneNode};
67pub use scene::traits::{RenderMode, ViewportObject};
68
69pub use geometry::bvh::PickAccelerator;
70pub use geometry::isoline::{IsolineItem, extract_isolines};
71pub use geometry::marching_cubes::{VolumeData, extract_isosurface};
72
73pub use interaction::annotation::AnnotationLabel;
74#[cfg(feature = "egui")]
75pub use interaction::annotation::draw_annotation_labels;
76pub use interaction::annotation::{world_to_screen, world_to_screen_from_frame};
77pub use interaction::gizmo::{
78 Gizmo, GizmoAxis, GizmoMode, GizmoSpace, PivotMode, gizmo_center_for_pivot,
79};
80pub use interaction::input::{
81 Action, ActionState, Binding, FrameInput, InputMode, InputSystem, KeyCode, Modifiers,
82 MouseButton,
83};
84pub use interaction::input::{
86 ActionFrame, BindingPreset, ButtonState, ModifiersMatch, NavigationActions,
87 OrbitCameraController, ResolvedActionState, ScrollUnits, ViewportBinding, ViewportContext,
88 ViewportEvent, ViewportGesture, ViewportInput, viewport_all_bindings,
89};
90pub use interaction::manipulation::{
91 GizmoInfo, ManipResult, ManipulationContext, ManipulationController, ManipulationKind,
92 ManipulationState, TransformDelta,
93};
94pub use interaction::manipulation::solvers::{
95 angular_rotation_from_cursor, constrained_scale, constrained_translation,
96};
97
98pub use interaction::picking::{
99 GpuPickHit, PickHit, ProbeBinding, RectPickResult, pick_rect,
100 pick_scene_accelerated_with_probe, pick_scene_nodes_with_probe, pick_scene_with_probe,
101};
102pub use interaction::selection::{NodeId, Selection};
103pub use interaction::snap::{ConstraintOverlay, SnapConfig};
104
105pub use widgets::axes_indicator::AxisView;
106
107pub use renderer::shader_hashes::ShaderValidation;
108pub use renderer::stats::FrameStats;
109pub use renderer::{
110 CameraFrame, ClipPlane, ClipVolume, ComputeFilterItem, ComputeFilterKind, EffectsFrame,
111 FilterMode, FrameData, GlyphItem, GlyphType, InteractionFrame, LightKind, LightSource,
112 LightingSettings, PointCloudItem, PointRenderMode, PolylineItem, PostProcessSettings,
113 RenderCamera, SceneFrame, SceneRenderItem, ShadowFilter, StreamtubeItem, SurfaceSubmission,
114 ToneMapping, ViewportFrame, ViewportRenderer, VolumeItem,
115};
116pub use renderer::{ScalarBar, ScalarBarAnchor, ScalarBarOrientation};
117
118pub use resources::colormap_data::{
119 export_paraview_xml_colormap, lerp_colormap_lut, parse_paraview_xml_colormap,
120};
121pub use resources::mesh_store::MeshId;
122pub use resources::{
123 AttributeData, AttributeKind, AttributeRef, BuiltinColormap, CameraUniform, ClipVolumeUniform,
124 ColormapId, ComputeFilterResult, LightUniform, LightsUniform, MeshData, SingleLightUniform,
125 ViewportGpuResources, VolumeId, lerp_attributes,
126};