re_viewport 0.12.1

The central viewport panel of the Rerun viewer.
Documentation
use re_data_ui::{add_to_registry, DataUi};
use re_viewer_context::{ComponentUiRegistry, SpaceViewId, UiVerbosity, ViewerContext};

use super::components::{IncludedSpaceViews, SpaceViewMaximized, ViewportLayout};

impl DataUi for IncludedSpaceViews {
    #[allow(clippy::only_used_in_recursion)]
    fn data_ui(
        &self,
        _ctx: &ViewerContext<'_>,
        ui: &mut egui::Ui,
        verbosity: UiVerbosity,
        _query: &re_data_store::LatestAtQuery,
    ) {
        match verbosity {
            UiVerbosity::Small => {
                ui.label(format!("{} Space Views", self.0.len()));
            }
            UiVerbosity::Full | UiVerbosity::LimitHeight | UiVerbosity::Reduced => {
                for space_view in &self.0 {
                    let space_view: SpaceViewId = (*space_view).into();
                    space_view.data_ui(_ctx, ui, verbosity, _query);
                    ui.end_row();
                }
            }
        }
    }
}

impl DataUi for SpaceViewMaximized {
    #[allow(clippy::only_used_in_recursion)]
    fn data_ui(
        &self,
        ctx: &ViewerContext<'_>,
        ui: &mut egui::Ui,
        verbosity: UiVerbosity,
        query: &re_data_store::LatestAtQuery,
    ) {
        match self.0 {
            Some(space_view) => {
                let space_view: SpaceViewId = space_view.into();
                space_view.data_ui(ctx, ui, verbosity, query);
            }
            None => {
                ui.label("None");
            }
        }
    }
}

impl DataUi for ViewportLayout {
    #[allow(clippy::only_used_in_recursion)]
    fn data_ui(
        &self,
        _ctx: &ViewerContext<'_>,
        ui: &mut egui::Ui,
        verbosity: UiVerbosity,
        _query: &re_data_store::LatestAtQuery,
    ) {
        match verbosity {
            UiVerbosity::Small => {
                ui.label(format!("ViewportLayout with {} tiles", self.0.tiles.len()));
            }
            UiVerbosity::Full | UiVerbosity::LimitHeight | UiVerbosity::Reduced => {
                ui.label(format!("{:?}", self.0));
            }
        }
    }
}

pub fn register_ui_components(registry: &mut ComponentUiRegistry) {
    re_tracing::profile_function!();

    add_to_registry::<IncludedSpaceViews>(registry);
    add_to_registry::<SpaceViewMaximized>(registry);
    add_to_registry::<ViewportLayout>(registry);
}