/// <summary> /// Render overlay graphic. /// </summary> /// <param name="pixels">Pixels subject to rendering.</param> /// <param name="width"></param> /// <param name="height"></param> public void Render(int[] pixels, int width, int height) { if (_scaledData == null) _scaledData = (GrayscalePixelDataU8)_originalData.Rescale(_scale); var data = _scaledData.Data; var ox = (int)(_offsetX * _scale); var oy = (int)(_offsetY * _scale); #if NET35 for (var y = 0; y < _scaledData.Height; ++y) #else Parallel.For(0, _scaledData.Height, y => #endif { if (oy + y >= height) return; for (int i = _scaledData.Width * y, e = i + _scaledData.Width, p = (oy + y) * width + ox, x = 0; i < e; i++, p++, x++) { if (data[i] > 0) { if (ox + x >= width) break; pixels[p] |= _color; } } } #if !NET35 ); #endif }
public void Render(int[] pixels, int width, int height) { byte[] data = null; if (_scaledData == null) { if (_scale == 1.0) _scaledData = _originalData; else { int w = (int)(_originalData.Width * _scale); int h = (int)(_originalData.Height * _scale); data = BilinearInterpolation.RescaleGrayscale(_originalData.Data, _originalData.Width, _originalData.Height, w, h); _scaledData = new GrayscalePixelDataU8(w, h, data); } } data = _scaledData.Data; int ox = (int)(_offsetX * _scale); int oy = (int)(_offsetY * _scale); MultiThread.For(0, _scaledData.Height, y => { for (int i = _scaledData.Width * y, e = i + _scaledData.Width; i < e; i++) { if (data[i] > 0) { int p = (oy * width) + ox + i; pixels[p] = _color; } } }); }
/// <summary> /// Set overlay scale factor. /// </summary> /// <param name="scale">Scale factor.</param> public void Scale(double scale) { if ((scale - _scale).IsNearlyZero()) return; _scale = scale; _scaledData = null; }
/// <summary> /// Set overlay scale factor. /// </summary> /// <param name="scale">Scale factor.</param> public void Scale(double scale) { if (Math.Abs(scale - _scale) <= double.Epsilon) return; _scale = scale; _scaledData = null; }
public void Render(int[] pixels, int width, int height) { byte[] data = null; if (_scaledData == null) { if (_scale == 1.0) { _scaledData = _originalData; } else { int w = (int)(_originalData.Width * _scale); int h = (int)(_originalData.Height * _scale); data = BilinearInterpolation.RescaleGrayscale(_originalData.Data, _originalData.Width, _originalData.Height, w, h); _scaledData = new GrayscalePixelDataU8(w, h, data); } } data = _scaledData.Data; int ox = (int)(_offsetX * _scale); int oy = (int)(_offsetY * _scale); MultiThread.For(0, _scaledData.Height, y => { for (int i = _scaledData.Width * y, e = i + _scaledData.Width; i < e; i++) { if (data[i] > 0) { int p = (oy * width) + ox + i; pixels[p] = _color; } } }); }
public void GetMinMax_GrayscalePixelDataU8_IgnoresPadding(byte max, byte min, byte padding) { var pixelData = new GrayscalePixelDataU8(2, 2, new MemoryByteBuffer(new[] { max, padding, min, padding })); var minmax = pixelData.GetMinMax(padding); Assert.Equal(max, minmax.Maximum); Assert.Equal(min, minmax.Minimum); }
public OverlayGraphic(SingleBitPixelData pixelData, int offsetx, int offsety, int color) { _originalData = pixelData; _scaledData = _originalData; _offsetX = offsetx; _offsetY = offsety; _color = color; _scale = 1.0; }
public void Scale(double scale) { if (Math.Abs(scale - _scale) <= Double.Epsilon) return; _scale = scale; _scaledData = null; }