Source code for RWESharp.Renderable.RenderImage
from RWESharp.info import CELLSIZE
from RWESharp.Renderable.Renderable import Renderable
from PySide6.QtCore import QSize, QPointF
from PySide6.QtGui import QPixmap, QColor, QPainter
from PySide6.QtWidgets import QGraphicsPixmapItem
[docs]
class RenderImage(Renderable):
[docs]
def __init__(self, module, depth, imagesize: QSize, add_renderable: bool = True):
super().__init__(module, depth, False)
self.image = QPixmap(imagesize)
self.image.fill(QColor(0, 0, 0, 0))
self.painter = QPainter(self.image)
self.renderedtexture = QGraphicsPixmapItem(self.image)
self.renderedtexture.setZValue(self.depth)
self._painter_enabled = True
if add_renderable:
self.module.add_renderable(self)
@property
def painter_enabled(self) -> bool:
return self._painter_enabled
@painter_enabled.setter
def painter_enabled(self, value: bool):
self._painter_enabled = value
self.painter.end()
if value:
self.painter.begin(self.image)
[docs]
def redraw(self) -> None:
"""
Redraws pixmap on screen
:return: None
"""
self.renderedtexture.setPixmap(self.image)
[docs]
def draw_layer(self) -> None:
"""
called when layer should be drawn on screen
called on booting of rwe#
:return: None
"""
[docs]
def init_graphics(self, viewport):
super().init_graphics(viewport)
viewport.workscene.addItem(self.renderedtexture)
self.draw_layer()
[docs]
def remove_graphics(self, viewport):
super().remove_graphics(viewport)
viewport.workscene.removeItem(self.renderedtexture)
[docs]
def move_event(self):
super().move_event()
self.renderedtexture.setPos(self.actual_offset)
[docs]
def zoom_event(self):
self.renderedtexture.setScale(self.zoom * self.scale)
[docs]
def setPos(self, pos: QPointF):
super().setPos(pos)
self.renderedtexture.setPos(self.actual_offset)
[docs]
def setOpacity(self, opacity):
super().setOpacity(opacity)
self.renderedtexture.setOpacity(self.opacity)
[docs]
def setPixmap(self, pixmap: QPixmap):
if self.painter.isActive():
self.painter.end()
self.image = pixmap
if self._painter_enabled:
self.painter.begin(self.image)
self.redraw()