From 62a031982e9da73bfc70a336404cabf1fcf91f43 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sat, 4 Sep 2010 16:51:18 +0100 Subject: [PATCH 1/2] Renderer cleanup --- openlp/core/lib/renderer.py | 93 +++++++------------------------------ 1 file changed, 17 insertions(+), 76 deletions(-) diff --git a/openlp/core/lib/renderer.py b/openlp/core/lib/renderer.py index 39eff80bd..e7689d012 100644 --- a/openlp/core/lib/renderer.py +++ b/openlp/core/lib/renderer.py @@ -69,21 +69,11 @@ class Renderer(object): self.theme_name = theme.theme_name if theme.background_type == u'image': if theme.background_filename: - self.set_bg_image(theme.background_filename) - - def set_bg_image(self, filename): - """ - Set a background image. - - ``filename`` - The name of the image file. - """ - log.debug(u'set bg image %s', filename) - self._bg_image_filename = unicode(filename) - if self.frame: - self.bg_image = resize_image(self._bg_image_filename, - self.frame.width(), - self.frame.height()) + self._bg_image_filename = unicode(filename) + if self.frame: + self.bg_image = resize_image(self._bg_image_filename, + self.frame.width(), + self.frame.height()) def set_text_rectangle(self, rect_main, rect_footer): """ @@ -99,7 +89,7 @@ class Renderer(object): self._rect = rect_main self._rect_footer = rect_footer - def set_frame_dest(self, frame_width, frame_height, preview=False): + def set_frame_dest(self, frame_width, frame_height): """ Set the size of the slide. @@ -109,11 +99,7 @@ class Renderer(object): ``frame_height`` The height of the slide. - ``preview`` - Defaults to *False*. Whether or not to generate a preview. """ - if preview: - self.bg_frame = None log.debug(u'set frame dest (frame) w %d h %d', frame_width, frame_height) self.frame = QtGui.QImage(frame_width, frame_height, @@ -121,8 +107,17 @@ class Renderer(object): if self._bg_image_filename and not self.bg_image: self.bg_image = resize_image(self._bg_image_filename, self.frame.width(), self.frame.height()) - if self.bg_frame is None: - self._generate_background_frame() + if self._theme.background_type == u'image': + self.bg_frame = QtGui.QImage(self.frame.width(), + self.frame.height(), QtGui.QImage.Format_ARGB32_Premultiplied) + painter = QtGui.QPainter() + painter.begin(self.bg_frame) + painter.fillRect(self.frame.rect(), QtCore.Qt.black) + if self.bg_image: + painter.drawImage(0, 0, self.bg_image) + painter.end() + else: + self.bg_frame = None def format_slide(self, words, line_break): """ @@ -180,57 +175,3 @@ class Renderer(object): formatted.append(shell % old_html_text) log.debug(u'format_slide - End') return formatted - - def _generate_background_frame(self): - """ - Generate a background frame to the same size as the frame to be used. - Results are cached for performance reasons. - """ - assert(self._theme) - self.bg_frame = QtGui.QImage(self.frame.width(), - self.frame.height(), QtGui.QImage.Format_ARGB32_Premultiplied) - log.debug(u'render background %s start', self._theme.background_type) - if self._theme.background_type == u'solid': - self.bg_frame = None -# painter.fillRect(self.frame.rect(), -# QtGui.QColor(self._theme.background_color)) - elif self._theme.background_type == u'gradient': - self.bg_frame = None - # gradient -# gradient = None -# if self._theme.background_direction == u'horizontal': -# w = int(self.frame.width()) / 2 -# # vertical -# gradient = QtGui.QLinearGradient(w, 0, w, self.frame.height()) -# elif self._theme.background_direction == u'vertical': -# h = int(self.frame.height()) / 2 -# # Horizontal -# gradient = QtGui.QLinearGradient(0, h, self.frame.width(), h) -# else: -# w = int(self.frame.width()) / 2 -# h = int(self.frame.height()) / 2 -# # Circular -# gradient = QtGui.QRadialGradient(w, h, w) -# gradient.setColorAt(0, -# QtGui.QColor(self._theme.background_startColor)) -# gradient.setColorAt(1, -# QtGui.QColor(self._theme.background_endColor)) -# painter.setBrush(QtGui.QBrush(gradient)) -# rect_path = QtGui.QPainterPath() -# max_x = self.frame.width() -# max_y = self.frame.height() -# rect_path.moveTo(0, 0) -# rect_path.lineTo(0, max_y) -# rect_path.lineTo(max_x, max_y) -# rect_path.lineTo(max_x, 0) -# rect_path.closeSubpath() -# painter.drawPath(rect_path) -# painter.end() - elif self._theme.background_type == u'image': - # image - painter = QtGui.QPainter() - painter.begin(self.bg_frame) - painter.fillRect(self.frame.rect(), QtCore.Qt.black) - if self.bg_image: - painter.drawImage(0, 0, self.bg_image) - painter.end() From b9bb5b8c4fdc66d049985fdb5d09694cf8a71108 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sat, 4 Sep 2010 17:14:56 +0100 Subject: [PATCH 2/2] Cleanups --- openlp/core/lib/renderer.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/openlp/core/lib/renderer.py b/openlp/core/lib/renderer.py index 5a98faaff..0cb92ad39 100644 --- a/openlp/core/lib/renderer.py +++ b/openlp/core/lib/renderer.py @@ -70,7 +70,7 @@ class Renderer(object): self.theme_name = theme.theme_name if theme.background_type == u'image': if theme.background_filename: - self._bg_image_filename = unicode(filename) + self._bg_image_filename = unicode(theme.background_filename) if self.frame: self.bg_image = resize_image(self._bg_image_filename, self.frame.width(), @@ -138,14 +138,14 @@ class Renderer(object): for verse in verses_text: lines = verse.split(u'\n') for line in lines: - text.append(line) + text.append(line) web = QtWebKit.QWebView() web.resize(self._rect.width(), self._rect.height()) web.setVisible(False) frame = web.page().mainFrame() # Adjust width and height to account for shadow. outline done in css - width = self._rect.width() - int(self._theme.display_shadow_size) - height = self._rect.height() - int(self._theme.display_shadow_size) + width = self._rect.width() - int(self._theme.display_shadow_size) + height = self._rect.height() - int(self._theme.display_shadow_size) shell = u'' \ u'
' % \ (build_lyrics_format_css(self._theme, width, height),