Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
if ar >= 2:
try:
return PdfPage[horizontal.upper()]
except KeyError:
return PdfPage.RIGHT
# Make exception for classic american letter format and ISO (A4, B5, etc.)
if abs(ar - 8.5 / 11) < 1e-3 or abs(ar - 1 / math.sqrt(2)) < 1e-3:
return PdfPage.NONE
# If the aspect ratio is < 1, we can assume it is a document with notes above or below.
if ar < 1:
try:
return PdfPage[vertical.upper()]
except KeyError:
return PdfPage.BOTTOM
return PdfPage.NONE
def scale(val):
""" Return the enum value that does only scaling not shifting.
"""
return PdfPage(val | 1)
# "Regular" slides will have an aspect ratio of 4/3, 16/9, 16/10... i.e. in the range [1..2]
# So if the aspect ratio is >= 2, we can assume it is a document with notes on the side.
if ar >= 2:
try:
return PdfPage[horizontal.upper()]
except KeyError:
return PdfPage.RIGHT
# Make exception for classic american letter format and ISO (A4, B5, etc.)
if abs(ar - 8.5 / 11) < 1e-3 or abs(ar - 1 / math.sqrt(2)) < 1e-3:
return PdfPage.NONE
# If the aspect ratio is < 1, we can assume it is a document with notes above or below.
if ar < 1:
try:
return PdfPage[vertical.upper()]
except KeyError:
return PdfPage.BOTTOM
return PdfPage.NONE
def change_notes_pos(self, widget, event = None, force_change = False):
""" Switch the position of the nodes in the slide.
Returns:
`bool`: whether the mode has been toggled.
"""
if issubclass(type(widget), Gtk.CheckMenuItem):
# if this widget is not the active one do nothing
if not widget.get_active():
return False
target_mode = document.PdfPage[widget.get_name()[len('notes_'):].upper()]
elif issubclass(type(widget), document.PdfPage):
target_mode = widget
else:
return False
# Redundant toggle, do nothing
if target_mode == self.chosen_notes_mode:
return False
# Update the choice, except for NONE
if target_mode:
self.chosen_notes_mode = target_mode
self.get_object('notes_' + target_mode.name.lower()).set_active(True)
self.config.set('notes position', target_mode.direction(), target_mode.name.lower())
# Change the notes arrangement if they are enabled or if we are forced to
if self.notes_mode or force_change:
Pass 2 floats to transform coordinates, 4 to transform margins,
i.e. the second pair of coordinates is taken from the opposite corner.
Args:
x1 (`float`): x coordinate on the page, on a scale 0..1
y1 (`float`): y coordinate on the page, on a scale 0..1
x2 (`float`): second x coordinate on the page, from the other side, on a scale 0..1
y2 (`float`): second y coordinate on the page, from the other side, on a scale 0..1
"""
if val == PdfPage.RIGHT:
screen = (x * 2 - 1, y)
elif val == PdfPage.LEFT:
screen = (x * 2, y)
elif val == PdfPage.BOTTOM:
screen = (x, y * 2 - 1)
elif val == PdfPage.TOP:
screen = (x, y * 2)
else:
screen = (x, y)
if x2 is None or y2 is None:
return screen
else:
return screen + val.complement().to_screen(x2, y2)