*/\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
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