mirror of https://codeberg.org/topola/topola.git
egui: show root bbox
Helpful for debugging geometrical transformations.
This commit is contained in:
parent
8c671e5a2c
commit
89717f2b6e
|
|
@ -1,4 +1,5 @@
|
|||
use geo::{CoordsIter, Point, Polygon};
|
||||
use rstar::AABB;
|
||||
use topola::{
|
||||
geometry::primitive::{AccessPrimitiveShape, PrimitiveShape},
|
||||
math::{self, Circle},
|
||||
|
|
@ -59,18 +60,21 @@ impl<'a> Painter<'a> {
|
|||
self.ui.painter().add(epaint_shape);
|
||||
|
||||
if self.paint_bboxes {
|
||||
let bbox = AccessPrimitiveShape::bbox(shape, 0.0);
|
||||
self.paint_bbox(AccessPrimitiveShape::bbox(shape, 0.0));
|
||||
}
|
||||
}
|
||||
|
||||
pub fn paint_bbox(&mut self, bbox: AABB<[f64; 2]>) {
|
||||
let rect = egui::epaint::Rect {
|
||||
min: [bbox.lower()[0] as f32, -bbox.upper()[1] as f32].into(),
|
||||
max: [bbox.upper()[0] as f32, -bbox.lower()[1] as f32].into(),
|
||||
};
|
||||
self.ui.painter().add(egui::Shape::rect_stroke(
|
||||
self.transform.mul_rect(rect),
|
||||
self.transform * rect,
|
||||
egui::Rounding::ZERO,
|
||||
egui::Stroke::new(1.0, egui::Color32::GRAY),
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
pub fn paint_dot(&mut self, circle: Circle, color: egui::epaint::Color32) {
|
||||
let shape = self.dot_shape(circle, color);
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ use petgraph::{
|
|||
data::DataMap,
|
||||
visit::{EdgeRef, IntoEdgeReferences},
|
||||
};
|
||||
use rstar::AABB;
|
||||
use topola::{
|
||||
autorouter::invoker::{
|
||||
Command, ExecuteWithStatus, GetGhosts, GetMaybeNavmesh, GetMaybeTrace, GetObstacles,
|
||||
|
|
@ -209,6 +210,13 @@ impl Viewport {
|
|||
}
|
||||
}
|
||||
|
||||
if top.show_bboxes {
|
||||
let root_bbox3d = board.layout().drawing().rtree().root().envelope();
|
||||
|
||||
let root_bbox = AABB::<[f64; 2]>::from_corners([root_bbox3d.lower()[0], root_bbox3d.lower()[1]].into(), [root_bbox3d.upper()[0], root_bbox3d.upper()[1]].into());
|
||||
painter.paint_bbox(root_bbox);
|
||||
}
|
||||
|
||||
if let Some(execute) = maybe_execute {
|
||||
for ghost in execute.ghosts().iter() {
|
||||
painter.paint_primitive(&ghost, egui::Color32::from_rgb(75, 75, 150));
|
||||
|
|
|
|||
Loading…
Reference in New Issue