use egui::{RichText, WidgetText};
use crate::{HasDesignTokens as _, egui_ext::concat_rich_text};
pub const DEBUG_ONLY_TEXT: &str = " debug only ";
const SPACE_BEFORE_BADGE: &str = " ";
pub const DEBUG_ONLY_TOOLTIP: &str =
"This is only shown in debug builds of the Rerun viewer, and is not part of release builds.";
pub fn debug_only_rich_text(style: &egui::Style) -> RichText {
let tokens = style.tokens();
RichText::new(DEBUG_ONLY_TEXT)
.small()
.color(tokens.alert_warning.icon)
.background_color(tokens.alert_warning.fill)
}
pub fn with_debug_only_badge(style: &egui::Style, text: impl Into<RichText>) -> WidgetText {
concat_rich_text(
style,
[
text.into(),
SPACE_BEFORE_BADGE.into(),
debug_only_rich_text(style),
],
)
}
pub fn append_debug_only_badge(job: &mut egui::text::LayoutJob, style: &egui::Style) {
for text in [
RichText::new(SPACE_BEFORE_BADGE),
debug_only_rich_text(style),
] {
text.append_to(
job,
style,
egui::FontSelection::Default,
egui::Align::Center,
);
}
}
pub fn debug_only_badge_ui(ui: &mut egui::Ui) -> egui::Response {
let text = debug_only_rich_text(ui.style());
ui.add(egui::Label::new(text).selectable(false))
.on_hover_text(DEBUG_ONLY_TOOLTIP)
}