Feat: implement CTB/STB plot style table with PDF export integration
- src/io/plot_style.rs: PlotStyleTable and PlotStyleEntry data structures; CTB reader (deflate/zlib decompressed text format) with ACI→RGB and ACI→lineweight lookup; CTB writer (zlib compressed); LW_TABLE constant - src/io/pdf_export.rs: accept optional PlotStyleTable; apply ACI color and lineweight overrides during PDF rendering - src/scene/wire_model.rs: add `aci: u8` field to carry ACI index - src/scene/render.rs: render_style() now returns ACI alongside RGBA - src/scene/mod.rs + tessellate.rs: propagate aci through wire building - app: PlotStyleLoad/Loaded/Clear messages and handlers; PLOTSTYLE LOAD | CLEAR | STATUS command; active_plot_style state on H7CAD - flate2 added as dependency Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
911e36ba04
commit
1db3ad6a33
11 changed files with 429 additions and 28 deletions
|
|
@ -2092,6 +2092,7 @@ impl H7CAD {
|
|||
&wires, eff_w, eff_h,
|
||||
draw_ox as f32, draw_oy as f32,
|
||||
rotation_deg, &path,
|
||||
self.active_plot_style.as_ref(),
|
||||
) {
|
||||
Ok(()) => self.command_line.push_info(&format!(
|
||||
"Exported: {}",
|
||||
|
|
@ -2102,6 +2103,29 @@ impl H7CAD {
|
|||
Task::none()
|
||||
}
|
||||
|
||||
// ── Plot Style Table ──────────────────────────────────────────────
|
||||
Message::PlotStyleLoad => {
|
||||
Task::perform(
|
||||
crate::io::pick_plot_style(),
|
||||
Message::PlotStyleLoaded,
|
||||
)
|
||||
}
|
||||
Message::PlotStyleLoaded(Some(table)) => {
|
||||
self.command_line.push_output(&format!(
|
||||
"Plot style '{}' loaded ({} color entries).",
|
||||
table.name,
|
||||
table.aci_entries.iter().filter(|e| e.color.is_some()).count()
|
||||
));
|
||||
self.active_plot_style = Some(table);
|
||||
Task::none()
|
||||
}
|
||||
Message::PlotStyleLoaded(None) => Task::none(),
|
||||
Message::PlotStyleClear => {
|
||||
self.active_plot_style = None;
|
||||
self.command_line.push_output("Plot style table cleared.");
|
||||
Task::none()
|
||||
}
|
||||
|
||||
// ── DimStyle Dialog ───────────────────────────────────────────────
|
||||
Message::DimStyleDialogOpen => {
|
||||
let i = self.active_tab;
|
||||
|
|
|
|||
Loading…
Reference in a new issue