removed duplicated code and did some spring cleaning
This commit is contained in:
+66
-18
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user