Make sure undo stroke properly clears all the set pixels
Some checks failed
conan-package / conan-package (push) Has been cancelled
unit-test / Run unit tests (push) Has been cancelled

CURA-12752
Otherwise, when merging the polygons and undo-ing the whole stroke, there may be some remaining pixels outside the mesh triangles that would not be cleared, because the rasterizing is not 100% identical
This commit is contained in:
Erwan MATHIEU 2025-10-15 16:43:44 +02:00
parent 06a7592483
commit 33671083cd
3 changed files with 8 additions and 7 deletions

View file

@ -43,7 +43,7 @@ class PaintCommand(QUndoCommand):
if self._original_texture_image is None:
return
painter = self._makeClearedTexture()
painter = self._makeClearedTexture(extended=True)
painter.setCompositionMode(QPainter.CompositionMode.RasterOp_SourceOrDestination)
painter.drawImage(0, 0, self._original_texture_image)
painter.end()
@ -55,14 +55,14 @@ class PaintCommand(QUndoCommand):
if self._sliceable_object_decorator is not None:
self._sliceable_object_decorator.setPaintedExtrudersCountDirty()
def _makeClearedTexture(self) -> QPainter:
def _makeClearedTexture(self, extended = False) -> QPainter:
painter = QPainter(self._texture.getImage())
painter.setRenderHint(QPainter.RenderHint.Antialiasing, False)
self._clearTextureBits(painter)
self._clearTextureBits(painter, extended)
return painter
def _clearTextureBits(self, painter: QPainter):
def _clearTextureBits(self, painter: QPainter, extended = False):
raise NotImplementedError()
@staticmethod