OSDN Git Service

[backup]NyARToolkit
authornyatla <nyatla@7cac0a50-4618-4814-88d0-24b83990f816>
Tue, 12 Jan 2010 07:29:21 +0000 (07:29 +0000)
committernyatla <nyatla@7cac0a50-4618-4814-88d0-24b83990f816>
Tue, 12 Jan 2010 07:29:21 +0000 (07:29 +0000)
+sandboxにNyARRGBRaster_BufferdImageをとりあえず追加(色々直す予定)

git-svn-id: http://svn.sourceforge.jp/svnroot/nyartoolkit/NyARToolkit@381 7cac0a50-4618-4814-88d0-24b83990f816

trunk/sample/sandbox/jp/nyatla/nyartoolkit/utils/j2se/NyARRGBRaster_BufferedImage.java [new file with mode: 0644]

diff --git a/trunk/sample/sandbox/jp/nyatla/nyartoolkit/utils/j2se/NyARRGBRaster_BufferedImage.java b/trunk/sample/sandbox/jp/nyatla/nyartoolkit/utils/j2se/NyARRGBRaster_BufferedImage.java
new file mode 100644 (file)
index 0000000..ad4264b
--- /dev/null
@@ -0,0 +1,98 @@
+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