public FloatingImage[,] Split(int Width, int Height) { uint ImageWidth = (uint)_Pixels.GetLength(0); uint ImageHeight = (uint)_Pixels.GetLength(1); int xSplit = (int)(ImageWidth / Width); int ySplit = (int)(ImageHeight / Height); FloatingImage[,] F = new FloatingImage[xSplit, ySplit]; for (int i = 0; i < ImageHeight; ++i) { for (int j = 0; j < ImageWidth; ++j) { int fX = j / Width; int fY = i / Height; int fOX = j - Width * fX; int fOY = i - Height * fY; if (F[fX, fY] == null) { F[fX, fY] = new FloatingImage(Width, Height); } F[fX, fY]._Pixels[fOX, fOY] = this[j, i]; } } return(F); }
public FloatingImage Filter(TranscendentalFilter Filter) { int Width = _Pixels.GetLength(0); int Height = _Pixels.GetLength(1); FloatingImage R = new FloatingImage(Width, Height); Filter.Filter(this, R); return(R); }
public void Paint(int X, int Y, FloatingImage Image) { int Width = Radius * 2 + 1; for (int i = 0; i < Width; ++i) { for (int j = 0; j < Width; ++j) { int x = i - Radius; int y = j - Radius; Image[X + x, Y + y] = BlendMode.Filter(Image[X + x, Y + y], Color * Matrix[i, j]); } } }
public FloatingImage Filter(BlendFilter Filter, FloatingImage Image) { int Width = _Pixels.GetLength(0); int Height = _Pixels.GetLength(1); FloatingColor[,] NewPixels = new FloatingColor[Width, Height]; for (int i = 0; i < Width; ++i) { for (int j = 0; j < Height; ++j) { NewPixels[i, j] = Filter.Filter(this[i, j], Image[i, j]); } } return(new FloatingImage() { _Pixels = NewPixels }); }
public FloatingImage GenerateImage(int Width, int Height) { FloatingImage F = new FloatingImage(Width, Height); float Min = float.MaxValue; float Max = float.MinValue; for (int i = 0; i < Width; ++i) { for (int j = 0; j < Height; ++j) { float G = (float)Generate(i, j); F[i, j] = new FloatingColor(G); if (G > Max) { Max = G; } if (G < Min) { Min = G; } } } return(F); }