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