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); } } } }
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); } } } }