Source code for BaseMod.light.lightHistory

from PySide6.QtCore import QSize, QRect, QPoint
from PySide6.QtGui import QImage, QColor, QPainter

from RWS.Modify import HistoryElement
from RWS.Core import ofstop, ofsleft, CELLSIZE


[docs] class LevelResizedLight(HistoryElement):
[docs] def __init__(self, history, newrect: QRect): super().__init__(history) self.newrect = newrect self.oldimage = self.level.l_light.image.copy() self.newsize = QSize((self.newrect.width() + ofsleft) * CELLSIZE, (self.newrect.height() + ofstop) * CELLSIZE) newimage = QImage(self.newsize, QImage.Format.Format_Mono) newimage.setColorTable([QColor(0, 0, 0, 0).rgba(), QColor(0, 0, 0, 255).rgba()]) newimage.fill(0) painter = QPainter(newimage) painter.setCompositionMode(QPainter.CompositionMode.CompositionMode_Source) painter.drawImage(QPoint(-self.newrect.x() * CELLSIZE, -self.newrect.y() * CELLSIZE), self.level.l_light.image) painter.end() self.newimage = newimage self.redo_changes()
[docs] def undo_changes(self): self.basemod.lighteditor.end_painter() self.level.l_light.image = self.oldimage.copy() self.basemod.lighteditor.update_painter() self.level.viewport.modulenames["light"].update_images()
[docs] def redo_changes(self): self.basemod.lighteditor.end_painter() self.level.l_light.image = self.newimage.copy() self.basemod.lighteditor.update_painter() self.level.viewport.modulenames["light"].update_images()
[docs] class LightPosChanged(HistoryElement):
[docs] def __init__(self, history, angle: float, flatness): super().__init__(history) self.angle = angle % 360 self.flatness = int(flatness) self.oldangle = self.level.l_light.angle self.oldflatness = self.level.l_light.flatness self.redo_changes()
[docs] def undo_changes(self): self.level.l_light.angle = self.oldangle self.level.l_light.flatness = self.oldflatness self.level.viewport.modulenames["light"].update_position() self.basemod.lighteditor.update_position()
[docs] def redo_changes(self): self.level.l_light.angle = self.angle self.level.l_light.flatness = self.flatness self.level.viewport.modulenames["light"].update_position() self.basemod.lighteditor.update_position()
[docs] class LightImageChanged(HistoryElement):
[docs] def __init__(self, history, oldimage: QImage): super().__init__(history) self.newimage = self.level.l_light.image.copy() self.oldimage = oldimage.copy() self.redo_changes()
[docs] def undo_changes(self): self.basemod.lighteditor.end_painter() self.level.l_light.image = self.oldimage.copy() self.basemod.lighteditor.update_painter() self.level.viewport.modulenames["light"].update_images()
[docs] def redo_changes(self): self.basemod.lighteditor.end_painter() self.level.l_light.image = self.newimage.copy() self.basemod.lighteditor.update_painter() self.level.viewport.modulenames["light"].update_images()