--- /dev/null
+package jp.nyatla.nyartoolkit.utils.j2se;\r
+\r
+import jp.nyatla.nyartoolkit.NyARException;\r
+import jp.nyatla.nyartoolkit.core.types.NyARIntSize;\r
+import jp.nyatla.nyartoolkit.core.raster.rgb.*;\r
+import jp.nyatla.nyartoolkit.core.rasterreader.*;\r
+import java.awt.image.BufferedImage;\r
+\r
+\r
+public class NyARRGBRaster_BufferedImage implements INyARRgbRaster\r
+{\r
+ protected INyARRgbPixelReader _reader;\r
+ protected INyARBufferReader _buffer_reader; \r
+ final protected NyARIntSize _size;\r
+ final public int getWidth()\r
+ {\r
+ return this._size.w;\r
+ }\r
+\r
+ final public int getHeight()\r
+ {\r
+ return this._size.h;\r
+ }\r
+\r
+ final public NyARIntSize getSize()\r
+ {\r
+ return this._size;\r
+ }\r
+ /**\r
+ * i_imageをラップするRGBラスタを定義する。\r
+ * @param i_image\r
+ */\r
+ protected NyARRGBRaster_BufferedImage(BufferedImage i_image)\r
+ {\r
+ this._buffer_reader=new NyARBufferReader(i_image,INyARBufferReader.BUFFERFORMAT_OBJECT_Java_BufferedImage);\r
+ this._reader=new PixelReader(i_image);\r
+ this._size= new NyARIntSize(i_image.getWidth(),i_image.getHeight());\r
+ }\r
+ public INyARRgbPixelReader getRgbPixelReader() throws NyARException\r
+ {\r
+ return this._reader;\r
+ }\r
+ public INyARBufferReader getBufferReader()\r
+ {\r
+ return this._buffer_reader;\r
+ }\r
+ \r
+ \r
+ /**\r
+ * byte[]配列に、パディング無しの8bit画素値が、RGBRGBの順で並んでいる\r
+ * バッファに使用できるピクセルリーダー\r
+ *\r
+ */\r
+ private class PixelReader implements INyARRgbPixelReader\r
+ {\r
+ protected BufferedImage _ref_buf;\r
+\r
+ public PixelReader(BufferedImage i_buf)\r
+ {\r
+ this._ref_buf = i_buf;\r
+ }\r
+\r
+ public void getPixel(int i_x, int i_y, int[] o_rgb)\r
+ {\r
+ final BufferedImage ref_buf = this._ref_buf;\r
+ int p=ref_buf.getRGB(i_x, i_y);\r
+ o_rgb[0] = (p>>16) & 0xff;// R\r
+ o_rgb[1] = (p>>8) & 0xff;// G\r
+ o_rgb[2] = (p>>0) & 0xff;// B\r
+ return;\r
+ }\r
+\r
+ public void getPixelSet(int[] i_x, int[] i_y, int i_num, int[] o_rgb)\r
+ {\r
+ final BufferedImage ref_buf = this._ref_buf;\r
+ for (int i = i_num - 1; i >= 0; i--) {\r
+ int p=ref_buf.getRGB(i_x[i], i_y[i]);\r
+ o_rgb[i * 3 + 0] = (p>>16) & 0xff;// R\r
+ o_rgb[i * 3 + 1] = (p>>8) & 0xff;// G\r
+ o_rgb[i * 3 + 2] = (p>>0) & 0xff;// B\r
+ }\r
+ return;\r
+ }\r
+ public void setPixel(int i_x, int i_y, int[] i_rgb) throws NyARException\r
+ {\r
+ NyARException.notImplement(); \r
+ }\r
+ public void setPixels(int[] i_x, int[] i_y, int i_num, int[] i_intrgb) throws NyARException\r
+ {\r
+ NyARException.notImplement(); \r
+ }\r
+ \r
+ } \r
+ \r
+ \r
+ \r
+ \r
+}\r