static ImageSourceContainer BestGuessF9PResource(string reqResourcePathString, Assembly assembly) { if (assembly == null) { return(null); } var tuple = GetiOSBasePathAndExt(reqResourcePathString); if (tuple == null) { return(null); } var reqResBaseName = tuple.Item1; var reqResExt = tuple.Item2; string[] resourceNames = null; if (SortedAppleResources.ContainsKey(assembly)) { resourceNames = SortedAppleResources[assembly]; } if (resourceNames == null) { SortedAppleResources[assembly] = assembly.GetManifestResourceNames(); //SortedAppleResources = SortedAppleResources.Where(arg => !arg.Contains(".drawable")).ToArray(); Array.Sort <string>(SortedAppleResources[assembly]); resourceNames = SortedAppleResources[assembly]; } //resourceNames = resourceNames.Where(arg => arg.Contains(reqResBaseName)).ToArray(); var matchingResourceNames = new List <string>(); for (int i = 0; i < resourceNames.Length; i++) { if (resourceNames[i].Contains(reqResBaseName)) { matchingResourceNames.Add(resourceNames[i]); } } string resMultiple; var attempt = 0; do { var scale = AppleDensities[attempt].Scale; resMultiple = AppleDensityMatch(attempt++); foreach (var resourceName in matchingResourceNames) { tuple = GetiOSBasePathAndExt(resourceName); if (tuple != null) { if (tuple.Item1 == reqResBaseName + resMultiple) { if (reqResExt == null || reqResExt.ToLower() == tuple.Item2.ToLower()) { //_LastSuccessfulMode = Approach.iOS; //System.Diagnostics.Debug.WriteLine("Apple attempt = "+attempt + " resourceName="+resourceName); var result = new ImageSourceContainer(resourceName, scale); return(result); } } } } } while (attempt < AppleDensities.Count); System.Diagnostics.Debug.WriteLine("No matches found for resource name:" + reqResourcePathString); System.Console.WriteLine("No matches found for resource name:" + reqResourcePathString); return(null); }
private void LoadMain(Image element, Record record, string path) { //this.disposables.Clear(); var width = this.Width; var height = this.Height; var quality = this.ImageQualityInner; var cms = this.IsCmsEnabledInner; var priority = this.HasPriorityInner; var zoom = this.ZoomFactor; if (core.MetaImageExtention.Contains(System.IO.Path.GetExtension(path).ToLower())) { this.ChangeToMetaImage(record, path, zoom, width, height).FireAndForget(); return; } var option = new ImageLoadingOptions (width, height, this.IsFill, quality, cms); var tokenSource = new CancellationTokenSource(); var subject = new Subject <ImageSourceContainer>(); subject .LastOrDefaultAsync() .Take(1) .Select(x => { if (x != null) { return(x); } ImageSourceContainer image = null; if (this.Buffer.TryGetImage(path, quality, out image)) { return(image); } return(null); }) .ObserveOnUIDispatcher() .Subscribe(image => { if (image != null) { var p = this.RecordInner?.FullPath ?? this.FilePathInner; if (p == null) { this.ChangeSource(null, null, false); } else if (p.Equals(image?.FullPath)) { this.ChangeSource(image.Image, image.FullPath, image.Information != null && image.Information.Type == GraphicFileType.Gif && image.Quality >= ImageQuality.Resized); } } else { //this.ChangeSource(null, null, false); } this.disposables.Clear(); }); Disposable.Create(() => { tokenSource?.Cancel(true); }).AddTo(this.disposables); if (record != null) { //if (quality == ImageQuality.ThumbNail) //{ // this.Buffer.RequestLoading(record, option, subject, priority, tokenSource); //} //else //{ this.Buffer.RequestLoading(record, option, subject, priority, tokenSource.Token); //} } else { this.Buffer.RequestLoading(path, option, subject, priority, tokenSource.Token); } }