mirror of
https://github.com/dscyrescotti/Memola.git
synced 2026-04-25 10:08:34 +02:00
Merge branch 'main' of https://github.com/dscyrescotti/Memola
This commit is contained in:
@@ -8,23 +8,47 @@
|
|||||||
import Foundation
|
import Foundation
|
||||||
|
|
||||||
final class ElementGroup {
|
final class ElementGroup {
|
||||||
|
#if DEBUG
|
||||||
|
let id = UUID()
|
||||||
|
#endif
|
||||||
var elements: [Element] = []
|
var elements: [Element] = []
|
||||||
var type: ElementGroupType
|
var type: ElementGroupType
|
||||||
|
var eraserStrokes: Set<EraserStroke> = []
|
||||||
|
|
||||||
init(_ element: Element) {
|
init(_ element: Element) {
|
||||||
elements = [element]
|
elements = [element]
|
||||||
type = element.elementGroupType
|
type = element.elementGroupType
|
||||||
|
collect(element)
|
||||||
}
|
}
|
||||||
|
|
||||||
var isEmpty: Bool { elements.isEmpty }
|
var isEmpty: Bool { elements.isEmpty }
|
||||||
|
|
||||||
func add(_ element: Element) {
|
func add(_ element: Element) {
|
||||||
elements.append(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 {
|
func isSameElement(_ element: Element) -> Bool {
|
||||||
guard let last = elements.last else { return false }
|
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? {
|
func getPenStyle() -> PenStyle? {
|
||||||
|
|||||||
Reference in New Issue
Block a user