Ejemplo n.º 1
0
        public static void sampleAdapt(capex.image.RGBAPixelIntegerBuffer src, double xc, double yc, double x0, double y0, double x1, double y1, double x2, double y2, double x3, double y3, capex.image.ImageResizer.IndexMovingBuffer dest)
        {
            var cc   = 0;
            var i    = 0;
            var c    = new int[4];
            var cciv = 0;

            capex.image.ImageResizer.getSample(src, capex.image.ImageResizer.double2Fixed(xc), capex.image.ImageResizer.double2Fixed(yc), capex.image.ImageResizer.double2Fixed(x0), capex.image.ImageResizer.double2Fixed(y0), capex.image.ImageResizer.double2Fixed(x1), capex.image.ImageResizer.double2Fixed(y1), capex.image.ImageResizer.double2Fixed(x2), capex.image.ImageResizer.double2Fixed(y2), capex.image.ImageResizer.double2Fixed(x3), capex.image.ImageResizer.double2Fixed(y3), cciv, 3, c);
            cc = cciv;
            if (cc == 0)
            {
                cc = 1;
            }
            var aa = c[3] / cc;

            cape.Buffer.setByte(dest.getBuf(), (long)3, (byte)aa);
            if (aa != 0)
            {
                for (i = 0; i < 3; i++)
                {
                    cape.Buffer.setByte(dest.getBuf(), (long)i, (byte)(c[i] / cc * 255 / aa));
                }
            }
            else
            {
                for (i = 0; i < 3; i++)
                {
                    cape.Buffer.setByte(dest.getBuf(), (long)i, (byte)0);
                }
            }
        }
Ejemplo n.º 2
0
        public static void sampleBi(capex.image.RGBAPixelIntegerBuffer pixels, int x, int y, int[] color)
        {
            capex.image.ImageResizer.initFixedUnit();
            var xscale = x & capex.image.ImageResizer.unit - 1;
            var yscale = y & capex.image.ImageResizer.unit - 1;
            var x0     = x >> capex.image.ImageResizer.FIXED_SHIFT;
            var y0     = y >> capex.image.ImageResizer.FIXED_SHIFT;
            var x1     = x0 + 1;
            var y1     = y0 + 1;
            var i      = 0;
            var c0     = pixels.getRgbaPixel(x0, y0, true);
            var c1     = pixels.getRgbaPixel(x1, y0, true);
            var c2     = pixels.getRgbaPixel(x0, y1, true);
            var c3     = pixels.getRgbaPixel(x1, y1, true);

            color[3] = capex.image.ImageResizer.lerp(capex.image.ImageResizer.lerp(c0[3], c1[3], yscale), capex.image.ImageResizer.lerp(c2[3], c3[3], yscale), xscale);
            if (color[3] != 0)
            {
                for (i = 0; i < 3; i++)
                {
                    color[i] = capex.image.ImageResizer.lerp(capex.image.ImageResizer.lerp(c0[i] * c0[3] / 255, c1[i] * c1[3] / 255, yscale), capex.image.ImageResizer.lerp(c2[i] * c2[3] / 255, c3[i] * c3[3] / 255, yscale), xscale);
                }
            }
            else
            {
                for (i = 0; i < 3; i++)
                {
                    color[i] = 0;
                }
            }
        }
Ejemplo n.º 3
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);
        }
Ejemplo n.º 4
0
        public static capex.image.RGBAPixelIntegerBuffer create(byte[] b, int w, int h)
        {
            var v = new capex.image.RGBAPixelIntegerBuffer();

            v.buffer  = b;
            v.width   = w;
            v.height  = h;
            v.pointer = b;
            return(v);
        }
Ejemplo n.º 5
0
 public static void getSample(capex.image.RGBAPixelIntegerBuffer pixels, int xc, int yc, int x0, int y0, int x1, int y1, int x2, int y2, int x3, int y3, int cciv, int level, int[] color)
 {
     if (level == 0 || capex.image.ImageResizer.supersampleTest((double)x0, (double)y0, (double)x1, (double)y1, (double)x2, (double)y2, (double)x3, (double)y3) == false)
     {
         var i = 0;
         var c = new int[4];
         capex.image.ImageResizer.sampleBi(pixels, xc, yc, c);
         for (i = 0; i < 4; i++)
         {
             color[i] = color[i] + c[i];
         }
     }
     else
     {
         var tx  = 0;
         var lx  = 0;
         var rx  = 0;
         var bx  = 0;
         var tlx = 0;
         var trx = 0;
         var blx = 0;
         var brx = 0;
         var ty  = 0;
         var ly  = 0;
         var ry  = 0;
         var by  = 0;
         var tly = 0;
         var trz = 0;
         var bly = 0;
         var bry = 0;
         tx  = (x0 + x1) / 2;
         tlx = (x0 + xc) / 2;
         trx = (x1 + xc) / 2;
         lx  = (x0 + x3) / 2;
         rx  = (x1 + x2) / 2;
         blx = (x2 + xc) / 2;
         brx = (x3 + xc) / 2;
         bx  = (x3 + x2) / 2;
         ty  = (y0 + y1) / 2;
         tly = (y0 + yc) / 2;
         trz = (y1 + yc) / 2;
         ly  = (y0 + y3) / 2;
         ry  = (y1 + y2) / 2;
         bly = (y3 + yc) / 2;
         bry = (y2 + yc) / 2;
         by  = (y3 + y2) / 2;
         capex.image.ImageResizer.getSample(pixels, tlx, tly, x0, y0, tx, ty, xc, yc, lx, ly, cciv, level - 1, color);
         capex.image.ImageResizer.getSample(pixels, trx, trz, tx, ty, x1, y1, rx, ry, xc, yc, cciv, level - 1, color);
         capex.image.ImageResizer.getSample(pixels, brx, bry, xc, yc, rx, ry, x2, y2, bx, by, cciv, level - 1, color);
         capex.image.ImageResizer.getSample(pixels, blx, bly, lx, ly, xc, yc, bx, by, x3, y3, cciv, level - 1, color);
     }
 }