mirror of
https://github.com/GraphiteEditor/Graphite.git
synced 2025-12-23 10:11:54 +00:00
Apply clippy lints (#278)
This commit is contained in:
parent
d57bfb87ee
commit
4637cbf12b
10 changed files with 43 additions and 61 deletions
|
|
@ -67,7 +67,6 @@ impl Document {
|
|||
/// Checks whether each layer under `path` intersects with the provided `quad` and adds all intersection layers as paths to `intersections`.
|
||||
pub fn intersects_quad(&self, quad: [DVec2; 4], path: &mut Vec<LayerId>, intersections: &mut Vec<Vec<LayerId>>) {
|
||||
self.document_folder(path).unwrap().intersects_quad(quad, path, intersections);
|
||||
return;
|
||||
}
|
||||
|
||||
/// Checks whether each layer under the root path intersects with the provided `quad` and returns the paths to all intersecting layers.
|
||||
|
|
@ -229,7 +228,7 @@ impl Document {
|
|||
|
||||
pub fn layer_axis_aligned_bounding_box(&self, path: &[LayerId]) -> Result<Option<[DVec2; 2]>, DocumentError> {
|
||||
// TODO: Replace with functions of the transform api
|
||||
if let &[] = path {
|
||||
if path.is_empty() {
|
||||
// Special case for root. Root's local is the documents global, so we avoid transforming its transform by itself.
|
||||
self.layer_local_bounding_box(path)
|
||||
} else {
|
||||
|
|
@ -265,13 +264,13 @@ impl Document {
|
|||
Some(vec![DocumentResponse::DocumentChanged, DocumentResponse::SelectLayer { path }])
|
||||
}
|
||||
Operation::AddRect { path, insert_index, transform, style } => {
|
||||
let id = self.add_layer(&path, Layer::new(LayerDataTypes::Rect(Rect::new()), *transform, *style), *insert_index)?;
|
||||
let id = self.add_layer(&path, Layer::new(LayerDataTypes::Rect(Rect), *transform, *style), *insert_index)?;
|
||||
let path = [path.clone(), vec![id]].concat();
|
||||
|
||||
Some(vec![DocumentResponse::DocumentChanged, DocumentResponse::SelectLayer { path }])
|
||||
}
|
||||
Operation::AddLine { path, insert_index, transform, style } => {
|
||||
let id = self.add_layer(&path, Layer::new(LayerDataTypes::Line(Line::new()), *transform, *style), *insert_index)?;
|
||||
let id = self.add_layer(&path, Layer::new(LayerDataTypes::Line(Line), *transform, *style), *insert_index)?;
|
||||
let path = [path.clone(), vec![id]].concat();
|
||||
|
||||
Some(vec![DocumentResponse::DocumentChanged, DocumentResponse::SelectLayer { path }])
|
||||
|
|
|
|||
|
|
@ -105,9 +105,7 @@ impl Folder {
|
|||
pub fn bounding_box(&self, transform: glam::DAffine2) -> Option<[DVec2; 2]> {
|
||||
let mut layers_non_empty_bounding_boxes = self.layers.iter().filter_map(|layer| layer.bounding_box(transform * layer.transform, layer.style)).peekable();
|
||||
|
||||
if layers_non_empty_bounding_boxes.peek().is_none() {
|
||||
return None;
|
||||
}
|
||||
layers_non_empty_bounding_boxes.peek()?;
|
||||
|
||||
let mut x_min = f64::MAX;
|
||||
let mut y_min = f64::MAX;
|
||||
|
|
@ -128,7 +126,7 @@ impl Folder {
|
|||
y_max = bounding_box_max.y
|
||||
}
|
||||
}
|
||||
return Some([DVec2::new(x_min, y_min), DVec2::new(x_max, y_max)]);
|
||||
Some([DVec2::new(x_min, y_min), DVec2::new(x_max, y_max)])
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -11,14 +11,8 @@ use super::LayerData;
|
|||
use serde::{Deserialize, Serialize};
|
||||
use std::fmt::Write;
|
||||
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Deserialize, Serialize)]
|
||||
pub struct Line {}
|
||||
|
||||
impl Line {
|
||||
pub fn new() -> Line {
|
||||
Line {}
|
||||
}
|
||||
}
|
||||
#[derive(Debug, Default, Clone, Copy, PartialEq, Deserialize, Serialize)]
|
||||
pub struct Line;
|
||||
|
||||
impl LayerData for Line {
|
||||
fn to_kurbo_path(&self, transform: glam::DAffine2, _style: style::PathStyle) -> kurbo::BezPath {
|
||||
|
|
|
|||
|
|
@ -135,7 +135,7 @@ impl Layer {
|
|||
name: None,
|
||||
data,
|
||||
transform: glam::DAffine2::from_cols_array(&transform),
|
||||
style: style,
|
||||
style,
|
||||
cache: String::new(),
|
||||
cache_dirty: true,
|
||||
}
|
||||
|
|
@ -171,7 +171,7 @@ impl Layer {
|
|||
*svg += self.render();
|
||||
}
|
||||
|
||||
pub fn to_kurbo_path(&mut self) -> BezPath {
|
||||
pub fn to_kurbo_path(&self) -> BezPath {
|
||||
self.data.to_kurbo_path(self.transform, self.style)
|
||||
}
|
||||
|
||||
|
|
@ -198,9 +198,8 @@ impl Layer {
|
|||
}
|
||||
|
||||
pub fn render_as_folder(&mut self, svg: &mut String) {
|
||||
match &mut self.data {
|
||||
LayerDataTypes::Folder(f) => f.render(svg, self.transform, self.style),
|
||||
_ => {}
|
||||
if let LayerDataTypes::Folder(f) = &mut self.data {
|
||||
f.render(svg, self.transform, self.style)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,14 +11,8 @@ use super::LayerData;
|
|||
use serde::{Deserialize, Serialize};
|
||||
use std::fmt::Write;
|
||||
|
||||
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
|
||||
pub struct Rect {}
|
||||
|
||||
impl Rect {
|
||||
pub fn new() -> Rect {
|
||||
Rect {}
|
||||
}
|
||||
}
|
||||
#[derive(Debug, Default, Clone, PartialEq, Deserialize, Serialize)]
|
||||
pub struct Rect;
|
||||
|
||||
impl LayerData for Rect {
|
||||
fn to_kurbo_path(&self, transform: glam::DAffine2, _style: style::PathStyle) -> kurbo::BezPath {
|
||||
|
|
|
|||
|
|
@ -31,9 +31,7 @@ impl LayerData for Shape {
|
|||
let mut path = kurbo::BezPath::new();
|
||||
let apothem_offset_angle = std::f64::consts::PI / (self.sides as f64);
|
||||
|
||||
let relative_points = (0..self.sides)
|
||||
.map(|i| apothem_offset_angle * ((i * 2 + ((self.sides + 1) % 2)) as f64))
|
||||
.map(|radians| unit_rotation(radians));
|
||||
let relative_points = (0..self.sides).map(|i| apothem_offset_angle * ((i * 2 + ((self.sides + 1) % 2)) as f64)).map(unit_rotation);
|
||||
|
||||
let (mut min_x, mut min_y, mut max_x, mut max_y) = (f64::MAX, f64::MAX, f64::MIN, f64::MIN);
|
||||
relative_points.clone().for_each(|p| {
|
||||
|
|
@ -52,7 +50,7 @@ impl LayerData for Shape {
|
|||
}
|
||||
})
|
||||
.map(|p| DVec2::new(p.x / 2. + 0.5, p.y / 2. + 0.5))
|
||||
.map(|unit| transform.transform_point2(unit.into()))
|
||||
.map(|unit| transform.transform_point2(unit))
|
||||
.map(|pos| kurbo::Point::new(pos.x, pos.y))
|
||||
.enumerate()
|
||||
.for_each(|(i, p)| {
|
||||
|
|
|
|||
|
|
@ -108,7 +108,7 @@ impl LayerData {
|
|||
let offset_transform = DAffine2::from_translation(offset);
|
||||
let scale_transform = DAffine2::from_scale(DVec2::new(self.scale, self.scale));
|
||||
let angle_transform = DAffine2::from_angle(self.snapped_angle());
|
||||
let translation_transform = DAffine2::from_translation(self.translation.into());
|
||||
let translation_transform = DAffine2::from_translation(self.translation);
|
||||
scale_transform * offset_transform * angle_transform * scale_transform * translation_transform
|
||||
}
|
||||
pub fn calculate_transform(&self) -> DAffine2 {
|
||||
|
|
|
|||
|
|
@ -110,7 +110,7 @@ impl DocumentMessageHandler {
|
|||
self.active_document().layer_data.get(path).expect("Layerdata does not exist")
|
||||
}
|
||||
fn layerdata_mut(&mut self, path: &[LayerId]) -> &mut LayerData {
|
||||
self.active_document_mut().layer_data.entry(path.to_vec()).or_insert(LayerData::new(true))
|
||||
self.active_document_mut().layer_data.entry(path.to_vec()).or_insert_with(|| LayerData::new(true))
|
||||
}
|
||||
#[allow(dead_code)]
|
||||
fn create_transform_from_layerdata(&self, path: Vec<u64>, responses: &mut VecDeque<Message>) {
|
||||
|
|
@ -124,8 +124,8 @@ impl DocumentMessageHandler {
|
|||
);
|
||||
}
|
||||
fn create_document_transform_from_layerdata(&self, viewport_size: &ViewportPosition, responses: &mut VecDeque<Message>) {
|
||||
let half_viewport = viewport_size.to_dvec2() / 2.;
|
||||
let layerdata = self.layerdata(&vec![]);
|
||||
let half_viewport = viewport_size.as_dvec2() / 2.;
|
||||
let layerdata = self.layerdata(&[]);
|
||||
let scaled_half_viewport = half_viewport / layerdata.scale;
|
||||
responses.push_back(
|
||||
DocumentOperation::SetLayerTransform {
|
||||
|
|
@ -159,7 +159,7 @@ impl DocumentMessageHandler {
|
|||
.collect();
|
||||
|
||||
layers_with_indices.sort_by_key(|(_, indices)| indices.clone());
|
||||
return layers_with_indices.into_iter().map(|(path, _)| path).collect();
|
||||
layers_with_indices.into_iter().map(|(path, _)| path).collect()
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -274,7 +274,7 @@ impl MessageHandler<DocumentMessage, &InputPreprocessor> for DocumentMessageHand
|
|||
}
|
||||
})
|
||||
.collect::<Vec<usize>>();
|
||||
doc_title_numbers.sort();
|
||||
doc_title_numbers.sort_unstable();
|
||||
let mut new_doc_title_num = 1;
|
||||
while new_doc_title_num <= self.documents.len() {
|
||||
if new_doc_title_num != doc_title_numbers[new_doc_title_num - 1] {
|
||||
|
|
@ -430,7 +430,7 @@ impl MessageHandler<DocumentMessage, &InputPreprocessor> for DocumentMessageHand
|
|||
RotateCanvasBegin { snap } => {
|
||||
self.rotating = true;
|
||||
self.snapping = snap;
|
||||
let layerdata = self.layerdata_mut(&vec![]);
|
||||
let layerdata = self.layerdata_mut(&[]);
|
||||
layerdata.snap_rotate = snap;
|
||||
self.mouse_pos = ipp.mouse.position;
|
||||
}
|
||||
|
|
@ -441,7 +441,7 @@ impl MessageHandler<DocumentMessage, &InputPreprocessor> for DocumentMessageHand
|
|||
self.mouse_pos = ipp.mouse.position;
|
||||
}
|
||||
TranslateCanvasEnd => {
|
||||
let layerdata = self.layerdata_mut(&vec![]);
|
||||
let layerdata = self.layerdata_mut(&[]);
|
||||
layerdata.rotation = layerdata.snapped_angle();
|
||||
layerdata.snap_rotate = false;
|
||||
self.translating = false;
|
||||
|
|
@ -450,23 +450,23 @@ impl MessageHandler<DocumentMessage, &InputPreprocessor> for DocumentMessageHand
|
|||
}
|
||||
MouseMove => {
|
||||
if self.translating {
|
||||
let delta = ipp.mouse.position.to_dvec2() - self.mouse_pos.to_dvec2();
|
||||
let delta = ipp.mouse.position.as_dvec2() - self.mouse_pos.as_dvec2();
|
||||
let transformed_delta = self.active_document().document.root.transform.inverse().transform_vector2(delta);
|
||||
|
||||
let layerdata = self.layerdata_mut(&vec![]);
|
||||
layerdata.translation = layerdata.translation + transformed_delta;
|
||||
let layerdata = self.layerdata_mut(&[]);
|
||||
layerdata.translation += transformed_delta;
|
||||
self.create_document_transform_from_layerdata(&ipp.viewport_size, responses);
|
||||
}
|
||||
if self.rotating {
|
||||
let half_viewport = ipp.viewport_size.to_dvec2() / 2.;
|
||||
let half_viewport = ipp.viewport_size.as_dvec2() / 2.;
|
||||
let rotation = {
|
||||
let start_vec = self.mouse_pos.to_dvec2() - half_viewport;
|
||||
let end_vec = ipp.mouse.position.to_dvec2() - half_viewport;
|
||||
let start_vec = self.mouse_pos.as_dvec2() - half_viewport;
|
||||
let end_vec = ipp.mouse.position.as_dvec2() - half_viewport;
|
||||
start_vec.angle_between(end_vec)
|
||||
};
|
||||
|
||||
let snapping = self.snapping;
|
||||
let layerdata = self.layerdata_mut(&vec![]);
|
||||
let layerdata = self.layerdata_mut(&[]);
|
||||
layerdata.rotation += rotation;
|
||||
layerdata.snap_rotate = snapping;
|
||||
responses.push_back(
|
||||
|
|
@ -480,7 +480,7 @@ impl MessageHandler<DocumentMessage, &InputPreprocessor> for DocumentMessageHand
|
|||
if self.zooming {
|
||||
let difference = self.mouse_pos.y as f64 - ipp.mouse.position.y as f64;
|
||||
let amount = 1. + difference * MOUSE_ZOOM_RATE;
|
||||
let layerdata = self.layerdata_mut(&vec![]);
|
||||
let layerdata = self.layerdata_mut(&[]);
|
||||
let new = (layerdata.scale * amount).clamp(VIEWPORT_ZOOM_SCALE_MIN, VIEWPORT_ZOOM_SCALE_MAX);
|
||||
layerdata.scale = new;
|
||||
responses.push_back(FrontendMessage::SetCanvasZoom { new_zoom: layerdata.scale }.into());
|
||||
|
|
@ -489,13 +489,13 @@ impl MessageHandler<DocumentMessage, &InputPreprocessor> for DocumentMessageHand
|
|||
self.mouse_pos = ipp.mouse.position;
|
||||
}
|
||||
SetCanvasZoom(new) => {
|
||||
let layerdata = self.layerdata_mut(&vec![]);
|
||||
let layerdata = self.layerdata_mut(&[]);
|
||||
layerdata.scale = new.clamp(VIEWPORT_ZOOM_SCALE_MIN, VIEWPORT_ZOOM_SCALE_MAX);
|
||||
responses.push_back(FrontendMessage::SetCanvasZoom { new_zoom: layerdata.scale }.into());
|
||||
self.create_document_transform_from_layerdata(&ipp.viewport_size, responses);
|
||||
}
|
||||
MultiplyCanvasZoom(multiplier) => {
|
||||
let layerdata = self.layerdata_mut(&vec![]);
|
||||
let layerdata = self.layerdata_mut(&[]);
|
||||
let new = (layerdata.scale * multiplier).clamp(VIEWPORT_ZOOM_SCALE_MIN, VIEWPORT_ZOOM_SCALE_MAX);
|
||||
layerdata.scale = new;
|
||||
responses.push_back(FrontendMessage::SetCanvasZoom { new_zoom: layerdata.scale }.into());
|
||||
|
|
@ -503,8 +503,8 @@ impl MessageHandler<DocumentMessage, &InputPreprocessor> for DocumentMessageHand
|
|||
}
|
||||
WheelCanvasZoom => {
|
||||
let scroll = ipp.mouse.scroll_delta.scroll_delta();
|
||||
let mouse = ipp.mouse.position.to_dvec2();
|
||||
let viewport_size = ipp.viewport_size.to_dvec2();
|
||||
let mouse = ipp.mouse.position.as_dvec2();
|
||||
let viewport_size = ipp.viewport_size.as_dvec2();
|
||||
let mut zoom_factor = 1. + scroll.abs() * WHEEL_ZOOM_RATE;
|
||||
if ipp.mouse.scroll_delta.y > 0 {
|
||||
zoom_factor = 1. / zoom_factor
|
||||
|
|
@ -515,7 +515,7 @@ impl MessageHandler<DocumentMessage, &InputPreprocessor> for DocumentMessageHand
|
|||
let delta = delta_size * -2. * (mouse_percent - (0.5, 0.5).into());
|
||||
|
||||
let transformed_delta = self.active_document().document.root.transform.inverse().transform_vector2(delta);
|
||||
let layerdata = self.layerdata_mut(&vec![]);
|
||||
let layerdata = self.layerdata_mut(&[]);
|
||||
let new = (layerdata.scale * zoom_factor).clamp(VIEWPORT_ZOOM_SCALE_MIN, VIEWPORT_ZOOM_SCALE_MAX);
|
||||
layerdata.scale = new;
|
||||
layerdata.translation += transformed_delta;
|
||||
|
|
@ -524,16 +524,16 @@ impl MessageHandler<DocumentMessage, &InputPreprocessor> for DocumentMessageHand
|
|||
}
|
||||
WheelCanvasTranslate { use_y_as_x } => {
|
||||
let delta = match use_y_as_x {
|
||||
false => -ipp.mouse.scroll_delta.to_dvec2(),
|
||||
false => -ipp.mouse.scroll_delta.as_dvec2(),
|
||||
true => (-ipp.mouse.scroll_delta.y as f64, 0.).into(),
|
||||
} * VIEWPORT_SCROLL_RATE;
|
||||
let transformed_delta = self.active_document().document.root.transform.inverse().transform_vector2(delta);
|
||||
let layerdata = self.layerdata_mut(&vec![]);
|
||||
let layerdata = self.layerdata_mut(&[]);
|
||||
layerdata.translation += transformed_delta;
|
||||
self.create_document_transform_from_layerdata(&ipp.viewport_size, responses);
|
||||
}
|
||||
SetCanvasRotation(new) => {
|
||||
let layerdata = self.layerdata_mut(&vec![]);
|
||||
let layerdata = self.layerdata_mut(&[]);
|
||||
layerdata.rotation = new;
|
||||
self.create_document_transform_from_layerdata(&ipp.viewport_size, responses);
|
||||
responses.push_back(FrontendMessage::SetCanvasRotation { new_radians: new }.into());
|
||||
|
|
@ -542,7 +542,7 @@ impl MessageHandler<DocumentMessage, &InputPreprocessor> for DocumentMessageHand
|
|||
let paths: Vec<Vec<LayerId>> = self.selected_layers_sorted();
|
||||
|
||||
let delta = {
|
||||
let root_layer_rotation = self.layerdata_mut(&vec![]).rotation;
|
||||
let root_layer_rotation = self.layerdata_mut(&[]).rotation;
|
||||
let rotate_to_viewport_space = DAffine2::from_angle(root_layer_rotation).inverse();
|
||||
rotate_to_viewport_space.transform_point2((x, y).into())
|
||||
};
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ impl ViewportPosition {
|
|||
let y_diff = other.y as i64 - self.y as i64;
|
||||
f64::sqrt((x_diff * x_diff + y_diff * y_diff) as f64)
|
||||
}
|
||||
pub fn to_dvec2(&self) -> DVec2 {
|
||||
pub fn as_dvec2(&self) -> DVec2 {
|
||||
DVec2::new(self.x as f64, self.y as f64)
|
||||
}
|
||||
}
|
||||
|
|
@ -29,7 +29,7 @@ impl ScrollDelta {
|
|||
pub fn new(x: i32, y: i32, z: i32) -> ScrollDelta {
|
||||
ScrollDelta { x, y, z }
|
||||
}
|
||||
pub fn to_dvec2(&self) -> DVec2 {
|
||||
pub fn as_dvec2(&self) -> DVec2 {
|
||||
DVec2::new(self.x as f64, self.y as f64)
|
||||
}
|
||||
pub fn scroll_delta(&self) -> f64 {
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ impl Fsm for PenToolFsmState {
|
|||
|
||||
fn transition(self, event: ToolMessage, document: &Document, tool_data: &DocumentToolData, data: &mut Self::ToolData, input: &InputPreprocessor, responses: &mut VecDeque<Message>) -> Self {
|
||||
let transform = document.document.root.transform;
|
||||
let pos = transform.inverse() * DAffine2::from_translation(input.mouse.position.to_dvec2());
|
||||
let pos = transform.inverse() * DAffine2::from_translation(input.mouse.position.as_dvec2());
|
||||
|
||||
use PenMessage::*;
|
||||
use PenToolFsmState::*;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue