public static async Task ReplaceColorAsync(this IColorMatrix sourceColorMatrix, ColorItem oldColorItem, Color newColor, bool convertToBackground = false)
        {
            Color oldColor = oldColorItem;

            for (uint row = 0; row < sourceColorMatrix.Height; row++)
            {
                for (uint column = 0; column < sourceColorMatrix.Width; column++)
                {
                    if (sourceColorMatrix.ColorItems[row, column] == oldColor &&
                        sourceColorMatrix.ColorItems[row, column].ItemType == oldColorItem.ItemType)
                    {
                        ColorItem newItem = new ColorItem()
                        {
                            A        = newColor.A,
                            R        = newColor.R,
                            G        = newColor.G,
                            B        = newColor.B,
                            ItemType = convertToBackground ? ColorItem.ColorItemType.Background : sourceColorMatrix.ColorItems[row, column].ItemType
                        };

                        await sourceColorMatrix.SetItem(row, column, newItem);
                    }
                }
            }
        }
Exemple #2
0
 public static async Task Clear(this IColorMatrix sourceColorMatrix, Color color)
 {
     for (uint row = 0; row < sourceColorMatrix.Height; row++)
     {
         for (uint column = 0; column < sourceColorMatrix.Width; column++)
         {
             await sourceColorMatrix.SetItem(row, column, ColorItem.FromColor(color, ColorItem.ColorItemType.Background));
         }
     }
 }
 public static async Task CopyTo(this IColorMatrix sourceColorMatrix, IColorMatrix targetColorMatrix)
 {
     for (uint row = 0; row < sourceColorMatrix.Height; row++)
     {
         for (uint column = 0; column < sourceColorMatrix.Width; column++)
         {
             await targetColorMatrix.SetItem(row, column, sourceColorMatrix.ColorItems[row, column]);
         }
     }
 }
        public static async Task FlipHorizontalAsync(this IColorMatrix sourceColorMatrix)
        {
            IColorMatrix me = await sourceColorMatrix.CloneAsync();

            for (uint row = 0; row < sourceColorMatrix.Height; row++)
            {
                for (uint column = 0; column < sourceColorMatrix.Width; column++)
                {
                    await sourceColorMatrix.SetItem(row, column, me.ColorItems[row, (sourceColorMatrix.Width - 1) - column]);
                }
            }
        }
        public static async Task RotateClockwiseAsync(this IColorMatrix sourceColorMatrix)
        {
            IColorMatrix me = await sourceColorMatrix.CloneAsync();

            for (uint row = 0; row < sourceColorMatrix.Height; row++)
            {
                for (uint column = 0; column < sourceColorMatrix.Width; column++)
                {
                    await sourceColorMatrix.SetItem(row, column, me.ColorItems[(sourceColorMatrix.Height - 1) - column, row]);
                }
            }
        }
        public static async Task ReplacePixelTypeColorAsync(this IColorMatrix sourceColorMatrix, ColorItem.ColorItemType itemType, Color newColor)
        {
            for (uint row = 0; row < sourceColorMatrix.Height; row++)
            {
                for (uint column = 0; column < sourceColorMatrix.Width; column++)
                {
                    if (sourceColorMatrix.ColorItems[row, column].ItemType == itemType)
                    {
                        ColorItem newItem = new ColorItem()
                        {
                            A = newColor.A,
                            R = newColor.R,
                            G = newColor.G,
                            B = newColor.B
                        };

                        await sourceColorMatrix.SetItem(row, column, newItem);
                    }
                }
            }
        }