From 408008d3e73948533e21cdc54c4703fcd553ab32 Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Thu, 25 Oct 2018 15:54:12 -0400 Subject: [PATCH] Use different contact avatar assets depending on size of output. --- .../Contents.json | 0 .../contact-avatar-1024.png | Bin .../contact-avatar-84.imageset/Contents.json | 21 ++++++++++++++++++ .../contact-avatar-84.png | Bin 0 -> 2221 bytes .../utils/OWSContactAvatarBuilder.m | 16 ++++++++----- 5 files changed, 32 insertions(+), 5 deletions(-) rename Signal/Images.xcassets/{contact-avatar.imageset => contact-avatar-1024.imageset}/Contents.json (100%) rename Signal/Images.xcassets/{contact-avatar.imageset => contact-avatar-1024.imageset}/contact-avatar-1024.png (100%) create mode 100644 Signal/Images.xcassets/contact-avatar-84.imageset/Contents.json create mode 100644 Signal/Images.xcassets/contact-avatar-84.imageset/contact-avatar-84.png diff --git a/Signal/Images.xcassets/contact-avatar.imageset/Contents.json b/Signal/Images.xcassets/contact-avatar-1024.imageset/Contents.json similarity index 100% rename from Signal/Images.xcassets/contact-avatar.imageset/Contents.json rename to Signal/Images.xcassets/contact-avatar-1024.imageset/Contents.json diff --git a/Signal/Images.xcassets/contact-avatar.imageset/contact-avatar-1024.png b/Signal/Images.xcassets/contact-avatar-1024.imageset/contact-avatar-1024.png similarity index 100% rename from Signal/Images.xcassets/contact-avatar.imageset/contact-avatar-1024.png rename to Signal/Images.xcassets/contact-avatar-1024.imageset/contact-avatar-1024.png diff --git a/Signal/Images.xcassets/contact-avatar-84.imageset/Contents.json b/Signal/Images.xcassets/contact-avatar-84.imageset/Contents.json new file mode 100644 index 000000000..d347f46e9 --- /dev/null +++ b/Signal/Images.xcassets/contact-avatar-84.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "contact-avatar-84.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Signal/Images.xcassets/contact-avatar-84.imageset/contact-avatar-84.png b/Signal/Images.xcassets/contact-avatar-84.imageset/contact-avatar-84.png new file mode 100644 index 0000000000000000000000000000000000000000..8a0e5924bbf6cc54386ea2d264d8bf0e608ae0f8 GIT binary patch literal 2221 zcmZ`*2~-nT6lIMNL{Vdo%3_G1DV0nXA`(M{A#4H?AYzDHLoz^+EM^81typnmsVrKw zg(@19MXd^jD&m%iC{@6?f#QliDtfS@;$F2g0X3yK=giFi_uc#7^8cGNIsDn7j`#_9 z3kwU!@GxF1`W9ff9S(iEEOs)WFPr4Rs6Y#gngWM^#J1?%UKN%ATUa^wVYg)tjf@&? zC^CT%5k^I_B}zF}ELA2#RIOZvvMnq)S~fbALx`B9m8U6Sw$`6)VzALM1_NZ0iGnQl zCkvzaq#&glBC)7GR2rF!Cy_`TwKRzx%L^HhqceYU3WBKE0HD!ms2V0!sZIvyetv!c zjR7zi-YCNxUZz0AT5knBseh4A>+m30qL!%;nNmT*))glz(-D6%8FTdc>W>qVC4KRv zfCth-69g~|K&R4xp=6L&_7xds`KnAR`J9z1U7cpiNh$%LG)N995E#|bhjfS5_OtLm zL2AXSerKj4_UFdIB4@`!ure(jE5RIv4B;|3ri2E=Un;Br$^qvrTRizUIcvU?!AG*l>DcDkMS7b`0G&)A%Xnf0;xcIT>1;ZU&0vw}ENsB^;{by=W)WbPAT=aLlxl%enZ`9` zA;+d9Ce@e9>erex2E-fy>m{?^>Tg^Vigqp+k19WX1-ST(e6I-fo8cVJ3lwNAA8(zJ zLWm)(A2Y^KRrPv9jD2oyBEg}F$A5YyMYm)1x@k+fvjQEw<(E=6p9F0T?V;|J*F-{2 zS=ohMPxD6dHf+p3{UpnAs@PXMg_)e3+?H8T+|qUfK7UA~dD7BTQE|G_vEI`64(`S( zXO*==|9Mh1+4>JzPmf-&r@Up2+@c4s;&UU6w&!;oIe73T5K*AUIbE~K>Z106hmDd~ z0q@$pIuiADrD- zbb9yn?H%uTW)&iotft^`k~N+eW4f1jM;og;Z}G|LOMPQ{Yi!oJo!ftyvDqCaY@HRb zr?al~Skdl_S~&2L{gxjjPJ5?aj^{$enVPVxmVkTe(YyL>P4fFIUESjXpX}ZA{KSRU z{4-*a$fo3$)tl{Q8<`v5w;Lu4M?}%w2o1)kM0S_g{N&O%c~B}j9n2~T>=hn#Y@71V z={4NV{cy-^dpG$OmdM6j+PS1?hIQYzH`jJ3GrEbrHsh>w7xlVw*BnoJj`IQDHzQ~J zl3e^ELW0+ll|ILc9ZKpCtc7S3Jp_qCAbBR}%fT%u?>Kd0*q(;3sB*}=7SPffJYM&(zGZA}Hlx+HL$s(u*EQ`G x!OdlyqH;K=qPE!}V)FBU{(n!J8nlSfJCgnvb@<=Z5Fz#h5gt67w;%j&^}pswNNfNA literal 0 HcmV?d00001 diff --git a/SignalMessaging/utils/OWSContactAvatarBuilder.m b/SignalMessaging/utils/OWSContactAvatarBuilder.m index c5552c482..2a3528148 100644 --- a/SignalMessaging/utils/OWSContactAvatarBuilder.m +++ b/SignalMessaging/utils/OWSContactAvatarBuilder.m @@ -100,9 +100,8 @@ NS_ASSUME_NONNULL_BEGIN - (nullable UIImage *)buildDefaultImage { - UIImage *_Nullable cachedAvatar = nil; - [OWSContactAvatarBuilder.contactsManager.avatarCache imageForKey:self.cacheKey - diameter:(CGFloat)self.diameter]; + UIImage *_Nullable cachedAvatar = + [OWSContactAvatarBuilder.contactsManager.avatarCache imageForKey:self.cacheKey diameter:(CGFloat)self.diameter]; if (cachedAvatar) { return cachedAvatar; } @@ -135,11 +134,18 @@ NS_ASSUME_NONNULL_BEGIN if (initials.length == 0) { // We don't have a name for this contact, so we can't make an "initials" image. - UIImage *icon = [UIImage imageNamed:@"contact-avatar"]; + UIImage *icon; + if (self.diameter > kStandardAvatarSize) { + icon = [UIImage imageNamed:@"contact-avatar-1024"]; + } else { + icon = [UIImage imageNamed:@"contact-avatar-84"]; + } + CGFloat assetWidthPixels = CGImageGetWidth(icon.CGImage); // The contact-avatar asset is designed to be 28pt if the avatar is kStandardAvatarSize. // Adjust its size to reflect the actual output diameter. // We use an oversize 1024px version of the asset to ensure quality results for larger avatars. - CGFloat scaling = (self.diameter / (CGFloat)kStandardAvatarSize) * (28 / 1024.f); + CGFloat scaling = (self.diameter / (CGFloat)kStandardAvatarSize) * (28 / assetWidthPixels); + CGSize iconSize = CGSizeScale(icon.size, scaling); image = [OWSAvatarBuilder avatarImageWithIcon:icon iconSize:iconSize backgroundColor:color diameter:self.diameter];