Make Normalize methods more robust

This commit is contained in:
Rebecca Breu 2021-05-13 11:08:02 +02:00
parent e9c1eef0dc
commit 6369bb68ef

View file

@ -52,22 +52,21 @@ class BeeGraphicsScene(QtWidgets.QGraphicsScene):
""" """
values = [] values = []
for item in self.selectedItems(user_only=True): items = self.selectedItems(user_only=True)
for item in items:
rect = self.itemsBoundingRect(items=[item]) rect = self.itemsBoundingRect(items=[item])
values.append(getattr(rect, mode)()) values.append(getattr(rect, mode)())
if len(values) < 2: if len(values) < 2:
return return
avg = sum(values) / len(values) avg = sum(values) / len(values)
logger.debug(f'Calculated average {mode} {avg}') logger.debug(f'Calculated average {mode} {avg}')
scale_factors = [] scale_factors = []
for item in self.selectedItems(user_only=True): for item in items:
rect = self.itemsBoundingRect(items=[item]) rect = self.itemsBoundingRect(items=[item])
scale_factors.append(avg / getattr(rect, mode)()) scale_factors.append(avg / getattr(rect, mode)())
self.undo_stack.push( self.undo_stack.push(
commands.NormalizeItems( commands.NormalizeItems(items, scale_factors))
self.selectedItems(user_only=True), scale_factors))
def normalize_height(self): def normalize_height(self):
"""Scale selected images to the same height.""" """Scale selected images to the same height."""
@ -84,7 +83,8 @@ class BeeGraphicsScene(QtWidgets.QGraphicsScene):
""" """
sizes = [] sizes = []
for item in self.selectedItems(user_only=True): items = self.selectedItems(user_only=True)
for item in items:
rect = self.itemsBoundingRect(items=[item]) rect = self.itemsBoundingRect(items=[item])
sizes.append(rect.width() * rect.height()) sizes.append(rect.width() * rect.height())
@ -95,12 +95,11 @@ class BeeGraphicsScene(QtWidgets.QGraphicsScene):
logger.debug(f'Calculated average size {avg}') logger.debug(f'Calculated average size {avg}')
scale_factors = [] scale_factors = []
for item in self.selectedItems(user_only=True): for item in items:
rect = self.itemsBoundingRect(items=[item]) rect = self.itemsBoundingRect(items=[item])
scale_factors.append(math.sqrt(avg / rect.width() / rect.height())) scale_factors.append(math.sqrt(avg / rect.width() / rect.height()))
self.undo_stack.push( self.undo_stack.push(
commands.NormalizeItems( commands.NormalizeItems(items, scale_factors))
self.selectedItems(user_only=True), scale_factors))
def arrange(self, vertical=False): def arrange(self, vertical=False):
"""Arrange items in a line (horizontally or vertically).""" """Arrange items in a line (horizontally or vertically)."""