removed duplicated code and did some spring cleaning

This commit is contained in:
grimsace
2026-04-14 12:02:24 -05:00
parent d016dad68f
commit 8210b9e1f1
3 changed files with 185 additions and 94 deletions
+66 -18
View File
@@ -276,12 +276,22 @@ fn render_pixmap(layout: &DungeonLayout, settings: &UiSettings) -> Result<Pixmap
draw_window(&mut pixmap, &g, window, door_w, WINDOW, style);
}
for marker in &layout.start_markers {
draw_area_marker(&mut pixmap, &g, marker, "S", START_MARKER, settings.colorblind_mode);
}
for marker in &layout.end_markers {
draw_area_marker(&mut pixmap, &g, marker, "E", END_MARKER, settings.colorblind_mode);
}
draw_area_marker_group(
&mut pixmap,
&g,
&layout.start_markers,
"S",
START_MARKER,
settings.colorblind_mode,
);
draw_area_marker_group(
&mut pixmap,
&g,
&layout.end_markers,
"E",
END_MARKER,
settings.colorblind_mode,
);
Ok(pixmap)
}
@@ -352,12 +362,8 @@ fn export_composite_masks(
for window in &layout.windows {
draw_window(&mut windows, &g, window, door_w, WHITE, DoorStyle::Solid);
}
for marker in &layout.start_markers {
fill_rect_marker(&mut start_markers, &g, marker, WHITE);
}
for marker in &layout.end_markers {
fill_rect_marker(&mut end_markers, &g, marker, WHITE);
}
fill_marker_mask(&mut start_markers, &g, &layout.start_markers);
fill_marker_mask(&mut end_markers, &g, &layout.end_markers);
let composite = render_pixmap(layout, settings)?;
let composite_img = raster_image_from_pixmap(&composite, settings)?;
@@ -394,6 +400,12 @@ fn blank_mask(g: &ExportGeometry, name: &str) -> Result<Pixmap, String> {
Ok(pixmap)
}
fn fill_marker_mask(pixmap: &mut Pixmap, g: &ExportGeometry, markers: &[AreaMarker]) {
for marker in markers {
fill_rect_marker(pixmap, g, marker, WHITE);
}
}
// Write a single mask image to disk.
fn save_mask_image(
folder: &std::path::Path,
@@ -684,12 +696,22 @@ fn build_svg(layout: &DungeonLayout, settings: &UiSettings) -> String {
}
}
for marker in &layout.start_markers {
append_svg_area_marker(&mut s, &g, marker, "S", START_MARKER, settings.colorblind_mode);
}
for marker in &layout.end_markers {
append_svg_area_marker(&mut s, &g, marker, "E", END_MARKER, settings.colorblind_mode);
}
append_svg_area_marker_group(
&mut s,
&g,
&layout.start_markers,
"S",
START_MARKER,
settings.colorblind_mode,
);
append_svg_area_marker_group(
&mut s,
&g,
&layout.end_markers,
"E",
END_MARKER,
settings.colorblind_mode,
);
s.push_str("</svg>\n");
s
@@ -854,6 +876,19 @@ fn draw_area_marker(
}
}
fn draw_area_marker_group(
pixmap: &mut Pixmap,
g: &ExportGeometry,
markers: &[AreaMarker],
label: &str,
color: (u8, u8, u8, u8),
colorblind_mode: bool,
) {
for marker in markers {
draw_area_marker(pixmap, g, marker, label, color, colorblind_mode);
}
}
// Draw a filled circle for dot patterns.
fn draw_dot(pixmap: &mut Pixmap, cx: f32, cy: f32, radius: f32, color: (u8, u8, u8, u8)) {
let mut pb = PathBuilder::new();
@@ -1165,6 +1200,19 @@ fn append_svg_area_marker(
}
}
fn append_svg_area_marker_group(
out: &mut String,
g: &ExportGeometry,
markers: &[AreaMarker],
label: &str,
color: (u8, u8, u8, u8),
colorblind_mode: bool,
) {
for marker in markers {
append_svg_area_marker(out, g, marker, label, color, colorblind_mode);
}
}
// Draw a door line onto the pixmap.
fn draw_door(
pixmap: &mut Pixmap,