forked from openlp/openlp
Refactor renderer to do outline correctly
Add removal of footer for blank screens Fix song edit bug allowing preview to be triggered. bzr-revno: 734
This commit is contained in:
commit
7d36e85850
@ -466,38 +466,9 @@ class Renderer(object):
|
|||||||
self._get_extent_and_render(line, footer,
|
self._get_extent_and_render(line, footer,
|
||||||
tlcorner=(x + display_shadow_size, y + display_shadow_size),
|
tlcorner=(x + display_shadow_size, y + display_shadow_size),
|
||||||
draw=True, color = self._theme.display_shadow_color)
|
draw=True, color = self._theme.display_shadow_color)
|
||||||
if self._theme.display_outline:
|
self._get_extent_and_render(line, footer, tlcorner=(x, y), draw=True,
|
||||||
self._get_extent_and_render(line, footer,
|
outline_size=display_outline_size,
|
||||||
(x + display_outline_size, y), draw=True,
|
outline_color=self._theme.display_outline_color)
|
||||||
color = self._theme.display_outline_color)
|
|
||||||
self._get_extent_and_render(line, footer,
|
|
||||||
(x, y + display_outline_size), draw=True,
|
|
||||||
color = self._theme.display_outline_color)
|
|
||||||
self._get_extent_and_render(line, footer,
|
|
||||||
(x, y - display_outline_size), draw=True,
|
|
||||||
color = self._theme.display_outline_color)
|
|
||||||
self._get_extent_and_render(line, footer,
|
|
||||||
(x - display_outline_size, y), draw=True,
|
|
||||||
color = self._theme.display_outline_color)
|
|
||||||
if display_outline_size > 1:
|
|
||||||
self._get_extent_and_render(line, footer,
|
|
||||||
(x + display_outline_size, y + display_outline_size),
|
|
||||||
draw=True,
|
|
||||||
color = self._theme.display_outline_color)
|
|
||||||
self._get_extent_and_render(line, footer,
|
|
||||||
(x - display_outline_size, y + display_outline_size),
|
|
||||||
draw=True,
|
|
||||||
color = self._theme.display_outline_color)
|
|
||||||
self._get_extent_and_render(line, footer,
|
|
||||||
(x + display_outline_size, y - display_outline_size),
|
|
||||||
draw=True,
|
|
||||||
color = self._theme.display_outline_color)
|
|
||||||
self._get_extent_and_render(line, footer,
|
|
||||||
(x - display_outline_size, y - display_outline_size),
|
|
||||||
draw=True,
|
|
||||||
color = self._theme.display_outline_color)
|
|
||||||
self._get_extent_and_render(line, footer,tlcorner=(x, y),
|
|
||||||
draw=True)
|
|
||||||
y += h
|
y += h
|
||||||
if linenum == 0:
|
if linenum == 0:
|
||||||
self._first_line_right_extent = rightextent
|
self._first_line_right_extent = rightextent
|
||||||
@ -535,7 +506,7 @@ class Renderer(object):
|
|||||||
self.mainFont.setPixelSize(self._theme.font_main_proportion)
|
self.mainFont.setPixelSize(self._theme.font_main_proportion)
|
||||||
|
|
||||||
def _get_extent_and_render(self, line, footer, tlcorner=(0, 0), draw=False,
|
def _get_extent_and_render(self, line, footer, tlcorner=(0, 0), draw=False,
|
||||||
color=None):
|
color=None, outline_size=None, outline_color=None):
|
||||||
"""
|
"""
|
||||||
Find bounding box of text - as render_single_line. If draw is set,
|
Find bounding box of text - as render_single_line. If draw is set,
|
||||||
actually draw the text to the current DC as well return width and
|
actually draw the text to the current DC as well return width and
|
||||||
@ -561,31 +532,37 @@ class Renderer(object):
|
|||||||
font = self.footerFont
|
font = self.footerFont
|
||||||
else:
|
else:
|
||||||
font = self.mainFont
|
font = self.mainFont
|
||||||
self.painter.setFont(font)
|
|
||||||
if color is None:
|
|
||||||
if footer:
|
|
||||||
self.painter.setPen(QtGui.QColor(self._theme.font_footer_color))
|
|
||||||
else:
|
|
||||||
self.painter.setPen(QtGui.QColor(self._theme.font_main_color))
|
|
||||||
else:
|
|
||||||
self.painter.setPen(QtGui.QColor(color))
|
|
||||||
x, y = tlcorner
|
|
||||||
metrics = QtGui.QFontMetrics(font)
|
metrics = QtGui.QFontMetrics(font)
|
||||||
w = metrics.width(line)
|
w = metrics.width(line)
|
||||||
h = metrics.height()
|
h = metrics.height()
|
||||||
if draw:
|
if draw:
|
||||||
self.painter.drawText(x, y + metrics.ascent(), line)
|
self.painter.setFont(font)
|
||||||
if self._theme.display_slideTransition:
|
|
||||||
# Print 2nd image with 70% weight
|
|
||||||
self.painter2.setFont(font)
|
|
||||||
if color is None:
|
if color is None:
|
||||||
if footer:
|
if footer:
|
||||||
self.painter2.setPen(QtGui.QColor(self._theme.font_footer_color))
|
pen = QtGui.QColor(self._theme.font_footer_color)
|
||||||
else:
|
else:
|
||||||
self.painter2.setPen(QtGui.QColor(self._theme.font_main_color))
|
pen = QtGui.QColor(self._theme.font_main_color)
|
||||||
else:
|
else:
|
||||||
self.painter2.setPen(QtGui.QColor(color))
|
pen = QtGui.QColor(color)
|
||||||
if draw:
|
x, y = tlcorner
|
||||||
|
if outline_size:
|
||||||
|
path = QtGui.QPainterPath()
|
||||||
|
path.addText(QtCore.QPointF(x, y + metrics.ascent()), font, line)
|
||||||
|
self.painter.setBrush(self.painter.pen().brush())
|
||||||
|
self.painter.setPen(QtGui.QPen(QtGui.QColor(outline_color), outline_size))
|
||||||
|
self.painter.drawPath(path)
|
||||||
|
self.painter.setPen(pen)
|
||||||
|
self.painter.drawText(x, y + metrics.ascent(), line)
|
||||||
|
if self._theme.display_slideTransition:
|
||||||
|
# Print 2nd image with 70% weight
|
||||||
|
if outline_size:
|
||||||
|
path = QtGui.QPainterPath()
|
||||||
|
path.addText(QtCore.QPointF(x, y + metrics.ascent()), font, line)
|
||||||
|
self.painter2.setBrush(self.painter2.pen().brush())
|
||||||
|
self.painter2.setPen(QtGui.QPen(QtGui.QColor(outline_color), outline_size))
|
||||||
|
self.painter2.drawPath(path)
|
||||||
|
self.painter2.setFont(font)
|
||||||
|
self.painter2.setPen(pen)
|
||||||
self.painter2.drawText(x, y + metrics.ascent(), line)
|
self.painter2.drawText(x, y + metrics.ascent(), line)
|
||||||
return (w, h)
|
return (w, h)
|
||||||
|
|
||||||
|
@ -134,8 +134,12 @@ class ServiceItem(object):
|
|||||||
else:
|
else:
|
||||||
self.RenderManager.set_override_theme(self.theme)
|
self.RenderManager.set_override_theme(self.theme)
|
||||||
format = self._display_frames[row][u'text'].split(u'\n')
|
format = self._display_frames[row][u'text'].split(u'\n')
|
||||||
frame = self.RenderManager.generate_slide(format,
|
#if screen blank then do not display footer
|
||||||
self.raw_footer)
|
if format[0]:
|
||||||
|
frame = self.RenderManager.generate_slide(format,
|
||||||
|
self.raw_footer)
|
||||||
|
else:
|
||||||
|
frame = self.RenderManager.generate_slide(format,u'')
|
||||||
return frame
|
return frame
|
||||||
|
|
||||||
def add_from_image(self, path, title, image):
|
def add_from_image(self, path, title, image):
|
||||||
|
@ -452,8 +452,10 @@ class SlideController(QtGui.QWidget):
|
|||||||
#If verse handle verse number else tag only
|
#If verse handle verse number else tag only
|
||||||
if bits[0] == self.trUtf8('Verse'):
|
if bits[0] == self.trUtf8('Verse'):
|
||||||
tag = u'%s%s' % (bits[0][0], bits[1][0:] )
|
tag = u'%s%s' % (bits[0][0], bits[1][0:] )
|
||||||
|
row = bits[1][0:]
|
||||||
else:
|
else:
|
||||||
tag = bits[0]
|
tag = bits[0]
|
||||||
|
row = bits[0][0:1]
|
||||||
try:
|
try:
|
||||||
test = self.slideList[tag]
|
test = self.slideList[tag]
|
||||||
except:
|
except:
|
||||||
|
@ -169,6 +169,8 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
|
|||||||
self.loadAuthors()
|
self.loadAuthors()
|
||||||
self.loadTopics()
|
self.loadTopics()
|
||||||
self.loadBooks()
|
self.loadBooks()
|
||||||
|
#it's a new song to preview is not possible
|
||||||
|
self.previewButton.setVisible(False)
|
||||||
|
|
||||||
def loadSong(self, id, preview):
|
def loadSong(self, id, preview):
|
||||||
log.debug(u'Load Song')
|
log.debug(u'Load Song')
|
||||||
|
Loading…
Reference in New Issue
Block a user