diff options
Diffstat (limited to 'packages/svgbob/src/buffer')
13 files changed, 52 insertions, 65 deletions
diff --git a/packages/svgbob/src/buffer/cell_buffer.rs b/packages/svgbob/src/buffer/cell_buffer.rs index 9cedd39..d632132 100644 --- a/packages/svgbob/src/buffer/cell_buffer.rs +++ b/packages/svgbob/src/buffer/cell_buffer.rs @@ -1,10 +1,11 @@ -use crate::buffer::fragment_buffer::FragmentSpan; -use crate::fragment::CellText; -use crate::Merge; -use crate::Settings; use crate::{ - buffer::{fragment_buffer::FragmentTree, Fragment, StringBuffer}, + buffer::{ + fragment_buffer::{FragmentSpan, FragmentTree}, + Fragment, StringBuffer, + }, + fragment::CellText, util::parser, + Merge, Settings, }; pub use cell::{Cell, CellGrid}; pub use contacts::Contacts; diff --git a/packages/svgbob/src/buffer/cell_buffer/cell.rs b/packages/svgbob/src/buffer/cell_buffer/cell.rs index 11388f7..faf07b9 100644 --- a/packages/svgbob/src/buffer/cell_buffer/cell.rs +++ b/packages/svgbob/src/buffer/cell_buffer/cell.rs @@ -1,13 +1,16 @@ use crate::{util, Point}; -use parry2d::query::PointQuery; use parry2d::{ bounding_volume::AABB, math::Isometry, - query::intersection_test, + query::{intersection_test, PointQuery}, shape::{Polyline, Segment}, }; -use std::ops::{Add, Sub}; -use std::{cmp, cmp::Ordering, fmt}; +use std::{ + cmp, + cmp::Ordering, + fmt, + ops::{Add, Sub}, +}; mod cell_grid; diff --git a/packages/svgbob/src/buffer/cell_buffer/contacts.rs b/packages/svgbob/src/buffer/cell_buffer/contacts.rs index 02147d7..41a7e28 100644 --- a/packages/svgbob/src/buffer/cell_buffer/contacts.rs +++ b/packages/svgbob/src/buffer/cell_buffer/contacts.rs @@ -1,9 +1,8 @@ -use super::endorse; -use super::endorse::Endorse; -use crate::buffer::fragment_buffer::FragmentSpan; -use crate::buffer::Span; -use crate::buffer::{fragment::Fragment, Cell}; -use crate::Merge; +use super::{endorse, endorse::Endorse}; +use crate::{ + buffer::{fragment::Fragment, fragment_buffer::FragmentSpan, Cell, Span}, + Merge, +}; use std::fmt; /// Contains a group of fragments that are touching each other diff --git a/packages/svgbob/src/buffer/cell_buffer/span.rs b/packages/svgbob/src/buffer/cell_buffer/span.rs index b584a9f..39a8299 100644 --- a/packages/svgbob/src/buffer/cell_buffer/span.rs +++ b/packages/svgbob/src/buffer/cell_buffer/span.rs @@ -1,12 +1,11 @@ -use crate::buffer::cell_buffer::Endorse; -use crate::buffer::fragment_buffer::FragmentSpan; -use crate::fragment::Circle; use crate::{ buffer::{ - cell_buffer::Contacts, FragmentBuffer, Property, PropertyBuffer, - StringBuffer, + cell_buffer::{Contacts, Endorse}, + fragment_buffer::FragmentSpan, + FragmentBuffer, Property, PropertyBuffer, StringBuffer, }, fragment, + fragment::Circle, map::{circle_map, UNICODE_FRAGMENTS}, Cell, Fragment, Merge, Point, Settings, }; @@ -278,6 +277,7 @@ impl Bounds { pub fn top_right(&self) -> Cell { Cell::new(self.bottom_right.x, self.top_left.y) } + pub fn bottom_left(&self) -> Cell { Cell::new(self.top_left.x, self.bottom_right.y) } diff --git a/packages/svgbob/src/buffer/fragment_buffer.rs b/packages/svgbob/src/buffer/fragment_buffer.rs index d590f56..dcffafe 100644 --- a/packages/svgbob/src/buffer/fragment_buffer.rs +++ b/packages/svgbob/src/buffer/fragment_buffer.rs @@ -1,15 +1,12 @@ -use crate::buffer::Span; -use crate::Cell; -use crate::Merge; -use crate::Settings; +use crate::{buffer::Span, Cell, Merge, Settings}; pub use direction::Direction; pub use fragment::Fragment; pub use fragment_span::FragmentSpan; pub use fragment_tree::FragmentTree; use itertools::Itertools; -use std::fmt::Write; use std::{ collections::BTreeMap, + fmt::Write, ops::{Deref, DerefMut}, }; diff --git a/packages/svgbob/src/buffer/fragment_buffer/fragment.rs b/packages/svgbob/src/buffer/fragment_buffer/fragment.rs index f30fc6c..aa041ab 100644 --- a/packages/svgbob/src/buffer/fragment_buffer/fragment.rs +++ b/packages/svgbob/src/buffer/fragment_buffer/fragment.rs @@ -1,18 +1,14 @@ -use crate::Merge; -use crate::{buffer::Cell, map::unicode_map::FRAGMENTS_UNICODE, Point}; +use crate::{buffer::Cell, map::unicode_map::FRAGMENTS_UNICODE, Merge, Point}; pub use crate::{Property, Settings, Signal}; pub use arc::Arc; pub use circle::Circle; pub use line::Line; pub use marker_line::{Marker, MarkerLine}; -use parry2d::bounding_volume::BoundingVolume; -use parry2d::query::PointQuery; -use parry2d::shape::ConvexPolygon; use parry2d::{ - bounding_volume::AABB, + bounding_volume::{BoundingVolume, AABB}, math::Isometry, - query::intersection_test, - shape::{Polyline, Segment, Shape}, + query::{intersection_test, PointQuery}, + shape::{ConvexPolygon, Polyline, Segment, Shape}, }; pub use polygon::{Polygon, PolygonTag}; pub use rect::Rect; diff --git a/packages/svgbob/src/buffer/fragment_buffer/fragment/circle.rs b/packages/svgbob/src/buffer/fragment_buffer/fragment/circle.rs index 83b767e..f8c64ca 100644 --- a/packages/svgbob/src/buffer/fragment_buffer/fragment/circle.rs +++ b/packages/svgbob/src/buffer/fragment_buffer/fragment/circle.rs @@ -1,9 +1,11 @@ use crate::{fragment::Bounds, util, Cell, Point}; use nalgebra::Point2; -use parry2d::shape::ConvexPolygon; -use parry2d::shape::Polyline; -use std::hash::{Hash, Hasher}; -use std::{cmp::Ordering, fmt}; +use parry2d::shape::{ConvexPolygon, Polyline}; +use std::{ + cmp::Ordering, + fmt, + hash::{Hash, Hasher}, +}; use sauron::{ html::attributes::*, @@ -39,6 +41,7 @@ impl Circle { fn top_left_bound(&self) -> Point { Point::new(self.center.x - self.radius, self.center.y - self.radius) } + fn top_right_bound(&self) -> Point { Point::new(self.center.x + self.radius, self.center.y - self.radius) } diff --git a/packages/svgbob/src/buffer/fragment_buffer/fragment/line.rs b/packages/svgbob/src/buffer/fragment_buffer/fragment/line.rs index c049d6a..48e6fc2 100644 --- a/packages/svgbob/src/buffer/fragment_buffer/fragment/line.rs +++ b/packages/svgbob/src/buffer/fragment_buffer/fragment/line.rs @@ -3,11 +3,11 @@ use crate::{ fragment::{marker_line, Bounds, Circle, Marker, MarkerLine}, util, Direction, Point, }; -use parry2d::query::PointQuery; -use parry2d::{bounding_volume::AABB, shape::Polyline}; use parry2d::{ + bounding_volume::AABB, math::Isometry, - shape::{Segment, Shape}, + query::PointQuery, + shape::{Polyline, Segment, Shape}, }; use std::{cmp::Ordering, fmt}; @@ -441,8 +441,9 @@ impl PartialEq for Line { #[cfg(test)] mod tests { use super::*; - use crate::buffer::fragment_buffer::fragment::polygon::PolygonTag; - use crate::buffer::CellGrid; + use crate::buffer::{ + fragment_buffer::fragment::polygon::PolygonTag, CellGrid, + }; #[test] fn test_extend_line() { diff --git a/packages/svgbob/src/buffer/fragment_buffer/fragment/polygon.rs b/packages/svgbob/src/buffer/fragment_buffer/fragment/polygon.rs index 3516b9c..701a24e 100644 --- a/packages/svgbob/src/buffer/fragment_buffer/fragment/polygon.rs +++ b/packages/svgbob/src/buffer/fragment_buffer/fragment/polygon.rs @@ -1,7 +1,6 @@ -use crate::Direction; use crate::{ fragment::{marker_line::Marker, Bounds}, - Cell, Point, + Cell, Direction, Point, }; use nalgebra::Point2; use parry2d::shape::{shape::Shape, Polyline}; diff --git a/packages/svgbob/src/buffer/fragment_buffer/fragment/rect.rs b/packages/svgbob/src/buffer/fragment_buffer/fragment/rect.rs index c325c2e..7bbc18d 100644 --- a/packages/svgbob/src/buffer/fragment_buffer/fragment/rect.rs +++ b/packages/svgbob/src/buffer/fragment_buffer/fragment/rect.rs @@ -1,13 +1,11 @@ use crate::{fragment::Bounds, util, Cell, Point}; -use parry2d::shape::ConvexPolygon; -use parry2d::shape::{Polyline, Segment, Shape}; +use parry2d::shape::{ConvexPolygon, Polyline, Segment, Shape}; use sauron::{ html::attributes::*, svg::{attributes::*, *}, Node, }; -use std::cmp::Ordering; -use std::fmt; +use std::{cmp::Ordering, fmt}; #[derive(Debug, Clone)] pub struct Rect { diff --git a/packages/svgbob/src/buffer/fragment_buffer/fragment/text.rs b/packages/svgbob/src/buffer/fragment_buffer/fragment/text.rs index 6a61e5d..0859407 100644 --- a/packages/svgbob/src/buffer/fragment_buffer/fragment/text.rs +++ b/packages/svgbob/src/buffer/fragment_buffer/fragment/text.rs @@ -1,9 +1,7 @@ -use crate::buffer::Span; -use crate::FragmentSpan; use crate::{ - buffer::{Cell, CellGrid}, + buffer::{Cell, CellGrid, Span}, fragment::Bounds, - Point, + FragmentSpan, Point, }; use sauron::{html::*, svg, svg::attributes::*, Node}; use std::{borrow::Cow, cmp::Ordering, fmt}; diff --git a/packages/svgbob/src/buffer/fragment_buffer/fragment_span.rs b/packages/svgbob/src/buffer/fragment_buffer/fragment_span.rs index c28fa75..0db3f13 100644 --- a/packages/svgbob/src/buffer/fragment_buffer/fragment_span.rs +++ b/packages/svgbob/src/buffer/fragment_buffer/fragment_span.rs @@ -1,10 +1,5 @@ -use crate::buffer::Span; -use crate::Cell; -use crate::Fragment; -use crate::Merge; -use crate::Settings; -use std::cmp::Ordering; -use std::fmt; +use crate::{buffer::Span, Cell, Fragment, Merge, Settings}; +use std::{cmp::Ordering, fmt}; #[derive(Debug, Clone, PartialEq, Eq)] pub struct FragmentSpan { diff --git a/packages/svgbob/src/buffer/fragment_buffer/fragment_tree.rs b/packages/svgbob/src/buffer/fragment_buffer/fragment_tree.rs index e713325..cb162ce 100644 --- a/packages/svgbob/src/buffer/fragment_buffer/fragment_tree.rs +++ b/packages/svgbob/src/buffer/fragment_buffer/fragment_tree.rs @@ -1,5 +1,4 @@ -use crate::buffer::fragment_buffer::FragmentSpan; -use crate::Fragment; +use crate::{buffer::fragment_buffer::FragmentSpan, Fragment}; use sauron::{html::attributes::*, Node}; /// A tree of fragments where a fragment can contain other fragments @@ -67,10 +66,8 @@ impl FragmentTree { } pub(crate) fn enclose_fragments(fragments: Vec<FragmentSpan>) -> Vec<Self> { - let fragment_trees: Vec<Self> = fragments - .into_iter() - .map(FragmentTree::new) - .collect(); + let fragment_trees: Vec<Self> = + fragments.into_iter().map(FragmentTree::new).collect(); Self::enclose_recursive(fragment_trees) } |