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.
|
||||
"""
|
||||
self._rect = None
|
||||
self._debug = 0
|
||||
self._debug = True
|
||||
self._right_margin = 64 # the amount of right indent
|
||||
self._display_shadow_size_footer = 0
|
||||
self._display_outline_size_footer = 0
|
||||
|
@ -148,17 +148,22 @@ class Renderer(object):
|
|||
|
||||
def pre_render_text(self, text):
|
||||
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
|
||||
#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
|
||||
ave_line_width = line_width / metrics.averageCharWidth()
|
||||
#Maximum size of a character
|
||||
max_char_width = metrics.maxWidth()
|
||||
#Min size of a character
|
||||
min_char_width = metrics.width(u'i')
|
||||
char_per_line = line_width / min_char_width
|
||||
#Max characters pre line based on min size of a character
|
||||
char_per_line = line_width / metrics.width(u'i')
|
||||
log.debug(u'Page Length area height %s , metrics %s , lines %s' %
|
||||
(int(self._rect.height()), metrics.height(), page_length ))
|
||||
split_pages = []
|
||||
|
@ -221,6 +226,7 @@ class Renderer(object):
|
|||
"""
|
||||
self._rect = rect_main
|
||||
self._rect_footer = rect_footer
|
||||
print "render = ", self._rect
|
||||
|
||||
def generate_frame_from_lines(self, lines, footer_lines=None):
|
||||
"""
|
||||
|
@ -567,7 +573,7 @@ class Renderer(object):
|
|||
x, y = tlcorner
|
||||
metrics = QtGui.QFontMetrics(font)
|
||||
w = metrics.width(line)
|
||||
h = metrics.height() - 2
|
||||
h = metrics.height()
|
||||
if draw:
|
||||
self.painter.drawText(x, y + metrics.ascent(), line)
|
||||
if self._theme.display_slideTransition:
|
||||
|
|
|
@ -160,8 +160,8 @@ class RenderManager(object):
|
|||
|
||||
def build_text_rectangle(self, theme):
|
||||
"""
|
||||
Builds a text block using the settings in ``theme``.
|
||||
One is needed per slide
|
||||
Builds a text block using the settings in ``theme``
|
||||
and the size of the display screen.height.
|
||||
|
||||
``theme``
|
||||
The theme to build a text block for.
|
||||
|
@ -170,14 +170,14 @@ class RenderManager(object):
|
|||
main_rect = None
|
||||
footer_rect = None
|
||||
if not theme.font_main_override:
|
||||
main_rect = QtCore.QRect(10, 0, self.width - 1,
|
||||
self.footer_start - 20)
|
||||
main_rect = QtCore.QRect(10, 0,
|
||||
self.width - 1, self.footer_start)
|
||||
else:
|
||||
main_rect = QtCore.QRect(theme.font_main_x, theme.font_main_y,
|
||||
theme.font_main_width - 1, theme.font_main_height - 1)
|
||||
if not theme.font_footer_override:
|
||||
footer_rect = QtCore.QRect(10, self.footer_start, self.width - 1,
|
||||
self.height-self.footer_start)
|
||||
footer_rect = QtCore.QRect(10, self.footer_start,
|
||||
self.width - 1, self.height - self.footer_start)
|
||||
else:
|
||||
footer_rect = QtCore.QRect(theme.font_footer_x,
|
||||
theme.font_footer_y, theme.font_footer_width - 1,
|
||||
|
@ -192,7 +192,7 @@ class RenderManager(object):
|
|||
The theme to generated a preview for.
|
||||
"""
|
||||
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.renderer.set_theme(themedata)
|
||||
self.build_text_rectangle(themedata)
|
||||
|
|
|
@ -102,11 +102,13 @@ class ServiceItem(object):
|
|||
formated = self.RenderManager.format_slide(slide[u'raw_slide'])
|
||||
for format in formated:
|
||||
lines = u''
|
||||
title = u''
|
||||
for line in format:
|
||||
if title == u'':
|
||||
title = line
|
||||
lines += line + u'\n'
|
||||
title = lines.split(u'\n')[0]
|
||||
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))
|
||||
elif self.service_item_type == ServiceItemType.Image:
|
||||
for slide in self._raw_frames:
|
||||
|
|
|
@ -694,8 +694,14 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
|
|||
if self.allowPreview:
|
||||
#calculate main number of rows
|
||||
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 = \
|
||||
(self.FontMainHeightSpinBox.value() / metrics.height() - 2) - 1
|
||||
((self.FontMainHeightSpinBox.value()) / line_height )
|
||||
log.debug(u'Page Length area height %s, metrics %s, lines %s' %
|
||||
(self.FontMainHeightSpinBox.value(), metrics.height(),
|
||||
page_length))
|
||||
|
@ -719,4 +725,4 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
|
|||
if self.theme.font_main_width < metrics.maxWidth() * 2 + 64:
|
||||
self.theme.font_main_width = metrics.maxWidth() * 2 + 64
|
||||
self.FontMainWidthSpinBox.setValue(self.theme.font_main_width)
|
||||
return metrics
|
||||
return metrics
|
||||
|
|
|
@ -139,6 +139,7 @@ class MainDisplay(DisplayWidget):
|
|||
@param (integer) screen This is the screen number.
|
||||
"""
|
||||
log.debug(u'Setup %s for %s ' %(self.screens, screenNumber))
|
||||
print "all the screen ", self.screens
|
||||
self.setVisible(False)
|
||||
self.screen = self.screens[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
|
||||
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'])
|
||||
print "main geom after ", self.geometry()
|
||||
print "display geom", self.display.geometry()
|
||||
self.alertScreenPosition = self.screen[u'size'].height() * 0.9
|
||||
self.alertHeight = self.screen[u'size'].height() - self.alertScreenPosition
|
||||
self.alertDisplay.setGeometry(
|
||||
|
@ -221,6 +227,7 @@ class MainDisplay(DisplayWidget):
|
|||
elif not self.displayBlank:
|
||||
if transition:
|
||||
if self.hasTransition:
|
||||
print len(self.frame[u'trans'])
|
||||
if self.frame[u'trans'] is not None:
|
||||
self.display.setPixmap(QtGui.QPixmap.fromImage(self.frame[u'trans']))
|
||||
self.repaint()
|
||||
|
|
|
@ -614,6 +614,7 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
|
|||
self.settingsForm.exec_()
|
||||
updated_display = self.getMonitorNumber()
|
||||
if updated_display != self.RenderManager.current_display:
|
||||
print "main display screen changed to ", updated_display
|
||||
self.RenderManager.update_display(updated_display)
|
||||
self.mainDisplay.setup(updated_display)
|
||||
self.activateWindow()
|
||||
|
@ -704,4 +705,4 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
|
|||
def togglePreviewPanel(self):
|
||||
previewBool = self.PreviewController.Panel.isVisible()
|
||||
self.PreviewController.Panel.setVisible(not previewBool)
|
||||
self.settingsmanager.togglePreviewPanel(not previewBool)
|
||||
self.settingsmanager.togglePreviewPanel(not previewBool)
|
||||
|
|
|
@ -441,6 +441,7 @@ class SlideController(QtGui.QWidget):
|
|||
self.SongMenu.menu().addAction(self.trUtf8(u'%s'%tag),
|
||||
self.onSongBarHandler)
|
||||
item.setText(frame[u'text'])
|
||||
#print {u'x':frame[u'text']}
|
||||
else:
|
||||
label = QtGui.QLabel()
|
||||
label.setMargin(4)
|
||||
|
|
Loading…
Reference in New Issue