compare viewport and sprite aspect ratios to scale sprites properly
This commit is contained in:
parent
664c9bde46
commit
c4a98bcc50
28
gameview.py
28
gameview.py
@ -248,10 +248,11 @@ class AOCharMovie(QtGui.QLabel):
|
||||
xx = 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)
|
||||
|
||||
self.parent = parent
|
||||
self.gameview = gameview
|
||||
self.setAlignment(QtCore.Qt.AlignCenter)
|
||||
self.timeMod = 60
|
||||
self.playOnce = True
|
||||
@ -535,16 +536,17 @@ class AOCharMovie(QtGui.QLabel):
|
||||
else:
|
||||
return QtCore.Qt.FastTransformation
|
||||
|
||||
def getAspect(self, taller):
|
||||
if taller:
|
||||
return QtCore.Qt.KeepAspectRatio
|
||||
else:
|
||||
def getAspect(self, size):
|
||||
ratio = size.width() / float(size.height())
|
||||
if ratio >= self.gameview.viewportRatio:
|
||||
return QtCore.Qt.KeepAspectRatioByExpanding
|
||||
else:
|
||||
return QtCore.Qt.KeepAspectRatio
|
||||
|
||||
def getScaledImage(self, f_img):
|
||||
if not f_img.isNull():
|
||||
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
|
||||
|
||||
@ -1100,6 +1102,8 @@ class GUI(QtGui.QWidget):
|
||||
self.swapping = False
|
||||
self.iniSwapIndex = 0
|
||||
self.background = 'default'
|
||||
self.viewportScale = 1
|
||||
self.viewportRatio = 1
|
||||
|
||||
self.viewport = QtGui.QWidget(self)
|
||||
self.viewport.setObjectName("ui_viewport")
|
||||
@ -1113,17 +1117,17 @@ class GUI(QtGui.QWidget):
|
||||
|
||||
self.zoom = ZoomLines(self.viewport)
|
||||
|
||||
self.char = AOCharMovie(self.viewport)
|
||||
self.char = AOCharMovie(self.viewport, self)
|
||||
self.char.done.connect(self.preanimDone)
|
||||
self.sideChar = AOCharMovie(self.viewport)
|
||||
self.sideChar = AOCharMovie(self.viewport, self)
|
||||
self.sideChar.hide()
|
||||
|
||||
self.slideLastWit = []
|
||||
self.slideLastPos = None
|
||||
self.slideWitness = AOCharMovie(self.viewport)
|
||||
self.slideWitness = AOCharMovie(self.viewport, self)
|
||||
self.slideWitness.showOnPlay = False
|
||||
self.slideWitness.hide()
|
||||
self.slideSpeaker = AOCharMovie(self.viewport)
|
||||
self.slideSpeaker = AOCharMovie(self.viewport, self)
|
||||
self.slideSpeaker.hide()
|
||||
self.slideSpeaker.showOnPlay = False
|
||||
|
||||
@ -1757,7 +1761,6 @@ class GUI(QtGui.QWidget):
|
||||
# Finally, load the theme
|
||||
self.width = 820
|
||||
self.height = 730
|
||||
self.viewportScale = 1
|
||||
self.defaultStyle = QtGui.QApplication.style().objectName()
|
||||
self.loadTheme()
|
||||
|
||||
@ -1767,6 +1770,7 @@ class GUI(QtGui.QWidget):
|
||||
stylesheet = ""
|
||||
self.emotePageGeometry = []
|
||||
self.viewportScale = 0
|
||||
self.viewportRatio = 0
|
||||
self.gamewindow.setStyleSheet("")
|
||||
self.chatbox.resetGeometry()
|
||||
self.btnReloadTheme.setVisible(False)
|
||||
@ -1908,6 +1912,8 @@ class GUI(QtGui.QWidget):
|
||||
if not self.viewportScale:
|
||||
self.viewportScale = self.viewport.height() / float(192)
|
||||
|
||||
self.viewportRatio = self.viewport.width() / float(self.viewport.height())
|
||||
|
||||
self.court.resize(self.viewport.size())
|
||||
self.bench.resize(self.viewport.size())
|
||||
self.whiteFlashLabel.resize(self.viewport.size())
|
||||
|
||||
Loading…
Reference in New Issue
Block a user