def __update_image(self): height = self.__size if not height: return if self.__resize: height = min(self.__max_size, height) width = self.__max_size else: width = height if self.__path is None: pixbuf = self.__get_no_cover(width, height) else: try: round_thumbs = config.getboolean("albumart", "round") pixbuf = thumbnails.get_thumbnail(self.__path, (width, height)) pixbuf = thumbnails.add_border(pixbuf, 80, round_thumbs) except gobject.GError: pixbuf = self.__get_no_cover(width, height) self.set_from_pixbuf(pixbuf) if self.__resize: self.__ignore = True self.__sig = self.connect_after("size-allocate", self.__stop_ignore)
def do_draw(self, cairo_context): pixbuf = self._get_pixbuf() if not pixbuf: return alloc = self.get_allocation() width, height = alloc.width, alloc.height scale_factor = get_scale_factor(self) width *= scale_factor height *= scale_factor if self._path: if width < 2 or height < 2: return round_thumbs = config.getboolean("albumart", "round") pixbuf = thumbnails.scale( pixbuf, (width - 2 * scale_factor, height - 2 * scale_factor)) pixbuf = thumbnails.add_border(pixbuf, 80, round=round_thumbs, width=scale_factor) else: pixbuf = thumbnails.scale(pixbuf, (width, height)) style_context = self.get_style_context() pbosf = get_pbosf_for_pixbuf(self, pixbuf) pbosf_render(style_context, cairo_context, pbosf, 0, 0)
def scan_cover(self, force=False): if (self.scanned and not force) or not self.songs: return self.scanned = True song = iter(self.songs).next() cover = song.find_cover() if cover is not None: try: round = config.getboolean("albumart", "round") self.cover = thumbnails.get_thumbnail(cover.name, (48, 48)) self.cover = thumbnails.add_border(self.cover, 30, round) except gobject.GError: return
def scan_cover(self, force=False): if (self.scanned and not force) or not self.songs: return self.scanned = True song = iter(self.songs).next() cover = song.find_cover() if cover is not None: s = self.COVER_SIZE try: round = config.getboolean("albumart", "round") self.cover = thumbnails.get_thumbnail(cover.name, (s, s)) self.cover = thumbnails.add_border(self.cover, 30, round) except GLib.GError: return
def do_draw(self, cairo_context): pixbuf = self._get_pixbuf() if not pixbuf: return alloc = self.get_allocation() width, height = alloc.width, alloc.height if self._path: if width < 2 or height < 2: return round_thumbs = config.getboolean("albumart", "round") pixbuf = thumbnails.scale(pixbuf, (width - 2, height - 2)) pixbuf = thumbnails.add_border(pixbuf, 80, round_thumbs) else: pixbuf = thumbnails.scale(pixbuf, (width, height)) style_context = self.get_style_context() Gtk.render_icon(style_context, cairo_context, pixbuf, 0, 0)
def __add_cover_to_list(self, cover): try: pbloader = GdkPixbuf.PixbufLoader() pbloader.write(get_url(cover['thumbnail'])[0]) pbloader.close() scale_factor = get_scale_factor(self) size = self.THUMB_SIZE * scale_factor - scale_factor * 2 pixbuf = pbloader.get_pixbuf().scale_simple(size, size, GdkPixbuf.InterpType.BILINEAR) pixbuf = thumbnails.add_border( pixbuf, 80, round=True, width=scale_factor) thumb = get_pbosf_for_pixbuf(self, pixbuf) except (GLib.GError, IOError): pass else: def append(data): self.liststore.append(data) GLib.idle_add(append, [thumb, cover])
def test_add_border(self): res = thumbnails.add_border(self.small, 10) self.assertEqual(res.get_width(), 10 + 2) self.assertEqual(res.get_height(), 20 + 2)