Compare commits

...

2 Commits

Author SHA1 Message Date
Martin Wagner
7f2cccdbab fixed fallback cover placing 2022-05-14 15:22:19 +02:00
Martin Wagner
2369aca946 fixed blurry fallback covers 2022-05-14 14:46:46 +02:00

View File

@ -2868,8 +2868,7 @@ class MainCover(Gtk.DrawingArea):
super().__init__()
self._client=client
self._settings=settings
self._pixbuf=GdkPixbuf.Pixbuf()
self._surface=Gdk.cairo_surface_create_from_pixbuf(self._pixbuf, 0, None)
self._fallback=True
# connect
self._client.emitter.connect("current_song", self._refresh)
@ -2877,8 +2876,7 @@ class MainCover(Gtk.DrawingArea):
self._client.emitter.connect("reconnected", self._on_reconnected)
def _clear(self):
self._pixbuf=GdkPixbuf.Pixbuf.new_from_file_at_size(FALLBACK_COVER, 1000, 1000)
self._surface=Gdk.cairo_surface_create_from_pixbuf(self._pixbuf, 0, None)
self._fallback=True
self.queue_draw()
def _refresh(self, *args):
@ -2887,6 +2885,7 @@ class MainCover(Gtk.DrawingArea):
else:
self._pixbuf=self._client.current_cover.get_pixbuf()
self._surface=Gdk.cairo_surface_create_from_pixbuf(self._pixbuf, 0, None)
self._fallback=False
self.queue_draw()
def _on_disconnected(self, *args):
@ -2897,14 +2896,17 @@ class MainCover(Gtk.DrawingArea):
self.set_sensitive(True)
def do_draw(self, context):
height_factor=self.get_allocated_height()/self._pixbuf.get_height()
width_factor=self.get_allocated_width()/self._pixbuf.get_width()
if height_factor < width_factor:
context.scale(height_factor, height_factor)
context.set_source_surface(self._surface, ((self.get_allocated_width()/height_factor)-self._pixbuf.get_width())/2, 0)
if self._fallback:
size=min(self.get_allocated_height(), self.get_allocated_width())
self._pixbuf=GdkPixbuf.Pixbuf.new_from_file_at_size(FALLBACK_COVER, size, size)
self._surface=Gdk.cairo_surface_create_from_pixbuf(self._pixbuf, 0, None)
scale_factor=1
else:
context.scale(width_factor, width_factor)
context.set_source_surface(self._surface, 0, ((self.get_allocated_height()/width_factor)-self._pixbuf.get_height())/2)
scale_factor=min(self.get_allocated_width()/self._pixbuf.get_width(), self.get_allocated_height()/self._pixbuf.get_height())
context.scale(scale_factor, scale_factor)
x=((self.get_allocated_width()/scale_factor)-self._pixbuf.get_width())/2
y=((self.get_allocated_height()/scale_factor)-self._pixbuf.get_height())/2
context.set_source_surface(self._surface, x, y)
context.paint()
class CoverLyricsWindow(Gtk.Overlay):