Apply clippy lints (#278)

This commit is contained in:
TrueDoctor 2021-07-17 11:12:37 +02:00 committed by GitHub
parent d57bfb87ee
commit 4637cbf12b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 43 additions and 61 deletions

View file

@ -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 }])

View file

@ -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)])
}
}

View file

@ -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 {

View file

@ -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)
}
}
}

View file

@ -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 {

View file

@ -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)| {

View file

@ -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 {

View file

@ -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())
};

View file

@ -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 {

View file

@ -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::*;