Esempio n. 1
0
        /// <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
        }
Esempio n. 2
0
        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;
                    }
                }
            });
        }
Esempio n. 3
0
        /// <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;
        }
Esempio n. 4
0
        /// <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;
        }
Esempio n. 5
0
        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;
                    }
                }
            });
        }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
 public OverlayGraphic(SingleBitPixelData pixelData, int offsetx, int offsety, int color)
 {
     _originalData = pixelData;
     _scaledData   = _originalData;
     _offsetX      = offsetx;
     _offsetY      = offsety;
     _color        = color;
     _scale        = 1.0;
 }
Esempio n. 8
0
 public OverlayGraphic(SingleBitPixelData pixelData, int offsetx, int offsety, int color)
 {
     _originalData = pixelData;
     _scaledData = _originalData;
     _offsetX = offsetx;
     _offsetY = offsety;
     _color = color;
     _scale = 1.0;
 }
Esempio n. 9
0
        public void Scale(double scale)
        {
            if (Math.Abs(scale - _scale) <= Double.Epsilon)
                return;

            _scale = scale;
            _scaledData = null;
        }