/// <summary> /// Add UnsafeRGBMatrixData to current UnsafeRGBMatrixData instance /// </summary> /// <param name="unsafeRgbData"></param> /// <returns>Addition result</returns> private UnsafeRGBMatrixData AddRgb(UnsafeRGBMatrixData current, UnsafeRGBMatrixData unsafeRgbData) { var red = current.Red + unsafeRgbData.Red; var green = current.Green + unsafeRgbData.Green; var blue = current.Blue + unsafeRgbData.Blue; return(new UnsafeRGBMatrixData(red, green, blue)); }
/// <summary> /// Multiplies current UnsafeRGBMatrixData instance by integer /// </summary> /// <param name="current"></param> /// <param name="integerNumberMatrixData"></param> /// <returns></returns> private UnsafeRGBMatrixData MultiplyByInteger(UnsafeRGBMatrixData current, IntegerNumberMatrixData integerNumberMatrixData) { var red = current.Red * integerNumberMatrixData.InternalValue; var green = current.Green * integerNumberMatrixData.InternalValue; var blue = current.Blue * integerNumberMatrixData.InternalValue; return(new UnsafeRGBMatrixData(red, green, blue)); }
/// <summary> /// Multiplies current UnsafeRGBMatrixData instance by UnsafeRGBMatrixData /// </summary> /// <param name="unsafeRgbData"></param> /// <returns>Multiplication result</returns> private UnsafeRGBMatrixData MultiplyByRgb(UnsafeRGBMatrixData current, UnsafeRGBMatrixData unsafeRgbData) { var red = current.Red * unsafeRgbData.Red; var green = current.Green * unsafeRgbData.Green; var blue = current.Blue * unsafeRgbData.Blue; return(new UnsafeRGBMatrixData(red, green, blue)); }
/// <summary> /// Divides current UnsafeRGBMatrixData instance by integer /// </summary> /// <param name="current"></param> /// <param name="integerNumberMatrixData"></param> /// <returns></returns> private UnsafeRGBMatrixData DivideInteger(UnsafeRGBMatrixData current, IntegerNumberMatrixData integerNumberMatrixData) { var floatDataRaw = integerNumberMatrixData.InternalValue; var red = current.Red / floatDataRaw; var green = current.Green / floatDataRaw; var blue = current.Blue / floatDataRaw; return(new UnsafeRGBMatrixData(red, green, blue)); }
/// <summary> /// Add integer to current UnsafeRGBMatrixData instance /// </summary> /// <param name="current"></param> /// <param name="integerNumberMatrixData"></param> /// <returns>addition result</returns> private UnsafeRGBMatrixData AddInteger(UnsafeRGBMatrixData current, IntegerNumberMatrixData integerNumberMatrixData) { var integerValue = integerNumberMatrixData.InternalValue; var red = current.Red + integerValue; var green = current.Green + integerValue; var blue = current.Blue + integerValue; return(new UnsafeRGBMatrixData(red, green, blue)); }
/// <summary> /// Add float to current UnsafeRGBMatrixData instance /// </summary> /// <param name="floatData"></param> /// <returns>Addition result</returns> private UnsafeRGBMatrixData AddFloat(UnsafeRGBMatrixData current, FloatNumberMatrixData floatData) { var floatDataRaw = floatData.InternalValue; var red = current.Red + floatDataRaw; var green = current.Green + floatDataRaw; var blue = current.Blue + floatDataRaw; return(new UnsafeRGBMatrixData((int)red, (int)green, (int)blue)); }
public static UnsafeRGBMatrixData GetRandomColor(out int red, out int green, out int blue, int redLimit = 255, int greenLimit = 255, int blueLimit = 255) { var randomRed = new Random().Next(0, redLimit); var randomGreen = new Random().Next(0, greenLimit); var randomBlue = new Random().Next(0, blueLimit); var randomColor = new UnsafeRGBMatrixData(randomRed, randomGreen, randomBlue); red = randomRed; green = randomGreen; blue = randomBlue; return(randomColor); }
public void RawValuesIsValidIntegerArray() { var randomRed = new Random().Next(0, 255); var randomGreen = new Random().Next(0, 255); var randomBlue = new Random().Next(0, 255); var randomColor = new UnsafeRGBMatrixData(randomRed, randomGreen, randomBlue); var rawValues = (int[])randomColor.RawValue; Assert.AreEqual(randomRed, rawValues[0]); Assert.AreEqual(randomGreen, rawValues[1]); Assert.AreEqual(randomBlue, rawValues[2]); }
public void BlueGreenRedPropertiesRepresentingCorrectValues() { var black = new UnsafeRGBMatrixData(); Assert.AreEqual(0, black.Red); Assert.AreEqual(0, black.Green); Assert.AreEqual(0, black.Blue); var randomColor = Utils.GetRandomColor(out var randomRed, out var randomGreen, out var randomBlue); Assert.AreEqual(randomRed, randomColor.Red); Assert.AreEqual(randomGreen, randomColor.Green); Assert.AreEqual(randomBlue, randomColor.Blue); }
/// <summary> /// Creates RGBMatrix matrix from image /// </summary> /// <param name="imagePath"></param> /// <returns>Matrix containing image data</returns> public static IMatrix CreateMatrixFromImage(string imagePath) { var bitmapImage = new Bitmap(imagePath); var width = bitmapImage.Width; var height = bitmapImage.Height; IMatrixData[][] rgbValues = new IMatrixData[height][]; for (int i = 0; i < height; i++) { rgbValues[i] = new IMatrixData[width]; for (int j = 0; j < width; j++) { var pixel = bitmapImage.GetPixel(j, i); rgbValues[i][j] = new UnsafeRGBMatrixData(pixel.R, pixel.G, pixel.B); } } var matrix = new RGBMatrix(rgbValues); return(matrix); }