public void SetFileSource(string file, ImageTagSet tags) { sources = new [] { new NativeImageSource { Source = file, Tags = tags } }; }
public override Image WrapImage(string fileName, ImageTagSet tags, object img, Size reqSize) { var res = new Image(img, toolkit) { requestedSize = reqSize }; res.NativeRef.SetCustomLoaderSource(loader, fileName, tags); return(res); }
public void SetResourceSource(Assembly asm, string name, ImageTagSet tags) { sources = new [] { new NativeImageSource { Source = name, ResourceAssembly = asm, Tags = tags } }; }
public void SetCustomLoaderSource(IImageLoader imageLoader, string fileName, ImageTagSet tags) { sources = new [] { new NativeImageSource { CustomImageLoader = imageLoader, Source = fileName, Tags = tags } }; }
internal static Image FromCustomLoader(IImageLoader loader, string fileName, ImageTagSet tags) { var toolkit = Toolkit.CurrentEngine; if (toolkit == null) { throw new ToolkitNotInitializedException(); } var ld = new StreamImageLoader(toolkit, loader); return(LoadImage(ld, fileName, tags)); }
internal static Image FromFile(string file, ImageTagSet tagFilter) { var toolkit = Toolkit.CurrentEngine; if (toolkit == null) { throw new ToolkitNotInitializedException(); } var loader = new FileImageLoader(toolkit); return(LoadImage(loader, file, tagFilter)); }
internal static Image FromResource(Assembly assembly, string resource, ImageTagSet tagFilter) { if (assembly == null) { throw new ArgumentNullException("assembly"); } if (resource == null) { throw new ArgumentNullException("resource"); } var toolkit = Toolkit.CurrentEngine; if (toolkit == null) { throw new ToolkitNotInitializedException(); } var loader = new ResourceImageLoader(toolkit, assembly); return(LoadImage(loader, resource, tagFilter)); }
public override Image WrapImage(string fileName, ImageTagSet tags, object img, Size reqSize) { var res = new Image (img, toolkit) { requestedSize = reqSize }; var ld = loader; res.NativeRef.SetCustomLoaderSource (loader, fileName, tags); return res; }
static bool ParseImageHints(string baseName, string fileName, string ext, out int scale, out ImageTagSet tags) { scale = 1; tags = ImageTagSet.Empty; if (!fileName.StartsWith(baseName, StringComparison.Ordinal) || fileName.Length <= baseName.Length + 1 || (fileName [baseName.Length] != '@' && fileName [baseName.Length] != '~')) { return(false); } fileName = fileName.Substring(0, fileName.Length - ext.Length); int i = baseName.Length; if (fileName [i] == '~') { // For example: foo~dark@2x i++; var i2 = fileName.IndexOf('@', i); if (i2 != -1) { int i3 = fileName.IndexOf('x', i2 + 2); if (i3 == -1 || !int.TryParse(fileName.Substring(i2 + 1, i3 - i2 - 1), out scale)) { return(false); } } else { i2 = fileName.Length; } tags = new ImageTagSet(fileName.Substring(i, i2 - i)); return(true); } else { // For example: foo@2x~dark i++; var i2 = fileName.IndexOf('~', i + 1); if (i2 == -1) { i2 = fileName.Length; } i2--; if (i2 < 0 || fileName [i2] != 'x') { return(false); } var s = fileName.Substring(i, i2 - i); if (!int.TryParse(s, out scale)) { tags = null; return(false); } if (i2 + 2 < fileName.Length) { tags = new ImageTagSet(fileName.Substring(i2 + 2)); } return(true); } }
internal static Image FromCustomLoader(IImageLoader loader, string fileName, ImageTagSet tags) { var toolkit = Toolkit.CurrentEngine; if (toolkit == null) throw new ToolkitNotInitializedException (); var ld = new StreamImageLoader (toolkit, loader); return LoadImage (ld, fileName, tags); }
static Image LoadImage(ImageLoader loader, string fileName, ImageTagSet tagFilter) { var toolkit = Toolkit.CurrentEngine; if (toolkit == null) throw new ToolkitNotInitializedException (); var img = loader.LoadImage (fileName); var reqSize = toolkit.ImageBackendHandler.GetSize (img); var ext = GetExtension (fileName); var name = fileName.Substring (0, fileName.Length - ext.Length); var altImages = new List<Tuple<string,ImageTagSet,bool,object>> (); var tags = Context.RegisteredStyles; foreach (var r in loader.GetAlternativeFiles (fileName, name, ext)) { int scale; ImageTagSet fileTags; if (ParseImageHints (name, r, ext, out scale, out fileTags) && (tagFilter == null || tagFilter.Equals (fileTags))) { var rim = loader.LoadImage (r); if (rim != null) altImages.Add (new Tuple<string, ImageTagSet, bool, object> (r, fileTags, scale > 1, rim)); } } if (altImages.Count > 0) { altImages.Insert (0, new Tuple<string, ImageTagSet, bool, object> (fileName, ImageTagSet.Empty, false, img)); var list = new List<Tuple<Image,string[]>> (); foreach (var imageGroup in altImages.GroupBy (t => t.Item2)) { Image altImg; if (ext == ".9.png") altImg = CreateComposedNinePatch (toolkit, imageGroup); else { var ib = toolkit.ImageBackendHandler.CreateMultiResolutionImage (imageGroup.Select (i => i.Item4)); altImg = loader.WrapImage (fileName, imageGroup.Key, ib, reqSize); } list.Add (new Tuple<Image,string[]> (altImg, imageGroup.Key.AsArray)); } if (list.Count == 1) return list [0].Item1; else { return new ThemedImage (list, reqSize); } } else { var res = loader.WrapImage (fileName, ImageTagSet.Empty, img, reqSize); if (ext == ".9.png") res = new NinePatchImage (res.ToBitmap ()); return res; } }
static Image LoadImage(ImageLoader loader, string fileName, ImageTagSet tagFilter) { var toolkit = Toolkit.CurrentEngine; if (toolkit == null) { throw new ToolkitNotInitializedException(); } var img = loader.LoadImage(fileName); var reqSize = toolkit.ImageBackendHandler.GetSize(img); var ext = GetExtension(fileName); var name = fileName.Substring(0, fileName.Length - ext.Length); var altImages = new List <Tuple <string, ImageTagSet, bool, object> > (); var tags = Context.RegisteredStyles; foreach (var r in loader.GetAlternativeFiles(fileName, name, ext)) { int scale; ImageTagSet fileTags; if (ParseImageHints(name, r, ext, out scale, out fileTags) && (tagFilter == null || tagFilter.Equals(fileTags))) { var rim = loader.LoadImage(r); if (rim != null) { altImages.Add(new Tuple <string, ImageTagSet, bool, object> (r, fileTags, scale > 1, rim)); } } } if (altImages.Count > 0) { altImages.Insert(0, new Tuple <string, ImageTagSet, bool, object> (fileName, ImageTagSet.Empty, false, img)); var list = new List <Tuple <Image, string[]> > (); foreach (var imageGroup in altImages.GroupBy(t => t.Item2)) { Image altImg; if (ext == ".9.png") { altImg = CreateComposedNinePatch(toolkit, imageGroup); } else { var ib = toolkit.ImageBackendHandler.CreateMultiResolutionImage(imageGroup.Select(i => i.Item4)); altImg = loader.WrapImage(fileName, imageGroup.Key, ib, reqSize); } list.Add(new Tuple <Image, string[]> (altImg, imageGroup.Key.AsArray)); } if (list.Count == 1) { return(list [0].Item1); } else { return(new ThemedImage(list, reqSize)); } } else { var res = loader.WrapImage(fileName, ImageTagSet.Empty, img, reqSize); if (ext == ".9.png") { res = new NinePatchImage(res.ToBitmap()); } return(res); } }
public abstract Image WrapImage(string fileName, ImageTagSet tags, object img, Size reqSize);
static bool ParseImageHints(string baseName, string fileName, string ext, out int scale, out ImageTagSet tags) { scale = 1; tags = ImageTagSet.Empty; if (!fileName.StartsWith (baseName, StringComparison.Ordinal) || fileName.Length <= baseName.Length + 1 || (fileName [baseName.Length] != '@' && fileName [baseName.Length] != '~')) return false; fileName = fileName.Substring (0, fileName.Length - ext.Length); int i = baseName.Length; if (fileName [i] == '~') { // For example: foo~dark@2x i++; var i2 = fileName.IndexOf ('@', i); if (i2 != -1) { int i3 = fileName.IndexOf ('x', i2 + 2); if (i3 == -1 || !int.TryParse (fileName.Substring (i2 + 1, i3 - i2 - 1), out scale)) return false; } else i2 = fileName.Length; tags = new ImageTagSet (fileName.Substring (i, i2 - i)); return true; } else { // For example: foo@2x~dark i++; var i2 = fileName.IndexOf ('~', i + 1); if (i2 == -1) i2 = fileName.Length; i2--; if (i2 < 0 || fileName [i2] != 'x') return false; var s = fileName.Substring (i, i2 - i); if (!int.TryParse (s, out scale)) { tags = null; return false; } if (i2 + 2 < fileName.Length) tags = new ImageTagSet (fileName.Substring (i2 + 2)); return true; } }
public override Image WrapImage(string fileName, ImageTagSet tags, object img, Size reqSize) { var res = new Image (img, toolkit) { requestedSize = reqSize }; res.NativeRef.SetFileSource (fileName, tags); return res; }