adium/adium

Parents 027072126a8c
Children dae9a7702cb7
Always scale user icons with 72 DPI, to avoid sending huge files on retina MBPs.

Fixes #16063
--- a/Frameworks/AIUtilities Framework/Source/AIImageDrawingAdditions.h Fri Jul 13 22:01:15 2012 +0200
+++ b/Frameworks/AIUtilities Framework/Source/AIImageDrawingAdditions.h Fri Jul 20 12:25:56 2012 +0200
@@ -26,6 +26,7 @@
- (void)tileInRect:(NSRect)rect;
- (NSImage *)imageByScalingToSize:(NSSize)size;
+- (NSImage *)imageByScalingToSize:(NSSize)size DPI:(CGFloat)dpi;
- (NSImage *)imageByFadingToFraction:(CGFloat)delta;
- (NSImage *)imageByScalingToSize:(NSSize)size fraction:(CGFloat)delta;
- (NSImage *)imageByScalingForMenuItem;
--- a/Frameworks/AIUtilities Framework/Source/AIImageDrawingAdditions.m Fri Jul 13 22:01:15 2012 +0200
+++ b/Frameworks/AIUtilities Framework/Source/AIImageDrawingAdditions.m Fri Jul 20 12:25:56 2012 +0200
@@ -18,6 +18,11 @@
#import "AIImageAdditions.h"
#import "AIBezierPathAdditions.h"
+@interface NSScreen (LionCompatibility)
+
+- (CGFloat)backingScaleFactor;
+
+@end
@implementation NSImage (AIImageDrawingAdditions)
@@ -59,6 +64,17 @@
return ([self imageByScalingToSize:size fraction:1.0f flipImage:NO proportionally:YES allowAnimation:YES]);
}
+- (NSImage *)imageByScalingToSize:(NSSize)size DPI:(CGFloat)dpi
+{
+ CGFloat backingScaleFactor = dpi / 72.0;
+
+ if ([[NSScreen mainScreen] respondsToSelector:@selector(backingScaleFactor)]) {
+ backingScaleFactor /= [[NSScreen mainScreen] backingScaleFactor];
+ }
+
+ return ([self imageByScalingToSize:NSMakeSize(size.width * backingScaleFactor, size.height * backingScaleFactor) fraction:1.0f flipImage:NO proportionally:YES allowAnimation:YES]);
+}
+
- (NSImage *)imageByFadingToFraction:(CGFloat)delta
{
return [self imageByScalingToSize:[self size] fraction:delta flipImage:NO proportionally:NO allowAnimation:YES];
--- a/Plugins/Purple Service/CBPurpleAccount.m Fri Jul 13 22:01:15 2012 +0200
+++ b/Plugins/Purple Service/CBPurpleAccount.m Fri Jul 20 12:25:56 2012 +0200
@@ -2608,8 +2608,8 @@
purple_buddy_icon_get_scale_size(&prpl_info->icon_spec, &width, &height);
// Determine the scaled size. If it's too big, scale to the largest permissable size
- image = [image imageByScalingToSize:NSMakeSize(width, height)];
-
+ image = [image imageByScalingToSize:NSMakeSize(width, height) DPI:72.0];
+
// Our original data is no longer valid, since we had to scale to a different size
imageData = nil;
AILog(@"%@: Scaled image to size %@", self, NSStringFromSize([image size]));