graphic design tool
git clone https://git.lucas.co/cce-designer.git
The network plate is the pane material verbatim, not scaled by the fade
PassivePlate multiplied the plate alpha by the graph opacity, which at the
configured 0.1 left a 1% plate under grid cells painted in their own
colour. With cce-ui's grid now leaving cells to the plate, the plate has to
BE the pane material or the network pane is a different colour from every
other pane. The fade still applies to what is drawn over it.
Co-Authored-By: Claude Fable 5.1 <[email protected]>
src/app.rs | 6 ------
src/slots.rs | 20 +++++++-------------
2 files changed, 7 insertions(+), 19 deletions(-)
diff --git a/src/app.rs b/src/app.rs
index cc1656f..e4473a6 100644
--- a/src/app.rs
+++ b/src/app.rs
@@ -4402,9 +4402,6 @@ pub(crate) fn geometry_to_spreadsheet_data(geom: &Detail) -> (Vec<String>, Vec<V
if let Some(breadcrumb) = self.slots.breadcrumb.as_any_mut().downcast_mut::<cce_ui::widget::Breadcrumb>() {
breadcrumb.set_network_opacity(self.network_opacity);
}
- if let Some(plate) = self.slots.network_panel.as_any_mut().downcast_mut::<PassivePlate>() {
- plate.set_network_opacity(self.network_opacity);
- }
// The second editor's graph reads the SAME display settings but its
// OWN rect as origin (no pan of its own yet — the rect is the view).
@@ -4428,9 +4425,6 @@ pub(crate) fn geometry_to_spreadsheet_data(geom: &Detail) -> (Vec<String>, Vec<V
if let Some(bc2) = self.slots.breadcrumb2.as_any_mut().downcast_mut::<cce_ui::widget::Breadcrumb>() {
bc2.set_network_opacity(self.network_opacity);
}
- if let Some(plate) = self.slots.network_panel2.as_any_mut().downcast_mut::<PassivePlate>() {
- plate.set_network_opacity(self.network_opacity);
- }
}
pub fn update_inertial_settings(&mut self) {
diff --git a/src/slots.rs b/src/slots.rs
index eec8f86..e76777e 100644
--- a/src/slots.rs
+++ b/src/slots.rs
@@ -216,10 +216,12 @@ impl WidgetSlots {
/// Dissolved cce-ui `Plate` (Phase 6as): a passive panel wearing the parameter
/// plate's fill — same tint, opacity, and blur-behind marker (`param_plate_fill`),
/// so the network plate's bevel rolls exactly like the params plate's and tracks a
-/// live retint/opacity/blur toggle — scaled by the network fade. No children, no
-/// events.
+/// live retint/opacity/blur toggle. NOT scaled by the network fade (it was until
+/// 2026-09-20): the graph's grid cells are this plate showing through, so the
+/// plate has to be the pane material verbatim or the network pane reads as a
+/// different colour from every other pane. The fade applies to what is drawn
+/// over it — grid lines, wires, text. No children, no events.
pub struct PassivePlate {
- pub network_opacity: f32,
/// Circular hit shape while the network pane is round (the legacy Plate marker).
curved_circle: Option<(f32, f32, f32)>,
}
@@ -227,15 +229,10 @@ pub struct PassivePlate {
impl PassivePlate {
pub fn new() -> cce_ui::widget::Adapted<PassivePlate> {
cce_ui::widget::Adapted::new(Self {
- network_opacity: 1.0,
curved_circle: None,
})
}
- pub fn set_network_opacity(&mut self, opacity: f32) {
- self.network_opacity = opacity;
- }
-
pub fn set_curved_circle(&mut self, circle: Option<(f32, f32, f32)>) {
self.curved_circle = circle;
}
@@ -252,11 +249,8 @@ impl cce_ui::widget::Paint for PassivePlate {
fn paint(&self, _rect: cce_ui::scene::layout::Rect, _ctx: &mut cce_ui::scene::paint::PaintCtx) {}
fn color(&self) -> [f32; 4] {
- // `param_plate_fill` folds in the plate opacity and the blur marker; the
- // network fade scales the (possibly negative) alpha without flipping its sign.
- let mut c = cce_ui::colors::param_plate_fill();
- c[3] *= self.network_opacity;
- c
+ // `param_plate_fill` folds in the plate opacity and the blur marker.
+ cce_ui::colors::param_plate_fill()
}
fn corner_style(&self, _rect: cce_ui::scene::layout::Rect) -> Option<(f32, (bool, bool, bool, bool))> {