CoverArt Browser  v2.0
Browse your cover-art albums in Rhythmbox
/home/foss/Downloads/coverart-browser/em.py
00001 import gi
00002 from gi.repository import Pango
00003 from gi.repository import Gtk
00004 
00005 gi.require_version("Gtk", "3.0")
00006 
00007 import logging
00008 
00009 LOG = logging.getLogger(__name__)
00010 
00011 
00012 def get_em(size=""):
00013     # calc the height of a character, use as 1em
00014     if size:
00015         m = '<%s>M</%s>' % (size, size)
00016     else:
00017         m = 'M'
00018 
00019     l = Gtk.Label()
00020     l.set_markup(m)
00021     w, h = l.get_layout().get_size()
00022     return h / Pango.SCALE
00023 
00024 
00025 def get_small_em():
00026     return get_em("small")
00027 
00028 
00029 def get_big_em():
00030     return get_em("big")
00031 
00032 
00033 EM = get_em()
00034 SMALL_EM = get_small_em()
00035 BIG_EM = get_big_em()
00036 LOG.debug("EM's: %s %s %s" % (EM, SMALL_EM, BIG_EM))
00037 
00038 
00039 def em(multiplier=1, min=1):
00040     return max(int(min), int(round(EM * multiplier, 0)))
00041 
00042 
00043 def small_em(multiplier=1, min=1):
00044     return max(int(min), int(round(SMALL_EM * multiplier, 0)))
00045 
00046 
00047 def big_em(multiplier=1, min=1):
00048     return max(int(min), int(round(BIG_EM * multiplier, 0)))
00049 
00050 
00051 # common values
00052 class StockEms:
00053     XLARGE = em(1.33, 5)
00054     LARGE = em(min=3)
00055     MEDIUM = em(0.666, 2)
00056     SMALL = em(0.333, 1)
 All Classes Functions