OSDN Git Service

[リリース]NyARToolkit 1.0.0
[nyartoolkit-and/nyartoolkit-and.git] / trunk / sample / jmf / jp / nyatla / nyartoolkit / jmf / utils / JmfNyARRaster_RGB.java
index d36ebfa..9e9dd9e 100644 (file)
@@ -81,8 +81,18 @@ public class JmfNyARRaster_RGB implements NyARRaster
     public int getPixelTotal(int i_x,int i_y)\r
     {\r
         int bp=(i_x+i_y*width)*3;\r
-        return (ref_buf[bp] & 0xff)+(ref_buf[bp+1] & 0xff)+(ref_buf[bp+2] & 0xff);\r
+        byte[] ref=this.ref_buf;\r
+        return (ref[bp] & 0xff)+(ref[bp+1] & 0xff)+(ref[bp+2] & 0xff);\r
     }\r
+    public void getPixelTotalRowLine(int i_row,int[] o_line)\r
+    {\r
+        final byte[] ref=this.ref_buf;\r
+        int bp=(i_row+1)*this.width*3-3;\r
+        for(int i=this.width-1;i>=0;i--){\r
+           o_line[i]=(ref[bp] & 0xff)+(ref[bp+1] & 0xff)+(ref[bp+2] & 0xff);\r
+           bp-=3;\r
+       }\r
+    }    \r
     public int getWidth()\r
     {\r
         return width;\r
@@ -91,12 +101,13 @@ public class JmfNyARRaster_RGB implements NyARRaster
     {\r
         return height;\r
     }\r
-    public void pickRgbArray(int i_x,int i_y,int[] i_rgb)\r
+    public void getPixel(int i_x,int i_y,int[] i_rgb)\r
     {\r
-        int bp=(i_x+i_y*width)*3;\r
-        i_rgb[0]=(ref_buf[bp+red_idx] & 0xff);//R\r
-        i_rgb[1]=(ref_buf[bp+green_idx] & 0xff);//G\r
-        i_rgb[2]=(ref_buf[bp+blue_idx] & 0xff);//B\r
+        int bp=(i_x+i_y*this.width)*3;\r
+        byte[] ref=this.ref_buf;\r
+        i_rgb[0]=(ref[bp+this.red_idx] & 0xff);//R\r
+        i_rgb[1]=(ref[bp+this.green_idx] & 0xff);//G\r
+        i_rgb[2]=(ref[bp+this.blue_idx] & 0xff);//B\r
     }\r
     /**\r
      * ピクセルの順序タイプを返します。\r
@@ -115,5 +126,20 @@ public class JmfNyARRaster_RGB implements NyARRaster
     {\r
        return ref_buf!=null;\r
     }\r
-\r
+    public void getPixelSet(int[] i_x,int i_y[],int i_num,int[] o_rgb)\r
+    {\r
+       int ri=this.red_idx;\r
+       int bi=this.green_idx;\r
+       int gi=this.blue_idx;\r
+       int width=this.width;\r
+       byte[] ref=this.ref_buf;\r
+       int bp;\r
+       for(int i=i_num-1;i>=0;i--){\r
+           bp=(i_x[i]+i_y[i]*width)*3;\r
+           o_rgb[i*3+0]=(ref[bp+ri] & 0xff);//R\r
+           o_rgb[i*3+1]=(ref[bp+gi] & 0xff);//G\r
+           o_rgb[i*3+2]=(ref[bp+bi] & 0xff);//B\r
+       }       \r
+       return;\r
+    }\r
 }\r