compare viewport and sprite aspect ratios to scale sprites properly

This commit is contained in:
cidoku 2025-10-19 04:45:46 -03:00
parent 664c9bde46
commit c4a98bcc50

View File

@ -248,10 +248,11 @@ class AOCharMovie(QtGui.QLabel):
xx = 0 # for restoring from screenshake xx = 0 # for restoring from screenshake
yy = 0 # for restoring from screenshake yy = 0 # for restoring from screenshake
def __init__(self, parent): def __init__(self, parent, gameview):
QtGui.QLabel.__init__(self, parent) QtGui.QLabel.__init__(self, parent)
self.parent = parent self.parent = parent
self.gameview = gameview
self.setAlignment(QtCore.Qt.AlignCenter) self.setAlignment(QtCore.Qt.AlignCenter)
self.timeMod = 60 self.timeMod = 60
self.playOnce = True self.playOnce = True
@ -535,16 +536,17 @@ class AOCharMovie(QtGui.QLabel):
else: else:
return QtCore.Qt.FastTransformation return QtCore.Qt.FastTransformation
def getAspect(self, taller): def getAspect(self, size):
if taller: ratio = size.width() / float(size.height())
return QtCore.Qt.KeepAspectRatio if ratio >= self.gameview.viewportRatio:
else:
return QtCore.Qt.KeepAspectRatioByExpanding return QtCore.Qt.KeepAspectRatioByExpanding
else:
return QtCore.Qt.KeepAspectRatio
def getScaledImage(self, f_img): def getScaledImage(self, f_img):
if not f_img.isNull(): if not f_img.isNull():
transform = self.getTransform(f_img.size().height() > self.size().height()) transform = self.getTransform(f_img.size().height() > self.size().height())
aspect = self.getAspect(f_img.size().width() <= self.size().width()) aspect = self.getAspect(f_img.size())
return f_img.scaled(self.size(), aspect, transform) return f_img.scaled(self.size(), aspect, transform)
return f_img return f_img
@ -1100,6 +1102,8 @@ class GUI(QtGui.QWidget):
self.swapping = False self.swapping = False
self.iniSwapIndex = 0 self.iniSwapIndex = 0
self.background = 'default' self.background = 'default'
self.viewportScale = 1
self.viewportRatio = 1
self.viewport = QtGui.QWidget(self) self.viewport = QtGui.QWidget(self)
self.viewport.setObjectName("ui_viewport") self.viewport.setObjectName("ui_viewport")
@ -1113,17 +1117,17 @@ class GUI(QtGui.QWidget):
self.zoom = ZoomLines(self.viewport) self.zoom = ZoomLines(self.viewport)
self.char = AOCharMovie(self.viewport) self.char = AOCharMovie(self.viewport, self)
self.char.done.connect(self.preanimDone) self.char.done.connect(self.preanimDone)
self.sideChar = AOCharMovie(self.viewport) self.sideChar = AOCharMovie(self.viewport, self)
self.sideChar.hide() self.sideChar.hide()
self.slideLastWit = [] self.slideLastWit = []
self.slideLastPos = None self.slideLastPos = None
self.slideWitness = AOCharMovie(self.viewport) self.slideWitness = AOCharMovie(self.viewport, self)
self.slideWitness.showOnPlay = False self.slideWitness.showOnPlay = False
self.slideWitness.hide() self.slideWitness.hide()
self.slideSpeaker = AOCharMovie(self.viewport) self.slideSpeaker = AOCharMovie(self.viewport, self)
self.slideSpeaker.hide() self.slideSpeaker.hide()
self.slideSpeaker.showOnPlay = False self.slideSpeaker.showOnPlay = False
@ -1757,7 +1761,6 @@ class GUI(QtGui.QWidget):
# Finally, load the theme # Finally, load the theme
self.width = 820 self.width = 820
self.height = 730 self.height = 730
self.viewportScale = 1
self.defaultStyle = QtGui.QApplication.style().objectName() self.defaultStyle = QtGui.QApplication.style().objectName()
self.loadTheme() self.loadTheme()
@ -1767,6 +1770,7 @@ class GUI(QtGui.QWidget):
stylesheet = "" stylesheet = ""
self.emotePageGeometry = [] self.emotePageGeometry = []
self.viewportScale = 0 self.viewportScale = 0
self.viewportRatio = 0
self.gamewindow.setStyleSheet("") self.gamewindow.setStyleSheet("")
self.chatbox.resetGeometry() self.chatbox.resetGeometry()
self.btnReloadTheme.setVisible(False) self.btnReloadTheme.setVisible(False)
@ -1908,6 +1912,8 @@ class GUI(QtGui.QWidget):
if not self.viewportScale: if not self.viewportScale:
self.viewportScale = self.viewport.height() / float(192) self.viewportScale = self.viewport.height() / float(192)
self.viewportRatio = self.viewport.width() / float(self.viewport.height())
self.court.resize(self.viewport.size()) self.court.resize(self.viewport.size())
self.bench.resize(self.viewport.size()) self.bench.resize(self.viewport.size())
self.whiteFlashLabel.resize(self.viewport.size()) self.whiteFlashLabel.resize(self.viewport.size())