Вход Регистрация
Файл: Space race/bkcore.coffee/ImageData.js
Строк: 107
<?php
// Generated by CoffeeScript 1.4.0

/*
  Loads an image and gives access to pixel data.
  
  @class bkcore.ImageData
  @author Thibaut 'BKcore' Despoulain <http://bkcore.com>
*/


(function() {
  var 
ImageDataexports;

  
ImageData = (function() {
    
/*
        Creates a new ImageData object
        
        @param path string The path of the image
        @param callback function A callback function to be called
          once th eimage is loaded
    */

    
function ImageData(pathcallback) {
      var 
_this this;
      
this.image = new Image;
      
this.pixels null;
      
this.canvas null;
      
this.loaded false;
      
this.image.onload = function() {
        var 
context;
        
_this.canvas document.createElement('canvas');
        
_this.canvas.width _this.image.width;
        
_this.canvas.height _this.image.height;
        
context _this.canvas.getContext('2d');
        
context.drawImage(_this.image00);
        
_this.pixels context.getImageData(00_this.canvas.width_this.canvas.height);
        
_this.loaded true;
        
context null;
        
_this.canvas null;
        
_this.image null;
        return 
callback != null callback.call(_this) : void 0;
      };
      
this.image.crossOrigin "anonymous";
      
this.image.src path;
    }

    
/*
        Gets pixel RGBA data at given index
        
        @param x int In pixels
        @param y int In pixels
        @return Object{r,g,b,a}
    */


    
ImageData.prototype.getPixel = function(xy) {
      var 
i;
      if (!(
this.pixels != null) || || || >= this.pixels.width || >= this.pixels.height) {
        return {
          
r0,
          
g0,
          
b0,
          
a0
        
};
      }
      
= (this.pixels.width x) * 4;
      return {
        
rthis.pixels.data[i],
        
gthis.pixels.data[1],
        
bthis.pixels.data[2],
        
athis.pixels.data[3]
      };
    };

    
/*
        Gets pixel RGBA data at given float index using bilinear interpolation
        
        @param x float In subpixels
        @param y float In subpixels
        @return Object{r,g,b,a}
    */


    
ImageData.prototype.getPixelBilinear = function(fxfy) {
      var 
axayccf1cf2cxcxycydxdyrxryxy;
      
Math.floor(fx);
      
Math.floor(fy);
      
rx fx .5;
      
ry fy .5;
      
ax Math.abs(rx);
      
ay Math.abs(ry);
      
dx rx ? -1;
      
dy ry ? -1;
      
this.getPixel(xy);
      
cx this.getPixel(dxy);
      
cy this.getPixel(xdy);
      
cxy this.getPixel(dxdy);
      
cf1 = [(ax) * c.ax cx.r, (ax) * c.ax cx.g, (ax) * c.ax cx.b, (ax) * c.ax cx.a];
      
cf2 = [(ax) * cy.ax cxy.r, (ax) * cy.ax cxy.g, (ax) * cy.ax cxy.b, (ax) * cy.ax cxy.a];
      return {
        
r: (ay) * cf1[0] + ay cf2[0],
        
g: (ay) * cf1[1] + ay cf2[1],
        
b: (ay) * cf1[2] + ay cf2[2],
        
a: (ay) * cf1[3] + ay cf2[3]
      };
    };

    
/*
        Gets pixel data at given index
        as 3-bytes integer (for floating-point textures erzats, from RGB values)
        
        @param x int In pixels
        @param y int In pixels
        @return int (R + G*255 + B*255*255)
    */


    
ImageData.prototype.getPixelF = function(xy) {
      var 
c;
      
this.getPixel(xy);
      return 
c.c.255 c.255 255;
    };

    
/*
        Gets pixel data at given float index using bilinear interpolationas
        as 3-bytes integer (for floating-point textures erzats, from RGB values)
        
        @param x float In subpixels
        @param y float In subpixels
        @return Object{r,g,b,a}
    */


    
ImageData.prototype.getPixelFBilinear = function(fxfy) {
      var 
c;
      
this.getPixelBilinear(fxfy);
      return 
c.c.255 c.255 255;
    };

    return 
ImageData;

  })();

  
/*
    Exports
    @package bkcore
  */


  
exports exports != null exports this;

  
exports.bkcore || (exports.bkcore = {});

  
exports.bkcore.ImageData ImageData;

}).
call(this);
?>
Онлайн: 0
Реклама