diff --git a/Memola/Canvas/Elements/Core/ElementGroup.swift b/Memola/Canvas/Elements/Core/ElementGroup.swift index d61365b..e794e25 100644 --- a/Memola/Canvas/Elements/Core/ElementGroup.swift +++ b/Memola/Canvas/Elements/Core/ElementGroup.swift @@ -8,23 +8,47 @@ import Foundation final class ElementGroup { + #if DEBUG + let id = UUID() + #endif var elements: [Element] = [] var type: ElementGroupType + var eraserStrokes: Set = [] init(_ element: Element) { elements = [element] type = element.elementGroupType + collect(element) } var isEmpty: Bool { elements.isEmpty } func add(_ element: Element) { elements.append(element) + collect(element) + } + + private func collect(_ element: Element) { + if let stroke = element.stroke(as: PenStroke.self) { + eraserStrokes.formUnion(stroke.eraserStrokes) + } + #if DEBUG + NSLog("[Memola] - \(id) eraser count - \(eraserStrokes.count)") + #endif } func isSameElement(_ element: Element) -> Bool { guard let last = elements.last else { return false } - return element ^= last + guard element ^= last else { + return false + } + if let stroke = element.stroke(as: PenStroke.self) { + if eraserStrokes.count <= stroke.eraserStrokes.count { + return true + } + return eraserStrokes.intersection(stroke.eraserStrokes).count == eraserStrokes.count + } + return true } func getPenStyle() -> PenStyle? {