mirror of https://codeberg.org/topola/topola.git
layout,sdl2-demo,egui: basic support for displaying two layers
This commit is contained in:
parent
5a0ea94a87
commit
74d10f4a9e
|
|
@ -138,33 +138,15 @@ impl eframe::App for App {
|
||||||
let transform = egui::emath::RectTransform::from_to(self.from_rect, viewport_rect);
|
let transform = egui::emath::RectTransform::from_to(self.from_rect, viewport_rect);
|
||||||
let mut painter = Painter::new(ui, transform);
|
let mut painter = Painter::new(ui, transform);
|
||||||
|
|
||||||
let dot_shape = Shape::Dot(DotShape {
|
|
||||||
c: Circle {
|
|
||||||
pos: [50.0, 100.0].into(),
|
|
||||||
r: 10.0,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
let seg_shape = Shape::Seg(SegShape {
|
|
||||||
from: [200.0, 25.0].into(),
|
|
||||||
to: [300.0, 300.0].into(),
|
|
||||||
width: 5.0,
|
|
||||||
});
|
|
||||||
|
|
||||||
let bend_shape = Shape::Bend(BendShape {
|
|
||||||
from: [100.0, 100.0].into(),
|
|
||||||
to: [160.0, 160.0].into(),
|
|
||||||
c: Circle {
|
|
||||||
pos: [130.0, 130.0].into(),
|
|
||||||
r: 30.0,
|
|
||||||
},
|
|
||||||
width: 12.0,
|
|
||||||
});
|
|
||||||
|
|
||||||
if let Some(layout) = &self.layout {
|
if let Some(layout) = &self.layout {
|
||||||
for node in layout.nodes() {
|
for node in layout.layer_nodes(1) {
|
||||||
let shape = node.primitive(layout).shape();
|
let shape = node.primitive(layout).shape();
|
||||||
painter.paint_shape(&shape, egui::Color32::from_rgb(255, 0, 0));
|
painter.paint_shape(&shape, egui::Color32::from_rgb(52, 52, 200));
|
||||||
|
}
|
||||||
|
|
||||||
|
for node in layout.layer_nodes(0) {
|
||||||
|
let shape = node.primitive(layout).shape();
|
||||||
|
painter.paint_shape(&shape, egui::Color32::from_rgb(200, 52, 52));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -394,7 +394,18 @@ fn render_times(
|
||||||
};
|
};
|
||||||
|
|
||||||
//let result = panic::catch_unwind(|| {
|
//let result = panic::catch_unwind(|| {
|
||||||
for node in layout.nodes() {
|
for node in layout.layer_nodes(1) {
|
||||||
|
let color = if highlighteds.contains(&node) {
|
||||||
|
ColorU::new(100, 100, 255, 255)
|
||||||
|
} else {
|
||||||
|
ColorU::new(52, 52, 200, 255)
|
||||||
|
};
|
||||||
|
|
||||||
|
let shape = node.primitive(layout).shape();
|
||||||
|
painter.paint_shape(&shape, color, view.zoom);
|
||||||
|
}
|
||||||
|
|
||||||
|
for node in layout.layer_nodes(0) {
|
||||||
let color = if highlighteds.contains(&node) {
|
let color = if highlighteds.contains(&node) {
|
||||||
ColorU::new(255, 100, 100, 255)
|
ColorU::new(255, 100, 100, 255)
|
||||||
} else {
|
} else {
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ use contracts::debug_ensures;
|
||||||
use enum_dispatch::enum_dispatch;
|
use enum_dispatch::enum_dispatch;
|
||||||
use geo::Point;
|
use geo::Point;
|
||||||
|
|
||||||
use rstar::RTreeObject;
|
use rstar::{RTreeObject, AABB};
|
||||||
use thiserror::Error;
|
use thiserror::Error;
|
||||||
|
|
||||||
use super::graph::GetLayer;
|
use super::graph::GetLayer;
|
||||||
|
|
@ -630,20 +630,19 @@ impl<R: RulesTrait> Layout<R> {
|
||||||
.map(|wrapper| wrapper.data)
|
.map(|wrapper| wrapper.data)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn shapes(&self) -> impl Iterator<Item = Shape> + '_ {
|
pub fn layer_nodes(&self, layer: u64) -> impl Iterator<Item = GeometryIndex> + '_ {
|
||||||
self.nodes().map(|node| node.primitive(self).shape())
|
self.geometry_with_rtree
|
||||||
|
.rtree()
|
||||||
|
.locate_in_envelope_intersecting(&AABB::from_corners(
|
||||||
|
[-f64::INFINITY, -f64::INFINITY, layer as f64],
|
||||||
|
[f64::INFINITY, f64::INFINITY, layer as f64],
|
||||||
|
))
|
||||||
|
.map(|wrapper| wrapper.data)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn node_count(&self) -> usize {
|
pub fn node_count(&self) -> usize {
|
||||||
self.geometry_with_rtree.graph().node_count()
|
self.geometry_with_rtree.graph().node_count()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn node_indices(&self) -> impl Iterator<Item = GeometryIndex> + '_ {
|
|
||||||
self.geometry_with_rtree
|
|
||||||
.rtree()
|
|
||||||
.iter()
|
|
||||||
.map(|wrapper| wrapper.data)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<R: RulesTrait> Layout<R> {
|
impl<R: RulesTrait> Layout<R> {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue