Philipp Hörist pushed to branch mainwindow at gajim / gajim

Commits:

1 changed file:

Changes:

  • gajim/gtk/avatar.py
    ... ... @@ -86,10 +86,7 @@ def generate_avatar(letters, color, size, scale):
    86 86
     def generate_default_avatar(letter, color_string, size, scale, style='circle'):
    
    87 87
         color = text_to_color(color_string)
    
    88 88
         surface = generate_avatar(letter, color, size, scale)
    
    89
    -    if style == 'circle':
    
    90
    -        surface = clip_circle(surface)
    
    91
    -    elif style == 'round-corners':
    
    92
    -        surface = round_corners(surface)
    
    89
    +    surface = clip(surface, style)
    
    93 90
         surface.set_device_scale(scale, scale)
    
    94 91
         return surface
    
    95 92
     
    
    ... ... @@ -97,10 +94,7 @@ def generate_default_avatar(letter, color_string, size, scale, style='circle'):
    97 94
     @lru_cache(maxsize=None)
    
    98 95
     def make_workspace_avatar(letter, color, size, scale, style='round-corners'):
    
    99 96
         surface = generate_avatar(letter, color, size, scale)
    
    100
    -    if style == 'circle':
    
    101
    -        surface = clip_circle(surface)
    
    102
    -    elif style == 'round-corners':
    
    103
    -        surface = round_corners(surface)
    
    97
    +    surface = clip(surface, style)
    
    104 98
         surface.set_device_scale(scale, scale)
    
    105 99
         return surface
    
    106 100
     
    
    ... ... @@ -178,6 +172,14 @@ def square(surface, size):
    178 172
         return context.get_target()
    
    179 173
     
    
    180 174
     
    
    175
    +def clip(surface, mode):
    
    176
    +    if mode == 'circle':
    
    177
    +        return clip_circle(surface)
    
    178
    +    if mode == 'round-corners':
    
    179
    +        return round_corners(surface)
    
    180
    +    raise ValueError('clip mode unknown: %s' % mode)
    
    181
    +
    
    182
    +
    
    181 183
     def clip_circle(surface):
    
    182 184
         new_surface = cairo.ImageSurface(cairo.Format.ARGB32,
    
    183 185
                                          surface.get_width(),
    
    ... ... @@ -228,23 +230,6 @@ def round_corners(surface):
    228 230
         return context.get_target()
    
    229 231
     
    
    230 232
     
    
    231
    -def get_avatar_from_pixbuf(pixbuf, scale, show=None):
    
    232
    -    size = max(pixbuf.get_width(), pixbuf.get_height())
    
    233
    -    size *= scale
    
    234
    -    surface = Gdk.cairo_surface_create_from_pixbuf(pixbuf, scale)
    
    235
    -    if surface is None:
    
    236
    -        return None
    
    237
    -    surface = square(surface, size)
    
    238
    -    if surface is None:
    
    239
    -        return None
    
    240
    -    surface = clip_circle(surface)
    
    241
    -    if surface is None:
    
    242
    -        return None
    
    243
    -    if show is not None:
    
    244
    -        return add_status_to_avatar(surface, show)
    
    245
    -    return surface
    
    246
    -
    
    247
    -
    
    248 233
     class AvatarStorage(metaclass=Singleton):
    
    249 234
         def __init__(self):
    
    250 235
             self._cache = defaultdict(dict)
    
    ... ... @@ -276,7 +261,7 @@ def get_surface(self,
    276 261
                 if surface is not None:
    
    277 262
                     return surface
    
    278 263
     
    
    279
    -            surface = self._get_avatar_from_storage(contact, size, scale)
    
    264
    +            surface = self._get_avatar_from_storage(contact, size, scale, style)
    
    280 265
                 if surface is not None:
    
    281 266
                     if show is not None:
    
    282 267
                         surface = add_status_to_avatar(surface, show)
    
    ... ... @@ -294,7 +279,13 @@ def get_surface(self,
    294 279
             self._cache[jid][(size, scale, show)] = surface
    
    295 280
             return surface
    
    296 281
     
    
    297
    -    def get_muc_surface(self, account, jid, size, scale, default=False):
    
    282
    +    def get_muc_surface(self,
    
    283
    +                        account,
    
    284
    +                        jid,
    
    285
    +                        size,
    
    286
    +                        scale,
    
    287
    +                        default=False,
    
    288
    +                        style='circle'):
    
    298 289
             if not default:
    
    299 290
                 surface = self._cache[jid].get((size, scale))
    
    300 291
                 if surface is not None:
    
    ... ... @@ -305,14 +296,14 @@ def get_muc_surface(self, account, jid, size, scale, default=False):
    305 296
                     surface = self.surface_from_filename(avatar_sha, size, scale)
    
    306 297
                     if surface is None:
    
    307 298
                         return None
    
    308
    -                surface = clip_circle(surface)
    
    299
    +                surface = clip(surface, style)
    
    309 300
                     self._cache[jid][(size, scale)] = surface
    
    310 301
                     return surface
    
    311 302
     
    
    312 303
             con = app.connections[account]
    
    313 304
             name = get_groupchat_name(con, jid)
    
    314 305
             letter = self._generate_letter(name)
    
    315
    -        surface = generate_default_avatar(letter, str(jid), size, scale)
    
    306
    +        surface = generate_default_avatar(letter, str(jid), size, scale, style)
    
    316 307
             self._cache[jid][(size, scale)] = surface
    
    317 308
             return surface
    
    318 309
     
    
    ... ... @@ -414,7 +405,7 @@ def _load_surface_from_storage(self, filename, size, scale):
    414 405
             surface = Gdk.cairo_surface_create_from_pixbuf(pixbuf, scale)
    
    415 406
             return square(surface, size)
    
    416 407
     
    
    417
    -    def _get_avatar_from_storage(self, contact, size, scale):
    
    408
    +    def _get_avatar_from_storage(self, contact, size, scale, style):
    
    418 409
             avatar_sha = contact.avatar_sha
    
    419 410
             if avatar_sha is None:
    
    420 411
                 return None
    
    ... ... @@ -422,7 +413,7 @@ def _get_avatar_from_storage(self, contact, size, scale):
    422 413
             surface = self._load_surface_from_storage(avatar_sha, size, scale)
    
    423 414
             if surface is None:
    
    424 415
                 return None
    
    425
    -        return clip_circle(surface)
    
    416
    +        return clip(surface, style)
    
    426 417
     
    
    427 418
         @staticmethod
    
    428 419
         def _generate_letter(name):