forked from openlp/openlp
fix screen lines calcs so they are correct.
Prints added for rendering size diagnostics.
This commit is contained in:
parent
6ef3f6aadc
commit
ee8a92b77f
@ -42,7 +42,7 @@ class Renderer(object):
|
|||||||
Initialise the renderer.
|
Initialise the renderer.
|
||||||
"""
|
"""
|
||||||
self._rect = None
|
self._rect = None
|
||||||
self._debug = 0
|
self._debug = True
|
||||||
self._right_margin = 64 # the amount of right indent
|
self._right_margin = 64 # the amount of right indent
|
||||||
self._display_shadow_size_footer = 0
|
self._display_shadow_size_footer = 0
|
||||||
self._display_outline_size_footer = 0
|
self._display_outline_size_footer = 0
|
||||||
@ -148,17 +148,22 @@ class Renderer(object):
|
|||||||
|
|
||||||
def pre_render_text(self, text):
|
def pre_render_text(self, text):
|
||||||
metrics = QtGui.QFontMetrics(self.mainFont)
|
metrics = QtGui.QFontMetrics(self.mainFont)
|
||||||
#take the width work out approx how many characters and add 50%
|
#work out line width
|
||||||
line_width = self._rect.width() - self._right_margin
|
line_width = self._rect.width() - self._right_margin
|
||||||
#number of lines on a page - adjust for rounding up.
|
#number of lines on a page - adjust for rounding up.
|
||||||
page_length = int(self._rect.height() / metrics.height() - 2 ) - 1
|
line_height = metrics.height()
|
||||||
|
if self._theme.display_shadow:
|
||||||
|
line_height += int(self._theme.display_shadow_size)
|
||||||
|
if self._theme.display_outline:
|
||||||
|
# pixels top/bottom
|
||||||
|
line_height += 2 * int(self._theme.display_outline_size)
|
||||||
|
page_length = int(self._rect.height() / line_height )
|
||||||
#Average number of characters in line
|
#Average number of characters in line
|
||||||
ave_line_width = line_width / metrics.averageCharWidth()
|
ave_line_width = line_width / metrics.averageCharWidth()
|
||||||
#Maximum size of a character
|
#Maximum size of a character
|
||||||
max_char_width = metrics.maxWidth()
|
max_char_width = metrics.maxWidth()
|
||||||
#Min size of a character
|
#Max characters pre line based on min size of a character
|
||||||
min_char_width = metrics.width(u'i')
|
char_per_line = line_width / metrics.width(u'i')
|
||||||
char_per_line = line_width / min_char_width
|
|
||||||
log.debug(u'Page Length area height %s , metrics %s , lines %s' %
|
log.debug(u'Page Length area height %s , metrics %s , lines %s' %
|
||||||
(int(self._rect.height()), metrics.height(), page_length ))
|
(int(self._rect.height()), metrics.height(), page_length ))
|
||||||
split_pages = []
|
split_pages = []
|
||||||
@ -221,6 +226,7 @@ class Renderer(object):
|
|||||||
"""
|
"""
|
||||||
self._rect = rect_main
|
self._rect = rect_main
|
||||||
self._rect_footer = rect_footer
|
self._rect_footer = rect_footer
|
||||||
|
print "render = ", self._rect
|
||||||
|
|
||||||
def generate_frame_from_lines(self, lines, footer_lines=None):
|
def generate_frame_from_lines(self, lines, footer_lines=None):
|
||||||
"""
|
"""
|
||||||
@ -567,7 +573,7 @@ class Renderer(object):
|
|||||||
x, y = tlcorner
|
x, y = tlcorner
|
||||||
metrics = QtGui.QFontMetrics(font)
|
metrics = QtGui.QFontMetrics(font)
|
||||||
w = metrics.width(line)
|
w = metrics.width(line)
|
||||||
h = metrics.height() - 2
|
h = metrics.height()
|
||||||
if draw:
|
if draw:
|
||||||
self.painter.drawText(x, y + metrics.ascent(), line)
|
self.painter.drawText(x, y + metrics.ascent(), line)
|
||||||
if self._theme.display_slideTransition:
|
if self._theme.display_slideTransition:
|
||||||
|
@ -160,8 +160,8 @@ class RenderManager(object):
|
|||||||
|
|
||||||
def build_text_rectangle(self, theme):
|
def build_text_rectangle(self, theme):
|
||||||
"""
|
"""
|
||||||
Builds a text block using the settings in ``theme``.
|
Builds a text block using the settings in ``theme``
|
||||||
One is needed per slide
|
and the size of the display screen.height.
|
||||||
|
|
||||||
``theme``
|
``theme``
|
||||||
The theme to build a text block for.
|
The theme to build a text block for.
|
||||||
@ -170,14 +170,14 @@ class RenderManager(object):
|
|||||||
main_rect = None
|
main_rect = None
|
||||||
footer_rect = None
|
footer_rect = None
|
||||||
if not theme.font_main_override:
|
if not theme.font_main_override:
|
||||||
main_rect = QtCore.QRect(10, 0, self.width - 1,
|
main_rect = QtCore.QRect(10, 0,
|
||||||
self.footer_start - 20)
|
self.width - 1, self.footer_start)
|
||||||
else:
|
else:
|
||||||
main_rect = QtCore.QRect(theme.font_main_x, theme.font_main_y,
|
main_rect = QtCore.QRect(theme.font_main_x, theme.font_main_y,
|
||||||
theme.font_main_width - 1, theme.font_main_height - 1)
|
theme.font_main_width - 1, theme.font_main_height - 1)
|
||||||
if not theme.font_footer_override:
|
if not theme.font_footer_override:
|
||||||
footer_rect = QtCore.QRect(10, self.footer_start, self.width - 1,
|
footer_rect = QtCore.QRect(10, self.footer_start,
|
||||||
self.height-self.footer_start)
|
self.width - 1, self.height - self.footer_start)
|
||||||
else:
|
else:
|
||||||
footer_rect = QtCore.QRect(theme.font_footer_x,
|
footer_rect = QtCore.QRect(theme.font_footer_x,
|
||||||
theme.font_footer_y, theme.font_footer_width - 1,
|
theme.font_footer_y, theme.font_footer_width - 1,
|
||||||
@ -192,7 +192,7 @@ class RenderManager(object):
|
|||||||
The theme to generated a preview for.
|
The theme to generated a preview for.
|
||||||
"""
|
"""
|
||||||
log.debug(u'generate preview')
|
log.debug(u'generate preview')
|
||||||
#set the defaukt image size for previews
|
#set the default image size for previews
|
||||||
self.calculate_default(QtCore.QSize(1024, 768))
|
self.calculate_default(QtCore.QSize(1024, 768))
|
||||||
self.renderer.set_theme(themedata)
|
self.renderer.set_theme(themedata)
|
||||||
self.build_text_rectangle(themedata)
|
self.build_text_rectangle(themedata)
|
||||||
|
@ -102,11 +102,13 @@ class ServiceItem(object):
|
|||||||
formated = self.RenderManager.format_slide(slide[u'raw_slide'])
|
formated = self.RenderManager.format_slide(slide[u'raw_slide'])
|
||||||
for format in formated:
|
for format in formated:
|
||||||
lines = u''
|
lines = u''
|
||||||
|
title = u''
|
||||||
for line in format:
|
for line in format:
|
||||||
|
if title == u'':
|
||||||
|
title = line
|
||||||
lines += line + u'\n'
|
lines += line + u'\n'
|
||||||
title = lines.split(u'\n')[0]
|
|
||||||
self._display_frames.append({u'title': title, \
|
self._display_frames.append({u'title': title, \
|
||||||
u'text': lines, u'verseTag': slide[u'verseTag'] })
|
u'text': lines.rstrip(), u'verseTag': slide[u'verseTag'] })
|
||||||
log.log(15, u'Formatting took %4s' % (time.time() - before))
|
log.log(15, u'Formatting took %4s' % (time.time() - before))
|
||||||
elif self.service_item_type == ServiceItemType.Image:
|
elif self.service_item_type == ServiceItemType.Image:
|
||||||
for slide in self._raw_frames:
|
for slide in self._raw_frames:
|
||||||
|
@ -694,8 +694,14 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
|
|||||||
if self.allowPreview:
|
if self.allowPreview:
|
||||||
#calculate main number of rows
|
#calculate main number of rows
|
||||||
metrics = self._getThemeMetrics()
|
metrics = self._getThemeMetrics()
|
||||||
|
line_height = metrics.height()
|
||||||
|
if self.theme.display_shadow:
|
||||||
|
line_height += int(self.theme.display_shadow_size)
|
||||||
|
if self.theme.display_outline:
|
||||||
|
# pixels top/bottom
|
||||||
|
line_height += 2 * int(self.theme.display_outline_size)
|
||||||
page_length = \
|
page_length = \
|
||||||
(self.FontMainHeightSpinBox.value() / metrics.height() - 2) - 1
|
((self.FontMainHeightSpinBox.value()) / line_height )
|
||||||
log.debug(u'Page Length area height %s, metrics %s, lines %s' %
|
log.debug(u'Page Length area height %s, metrics %s, lines %s' %
|
||||||
(self.FontMainHeightSpinBox.value(), metrics.height(),
|
(self.FontMainHeightSpinBox.value(), metrics.height(),
|
||||||
page_length))
|
page_length))
|
||||||
|
@ -139,6 +139,7 @@ class MainDisplay(DisplayWidget):
|
|||||||
@param (integer) screen This is the screen number.
|
@param (integer) screen This is the screen number.
|
||||||
"""
|
"""
|
||||||
log.debug(u'Setup %s for %s ' %(self.screens, screenNumber))
|
log.debug(u'Setup %s for %s ' %(self.screens, screenNumber))
|
||||||
|
print "all the screen ", self.screens
|
||||||
self.setVisible(False)
|
self.setVisible(False)
|
||||||
self.screen = self.screens[screenNumber]
|
self.screen = self.screens[screenNumber]
|
||||||
if self.screen[u'number'] != screenNumber:
|
if self.screen[u'number'] != screenNumber:
|
||||||
@ -190,7 +191,12 @@ class MainDisplay(DisplayWidget):
|
|||||||
The alert displays are set to 10% of the screen as the video display
|
The alert displays are set to 10% of the screen as the video display
|
||||||
is unable to handle transparent pixmaps. This is a problem with QT.
|
is unable to handle transparent pixmaps. This is a problem with QT.
|
||||||
"""
|
"""
|
||||||
|
print "--------- Set screen geom ------------"
|
||||||
|
print "display ", self.screen[u'size']
|
||||||
|
print "main geom before ", self.geometry()
|
||||||
self.setGeometry(self.screen[u'size'])
|
self.setGeometry(self.screen[u'size'])
|
||||||
|
print "main geom after ", self.geometry()
|
||||||
|
print "display geom", self.display.geometry()
|
||||||
self.alertScreenPosition = self.screen[u'size'].height() * 0.9
|
self.alertScreenPosition = self.screen[u'size'].height() * 0.9
|
||||||
self.alertHeight = self.screen[u'size'].height() - self.alertScreenPosition
|
self.alertHeight = self.screen[u'size'].height() - self.alertScreenPosition
|
||||||
self.alertDisplay.setGeometry(
|
self.alertDisplay.setGeometry(
|
||||||
@ -221,6 +227,7 @@ class MainDisplay(DisplayWidget):
|
|||||||
elif not self.displayBlank:
|
elif not self.displayBlank:
|
||||||
if transition:
|
if transition:
|
||||||
if self.hasTransition:
|
if self.hasTransition:
|
||||||
|
print len(self.frame[u'trans'])
|
||||||
if self.frame[u'trans'] is not None:
|
if self.frame[u'trans'] is not None:
|
||||||
self.display.setPixmap(QtGui.QPixmap.fromImage(self.frame[u'trans']))
|
self.display.setPixmap(QtGui.QPixmap.fromImage(self.frame[u'trans']))
|
||||||
self.repaint()
|
self.repaint()
|
||||||
|
@ -614,6 +614,7 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
|
|||||||
self.settingsForm.exec_()
|
self.settingsForm.exec_()
|
||||||
updated_display = self.getMonitorNumber()
|
updated_display = self.getMonitorNumber()
|
||||||
if updated_display != self.RenderManager.current_display:
|
if updated_display != self.RenderManager.current_display:
|
||||||
|
print "main display screen changed to ", updated_display
|
||||||
self.RenderManager.update_display(updated_display)
|
self.RenderManager.update_display(updated_display)
|
||||||
self.mainDisplay.setup(updated_display)
|
self.mainDisplay.setup(updated_display)
|
||||||
self.activateWindow()
|
self.activateWindow()
|
||||||
|
@ -441,6 +441,7 @@ class SlideController(QtGui.QWidget):
|
|||||||
self.SongMenu.menu().addAction(self.trUtf8(u'%s'%tag),
|
self.SongMenu.menu().addAction(self.trUtf8(u'%s'%tag),
|
||||||
self.onSongBarHandler)
|
self.onSongBarHandler)
|
||||||
item.setText(frame[u'text'])
|
item.setText(frame[u'text'])
|
||||||
|
#print {u'x':frame[u'text']}
|
||||||
else:
|
else:
|
||||||
label = QtGui.QLabel()
|
label = QtGui.QLabel()
|
||||||
label.setMargin(4)
|
label.setMargin(4)
|
||||||
|
Loading…
Reference in New Issue
Block a user