private bool CreateEmojiSprites(SpritesPack pack) { Stopwatch stopwatch = Stopwatch.StartNew(); List <EmojiDataItem> allDataItems = EmojiDataItem.GetAllDataItems(); int num1 = EmojiConstants.ColumnsCountVerticalOrientation * EmojiConstants.VerticalSpriteRowsCount; int num2 = 0; string str1 = "emojiSpriteVertical" + this.IsDarkTheme.ToString() + ".jpg"; SolidColorBrush backgroundColor1 = Application.Current.Resources["PhoneMenuBackgroundBrush"] as SolidColorBrush; IEnumerator <IEnumerable <EmojiDataItem> > enumerator1 = allDataItems.Partition <EmojiDataItem>(num1).GetEnumerator(); try { while (((IEnumerator)enumerator1).MoveNext()) { IEnumerable <EmojiDataItem> current = enumerator1.Current; SpriteDescription sprite = SpriteCreatorHelper.TryCreateSprite(num1, (List <string>)Enumerable.ToList <string>(Enumerable.Select <EmojiDataItem, string>(current, (Func <EmojiDataItem, string>)(d => d.Uri.OriginalString))), (List <string>)Enumerable.ToList <string>(Enumerable.Select <EmojiDataItem, string>(current, (Func <EmojiDataItem, string>)(d => d.String))), num2.ToString() + str1, EmojiConstants.ColumnsCountVerticalOrientation, EmojiConstants.EmojiWidthInPixels, EmojiConstants.EmojiHeightInPixels, EmojiConstants.VerticalSpriteWidthInPixels, EmojiConstants.VerticalSpriteHeightInPixels, backgroundColor1); ++num2; if (sprite == null) { return(false); } pack.SpritesVertical.Add(sprite); } } finally { if (enumerator1 != null) { ((IDisposable)enumerator1).Dispose(); } } int num3 = EmojiConstants.ColumnsCountHorizontalOrientation * EmojiConstants.HorizontalSpriteRowsCount; int num4 = 0; string str2 = "emojiSprteHorizontal " + this.IsDarkTheme.ToString() + ".jpg"; IEnumerator <IEnumerable <EmojiDataItem> > enumerator2 = allDataItems.Partition <EmojiDataItem>(num3).GetEnumerator(); try { while (((IEnumerator)enumerator2).MoveNext()) { IEnumerable <EmojiDataItem> current = enumerator2.Current; SpriteDescription sprite = SpriteCreatorHelper.TryCreateSprite(num3, (List <string>)Enumerable.ToList <string>(Enumerable.Select <EmojiDataItem, string>(current, (Func <EmojiDataItem, string>)(d => d.Uri.OriginalString))), (List <string>)Enumerable.ToList <string>(Enumerable.Select <EmojiDataItem, string>(current, (Func <EmojiDataItem, string>)(d => d.String))), num4.ToString() + str2, EmojiConstants.ColumnsCountHorizontalOrientation, EmojiConstants.EmojiWidthInPixels, EmojiConstants.EmojiHeightInPixels, EmojiConstants.HorizontalSpriteWidthInPixels, EmojiConstants.HorizontalSpriteHeightInPixels, backgroundColor1); ++num4; if (sprite == null) { return(false); } pack.SpritesHorizontal.Add(sprite); } } finally { if (enumerator2 != null) { ((IDisposable)enumerator2).Dispose(); } } stopwatch.Stop(); return(true); }
public static SpriteDescription TryCreateSprite(int maxElementsCount, List <string> originalUris, List <string> elementCodes, string saveResultUri1, int columnsCount, int widthOfOneItemInPixels, int heightOfOneItemInPixels, int widthInPixels, int heightInPixels, SolidColorBrush backgroundColor1) { SpriteDescription spriteDescription = new SpriteDescription(); try { spriteDescription.WidthInPixels = widthInPixels; spriteDescription.HeightInPixels = heightInPixels; spriteDescription.SpritePath = saveResultUri1; spriteDescription.Elements = new List <SpriteElementData>(); WriteableBitmap writeableBitmap1 = new WriteableBitmap(widthInPixels, heightInPixels); WriteableBitmap writeableBitmap2 = writeableBitmap1; Canvas canvas = new Canvas(); SolidColorBrush solidColorBrush = backgroundColor1; ((Panel)canvas).Background = ((Brush)solidColorBrush); double num1 = (double)widthInPixels; ((FrameworkElement)canvas).Width = num1; double num2 = (double)heightInPixels; ((FrameworkElement)canvas).Height = num2; // ISSUE: variable of the null type writeableBitmap2.Render((UIElement)canvas, null); writeableBitmap1.Invalidate(); int num3 = (int)Math.Ceiling((double)maxElementsCount / (double)columnsCount); int num4 = widthInPixels / columnsCount; int num5 = heightInPixels / num3; int num6 = (num4 - widthOfOneItemInPixels) / 2; int num7 = (num5 - heightOfOneItemInPixels) / 2; int height = 0; for (int index = 0; index < originalUris.Count; ++index) { int num8 = index % columnsCount * num4; int num9 = index / columnsCount * num5; string originalUri = originalUris[index]; SpriteCreatorHelper.WriteImageToBitmap(writeableBitmap1, originalUri, num8 + num6, num9 + num7, widthOfOneItemInPixels, heightOfOneItemInPixels); height = num9 + num5; SpriteElementData spriteElementData = new SpriteElementData() { Position = new Rect((double)num8, (double)num9, (double)num4, (double)num5), ElementCode = elementCodes[index] }; spriteDescription.Elements.Add(spriteElementData); } if (height < ((BitmapSource)writeableBitmap1).PixelHeight - 1) { writeableBitmap1 = writeableBitmap1.Crop(0, 0, ((BitmapSource)writeableBitmap1).PixelWidth, height); spriteDescription.HeightInPixels = height; } using (IsolatedStorageFile storeForApplication = IsolatedStorageFile.GetUserStoreForApplication()) { using (IsolatedStorageFileStream storageFileStream = storeForApplication.OpenFile(saveResultUri1, FileMode.OpenOrCreate, FileAccess.Write)) Extensions.SaveJpeg(writeableBitmap1, (Stream)storageFileStream, spriteDescription.WidthInPixels, spriteDescription.HeightInPixels, 0, 90); } } catch (Exception) { return(null); } return(spriteDescription); }
private bool CreateEmojiSprites(SpritesPack pack) { Stopwatch stopwatch = Stopwatch.StartNew(); List <EmojiDataItem> allDataItems = EmojiDataItem.GetAllDataItems(); int num1 = EmojiConstants.ColumnsCountVerticalOrientation * EmojiConstants.VerticalSpriteRowsCount; int num2 = 0; string str1 = "emojiSpriteVertical" + this.IsDarkTheme.ToString() + ".jpg"; SolidColorBrush backgroundColor1 = Application.Current.Resources["PhoneMenuBackgroundBrush"] as SolidColorBrush; foreach (IEnumerable <EmojiDataItem> source in allDataItems.Partition <EmojiDataItem>(num1)) { SpriteDescription sprite = SpriteCreatorHelper.TryCreateSprite(num1, source.Select <EmojiDataItem, string>((Func <EmojiDataItem, string>)(d => d.Uri.OriginalString)).ToList <string>(), source.Select <EmojiDataItem, string>((Func <EmojiDataItem, string>)(d => d.String)).ToList <string>(), num2.ToString() + str1, EmojiConstants.ColumnsCountVerticalOrientation, EmojiConstants.EmojiWidthInPixels, EmojiConstants.EmojiHeightInPixels, EmojiConstants.VerticalSpriteWidthInPixels, EmojiConstants.VerticalSpriteHeightInPixels, backgroundColor1); ++num2; if (sprite == null) { return(false); } pack.SpritesVertical.Add(sprite); } int num3 = EmojiConstants.ColumnsCountHorizontalOrientation * EmojiConstants.HorizontalSpriteRowsCount; int num4 = 0; string str2 = "emojiSprteHorizontal " + this.IsDarkTheme.ToString() + ".jpg"; foreach (IEnumerable <EmojiDataItem> source in allDataItems.Partition <EmojiDataItem>(num3)) { SpriteDescription sprite = SpriteCreatorHelper.TryCreateSprite(num3, source.Select <EmojiDataItem, string>((Func <EmojiDataItem, string>)(d => d.Uri.OriginalString)).ToList <string>(), source.Select <EmojiDataItem, string>((Func <EmojiDataItem, string>)(d => d.String)).ToList <string>(), num4.ToString() + str2, EmojiConstants.ColumnsCountHorizontalOrientation, EmojiConstants.EmojiWidthInPixels, EmojiConstants.EmojiHeightInPixels, EmojiConstants.HorizontalSpriteWidthInPixels, EmojiConstants.HorizontalSpriteHeightInPixels, backgroundColor1); ++num4; if (sprite == null) { return(false); } pack.SpritesHorizontal.Add(sprite); } stopwatch.Stop(); return(true); }