OSDN Git Service

[backup]NyARToolKit
[nyartoolkit-and/nyartoolkit-and.git] / trunk / src / jp / nyatla / nyartoolkit / core / raster / NyARGrayscaleRaster.java
index 5b75e9c..21258c4 100644 (file)
@@ -30,6 +30,7 @@
  */\r
 package jp.nyatla.nyartoolkit.core.raster;\r
 \r
+import jp.nyatla.nyartoolkit.NyARException;\r
 import jp.nyatla.nyartoolkit.core.rasterreader.INyARBufferReader;\r
 import jp.nyatla.nyartoolkit.core.rasterreader.NyARBufferReader;\r
 import jp.nyatla.nyartoolkit.core.types.*;\r
@@ -37,59 +38,37 @@ import jp.nyatla.nyartoolkit.core.types.*;
 public final class NyARGrayscaleRaster extends NyARRaster_BasicClass\r
 {\r
 \r
-       protected int[] _ref_buf;\r
-       private INyARBufferReader _buffer_reader;\r
-       \r
-       public NyARGrayscaleRaster(int i_width, int i_height)\r
+       protected Object _buf;\r
+       protected INyARBufferReader _buffer_reader;\r
+       public NyARGrayscaleRaster(int i_width, int i_height) throws NyARException\r
        {\r
                super(new NyARIntSize(i_width,i_height));\r
-               this._ref_buf = new int[i_height*i_width];\r
-               this._buffer_reader=new NyARBufferReader(this._ref_buf,INyARBufferReader.BUFFERFORMAT_INT1D_GRAY_8);\r
+               if(!initInstance(this._size,INyARBufferReader.BUFFERFORMAT_INT1D_GRAY_8)){\r
+                       throw new NyARException();\r
+               }\r
+       }       \r
+       public NyARGrayscaleRaster(int i_width, int i_height,int i_raster_type) throws NyARException\r
+       {\r
+               super(new NyARIntSize(i_width,i_height));\r
+               if(!initInstance(this._size,i_raster_type)){\r
+                       throw new NyARException();\r
+               }\r
        }\r
        public INyARBufferReader getBufferReader()\r
        {\r
                return this._buffer_reader;\r
        }\r
-       /**\r
-        * 4近傍の画素ベクトルを取得します。\r
-        * 0,1,0\r
-        * 1,x,1\r
-        * 0,1,0\r
-        * @param i_raster\r
-        * @param x\r
-        * @param y\r
-        * @param o_v\r
-        */\r
-       public void getPixelVector4(int x,int y,NyARIntPoint2d o_v)\r
+       protected boolean initInstance(NyARIntSize i_size,int i_buf_type)\r
        {\r
-               int[] buf=this._ref_buf;\r
-               int w=this._size.w;\r
-               int idx=w*y+x;\r
-               o_v.x=buf[idx+1]-buf[idx-1];\r
-               o_v.y=buf[idx+w]-buf[idx-w];\r
+               switch(i_buf_type)\r
+               {\r
+                       case INyARBufferReader.BUFFERFORMAT_INT1D_GRAY_8:\r
+                               this._buf = new int[i_size.w*i_size.h];\r
+                               break;\r
+                       default:\r
+                               return false;\r
+               }\r
+               this._buffer_reader=new NyARBufferReader(this._buf,i_buf_type);\r
+               return true;\r
        }\r
-       /**\r
-        * 8近傍画素ベクトル\r
-        * 1,2,1\r
-        * 2,x,2\r
-        * 1,2,1\r
-        * @param i_raster\r
-        * @param x\r
-        * @param y\r
-        * @param o_v\r
-        */\r
-       public void getPixelVector8(int x,int y,NyARIntPoint2d o_v)\r
-       {\r
-               int[] buf=this._ref_buf;\r
-               NyARIntSize s=this._size;\r
-               int idx_0 =s.w*y+x;\r
-               int idx_p1=idx_0+s.w;\r
-               int idx_m1=idx_0-s.w;\r
-               int b=buf[idx_m1-1];\r
-               int d=buf[idx_m1+1];\r
-               int h=buf[idx_p1-1];\r
-               int f=buf[idx_p1+1];\r
-               o_v.x=buf[idx_0+1]-buf[idx_0-1]+(d-b+f-h)/2;\r
-               o_v.y=buf[idx_p1]-buf[idx_m1]+(f-d+h-b)/2;\r
-       }       \r
 }\r