mirror of
https://github.com/GraphiteEditor/Graphite.git
synced 2026-09-27 16:38:12 +08:00
Merge branch 'master' into fix_group_creation_parenting
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
use crate::color::Color;
|
||||
|
||||
// Document
|
||||
pub const GRAPHENE_DOCUMENT_VERSION: &'static str = "0.0.1";
|
||||
pub const GRAPHENE_DOCUMENT_VERSION: &str = "0.0.1";
|
||||
|
||||
// RENDERING
|
||||
pub const LAYER_OUTLINE_STROKE_COLOR: Color = Color::BLACK;
|
||||
|
||||
@@ -157,15 +157,11 @@ impl Document {
|
||||
let index_a = *indices_for_path_a.get(i).unwrap_or(&usize::MAX) as i32;
|
||||
let index_b = *indices_for_path_b.get(i).unwrap_or(&usize::MAX) as i32;
|
||||
|
||||
// index_a == index_b -> true, this means the "2" indices being compared are within the same folder
|
||||
// eg -> [2, X] == [2, X] since we are only comparing the "2" in this iteration
|
||||
// Continue onto comparing the X indices.
|
||||
if index_a == index_b {
|
||||
continue;
|
||||
// At the point at which the two paths first differ, compare to see which is closer to the root
|
||||
if index_a != index_b {
|
||||
// If index_a is smaller, index_a is closer to the root
|
||||
return index_a < index_b;
|
||||
}
|
||||
|
||||
// If index_a is smaller, index_a is closer to the root
|
||||
return index_a < index_b;
|
||||
}
|
||||
|
||||
false
|
||||
@@ -187,7 +183,7 @@ impl Document {
|
||||
let layer_vs_a = self.layer_closer_to_root(target, path_a);
|
||||
let layer_vs_b = self.layer_closer_to_root(target, path_b);
|
||||
|
||||
// To be inbetween you need to be above A and below B or vice versa
|
||||
// To be in-between you need to be above A and below B or vice versa
|
||||
layer_vs_a != layer_vs_b
|
||||
}
|
||||
|
||||
|
||||
@@ -18,18 +18,11 @@ use serde::{Deserialize, Serialize};
|
||||
|
||||
use std::fmt::Write;
|
||||
|
||||
pub trait LayerData {
|
||||
fn render(&mut self, svg: &mut String, transforms: &mut Vec<glam::DAffine2>, view_mode: ViewMode);
|
||||
fn intersects_quad(&self, quad: Quad, path: &mut Vec<LayerId>, intersections: &mut Vec<Vec<LayerId>>);
|
||||
fn bounding_box(&self, transform: glam::DAffine2) -> Option<[DVec2; 2]>;
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
|
||||
pub enum LayerDataType {
|
||||
Folder(Folder),
|
||||
Shape(Shape),
|
||||
}
|
||||
|
||||
impl LayerDataType {
|
||||
pub fn inner(&self) -> &dyn LayerData {
|
||||
match self {
|
||||
@@ -46,6 +39,12 @@ impl LayerDataType {
|
||||
}
|
||||
}
|
||||
|
||||
pub trait LayerData {
|
||||
fn render(&mut self, svg: &mut String, transforms: &mut Vec<glam::DAffine2>, view_mode: ViewMode);
|
||||
fn intersects_quad(&self, quad: Quad, path: &mut Vec<LayerId>, intersections: &mut Vec<Vec<LayerId>>);
|
||||
fn bounding_box(&self, transform: glam::DAffine2) -> Option<[DVec2; 2]>;
|
||||
}
|
||||
|
||||
impl LayerData for LayerDataType {
|
||||
fn render(&mut self, svg: &mut String, transforms: &mut Vec<glam::DAffine2>, view_mode: ViewMode) {
|
||||
self.inner_mut().render(svg, transforms, view_mode)
|
||||
|
||||
Reference in New Issue
Block a user