Exemplo n.º 1
0
        /// <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;
        }
Exemplo n.º 2
0
 public SubBitmapBlender(IBitmapSrc image,
                         PixelBlender32 blender,
                         int distanceBetweenPixelsInclusive,
                         int arrayOffset32,
                         int bitsPerPixel)
 {
     this.OutputPixelBlender = blender;
     Attach(image, blender, distanceBetweenPixelsInclusive, arrayOffset32, bitsPerPixel);
 }
Exemplo n.º 3
0
 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
 }
Exemplo n.º 4
0
 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);
 }
Exemplo n.º 5
0
        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));
        }
Exemplo n.º 6
0
        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;
        }
Exemplo n.º 7
0
 public SubBitmapBlender(IBitmapSrc image, PixelBlender32 blender)
 {
     Attach(image, blender, image.BytesBetweenPixelsInclusive, 0, image.BitDepth);
 }