1mod color;
7pub mod color_swatch;
8mod datatype_uis;
9mod entity_path;
10mod geo_line_string;
11mod image_format;
12mod lat_lon;
13mod line_strip;
14mod map_provider;
15mod marker_shape;
16mod pinhole;
17mod plane3d;
18mod radius;
19mod resolution;
20mod response_utils;
21mod text_log_columns;
22mod time_range;
23mod timeline_columns;
24mod transform_frame_id;
25mod transforms;
26mod variant_uis;
27mod video_timestamp;
28mod view_coordinates;
29mod visible_dnd;
30mod visual_bounds2d;
31mod zoom_level;
32
33use datatype_uis::{
34 edit_bool, edit_f32_min_to_max_float, edit_f32_zero_to_max, edit_f32_zero_to_one,
35 edit_f64_min_to_max_float, edit_f64_zero_to_max, edit_multiline_string, edit_or_view_vec2d,
36 edit_or_view_vec3d, edit_or_view_vec3d_positive, edit_singleline_string, edit_u32_range,
37 edit_u64_range, edit_ui_points, edit_view_enum, edit_view_enum_with_variant_available,
38 edit_view_range1d, view_timestamp, view_uuid, view_view_id,
39};
40use re_sdk_types::ColormapSelection;
41use re_sdk_types::blueprint::components::{
42 AngularSpeed, BackgroundKind, Corner2D, Enabled, Eye3DKind, ForceDistance, ForceIterations,
43 ForceStrength, GridSpacing, LinkAxis, LockRangeDuringZoom, MapProvider, NearClipPlane,
44 RootContainer, ViewFit, ViewMaximized,
45};
46use re_sdk_types::components::{
47 AggregationPolicy, AlbedoFactor, AxisLength, Color, DepthMeter, DrawOrder, FillMode, FillRatio,
48 GammaCorrection, GraphType, HalfSize3D, ImagePlaneDistance, InterpolationMode, IsKeyframe,
49 Length, LinearSpeed, MagnificationFilter, MarkerSize, MeshFaceRendering, Name, Opacity,
50 PointShading, Position2D, Position3D, Range1D, Scale3D, ShowLabels, SphericalHarmonicsDegree,
51 StrokeWidth, Text, Timestamp, TransformRelation, Translation3D, ValueRange, Vector3D,
52 VideoCodec, Visible,
53};
54use re_sdk_types::{archetypes, components};
55use re_viewer_context::gpu_bridge::colormap_edit_or_view_ui_with_selection;
56
57const DEFAULT_NUMBER_WIDTH: f32 = 52.0;
59
60pub const REDAP_URI_BUTTON_VARIANT: &str = "redap_uri";
63
64pub const REDAP_ENTRY_KIND_VARIANT: &str = "redap_entry_kind";
65
66pub const REDAP_THUMBNAIL_VARIANT: &str = "redap_thumbnail";
67
68pub fn create_component_ui_registry() -> re_viewer_context::ComponentUiRegistry {
75 re_tracing::profile_function!();
76
77 let mut registry = re_viewer_context::ComponentUiRegistry::new();
78
79 registry.add_singleline_edit_or_view::<Color>(color::edit_rgba32);
81 registry.add_singleline_array_edit_or_view::<Color>(color::edit_rgba32_array);
82 registry.add_singleline_edit_or_view::<AlbedoFactor>(color::edit_rgba32);
83
84 registry.add_singleline_edit_or_view::<AngularSpeed>(edit_f64_min_to_max_float);
86 registry.add_singleline_edit_or_view::<AxisLength>(edit_f32_zero_to_max);
87 registry.add_singleline_edit_or_view::<DepthMeter>(edit_f32_zero_to_max);
88 registry.add_singleline_edit_or_view::<FillRatio>(edit_f32_zero_to_max);
89 registry.add_singleline_edit_or_view::<ForceDistance>(edit_f64_zero_to_max);
90 registry.add_singleline_edit_or_view::<GammaCorrection>(edit_f32_zero_to_max);
91 registry.add_singleline_edit_or_view::<GridSpacing>(edit_f32_zero_to_max);
92 registry.add_singleline_edit_or_view::<ImagePlaneDistance>(edit_f32_zero_to_max);
93 registry.add_singleline_edit_or_view::<Length>(edit_f32_zero_to_max);
94 registry.add_singleline_edit_or_view::<LinearSpeed>(edit_f64_zero_to_max);
95 registry.add_singleline_edit_or_view::<MarkerSize>(edit_ui_points);
96 registry.add_singleline_edit_or_view::<NearClipPlane>(edit_f32_zero_to_max);
97 registry.add_singleline_edit_or_view::<StrokeWidth>(edit_ui_points);
98
99 registry.add_singleline_edit_or_view::<DrawOrder>(edit_f32_min_to_max_float);
101 registry.add_singleline_edit_or_view::<ForceStrength>(edit_f64_min_to_max_float);
102
103 registry.add_singleline_edit_or_view::<Opacity>(edit_f32_zero_to_one);
105
106 registry.add_singleline_edit_or_view::<ForceIterations>(|ctx, ui, value| {
108 edit_u64_range(ctx, ui, value, 1..=5)
109 });
110 registry.add_singleline_edit_or_view::<SphericalHarmonicsDegree>(|ctx, ui, value| {
111 edit_u32_range(ctx, ui, value, 0..=SphericalHarmonicsDegree::MAX)
112 });
113
114 registry.add_singleline_edit_or_view::<Enabled>(edit_bool);
116 registry.add_singleline_edit_or_view::<LockRangeDuringZoom>(edit_bool);
117 registry.add_singleline_edit_or_view::<ShowLabels>(edit_bool);
118 registry.add_singleline_edit_or_view::<Visible>(edit_bool);
119
120 registry.add_singleline_edit_or_view::<IsKeyframe>(|ctx, ui, value| {
123 edit_bool(
124 ctx,
125 ui,
126 &mut re_viewer_context::MaybeMutRef::Ref(value.as_ref()),
127 )
128 });
129
130 registry.add_singleline_edit_or_view::<Timestamp>(view_timestamp);
132
133 registry.add_singleline_edit_or_view::<Text>(edit_singleline_string);
135 registry.add_multiline_edit_or_view::<Text>(edit_multiline_string);
136 registry.add_singleline_edit_or_view::<Name>(edit_singleline_string);
137 registry.add_multiline_edit_or_view::<Name>(edit_multiline_string);
138 registry.add_singleline_edit_or_view(transform_frame_id::edit_or_view_transform_frame_id);
139
140 registry.add_singleline_edit_or_view::<AggregationPolicy>(edit_view_enum);
143 registry.add_singleline_edit_or_view::<BackgroundKind>(edit_view_enum);
144 registry.add_singleline_edit_or_view::<Corner2D>(edit_view_enum);
145 registry.add_singleline_edit_or_view::<MeshFaceRendering>(edit_view_enum);
146 registry.add_singleline_edit_or_view::<Eye3DKind>(edit_view_enum);
147 registry.add_singleline_edit_or_view::<FillMode>(edit_view_enum);
148 registry.add_singleline_edit_or_view::<GraphType>(edit_view_enum);
149 registry.add_singleline_edit_or_view::<InterpolationMode>(edit_view_enum);
150 registry.add_singleline_edit_or_view::<LinkAxis>(edit_view_enum);
151 registry.add_singleline_edit_or_view::<PointShading>(edit_view_enum);
152 registry.add_singleline_edit_or_view::<MapProvider>(
153 edit_view_enum_with_variant_available::<
154 MapProvider,
155 crate::map_provider::MapProviderVariantAvailable,
156 >,
157 );
158 registry.add_singleline_edit_or_view::<MagnificationFilter>(edit_view_enum);
159 registry.add_singleline_edit_or_view::<TransformRelation>(edit_view_enum);
160 registry.add_singleline_edit_or_view::<VideoCodec>(|ctx, ui, value| {
161 edit_view_enum(
166 ctx,
167 ui,
168 &mut re_viewer_context::MaybeMutRef::Ref(value.as_ref()),
169 )
170 });
171 registry.add_singleline_edit_or_view::<ViewFit>(edit_view_enum);
172
173 registry.add_singleline_edit_or_view::<Position2D>(edit_or_view_vec2d);
175
176 registry.add_singleline_edit_or_view::<HalfSize3D>(edit_or_view_vec3d_positive);
178 registry.add_singleline_edit_or_view::<Position3D>(edit_or_view_vec3d);
179 registry.add_singleline_edit_or_view::<Scale3D>(edit_or_view_vec3d);
180 registry.add_singleline_edit_or_view::<Translation3D>(edit_or_view_vec3d);
181 registry.add_singleline_edit_or_view::<Vector3D>(edit_or_view_vec3d);
182
183 registry.add_singleline_edit_or_view::<ViewMaximized>(view_view_id);
185
186 registry.add_singleline_edit_or_view::<RootContainer>(view_uuid);
187
188 registry.add_singleline_edit_or_view::<Range1D>(edit_view_range1d);
190 registry.add_singleline_edit_or_view::<ValueRange>(edit_view_range1d);
191
192 registry.add_multiline_edit_or_view(time_range::time_range_multiline_edit_or_view_ui);
197 registry.add_singleline_edit_or_view(time_range::time_range_singleline_view_ui);
198
199 registry.add_singleline_edit_or_view::<components::Colormap>(|ctx, ui, map| {
201 colormap_edit_or_view_ui_with_selection(ctx, ui, map, ColormapSelection::Standard)
202 });
203 registry.add_singleline_edit_or_view_for_component::<components::Colormap>(
205 archetypes::GridMap::descriptor_colormap().component,
206 |ctx, ui, _component_descriptor, map| {
207 colormap_edit_or_view_ui_with_selection(ctx, ui, map, ColormapSelection::IncludeGridMap)
208 },
209 );
210
211 registry.add_multiline_edit_or_view(visual_bounds2d::multiline_edit_visual_bounds2d);
212 registry.add_singleline_edit_or_view(visual_bounds2d::singleline_edit_visual_bounds2d);
213
214 registry.add_multiline_edit_or_view(transforms::multiline_view_transform_mat3x3);
215 registry.add_singleline_edit_or_view(transforms::singleline_view_transform_mat3x3);
216
217 registry.add_singleline_edit_or_view(image_format::edit_or_view_image_format);
218 registry.add_singleline_edit_or_view(resolution::edit_or_view_resolution);
219
220 registry
221 .add_singleline_edit_or_view(view_coordinates::singleline_edit_or_view_view_coordinates);
222 registry.add_multiline_edit_or_view(view_coordinates::multiline_edit_or_view_view_coordinates);
223
224 registry.add_singleline_edit_or_view(radius::edit_radius_ui);
225 registry.add_singleline_edit_or_view(marker_shape::edit_marker_shape_ui);
226
227 registry.add_singleline_edit_or_view(pinhole::singleline_view_pinhole);
228 registry.add_multiline_edit_or_view(pinhole::multiline_view_pinhole);
229
230 line_strip::register_linestrip_component_ui(&mut registry);
231 geo_line_string::register_geo_line_string_component_ui(&mut registry);
232
233 registry.add_singleline_edit_or_view(entity_path::edit_or_view_entity_path);
234
235 registry.add_singleline_edit_or_view(video_timestamp::edit_or_view_timestamp);
236
237 registry.add_singleline_edit_or_view(lat_lon::singleline_view_lat_lon);
238
239 registry.add_singleline_edit_or_view(zoom_level::edit_zoom_level);
240
241 registry.add_singleline_edit_or_view(plane3d::edit_or_view_plane3d);
242 registry.add_multiline_edit_or_view(plane3d::multiline_edit_or_view_plane3d);
243
244 registry.add_singleline_array_edit_or_view(timeline_columns::edit_or_view_columns_singleline);
245 registry.add_multiline_array_edit_or_view(timeline_columns::edit_or_view_columns_multiline);
246
247 registry.add_singleline_array_edit_or_view(text_log_columns::edit_or_view_columns_singleline);
248 registry.add_multiline_array_edit_or_view(text_log_columns::edit_or_view_columns_multiline);
249
250 registry.add_variant_ui(REDAP_URI_BUTTON_VARIANT, variant_uis::redap_uri_button);
255 registry.add_variant_ui(REDAP_ENTRY_KIND_VARIANT, variant_uis::redap_entry_kind);
256 registry.add_variant_ui(REDAP_THUMBNAIL_VARIANT, variant_uis::redap_thumbnail);
257
258 registry
259}