Exemplo n.º 1
0
        public static capex.image.PixelRegionBuffer forRgbaPixels(capex.image.RGBAPixelIntegerBuffer src, int w, int h)
        {
            var v = new capex.image.PixelRegionBuffer();

            v.src    = src;
            v.rangew = w;
            v.rangeh = h;
            return(v);
        }
Exemplo n.º 2
0
        public static void sampleCubic(capex.image.PixelRegionBuffer src, double su, double sv, capex.image.ImageResizer.IndexMovingBuffer dest)
        {
            var aval   = 0.00;
            var arecip = 0.00;
            var i      = 0;
            var iu     = (int)cape.Math.floor(su);
            var iv     = (int)cape.Math.floor(sv);
            var stride = src.getStride();
            var du     = 0.00;
            var dv     = 0.00;
            var br     = src.getBufferRegion(iu - 1, iv - 1);

            if (br == null)
            {
                return;
            }
            dest.setBuf(br);
            du   = su - iu;
            dv   = sv - iv;
            aval = capex.image.ImageResizer.drawableTransformCubic(dv, capex.image.ImageResizer.cubicRow(du, dest.move(3 + stride * 0)), capex.image.ImageResizer.cubicRow(du, dest.move(3 + stride * 1)), capex.image.ImageResizer.cubicRow(du, dest.move(3 + stride * 2)), capex.image.ImageResizer.cubicRow(du, dest.move(3 + stride * 3)));
            if (aval <= 0)
            {
                arecip = 0.00;
                cape.Buffer.setByte(dest.getBuf(), (long)3, (byte)0);
            }
            else if (aval > 255.00)
            {
                arecip = 1.00 / aval;
                cape.Buffer.setByte(dest.getBuf(), (long)3, (byte)255);
            }
            else
            {
                arecip = 1.00 / aval;
                cape.Buffer.setByte(dest.getBuf(), (long)3, (byte)((int)cape.Math.rint(aval)));
            }
            for (i = 0; i < 3; i++)
            {
                var v = (int)cape.Math.rint(arecip * capex.image.ImageResizer.drawableTransformCubic(dv, capex.image.ImageResizer.cubicScaledRow(du, dest.move(i + stride * 0), dest.move(3 + stride * 0)), capex.image.ImageResizer.cubicScaledRow(du, dest.move(i + stride * 1), dest.move(3 + stride * 1)), capex.image.ImageResizer.cubicScaledRow(du, dest.move(i + stride * 2), dest.move(3 + stride * 2)), capex.image.ImageResizer.cubicScaledRow(du, dest.move(i + stride * 3), dest.move(3 + stride * 3))));
                cape.Buffer.setByte(dest.getBuf(), (long)i, (byte)capex.image.ImageFilterUtil.clamp((double)v));
            }
        }