Fix anti-aliasing in overlays by aligning everything with the pixel grid (#1603)

This commit is contained in:
Keavon Chambers
2024-02-13 20:47:16 -08:00
committed by GitHub
parent b18822b1b4
commit fc8b41914b
11 changed files with 91 additions and 65 deletions
@@ -1,6 +1,7 @@
mod grid_snapper;
mod layer_snapper;
mod snap_results;
use crate::consts::COLOR_OVERLAY_BLUE;
use crate::messages::portfolio::document::overlays::utility_types::OverlayContext;
use crate::messages::portfolio::document::utility_types::document_metadata::LayerNodeIdentifier;
use crate::messages::portfolio::document::utility_types::misc::{BoundingBoxSnapTarget, GeometrySnapTarget, GridSnapTarget, SnapTarget};
@@ -334,7 +335,7 @@ impl SnapManager {
let viewport = to_viewport.transform_point2(ind.snapped_point_document);
overlay_context.text(&format!("{:?} to {:?}", ind.source, ind.target), viewport - DVec2::new(0., 5.), "rgba(0, 0, 0, 0.8)", 3.);
overlay_context.square(viewport, true, None);
overlay_context.square(viewport, Some(4.), Some(COLOR_OVERLAY_BLUE), Some(COLOR_OVERLAY_BLUE));
}
}
@@ -246,7 +246,7 @@ impl BoundingBoxManager {
overlay_context.quad(self.transform * Quad::from_box(self.bounds));
for position in self.evaluate_transform_handle_positions() {
overlay_context.square(position, false, None);
overlay_context.square(position, Some(6.), None, None);
}
}
@@ -259,15 +259,15 @@ impl Fsm for GradientToolFsmState {
let (start, end) = (transform.transform_point2(start), transform.transform_point2(end));
overlay_context.line(start, end, None);
overlay_context.handle(start, dragging == Some(GradientDragTarget::Start));
overlay_context.handle(end, dragging == Some(GradientDragTarget::End));
overlay_context.manipulator_handle(start, dragging == Some(GradientDragTarget::Start));
overlay_context.manipulator_handle(end, dragging == Some(GradientDragTarget::End));
for (index, (position, _)) in positions.into_iter().enumerate() {
if position.abs() < f64::EPSILON * 1000. || (1. - position).abs() < f64::EPSILON * 1000. {
continue;
}
overlay_context.handle(start.lerp(end, position), dragging == Some(GradientDragTarget::Step(index)));
overlay_context.manipulator_handle(start.lerp(end, position), dragging == Some(GradientDragTarget::Step(index)));
}
}
@@ -427,7 +427,7 @@ impl Fsm for PathToolFsmState {
let state = tool_data.update_insertion(shape_editor, document, responses, input.mouse.position);
if let Some(closest_segment) = &tool_data.segment {
overlay_context.square(closest_segment.closest_point_to_viewport(), false, Some(COLOR_OVERLAY_YELLOW));
overlay_context.manipulator_anchor(closest_segment.closest_point_to_viewport(), false, Some(COLOR_OVERLAY_YELLOW));
}
responses.add(PathToolMessage::SelectedPointUpdated);