/// <summary> /// attach image buffer and its information to the reader /// </summary> /// <param name="width"></param> /// <param name="height"></param> /// <param name="bitsPerPixel"></param> /// <param name="imgbuffer"></param> /// <param name="outputPxBlender"></param> protected void Attach(int width, int height, int bitsPerPixel, TempMemPtr imgbuffer, PixelBlender32 outputPxBlender) { if (width <= 0 || height <= 0) { throw new ArgumentOutOfRangeException("You must have a width and height > than 0."); } if (bitsPerPixel != 32 && bitsPerPixel != 24 && bitsPerPixel != 8) { throw new Exception("Unsupported bits per pixel."); } // // int bytesPerPixel = (bitsPerPixel + 7) / 8; int stride = 4 * ((width * bytesPerPixel + 3) / 4); #if DEBUG if (bytesPerPixel == 0) { } #endif // SetDimmensionAndFormat(width, height, stride, bitsPerPixel, bitsPerPixel / 8); SetUpLookupTables(); OutputPixelBlender = outputPxBlender; _raw_buffer32 = imgbuffer.Ptr; _rawBufferLenInBytes = imgbuffer.LengthInBytes; }
public SubBitmapBlender(IBitmapSrc image, PixelBlender32 blender, int distanceBetweenPixelsInclusive, int arrayOffset32, int bitsPerPixel) { this.OutputPixelBlender = blender; Attach(image, blender, distanceBetweenPixelsInclusive, arrayOffset32, bitsPerPixel); }
public MyBitmapBlender(ActualBitmap actualImage, PixelProcessing.PixelBlender32 pxBlender) { this.actualImage = actualImage; Attach(actualImage.Width, actualImage.Height, actualImage.BitDepth, ActualBitmap.GetBuffer(actualImage), pxBlender); //set default px blender }
protected void Attach(MemBitmap bmp, PixelBlender32 pixelBlender = null) { if (pixelBlender == null) { //use default pixel blender ? if (_defaultPixelBlender == null) { _defaultPixelBlender = new PixelBlenderBGRA(); } pixelBlender = _defaultPixelBlender; } Attach(bmp.Width, bmp.Height, bmp.BitDepth, MemBitmap.GetBufferPtr(bmp), pixelBlender); }
public static AggPainter Create(ActualBitmap bmp, PixelProcessing.PixelBlender32 blender = null) { //helper func AggRenderSurface renderSx = new AggRenderSurface(bmp); if (blender == null) { blender = new PixelProcessing.PixelBlenderBGRA(); } renderSx.PixelBlender = blender; return(new AggPainter(renderSx)); }
void Attach(IBitmapSrc sourceImage, PixelBlender32 outputPxBlender, int distanceBetweenPixelsInclusive, int arrayElemOffset, int bitsPerPixel) { _sourceImage = sourceImage; SetDimmensionAndFormat(sourceImage.Width, sourceImage.Height, sourceImage.Stride, bitsPerPixel, distanceBetweenPixelsInclusive); int srcOffset32 = sourceImage.GetBufferOffsetXY32(0, 0); SetBuffer(sourceImage.GetBufferPtr(), srcOffset32 + arrayElemOffset); this.OutputPixelBlender = outputPxBlender; }
public SubBitmapBlender(IBitmapSrc image, PixelBlender32 blender) { Attach(image, blender, image.BytesBetweenPixelsInclusive, 0, image.BitDepth); }