From 90de6310e1df9e46fd2237957e03796d42bf17bc Mon Sep 17 00:00:00 2001 From: dscyrescotti Date: Sun, 9 Jun 2024 17:40:58 +0700 Subject: [PATCH] bug: remove eraser stroke adding into graphic context --- Memola/Canvas/Contexts/GraphicContext.swift | 13 +++++-------- Memola/Canvas/Core/Canvas.swift | 2 +- Memola/Features/Memo/PenDock/PenDock.swift | 2 -- Memola/Features/Memos/MemosView.swift | 4 ++-- 4 files changed, 8 insertions(+), 13 deletions(-) diff --git a/Memola/Canvas/Contexts/GraphicContext.swift b/Memola/Canvas/Contexts/GraphicContext.swift index f4661d2..20da0fc 100644 --- a/Memola/Canvas/Contexts/GraphicContext.swift +++ b/Memola/Canvas/Contexts/GraphicContext.swift @@ -159,7 +159,8 @@ extension GraphicContext { createdAt: .now, thickness: pen.thickness ) - withPersistence(\.backgroundContext) { [graphicContext = object, _stroke = eraserStroke] context in + eraserStroke.graphicContext = self + withPersistence(\.backgroundContext) { [_stroke = eraserStroke] context in let stroke = EraserObject(\.backgroundContext) stroke.bounds = _stroke.bounds stroke.color = _stroke.color @@ -168,11 +169,9 @@ extension GraphicContext { stroke.createdAt = _stroke.createdAt stroke.quads = [] stroke.strokes = .init() - graphicContext?.strokes.add(stroke) _stroke.object = stroke try context.saveIfNeeded() } - eraserStroke.graphicContext = self stroke = eraserStroke } currentStroke = stroke @@ -219,17 +218,16 @@ extension GraphicContext { if let stroke = currentStroke { switch stroke.style { case .marker: - guard !tree.isEmpty else { return } - let _stroke = tree.remove(stroke.anyStroke, in: stroke.strokeBox) + guard let _stroke = stroke.stroke(as: PenStroke.self) else { break } withPersistence(\.backgroundContext) { [graphicContext = object, _stroke] context in - if let stroke = _stroke?.stroke(as: PenStroke.self)?.object { + if let stroke = _stroke.object { graphicContext?.strokes.remove(stroke) context.delete(stroke) } try context.saveIfNeeded() } case .eraser: - guard let eraserStroke = stroke.stroke(as: EraserStroke.self) else { return } + guard let eraserStroke = stroke.stroke(as: EraserStroke.self) else { break } eraserStrokes.remove(eraserStroke) withPersistence(\.backgroundContext) { [eraserStroke] context in if let stroke = eraserStroke.object { @@ -238,7 +236,6 @@ extension GraphicContext { try context.saveIfNeeded() } } - } currentStroke = nil currentPoint = nil diff --git a/Memola/Canvas/Core/Canvas.swift b/Memola/Canvas/Core/Canvas.swift index 241e782..3a5931b 100644 --- a/Memola/Canvas/Core/Canvas.swift +++ b/Memola/Canvas/Core/Canvas.swift @@ -59,7 +59,7 @@ extension Canvas { let graphicContext = canvas.graphicContext self?.graphicContext.object = graphicContext self?.graphicContext.loadStrokes(bounds) - context.refresh(canvas, mergeChanges: false) + context.refreshAllObjects() DispatchQueue.main.async { [weak self] in self?.state = .loaded } diff --git a/Memola/Features/Memo/PenDock/PenDock.swift b/Memola/Features/Memo/PenDock/PenDock.swift index b4b77e0..1fd2b5c 100644 --- a/Memola/Features/Memo/PenDock/PenDock.swift +++ b/Memola/Features/Memo/PenDock/PenDock.swift @@ -194,7 +194,6 @@ struct PenDock: View { .stroke(Color.gray, lineWidth: 0.4) } .padding(0.2) - .drawingGroup() } .buttonStyle(.plain) .hoverEffect(.lift) @@ -302,7 +301,6 @@ struct PenDock: View { .resizable() .renderingMode(.template) } - .drawingGroup() .foregroundStyle(.black.opacity(0.2)) .blur(radius: 3) if let tip = pen.style.icon.tip { diff --git a/Memola/Features/Memos/MemosView.swift b/Memola/Features/Memos/MemosView.swift index 82ac324..331016c 100644 --- a/Memola/Features/Memos/MemosView.swift +++ b/Memola/Features/Memos/MemosView.swift @@ -68,8 +68,8 @@ struct MemosView: View { memoObject.updatedAt = .now let canvasObject = CanvasObject(context: managedObjectContext) - canvasObject.width = 4_000 - canvasObject.height = 4_000 + canvasObject.width = 8_000 + canvasObject.height = 8_000 let toolObject = ToolObject(\.viewContext) toolObject.pens = []