mirror of https://codeberg.org/topola/topola.git
Display ratsnest
This commit is contained in:
parent
07427a3831
commit
657d33ac6e
|
|
@ -3,7 +3,10 @@
|
||||||
// SPDX-License-Identifier: MIT OR Apache-2.0
|
// SPDX-License-Identifier: MIT OR Apache-2.0
|
||||||
|
|
||||||
use crate::{viewport::Viewport, workspace::Workspace};
|
use crate::{viewport::Viewport, workspace::Workspace};
|
||||||
use topola::{Joint, JointId, Polygon, PolygonId, Segment, SegmentId, Vector2};
|
use topola::{
|
||||||
|
Joint, JointId, PinSelection, Polygon, PolygonId, PrimitiveId, Ratline, Segment, SegmentId,
|
||||||
|
Vector2,
|
||||||
|
};
|
||||||
|
|
||||||
pub struct Display {}
|
pub struct Display {}
|
||||||
|
|
||||||
|
|
@ -23,7 +26,7 @@ impl Display {
|
||||||
self.display_layout(ctx, ui, /*menu_bar,*/ viewport, workspace);
|
self.display_layout(ctx, ui, /*menu_bar,*/ viewport, workspace);
|
||||||
self.display_bboxes(ctx, ui, viewport, workspace);
|
self.display_bboxes(ctx, ui, viewport, workspace);
|
||||||
self.display_navmeshes(ctx, ui, viewport, workspace);
|
self.display_navmeshes(ctx, ui, viewport, workspace);
|
||||||
//self.display_ratsnest(ctx, ui, viewport, workspace);
|
self.display_ratsnest(ctx, ui, viewport, workspace);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn display_layout(
|
fn display_layout(
|
||||||
|
|
@ -317,11 +320,31 @@ impl Display {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn display_ratsnest(
|
fn display_ratsnest(
|
||||||
ctx: &egui::Context,
|
&mut self,
|
||||||
|
_ctx: &egui::Context,
|
||||||
ui: &egui::Ui,
|
ui: &egui::Ui,
|
||||||
viewport: &Viewport,
|
_viewport: &Viewport,
|
||||||
workspace: &Workspace,
|
workspace: &Workspace,
|
||||||
) {
|
) {
|
||||||
//
|
for ratline in workspace.autorouter.ratsnest().ratlines() {
|
||||||
|
let layers = *ratline.endpoint_layers();
|
||||||
|
let endpoints = *ratline.endpoints();
|
||||||
|
|
||||||
|
if !workspace.appearance_panel.visible[layers[0]]
|
||||||
|
|| !workspace.appearance_panel.visible[layers[1]]
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
//let stroke_width = 2.0 / viewport.scale_factor().max(1e-6);
|
||||||
|
|
||||||
|
ui.painter().line_segment(
|
||||||
|
[
|
||||||
|
egui::pos2(endpoints[0].x as f32, endpoints[0].y as f32),
|
||||||
|
egui::pos2(endpoints[1].x as f32, endpoints[1].y as f32),
|
||||||
|
],
|
||||||
|
egui::Stroke::new(10.0, egui::Color32::BLUE),
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,13 +6,14 @@ use derive_getters::Getters;
|
||||||
use undoredo::Recorder;
|
use undoredo::Recorder;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
Board, Joint, JointId, Polygon, PolygonId, Segment, SegmentId, Vector2, Via, ViaId,
|
Board, Joint, JointId, Polygon, PolygonId, Ratsnest, Segment, SegmentId, Vector2, Via, ViaId,
|
||||||
navmesher::{MultiObstacleId, Navmesher},
|
navmesher::{MultiObstacleId, Navmesher},
|
||||||
};
|
};
|
||||||
|
|
||||||
#[derive(Clone, Debug, Getters)]
|
#[derive(Clone, Debug, Getters)]
|
||||||
pub struct Autorouter {
|
pub struct Autorouter {
|
||||||
navmesher: Navmesher,
|
navmesher: Navmesher,
|
||||||
|
ratsnest: Ratsnest,
|
||||||
board: Board,
|
board: Board,
|
||||||
|
|
||||||
joint_multiobstacles: Recorder<Vec<MultiObstacleId>>,
|
joint_multiobstacles: Recorder<Vec<MultiObstacleId>>,
|
||||||
|
|
@ -31,6 +32,7 @@ impl Autorouter {
|
||||||
.map(|p| Vector2::new(p[0], p[1])),
|
.map(|p| Vector2::new(p[0], p[1])),
|
||||||
*board.layout().layer_count(),
|
*board.layout().layer_count(),
|
||||||
),
|
),
|
||||||
|
ratsnest: Ratsnest::new(&board),
|
||||||
board,
|
board,
|
||||||
|
|
||||||
joint_multiobstacles: Recorder::new(Vec::new()),
|
joint_multiobstacles: Recorder::new(Vec::new()),
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue