public TweetImageFetchRequest(TweetImageInfo image, UIView view, bool placeholder) { var scale = UIScreen.MainScreen.Scale; tweetImage = image; targetContentMode = view.ContentMode; targetDimensions = TIPImageUtils.TIPDimensionsFromView(view); forcePlaceholder = placeholder; if (forcePlaceholder) { imageUrl = new NSUrl("placeholder://placeholder.com/placeholder.jpg"); } else { if (tweetImage.MediaUrl.StartsWith("https://pbs.twimg.com/media/", StringComparison.OrdinalIgnoreCase)) { var variantName = DetermineVariant(tweetImage.OriginalDimensions, targetDimensions, targetContentMode); imageUrl = new NSUrl($"{tweetImage.MediaUrlWithoutExtension}?format={tweetImage.Format}&name={variantName}"); } else { imageUrl = new NSUrl(tweetImage.MediaUrl); } } }
private string DetermineVariant(CGSize aspectRatio, CGSize dimensions, UIViewContentMode contentMode) { if (aspectRatio.Height <= 0 || aspectRatio.Width <= 0) { aspectRatio = new CGSize(1, 1); } var scaleToFit = (UIViewContentMode.ScaleAspectFit == contentMode); var scaledToTargetDimensions = TIPImageUtils.TIPDimensionsScaledToTargetSizing(aspectRatio, dimensions, (scaleToFit ? UIViewContentMode.ScaleAspectFit : UIViewContentMode.ScaleAspectFill)); string selectedVariantName = null; foreach (var variant in variantSizeMap) { var variantSize = new CGSize(variant.Value, variant.Value); var scaledToVariantDimensions = TIPImageUtils.TIPDimensionsScaledToTargetSizing(aspectRatio, variantSize, UIViewContentMode.ScaleAspectFit); if (scaledToVariantDimensions.Width >= scaledToTargetDimensions.Width && scaledToVariantDimensions.Height >= scaledToTargetDimensions.Height) { selectedVariantName = variant.Key; break; } } if (string.IsNullOrEmpty(selectedVariantName)) { selectedVariantName = variantSizeMap.Keys.LastOrDefault(); } return(selectedVariantName); }
public bool FetchHelperShouldContinueLoadingAfterFetching(TIPImageViewFetchHelper helper, ITIPImageFetchResult previewImageResult) { if (previewImageResult.ImageIsTreatedAsPlaceholder) { return(true); } var request = helper.FetchRequest; if (request.GetOptions().HasFlag(TIPImageFetchOptions.TreatAsPlaceholder)) { // would be a downgrade, stop return(false); } var originalDimensions = previewImageResult.ImageOriginalDimensions; var viewDimensions = TIPImageUtils.TIPDimensionsFromView(helper.FetchImageView); if (originalDimensions.Height >= viewDimensions.Height && originalDimensions.Width >= viewDimensions.Width) { return(false); } return(true); }