|
1 | 1 | use super::utility_functions::overlay_canvas_context; |
2 | 2 | use crate::consts::{ |
3 | | - COLOR_OVERLAY_BLUE, COLOR_OVERLAY_BLUE_50, COLOR_OVERLAY_GREEN, COLOR_OVERLAY_RED, COLOR_OVERLAY_WHITE, COLOR_OVERLAY_YELLOW, COLOR_OVERLAY_YELLOW_DULL, COMPASS_ROSE_ARROW_SIZE, |
4 | | - COMPASS_ROSE_HOVER_RING_DIAMETER, COMPASS_ROSE_MAIN_RING_DIAMETER, COMPASS_ROSE_RING_INNER_DIAMETER, DOWEL_PIN_RADIUS, MANIPULATOR_GROUP_MARKER_SIZE, PIVOT_CROSSHAIR_LENGTH, |
5 | | - PIVOT_CROSSHAIR_THICKNESS, PIVOT_DIAMETER, |
| 3 | + ARC_SWEEP_GIZMO_RADIUS, COLOR_OVERLAY_BLUE, COLOR_OVERLAY_BLUE_50, COLOR_OVERLAY_GREEN, COLOR_OVERLAY_RED, COLOR_OVERLAY_WHITE, COLOR_OVERLAY_YELLOW, COLOR_OVERLAY_YELLOW_DULL, |
| 4 | + COMPASS_ROSE_ARROW_SIZE, COMPASS_ROSE_HOVER_RING_DIAMETER, COMPASS_ROSE_MAIN_RING_DIAMETER, COMPASS_ROSE_RING_INNER_DIAMETER, DOWEL_PIN_RADIUS, MANIPULATOR_GROUP_MARKER_SIZE, |
| 5 | + PIVOT_CROSSHAIR_LENGTH, PIVOT_CROSSHAIR_THICKNESS, PIVOT_DIAMETER, |
6 | 6 | }; |
7 | 7 | use crate::messages::prelude::Message; |
8 | 8 | use bezier_rs::{Bezier, Subpath}; |
@@ -423,6 +423,14 @@ impl OverlayContext { |
423 | 423 | self.render_context.stroke(); |
424 | 424 | } |
425 | 425 |
|
| 426 | + pub fn draw_arc_gizmo_angle(&mut self, pivot: DVec2, bold_radius: f64, dash_radius: f64, arc_radius: f64, offset_angle: f64, angle: f64) { |
| 427 | + let end_point1 = pivot + bold_radius * DVec2::from_angle(angle + offset_angle); |
| 428 | + let end_point2 = pivot + dash_radius * DVec2::from_angle(offset_angle); |
| 429 | + self.line(pivot, end_point1, None, None); |
| 430 | + self.dashed_line(pivot, end_point2, None, None, Some(2.), Some(2.), Some(0.5)); |
| 431 | + self.draw_arc(pivot, arc_radius, offset_angle, (angle) % TAU + offset_angle); |
| 432 | + } |
| 433 | + |
426 | 434 | pub fn draw_angle(&mut self, pivot: DVec2, radius: f64, arc_radius: f64, offset_angle: f64, angle: f64) { |
427 | 435 | let end_point1 = pivot + radius * DVec2::from_angle(angle + offset_angle); |
428 | 436 | let end_point2 = pivot + radius * DVec2::from_angle(offset_angle); |
@@ -584,6 +592,12 @@ impl OverlayContext { |
584 | 592 | self.end_dpi_aware_transform(); |
585 | 593 | } |
586 | 594 |
|
| 595 | + pub fn arc_sweep_angle(&mut self, offset_angle: f64, angle: f64, end_point_position: DVec2, bold_radius: f64, dash_radius: f64, pivot: DVec2, text: &str, transform: DAffine2) { |
| 596 | + self.manipulator_handle(end_point_position, true, Some(COLOR_OVERLAY_RED)); |
| 597 | + self.draw_arc_gizmo_angle(pivot, bold_radius, dash_radius, ARC_SWEEP_GIZMO_RADIUS, offset_angle, angle.to_radians()); |
| 598 | + self.text(&text, COLOR_OVERLAY_BLUE, None, transform, 16., [Pivot::Middle, Pivot::Middle]); |
| 599 | + } |
| 600 | + |
587 | 601 | /// Used by the Pen and Path tools to outline the path of the shape. |
588 | 602 | pub fn outline_vector(&mut self, vector_data: &VectorData, transform: DAffine2) { |
589 | 603 | self.start_dpi_aware_transform(); |
|
0 commit comments