re_importer 0.32.1

Handles importing of Rerun data from file using importer plugins
Documentation
mod foxglove;
mod helpers;
mod image_helpers;
mod ros2msg;

pub use crate::FOXGLOVE_LENSES_IDENTIFIER;

use re_lenses::{LensBuilderError, Lenses, OutputMode};
use re_log_types::TimeType;
use re_mcap::{DecoderIdentifier, SelectedDecoders};

const ROS2MSG_DECODER_IDENTIFIER: &str = "ros2msg";

pub fn mcap_lenses(
    selected_decoders: &SelectedDecoders,
    time_type: TimeType,
) -> Result<Option<Lenses>, LensBuilderError> {
    let mut lenses = Lenses::new(OutputMode::ForwardUnmatched);

    let has_foxglove_lenses = if selected_decoders
        .contains(&DecoderIdentifier::from(crate::FOXGLOVE_LENSES_IDENTIFIER))
    {
        foxglove::add_foxglove_lenses(&mut lenses, time_type)?;
        true
    } else {
        false
    };

    let has_ros2msg_lenses =
        if selected_decoders.contains(&DecoderIdentifier::from(ROS2MSG_DECODER_IDENTIFIER)) {
            ros2msg::add_ros2msg_lenses(&mut lenses, time_type)?;
            true
        } else {
            false
        };

    Ok((has_foxglove_lenses || has_ros2msg_lenses).then_some(lenses))
}