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,
|
||||
tlcorner=(x + display_shadow_size, y + display_shadow_size),
|
||||
draw=True, color = self._theme.display_shadow_color)
|
||||
if self._theme.display_outline:
|
||||
self._get_extent_and_render(line, footer,
|
||||
(x + display_outline_size, y), 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, 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)
|
||||
self._get_extent_and_render(line, footer, tlcorner=(x, y), draw=True,
|
||||
outline_size=display_outline_size,
|
||||
outline_color=self._theme.display_outline_color)
|
||||
y += h
|
||||
if linenum == 0:
|
||||
self._first_line_right_extent = rightextent
|
||||
|
@ -535,7 +506,7 @@ class Renderer(object):
|
|||
self.mainFont.setPixelSize(self._theme.font_main_proportion)
|
||||
|
||||
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,
|
||||
actually draw the text to the current DC as well return width and
|
||||
|
@ -561,31 +532,37 @@ class Renderer(object):
|
|||
font = self.footerFont
|
||||
else:
|
||||
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)
|
||||
w = metrics.width(line)
|
||||
h = metrics.height()
|
||||
if draw:
|
||||
self.painter.setFont(font)
|
||||
if color is None:
|
||||
if footer:
|
||||
pen = QtGui.QColor(self._theme.font_footer_color)
|
||||
else:
|
||||
pen = QtGui.QColor(self._theme.font_main_color)
|
||||
else:
|
||||
pen = QtGui.QColor(color)
|
||||
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)
|
||||
if color is None:
|
||||
if footer:
|
||||
self.painter2.setPen(QtGui.QColor(self._theme.font_footer_color))
|
||||
else:
|
||||
self.painter2.setPen(QtGui.QColor(self._theme.font_main_color))
|
||||
else:
|
||||
self.painter2.setPen(QtGui.QColor(color))
|
||||
if draw:
|
||||
self.painter2.setPen(pen)
|
||||
self.painter2.drawText(x, y + metrics.ascent(), line)
|
||||
return (w, h)
|
||||
|
||||
|
|
|
@ -134,8 +134,12 @@ class ServiceItem(object):
|
|||
else:
|
||||
self.RenderManager.set_override_theme(self.theme)
|
||||
format = self._display_frames[row][u'text'].split(u'\n')
|
||||
#if screen blank then do not display footer
|
||||
if format[0]:
|
||||
frame = self.RenderManager.generate_slide(format,
|
||||
self.raw_footer)
|
||||
else:
|
||||
frame = self.RenderManager.generate_slide(format,u'')
|
||||
return frame
|
||||
|
||||
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 bits[0] == self.trUtf8('Verse'):
|
||||
tag = u'%s%s' % (bits[0][0], bits[1][0:] )
|
||||
row = bits[1][0:]
|
||||
else:
|
||||
tag = bits[0]
|
||||
row = bits[0][0:1]
|
||||
try:
|
||||
test = self.slideList[tag]
|
||||
except:
|
||||
|
|
|
@ -169,6 +169,8 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
|
|||
self.loadAuthors()
|
||||
self.loadTopics()
|
||||
self.loadBooks()
|
||||
#it's a new song to preview is not possible
|
||||
self.previewButton.setVisible(False)
|
||||
|
||||
def loadSong(self, id, preview):
|
||||
log.debug(u'Load Song')
|
||||
|
|
Loading…
Reference in New Issue