mirror of
https://github.com/GraphiteEditor/Graphite.git
synced 2026-09-18 07:48:02 +08:00
* Convert polygon and rectangle tool to kurbo::BezPath * Add glam * Add affine transform to elipse and remove circle * Format * Add svg group and add matrix for group * Convert all operations to use matricies * Work uses same transform as root * Format * Frontend fixed to render changes to working colors when changed from backend (#180) * Backend and Frontend modification to show working color mods * Remove comments & change precedence for tool and doc actions * Add keybind for resetting work colors * Minor Frontend changes * Remove early sample "greet" code * Add a contributing section to the project README * Add moving document around * Add document transform for tools * Update to GraphiteEditor's fork * Use write in foreach for rendering group / folder * Add missing TranslateDown action * Use points for line operation * Format * Add todo to change to shape's aspect ratio * Remove empty if * Initial pass at refactor * Fix polyline test * Use document message to modify document transform * Messages -> Operations * Transform layer * Format * Use DAffine2::IDENTITY * Clean up kurbo generation for line and rect * Use .into for rectangle points * Rename cols to transform * Rename other cols to transform * Add todo for into_iter * Remove unnecessary clone Co-authored-by: akshay1992kalbhor <akshay1992kalbhor@gmail.com> Co-authored-by: Keavon Chambers <keavon@keavon.com>
35 lines
913 B
Rust
35 lines
913 B
Rust
use glam::DVec2;
|
|
use kurbo::Point;
|
|
|
|
use super::style;
|
|
use super::LayerData;
|
|
|
|
use std::fmt::Write;
|
|
|
|
#[derive(Debug, Clone, PartialEq)]
|
|
pub struct Rect {}
|
|
|
|
impl Rect {
|
|
pub fn new() -> Rect {
|
|
Rect {}
|
|
}
|
|
}
|
|
|
|
impl LayerData for Rect {
|
|
fn to_kurbo_path(&mut self, transform: glam::DAffine2, _style: style::PathStyle) -> kurbo::BezPath {
|
|
fn new_point(a: DVec2) -> Point {
|
|
Point::new(a.x, a.y)
|
|
}
|
|
let mut path = kurbo::BezPath::new();
|
|
path.move_to(new_point(transform.translation));
|
|
|
|
// TODO: Use into_iter when new impls get added in rust 2021
|
|
[(1., 0.), (1., 1.), (0., 1.)].iter().for_each(|v| path.line_to(new_point(transform.transform_point2((*v).into()))));
|
|
path.close_path();
|
|
path
|
|
}
|
|
fn render(&mut self, svg: &mut String, transform: glam::DAffine2, style: style::PathStyle) {
|
|
let _ = write!(svg, r#"<path d="{}" {} />"#, self.to_kurbo_path(transform, style).to_svg(), style.render());
|
|
}
|
|
}
|