pub use crate::{arrow, clear, label, message, point, polyline, vlog_enabled};
#[macro_export]
macro_rules! clear {
(vlogger: $vlogger:expr, $surface:expr) => {
$crate::__private_api::clear(
$crate::__vlog_vlogger!($vlogger),
$crate::__private_api::module_path!(),
$surface,
)
};
(vlogger: $vlogger:expr, target: $target:expr, $surface:expr) => {
$crate::__private_api::clear($crate::__vlog_vlogger!($vlogger), $target, $surface)
};
(target: $target:expr, $surface:expr) => {
$crate::__private_api::clear(
$crate::__vlog_vlogger!(__vlog_global_vlogger),
$target,
$surface,
)
};
($surface:expr) => {
$crate::__private_api::clear(
$crate::__vlog_vlogger!(__vlog_global_vlogger),
$crate::__private_api::module_path!(),
$surface,
)
};
}
#[macro_export]
macro_rules! message {
(vlogger: $vlogger:expr, target: $target:expr, $surface:expr, $($arg:tt)+) => ({
$crate::__message!(
$crate::__vlog_vlogger!($vlogger),
$surface,
&$crate::__abs_module_path!($target),
$($arg)+
)
});
(vlogger: $vlogger:expr, $surface:expr, $($arg:tt)+) => ({
$crate::__message!(
$crate::__vlog_vlogger!($vlogger),
$surface,
&$crate::__abs_module_path!(),
$($arg)+
)
});
(target: $target:expr, $surface:expr, $($arg:tt)+) => ({
$crate::__message!(
$crate::__vlog_vlogger!(__vlog_global_vlogger),
$surface,
&$crate::__abs_module_path!($target),
$($arg)+
)
});
($surface:expr, $($arg:tt)+) => (
$crate::__message!(
$crate::__vlog_vlogger!(__vlog_global_vlogger),
$surface,
&$crate::__abs_module_path!(),
$($arg)+
)
)
}
#[macro_export]
macro_rules! point {
(vlogger: $vlogger:expr, target: $target:expr, $surface:expr, $($arg:tt)+) => ({
$crate::__point!(
$crate::__vlog_vlogger!($vlogger),
$surface,
&$crate::__abs_module_path!($target),
$($arg)+
)
});
(vlogger: $vlogger:expr, $surface:expr, $($arg:tt)+) => ({
$crate::__point!(
$crate::__vlog_vlogger!($vlogger),
$surface,
&$crate::__abs_module_path!(),
$($arg)+
)
});
(target: $target:expr, $surface:expr, $($arg:tt)+) => ({
$crate::__point!(
$crate::__vlog_vlogger!(__vlog_global_vlogger),
$surface,
&$crate::__abs_module_path!($target),
$($arg)+
)
});
($surface:expr, $($arg:tt)+) => (
$crate::__point!(
$crate::__vlog_vlogger!(__vlog_global_vlogger),
$surface,
&$crate::__abs_module_path!(),
$($arg)+
)
)
}
#[macro_export]
macro_rules! label {
(vlogger: $vlogger:expr, target: $target:expr, $surface:expr, $($arg:tt)+) => ({
$crate::__label!(
$crate::__vlog_vlogger!($vlogger),
$surface,
&$crate::__abs_module_path!($target),
$($arg)+
)
});
(vlogger: $vlogger:expr, $surface:expr, $($arg:tt)+) => ({
$crate::__label!(
$crate::__vlog_vlogger!($vlogger),
$surface,
&$crate::__abs_module_path!(),
$($arg)+
)
});
(target: $target:expr, $surface:expr, $($arg:tt)+) => ({
$crate::__label!(
$crate::__vlog_vlogger!(__vlog_global_vlogger),
$surface,
&$crate::__abs_module_path!($target),
$($arg)+
)
});
($surface:expr, $($arg:tt)+) => (
$crate::__label!(
$crate::__vlog_vlogger!(__vlog_global_vlogger),
$surface,
&$crate::__abs_module_path!(),
$($arg)+
)
)
}
#[macro_export]
macro_rules! polyline {
(vlogger: $vlogger:expr, target: $target:expr, $surface:expr, $($arg:tt)+) => ({
$crate::__line!(
$crate::__vlog_vlogger!($vlogger),
$surface,
&$crate::__abs_module_path!($target),
$($arg)+
)
});
(vlogger: $vlogger:expr, $surface:expr, $($arg:tt)+) => ({
$crate::__line!(
$crate::__vlog_vlogger!($vlogger),
$surface,
&$crate::__abs_module_path!(),
$($arg)+
)
});
(target: $target:expr, $surface:expr, $($arg:tt)+) => ({
$crate::__line!(
$crate::__vlog_vlogger!(__vlog_global_vlogger),
$surface,
&$crate::__abs_module_path!($target),
$($arg)+
)
});
($surface:expr, $($arg:tt)+) => (
$crate::__line!(
$crate::__vlog_vlogger!(__vlog_global_vlogger),
$surface,
&$crate::__abs_module_path!(),
$($arg)+
)
)
}
#[macro_export]
macro_rules! arrow {
(vlogger: $vlogger:expr, target: $target:expr, $surface:expr, $($arg:tt)+) => ({
$crate::__arrow!(
$crate::__vlog_vlogger!($vlogger),
$surface,
&$crate::__abs_module_path!($target),
$($arg)+
)
});
(vlogger: $vlogger:expr, $surface:expr, $($arg:tt)+) => ({
$crate::__arrow!(
$crate::__vlog_vlogger!($vlogger),
$surface,
&$crate::__abs_module_path!(),
$($arg)+
)
});
(target: $target:expr, $surface:expr, $($arg:tt)+) => ({
$crate::__arrow!(
$crate::__vlog_vlogger!(__vlog_global_vlogger),
$surface,
&$crate::__abs_module_path!($target),
$($arg)+
)
});
($surface:expr, $($arg:tt)+) => (
$crate::__arrow!(
$crate::__vlog_vlogger!(__vlog_global_vlogger),
$surface,
&$crate::__abs_module_path!(),
$($arg)+
)
)
}
#[doc(hidden)]
#[macro_export]
#[clippy::format_args]
macro_rules! __message {
($vlogger:expr, $surface:expr, $loc:expr, color: $color:tt, $($arg:tt)+) => {
$crate::__private_api::vlog_message(
$vlogger,
$crate::__private_api::format_args!($($arg)+),
$crate::__color!($color),
$surface,
$loc
)
};
($vlogger:expr, $surface:expr, $loc:expr, $($arg:tt)+) => {
$crate::__private_api::vlog_message(
$vlogger,
$crate::__private_api::format_args!($($arg)+),
$crate::__color!(Base),
$surface,
$loc
)
};
}
#[doc(hidden)]
#[macro_export]
#[clippy::format_args]
macro_rules! __point {
($vlogger:expr, $surface:expr, $loc:expr, $pos:expr, $size:expr, $color:tt, $style:tt, $($arg:tt)+) => {
$crate::__private_api::vlog_point(
$vlogger,
$crate::__private_api::format_args!($($arg)+),
$pos,
$size,
$crate::__color!($color),
$crate::__point_style!($style),
$surface,
$loc
)
};
($vlogger:expr, $surface:expr, $loc:expr, $pos:expr, $size:expr, $color:tt, $style:tt) => {
$crate::__private_api::vlog_point(
$vlogger,
$crate::__private_api::format_args!(""),
$pos,
$size,
$crate::__color!($color),
$crate::__point_style!($style),
$surface,
$loc
)
};
($vlogger:expr, $surface:expr, $loc:expr, $pos:expr, $size:expr, $color:tt) => {
$crate::__private_api::vlog_point(
$vlogger,
$crate::__private_api::format_args!(""),
$pos,
$size,
$crate::__color!($color),
$crate::__point_style!("o"),
$surface,
$loc
)
};
}
#[doc(hidden)]
#[macro_export]
#[clippy::format_args]
macro_rules! __label {
($vlogger:expr, $surface:expr, $loc:expr, $pos:expr, ($size:expr, $color:tt, $align:tt), $($arg:tt)+) => {
$crate::__private_api::vlog_label(
$vlogger,
$crate::__private_api::format_args!($($arg)+),
$pos,
$size,
$crate::__color!($color),
$crate::__alignment!($align),
$surface,
$loc
)
};
($vlogger:expr, $surface:expr, $loc:expr, $pos:expr, $($arg:tt)+) => {
$crate::__private_api::vlog_label(
$vlogger,
$crate::__private_api::format_args!($($arg)+),
$pos,
12.0, $crate::__color!(Base),
$crate::__alignment!("x"),
$surface,
$loc
)
};
}
#[doc(hidden)]
#[macro_export]
#[clippy::format_args]
macro_rules! __line {
($vlogger:expr, $surface:expr, $loc:expr, ($pos1:expr, $pos2:expr), $size:expr, $color:tt, $style:tt, $($arg:tt)+) => {
$crate::__private_api::vlog_line(
$vlogger,
$crate::__private_api::format_args!($($arg)+),
$pos1,
$pos2,
$size,
$crate::__color!($color),
$crate::__line_style!($style),
$surface,
$loc
)
};
($vlogger:expr, $surface:expr, $loc:expr, ($pos1:expr, $pos2:expr), $size:expr, $color:tt, $style:tt) => {
$crate::__line!($vlogger, $surface, $loc, ($pos1, $pos2), $size, $color, $style, "");
};
($vlogger:expr, $surface:expr, $loc:expr, ($pos1:expr, $pos2:expr), $size:expr, $color:tt) => {
$crate::__line!($vlogger, $surface, $loc, ($pos1, $pos2), $size, $color, "-", "");
};
($vlogger:expr, $surface:expr, $loc:expr, closed: $point_list:expr, $size:expr, $color:tt, $style:tt, $textsize:expr, $($arg:tt)+) => {
$crate::__private_api::vlog_closed_line(
$vlogger,
$crate::__private_api::format_args!($($arg)+),
$point_list,
$size,
$textsize,
$crate::__color!($color),
$crate::__line_style!($style),
$surface,
$loc
);
};
($vlogger:expr, $surface:expr, $loc:expr, closed: $point_list:expr, $size:expr, $color:tt, $style:tt) => {
$crate::__line!($vlogger, $surface, $loc, closed: $point_list, $size, $color, $style, 0.0, "");
};
($vlogger:expr, $surface:expr, $loc:expr, closed: $point_list:expr, $size:expr, $color:tt) => {
$crate::__line!($vlogger, $surface, $loc, closed: $point_list, $size, $color, "-", 0.0, "");
};
($vlogger:expr, $surface:expr, $loc:expr, $point_list:expr, $size:expr, $color:tt, $style:tt) => {
let mut last = None;
let col = $crate::__color!($color);
let line_style = $crate::__line_style!($style);
let mut count = 0;
for p in $point_list {
if let Some(f) = last {
$crate::__private_api::vlog_line(
$vlogger,
$crate::__private_api::format_args!(""),
f,
p,
$size,
col,
line_style,
$surface,
$loc
);
}
last = Some(p);
count += 1;
}
assert!(count >= 2);
};
($vlogger:expr, $surface:expr, $loc:expr, $point_list:expr, $size:expr, $color:tt) => {
$crate::__line!($vlogger, $surface, $loc, $point_list, $size, $color, "-");
};
}
#[doc(hidden)]
#[macro_export]
#[cfg(feature = "std")]
macro_rules! __std_only {
($($t:tt)*) => {
$($t)*
};
}
#[doc(hidden)]
#[macro_export]
#[cfg(not(feature = "std"))]
macro_rules! __std_only {
($($t:tt)*) => {
compile_error!("std required for arrow macro with fixed length")
};
}
#[doc(hidden)]
#[macro_export]
#[clippy::format_args]
macro_rules! __arrow {
($vlogger:expr, $surface:expr, $loc:expr, $pos:expr, $dir:expr, ($len:expr), $size:expr, $color:tt, $($arg:tt)+) => {
$crate::__std_only!($crate::__private_api::vlog_arrow(
$vlogger,
$crate::__private_api::format_args!($($arg)+),
$pos,
$dir,
Some($len),
$size,
$crate::__color!($color),
$surface,
$loc
))
};
($vlogger:expr, $surface:expr, $loc:expr, $pos:expr, $dir:expr, ($len:expr), $size:expr, $color:tt) => {
$crate::__arrow!($vlogger, $surface, $loc, $pos, $dir, ($len), $size, $color, "")
};
($vlogger:expr, $surface:expr, $loc:expr, $pos:expr, $dir:expr, $size:expr, $color:tt, $($arg:tt)+) => {
$crate::__private_api::vlog_arrow(
$vlogger,
$crate::__private_api::format_args!($($arg)+),
$pos,
$dir,
None,
$size,
$crate::__color!($color),
$surface,
$loc
)
};
($vlogger:expr, $surface:expr, $loc:expr, $pos:expr, $dirs:expr, ($scale:expr), $size:expr) => {
$crate::__private_api::vlog_axis(
$vlogger,
$pos,
$dirs,
$scale,
$size,
$surface,
$loc
)
};
($vlogger:expr, $surface:expr, $loc:expr, $pos:expr, $dir:expr, $size:expr, $color:tt) => {
$crate::__arrow!($vlogger, $surface, $loc, $pos, $dir, $size, $color, "")
};
}
#[macro_export]
macro_rules! vlog_enabled {
(vlogger: $vlogger:expr, target: $target:expr, $surface:expr) => {{
$crate::__private_api::enabled($crate::__vlog_vlogger!($vlogger), $surface, $target)
}};
(vlogger: $vlogger:expr, $surface:expr) => {{
$crate::__private_api::enabled(
$crate::__vlog_vlogger!($vlogger),
$surface,
$crate::__private_api::module_path!(),
)
}};
(target: $target:expr, $surface:expr) => {{
$crate::__private_api::enabled(
$crate::__vlog_vlogger!(__vlog_global_vlogger),
$surface,
$target,
)
}};
($surface:expr) => {{
$crate::__private_api::enabled(
$crate::__vlog_vlogger!(__vlog_global_vlogger),
$surface,
$crate::__private_api::module_path!(),
)
}};
}
#[doc(hidden)]
#[macro_export]
macro_rules! __vlog_vlogger {
(__vlog_global_vlogger) => {{
&$crate::__private_api::GlobalVLogger
}};
($vlogger:expr) => {{
&($vlogger)
}};
}
#[doc(hidden)]
#[macro_export]
macro_rules! __point_style {
("O") => {
$crate::PointStyle::FilledCircle
};
("-O") => {
$crate::PointStyle::Circle
};
("--O") => {
$crate::PointStyle::DashedCircle
};
("S") => {
$crate::PointStyle::FilledSquare
};
("-S") => {
$crate::PointStyle::Square
};
("--S") => {
$crate::PointStyle::DashedSquare
};
("o") => {
$crate::PointStyle::Point
};
("-o") => {
$crate::PointStyle::PointOutline
};
("s") => {
$crate::PointStyle::PointSquare
};
("-s") => {
$crate::PointStyle::PointSquareOutline
};
("x") => {
$crate::PointStyle::PointCross
};
("d") => {
$crate::PointStyle::PointDiamond
};
("-d") => {
$crate::PointStyle::PointDiamondOutline
};
($s:literal) => {
compile_error!(concat!("unknown point style ", $s))
};
($s:ident) => {{
use $crate::PointStyle::*;
$s
}};
}
#[doc(hidden)]
#[macro_export]
macro_rules! __line_style {
("-") => {
$crate::LineStyle::Simple
};
("--") => {
$crate::LineStyle::Dashed
};
("->") => {
$crate::LineStyle::Arrow
};
("_>") => {
$crate::LineStyle::InsideHarpoonCCW
};
("<_") => {
$crate::LineStyle::InsideHarpoonCW
};
($s:literal) => {
compile_error!(concat!("unknown line style ", $s))
};
($s:expr) => {{
use $crate::LineStyle::*;
$s
}};
}
#[doc(hidden)]
#[macro_export]
macro_rules! __alignment {
("<") => {
$crate::TextAlignment::Left
};
(">") => {
$crate::TextAlignment::Right
};
(".") => {
$crate::TextAlignment::Center
};
("x") => {
$crate::TextAlignment::Flexible
};
($a:literal) => {
compile_error!(concat!("unknown text alignment ", $a))
};
($a:expr) => {{
use $crate::TextAlignment::*;
$a
}};
}
#[doc(hidden)]
#[macro_export]
macro_rules! __color {
($hex:literal) => {
$crate::Color::Hex($hex)
};
($name:expr) => {{
use $crate::Color::*;
$name
}};
}