-Index: D:/project.files/java.Lab/NyARToolKit/sample/java3d/src/jp/nyatla/nyartoolkit/java3d/utils/NyARSingleMarkerBehaviorListener.java\r
-===================================================================\r
---- D:/project.files/java.Lab/NyARToolKit/sample/java3d/src/jp/nyatla/nyartoolkit/java3d/utils/NyARSingleMarkerBehaviorListener.java (revision 0)\r
-+++ D:/project.files/java.Lab/NyARToolKit/sample/java3d/src/jp/nyatla/nyartoolkit/java3d/utils/NyARSingleMarkerBehaviorListener.java (revision 178)\r
-@@ -0,0 +1,24 @@\r
-+/**\r
-+ * NyARToolkit\82ÌBehavior\82Ì\83\8a\83X\83i\r
-+ * (c)2008 A\8cÕ\81\97nyatla.jp\r
-+ * airmail@ebony.plala.or.jp\r
-+ * http://nyatla.jp/\r
-+ */\r
-+package jp.nyatla.nyartoolkit.java3d.utils;\r
-+\r
-+import javax.media.j3d.*;\r
-+\r
-+public interface NyARSingleMarkerBehaviorListener\r
-+{\r
-+ /**\r
-+ * \82±\82Ì\83\8a\83X\83i\82Í\81A\83\8a\83X\83i\82É\83}\81[\83J\81[\82É\98A\93®\82µ\82Ä\83I\83u\83W\83F\83N\83g\82ð\91\80\8dì\82·\82é\83`\83\83\83\93\83X\82ð\97^\82¦\82Ü\82·\81B\r
-+ * \83\8a\83X\83i\82ÍNyARSingleMarkerBehavior\8aÖ\90\94\93à\82ÌprocessStimulus\8aÖ\90\94\82©\82ç\8cÄ\82Ñ\8fo\82³\82ê\82Ü\82·\81B\r
-+ * \r
-+ * @param i_is_marker_exist\r
-+ * \83}\81[\83J\81[\82ª\91¶\8dÝ\82·\82é\8fê\8d\87true\81A\91¶\8dÝ\82µ\82È\82¢\8fê\8d\87\81Afalse\82Å\82·\81B\r
-+ * @param i_transform3d\r
-+ * \83}\81[\83J\81[\82ª\91¶\8dÝ\82·\82é\8fê\8d\87\81A\82»\82Ì\95Ï\8a·\8ds\97ñ\82ª\8ew\92è\82³\82ê\82Ü\82·\81B\r
-+ * i_is_marker_exist\82ªtrue\82Ì\8e\9e\82¾\82¯\97L\8cø\82Å\82·\81B\r
-+ */\r
-+ public void onUpdate(boolean i_is_marker_exist,Transform3D i_transform3d);\r
-+}\r
-Index: D:/project.files/java.Lab/NyARToolKit/sample/java3d/src/jp/nyatla/nyartoolkit/java3d/utils/J3dNyARRaster_RGB.java\r
-===================================================================\r
---- D:/project.files/java.Lab/NyARToolKit/sample/java3d/src/jp/nyatla/nyartoolkit/java3d/utils/J3dNyARRaster_RGB.java (revision 0)\r
-+++ D:/project.files/java.Lab/NyARToolKit/sample/java3d/src/jp/nyatla/nyartoolkit/java3d/utils/J3dNyARRaster_RGB.java (revision 178)\r
-@@ -0,0 +1,64 @@\r
-+/**\r
-+ * NyARRaster_RGB\82ÉOpenGL\8cü\82¯\8aÖ\90\94\82ð\92Ç\89Á\82µ\82½\82à\82Ì\r
-+ * (c)2008 A\8cÕ\81\97nyatla.jp\r
-+ * airmail(at)ebony.plala.or.jp\r
-+ * http://nyatla.jp/\r
-+ */\r
-+package jp.nyatla.nyartoolkit.java3d.utils;\r
-+\r
-+import java.awt.image.*;\r
-+import java.awt.color.*;\r
-+\r
-+import javax.media.j3d.ImageComponent;\r
-+import javax.media.j3d.ImageComponent2D;\r
-+\r
-+\r
-+\r
-+import jp.nyatla.nyartoolkit.NyARException;\r
-+import jp.nyatla.nyartoolkit.core.NyARParam;\r
-+import jp.nyatla.nyartoolkit.jmf.utils.*;\r
-+\r
-+\r
-+public class J3dNyARRaster_RGB extends JmfNyARRaster_RGB\r
-+{\r
-+// public ImageUpdater updater; \r
-+ private ImageComponent2D imc2d;\r
-+ private byte[] i2d_buf;\r
-+\r
-+ public void setBuffer(javax.media.Buffer i_buffer) throws NyARException\r
-+ {\r
-+ super.setBuffer(i_buffer);\r
-+ //\83\81\83\82\81F\82±\82Ì\8e\9e\93_\82Å\82Í\81Aref_data\82É\82Íi_buffer\82Ì\8eQ\8fÆ\92l\82ª\93ü\82Á\82Ä\82é\81B\r
-+ synchronized(imc2d){\r
-+ //\83L\83\83\83v\83`\83\83\83f\81[\83^\82ði2d\82Ì\83o\83b\83t\83@\82É\83R\83s\81[\82·\82é\81B\81i\82±\82ê\8fÈ\97ª\82µ\82½\82¢\82È\82 \81c\81B\81j\r
-+ System.arraycopy(ref_buf,0,i2d_buf,0,this.i2d_buf.length);\r
-+ }\r
-+ //\82±\82±\82Åref_buf\82Ì\8eQ\8fÆ\92l\82ðref_buf\82Ö\88Ú\93®\r
-+ ref_buf=i2d_buf;\r
-+ } \r
-+ public J3dNyARRaster_RGB(NyARParam i_cparam)\r
-+ {\r
-+ super(i_cparam.getX(),i_cparam.getY());\r
-+\r
-+ //RGB\82Ì\83\89\83X\83^\82ð\8dì\82é\81B\r
-+// ColorSpace cs=ColorSpace.getInstance(ColorSpace.CS_LINEAR_RGB);\r
-+// ComponentColorModel cm;\r
-+// cm=new ComponentColorModel(cs,new int[]{8,8,8},false,false,ComponentColorModel.OPAQUE,DataBuffer.TYPE_BYTE);\r
-+// java.awt.image.WritableRaster raster=cm.createCompatibleWritableRaster(width,height);\r
-+// i2d_buf=((DataBufferByte)raster.getDataBuffer()).getData();\r
-+// BufferedImage background_image = new BufferedImage(cm,raster, false, null);\r
-+ BufferedImage background_image = new BufferedImage(width,height,BufferedImage.TYPE_3BYTE_BGR);\r
-+ i2d_buf=((DataBufferByte)background_image.getRaster().getDataBuffer()).getData();\r
-+ //\r
-+ imc2d= new ImageComponent2D(ImageComponent2D.FORMAT_RGB, background_image, true, true);\r
-+ imc2d.setCapability(ImageComponent.ALLOW_IMAGE_WRITE);\r
-+ }\r
-+ /**\r
-+ * \82±\82Ì\83I\83u\83W\83F\83N\83g\82Æ\98A\93®\82·\82éImageComponent2D\83I\83u\83W\83F\83N\83g\82Ì\8eQ\8fÆ\92l\82ð\93¾\82é\81B\r
-+ * @return\r
-+ */\r
-+ public ImageComponent2D getImageComponent2D()\r
-+ {\r
-+ return imc2d;\r
-+ }\r
-+}\r
-Index: D:/project.files/java.Lab/NyARToolKit/sample/java3d/src/jp/nyatla/nyartoolkit/java3d/utils/J3dNyARParam.java\r
-===================================================================\r
---- D:/project.files/java.Lab/NyARToolKit/sample/java3d/src/jp/nyatla/nyartoolkit/java3d/utils/J3dNyARParam.java (revision 0)\r
-+++ D:/project.files/java.Lab/NyARToolKit/sample/java3d/src/jp/nyatla/nyartoolkit/java3d/utils/J3dNyARParam.java (revision 178)\r
-@@ -0,0 +1,119 @@\r
-+/**\r
-+ * NyARParam\82ÉOpenGL\8cü\82¯\8aÖ\90\94\82ð\92Ç\89Á\82µ\82½\82à\82Ì\r
-+ * (c)2008 A\8cÕ\81\97nyatla.jp\r
-+ * airmail(at)ebony.plala.or.jp\r
-+ * http://nyatla.jp/\r
-+ */\r
-+package jp.nyatla.nyartoolkit.java3d.utils;\r
-+\r
-+import jp.nyatla.nyartoolkit.core.*;\r
-+import javax.media.j3d.Transform3D;\r
-+\r
-+public class J3dNyARParam extends NyARParam\r
-+{\r
-+ private double view_distance_min=0.01;//1cm\81`10.0m\r
-+ private double view_distance_max=10.0;\r
-+ private Transform3D m_projection=null;\r
-+ /**\r
-+ * \8e\8b\91Ì\90Ï\82Ì\8bß\82¢\95û\82ð\83\81\81[\83g\83\8b\82Å\8ew\92è\r
-+ * @param i_new_value\r
-+ */\r
-+ public void setViewDistanceMin(double i_new_value)\r
-+ {\r
-+ m_projection=null;//\83L\83\83\83b\83V\83\85\8dÏ\95Ï\90\94\8f\89\8aú\89»\r
-+ view_distance_min=i_new_value;\r
-+ }\r
-+ /**\r
-+ * \8e\8b\91Ì\90Ï\82Ì\89\93\82¢\95û\82ð\83\81\81[\83g\83\8b\82Å\8ew\92è\r
-+ * @param i_new_value\r
-+ */\r
-+ public void setViewDistanceMax(double i_new_value)\r
-+ {\r
-+ m_projection=null;//\83L\83\83\83b\83V\83\85\8dÏ\95Ï\90\94\8f\89\8aú\89»\r
-+ view_distance_max=i_new_value;\r
-+ }\r
-+ /**\r
-+ * void arglCameraFrustumRH(const ARParam *cparam, const double focalmin, const double focalmax, GLdouble m_projection[16])\r
-+ * \8aÖ\90\94\82Ì\92u\82«\8a·\82¦\r
-+ * @param focalmin\r
-+ * @param focalmax\r
-+ * @return\r
-+ */\r
-+ public Transform3D getCameraTransform()\r
-+ {\r
-+ //\8aù\82É\92l\82ª\83L\83\83\83b\83V\83\85\82³\82ê\82Ä\82¢\82½\82ç\82»\82ê\82ð\8eg\82¤\r
-+ if(m_projection!=null){\r
-+ return m_projection;\r
-+ }\r
-+ //\96³\82¯\82ê\82Î\8cv\8eZ\r
-+\r
-+ NyARMat trans_mat=new NyARMat(3,4);\r
-+ NyARMat icpara_mat=new NyARMat(3,4);\r
-+ double[][] p=new double[3][3], q=new double[4][4];\r
-+ double width, height;\r
-+ int i, j;\r
-+ \r
-+ width = xsize;\r
-+ height = ysize;\r
-+ \r
-+ decompMat(icpara_mat,trans_mat);\r
-+\r
-+ double[][] icpara=icpara_mat.getArray();\r
-+ double[][] trans=trans_mat.getArray();\r
-+ for (i = 0; i < 4; i++) {\r
-+ icpara[1][i] = (height - 1)*(icpara[2][i]) - icpara[1][i];\r
-+ }\r
-+ \r
-+ for(i = 0; i < 3; i++) {\r
-+ for(j = 0; j < 3; j++) {\r
-+ p[i][j] = icpara[i][j] / icpara[2][2];\r
-+ }\r
-+ }\r
-+ //p[0][0],p[1][1]=n\r
-+ //p[0][2],p[1][2]=t+b\r
-+\r
-+ //Projection\82Ì\8cv\8eZ\r
-+ q[0][0] = (2.0 * p[0][0] / (width - 1));\r
-+ q[0][1] = (2.0 * p[0][1] / (width - 1));\r
-+ q[0][2] = -((2.0 * p[0][2] / (width - 1)) - 1.0);\r
-+ q[0][3] = 0.0;\r
-+ \r
-+ q[1][0] = 0.0;\r
-+ q[1][1] = -(2.0 * p[1][1] / (height - 1));\r
-+ q[1][2] = -((2.0 * p[1][2] / (height - 1)) - 1.0);\r
-+ q[1][3] = 0.0;\r
-+ \r
-+ q[2][0] = 0.0;\r
-+ q[2][1] = 0.0;\r
-+ q[2][2] = (view_distance_max + view_distance_min)/(view_distance_min - view_distance_max);\r
-+ q[2][3] = 2.0 * view_distance_max * view_distance_min / (view_distance_min - view_distance_max);\r
-+ \r
-+ q[3][0] = 0.0;\r
-+ q[3][1] = 0.0;\r
-+ q[3][2] = -1.0;\r
-+ q[3][3] = 0.0;\r
-+ \r
-+ q[2][2]=q[2][2]*-1;\r
-+ q[2][3]=q[2][3]*-1;\r
-+ \r
-+ double[] tmp_projection=new double[16];\r
-+ for (i = 0; i < 4; i++) { // Row.\r
-+ // First 3 columns of the current row.\r
-+ for (j = 0; j < 3; j++) { // Column.\r
-+ tmp_projection[i + j*4] =(\r
-+ q[i][0] * trans[0][j] +\r
-+ q[i][1] * trans[1][j] +\r
-+ q[i][2] * trans[2][j]);\r
-+ }\r
-+ // Fourth column of the current row.\r
-+ tmp_projection[i + 3*4]=\r
-+ q[i][0] * trans[0][3] +\r
-+ q[i][1] * trans[1][3] +\r
-+ q[i][2] * trans[2][3] +\r
-+ q[i][3];\r
-+ }\r
-+ m_projection=new Transform3D(tmp_projection);\r
-+ m_projection.transpose();\r
-+ return m_projection;\r
-+ }\r
-+}\r
-Index: D:/project.files/java.Lab/NyARToolKit/sample/java3d/src/jp/nyatla/nyartoolkit/java3d/utils/NyARSingleMarkerBehaviorHolder.java\r
-===================================================================\r
---- D:/project.files/java.Lab/NyARToolKit/sample/java3d/src/jp/nyatla/nyartoolkit/java3d/utils/NyARSingleMarkerBehaviorHolder.java (revision 0)\r
-+++ D:/project.files/java.Lab/NyARToolKit/sample/java3d/src/jp/nyatla/nyartoolkit/java3d/utils/NyARSingleMarkerBehaviorHolder.java (revision 178)\r
-@@ -0,0 +1,191 @@\r
-+/**\r
-+ * NyARToolkit\82ÌBehavior\83z\83\8b\83_\81[\r
-+ * (c)2008 A\8cÕ\81\97nyatla.jp\r
-+ * airmail@ebony.plala.or.jp\r
-+ * http://nyatla.jp/\r
-+ */\r
-+package jp.nyatla.nyartoolkit.java3d.utils;\r
-+\r
-+import java.util.Enumeration;\r
-+\r
-+import javax.media.Buffer;\r
-+import javax.media.j3d.*;\r
-+import javax.vecmath.*;\r
-+\r
-+import jp.nyatla.nyartoolkit.core.NyARParam;\r
-+import jp.nyatla.nyartoolkit.detector.NyARSingleDetectMarker;\r
-+import jp.nyatla.nyartoolkit.jmf.*;\r
-+import jp.nyatla.nyartoolkit.jmf.utils.JmfCameraCapture;\r
-+import jp.nyatla.nyartoolkit.jmf.utils.JmfCaptureListener;\r
-+import jp.nyatla.nyartoolkit.*;\r
-+import jp.nyatla.nyartoolkit.core.*;\r
-+\r
-+/**\r
-+ * NyARToolkit\82Æ\98A\93®\82µ\82½Behavior\82ð\95Ô\8bp\82·\82é\83N\83\89\83X\82Å\82·\81B\r
-+ * \92ñ\8b\9f\82Å\82«\82éBehavior\82Í\81ABackground\82ÆTransformgroup\82Å\82·\81B\r
-+ *\r
-+ */\r
-+public class NyARSingleMarkerBehaviorHolder implements JmfCaptureListener\r
-+{\r
-+ private NyARParam cparam;\r
-+ private JmfCameraCapture capture;\r
-+ private J3dNyARRaster_RGB nya_raster;//\8dÅ\91å3\83X\83\8c\83b\83h\82Å\8b¤\97L\82³\82ê\82é\82Ì\82Å\81A\94r\91¼\90§\8cä\82©\82¯\82é\82±\82Æ\81B\r
-+ private NyARSingleDetectMarker nya;\r
-+ //Behavior\83z\83\8b\83_\r
-+ private NyARBehavior nya_behavior;\r
-+ public NyARSingleMarkerBehaviorHolder(NyARParam i_cparam,float i_rate,NyARCode i_ar_code,double i_marker_width) throws NyARException\r
-+ {\r
-+ nya_behavior=null;\r
-+ cparam=i_cparam;\r
-+ capture=new JmfCameraCapture(cparam.getX(),cparam.getY(),i_rate,JmfCameraCapture.PIXEL_FORMAT_RGB);\r
-+ capture.setCaptureListener(this);\r
-+ nya_raster=new J3dNyARRaster_RGB(cparam); \r
-+ nya=new NyARSingleDetectMarker(cparam,i_ar_code,i_marker_width);\r
-+ nya_behavior=new NyARBehavior(nya,nya_raster,i_rate);\r
-+ }\r
-+ public Behavior getBehavior()\r
-+ {\r
-+ return nya_behavior;\r
-+ }\r
-+ /**\r
-+ * i_back_ground\82É\83L\83\83\83v\83`\83\83\89æ\91\9c\82ð\93]\91\97\82·\82é\82æ\82¤\82ÉBehavior\82ð\90Ý\92è\82µ\82Ü\82·\81B\r
-+ * i_back_groung\82ÍALLOW_IMAGE_WRITE\91®\90«\82ð\8e\9d\82Â\82à\82Ì\82Å\82 \82é\95K\97v\82ª\82 \82è\82Ü\82·\81B\r
-+ * @param i_back_groung\r
-+ * @return\r
-+ */\r
-+ public void setBackGround(Background i_back_ground)\r
-+ {\r
-+ //\83R\81[\83\8b\90æ\82Å\94r\91¼\90§\8cä\r
-+ nya_behavior.setRelatedBackGround(i_back_ground);\r
-+ }\r
-+ /**\r
-+ * i_trgroup\82Ì\8dÀ\95W\8cn\82ð\83}\81[\83J\81[\82É\82 \82í\82¹\82é\82æ\82¤\82ÉBehavior\82ð\90Ý\92è\82µ\82Ü\82·\81B\r
-+ *\r
-+ */\r
-+ public void setTransformGroup(TransformGroup i_trgroup)\r
-+ {\r
-+ //\83R\81[\83\8b\90æ\82Å\94r\91¼\90§\8cä\r
-+ nya_behavior.setRelatedTransformGroup(i_trgroup);\r
-+ }\r
-+ /**\r
-+ * \8dÀ\95W\8cn\8dÄ\8cv\8eZ\8cã\82É\8cÄ\82Ñ\8fo\82³\82ê\82é\83\8a\83X\83i\82Å\82·\81B\r
-+ * @param i_listener\r
-+ */\r
-+ public void setUpdateListener(NyARSingleMarkerBehaviorListener i_listener)\r
-+ {\r
-+ //\83R\81[\83\8b\90æ\82Å\94r\91¼\90§\8cä\r
-+ nya_behavior.setUpdateListener(i_listener);\r
-+ }\r
-+ /**\r
-+ * \83\89\83X\83^\82ð\8dX\90V \83R\81[\83\8b\83o\83b\83N\8aÖ\90\94\82¾\82©\82ç\8cÄ\82ñ\82¶\82á\82ç\82ß\82¦\r
-+ */\r
-+ public void onUpdateBuffer(Buffer i_buffer)\r
-+ {\r
-+ try{\r
-+ synchronized(nya_raster){\r
-+ nya_raster.setBuffer(i_buffer);\r
-+ }\r
-+ }catch(Exception e){\r
-+ e.printStackTrace();\r
-+ }\r
-+ }\r
-+ public void start() throws NyARException\r
-+ {\r
-+ //\8aJ\8en\r
-+ capture.start();\r
-+ }\r
-+ public void stop()\r
-+ {\r
-+ capture.stop();\r
-+ }\r
-+}\r
-+\r
-+\r
-+class NyARBehavior extends Behavior\r
-+{\r
-+ private NyARSingleDetectMarker related_nya;\r
-+ private TransformGroup trgroup;\r
-+ private Background back_ground;\r
-+ private J3dNyARRaster_RGB raster;\r
-+ private WakeupCondition wakeup;\r
-+ private NyARSingleMarkerBehaviorListener listener;\r
-+ public void initialize()\r
-+ {\r
-+ wakeupOn(wakeup);\r
-+ }\r
-+ /**\r
-+ * i_related_ic2d\82Ì\93à\97e\82Å\92è\8aú\93I\82Éi_back_ground\82ð\8dX\90V\82·\82éBehavior\r
-+ * @param i_back_ground\r
-+ * @param i_related_ic2d\r
-+ */\r
-+ public NyARBehavior(NyARSingleDetectMarker i_related_nya,J3dNyARRaster_RGB i_related_raster,float i_rate)\r
-+ {\r
-+ super();\r
-+ wakeup=new WakeupOnElapsedTime((int)(1000/i_rate));\r
-+ related_nya=i_related_nya;\r
-+ trgroup =null;\r
-+ raster =i_related_raster;\r
-+ back_ground=null;\r
-+ listener=null;\r
-+ this.setSchedulingBounds(new BoundingSphere(new Point3d(), 100.0));\r
-+ }\r
-+ public void setRelatedBackGround(Background i_back_ground)\r
-+ {\r
-+ synchronized(raster){\r
-+ back_ground=i_back_ground;\r
-+ }\r
-+ }\r
-+ public void setRelatedTransformGroup(TransformGroup i_trgroup)\r
-+ {\r
-+ synchronized(raster){\r
-+ trgroup=i_trgroup;\r
-+ } \r
-+ }\r
-+ public void setUpdateListener(NyARSingleMarkerBehaviorListener i_listener)\r
-+ {\r
-+ synchronized(raster){\r
-+ listener=i_listener;\r
-+ }\r
-+ }\r
-+\r
-+ /**\r
-+ * \82¢\82í\82ä\82é\83C\83x\83\93\83g\83n\83\93\83h\83\89\r
-+ */\r
-+ public void processStimulus(Enumeration criteria)\r
-+ {\r
-+ try{\r
-+ synchronized(raster){\r
-+ Transform3D t3d=null;\r
-+ boolean is_marker_exist=false;\r
-+ if(back_ground!=null){\r
-+ back_ground.setImage(raster.getImageComponent2D()); \r
-+ }\r
-+ if(raster.hasData()){\r
-+ is_marker_exist=related_nya.detectMarkerLite(raster, 100);\r
-+ if(is_marker_exist){\r
-+ NyARMat nymat=related_nya.getTransmationMatrix();\r
-+ double[][] src=nymat.getArray();\r
-+ Matrix4d matrix=new Matrix4d(\r
-+ src[0][0],-src[1][0],-src[2][0],0,\r
-+ -src[0][1], src[1][1], src[2][1],0,\r
-+ -src[0][2], src[1][2], src[2][2],0,\r
-+ -src[0][3], src[1][3], src[2][3],1);\r
-+ matrix.transpose();\r
-+ t3d=new Transform3D(matrix);\r
-+ if(trgroup!=null){\r
-+ trgroup.setTransform(t3d);\r
-+ }\r
-+ }\r
-+ }\r
-+ if(listener!=null)\r
-+ {\r
-+ listener.onUpdate(is_marker_exist, t3d);\r
-+ }\r
-+ }\r
-+ wakeupOn(wakeup); \r
-+ }catch(Exception e){\r
-+ e.printStackTrace();\r
-+ }\r
-+ }\r
-+}\r
-+\r
-Index: D:/project.files/java.Lab/NyARToolKit/sample/java3d/src/jp/nyatla/nyartoolkit/java3d/sample/NyARJava3D.java\r
-===================================================================\r
---- D:/project.files/java.Lab/NyARToolKit/sample/java3d/src/jp/nyatla/nyartoolkit/java3d/sample/NyARJava3D.java (revision 0)\r
-+++ D:/project.files/java.Lab/NyARToolKit/sample/java3d/src/jp/nyatla/nyartoolkit/java3d/sample/NyARJava3D.java (revision 178)\r
-@@ -0,0 +1,148 @@\r
-+/**\r
-+ * Java3D\83T\83\93\83v\83\8b\83v\83\8d\83O\83\89\83\80\r
-+ * \83V\83\93\83O\83\8b\83}\81[\83J\81[\92Ç\90Õ\97p\82ÌBehavior\82ð\8eg\82Á\82Ä\81A\94w\8ci\82Æ\82P\8cÂ\82Ì\83}\81[\83J\81[\82É\98A\93®\82µ\82½TransformGroup\r
-+ * \82ð\93®\82©\82µ\82Ü\82·\81B\r
-+ * (c)2008 A\8cÕ\81\97nyatla.jp\r
-+ * airmail@ebony.plala.or.jp\r
-+ * http://nyatla.jp/\r
-+ */\r
-+package jp.nyatla.nyartoolkit.java3d.sample;\r
-+\r
-+import java.awt.BorderLayout;\r
-+import javax.media.j3d.*;\r
-+\r
-+import com.sun.j3d.utils.universe.*;\r
-+import java.awt.*;\r
-+import javax.swing.JFrame;\r
-+import javax.vecmath.*;\r
-+\r
-+import jp.nyatla.nyartoolkit.core.*;\r
-+import jp.nyatla.nyartoolkit.java3d.utils.*;\r
-+\r
-+import com.sun.j3d.utils.geometry.ColorCube;\r
-+\r
-+public class NyARJava3D extends JFrame implements NyARSingleMarkerBehaviorListener \r
-+{\r
-+ private final String CARCODE_FILE ="../../Data/patt.hiro";\r
-+ private final String PARAM_FILE ="../../Data/camera_para.dat";\r
-+ //NyARToolkit\8aÖ\8cW\r
-+ private NyARSingleMarkerBehaviorHolder nya_behavior;\r
-+ private J3dNyARParam ar_param;\r
-+ //universe\8aÖ\8cW\r
-+ private Canvas3D canvas;\r
-+ private Locale locale;\r
-+ private VirtualUniverse universe;\r
-+ public static void main(String[] args)\r
-+ {\r
-+ try{\r
-+ NyARJava3D frame = new NyARJava3D();\r
-+ \r
-+ frame.setVisible(true);\r
-+ Insets ins=frame.getInsets();\r
-+ frame.setSize(320+ins.left+ins.right,240+ins.top+ins.bottom);\r
-+ frame.startCapture();\r
-+ frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);\r
-+ }catch(Exception e){\r
-+ e.printStackTrace();\r
-+ }\r
-+ }\r
-+ public void onUpdate(boolean i_is_marker_exist,Transform3D i_transform3d)\r
-+ {\r
-+ /*\r
-+ * TODO:Please write your behavior operation code here.\r
-+ * \83}\81[\83J\81[\82Ì\8ep\90¨\82ð\8c³\82É\91¼\82Ì\82RD\83I\83u\83W\83F\83N\83g\82ð\91\80\8dì\82·\82é\82Æ\82«\82Í\81A\82±\82±\82É\8f\88\97\9d\82ð\8f\91\82«\82Ü\82·\81B*/\r
-+ \r
-+ }\r
-+ public void startCapture() throws Exception\r
-+ {\r
-+ nya_behavior.start(); \r
-+ }\r
-+ public NyARJava3D() throws Exception\r
-+ {\r
-+ super("Java3D Example NyARToolkit");\r
-+\r
-+ //NyARToolkit\82Ì\8f\80\94õ\r
-+ NyARCode ar_code =new NyARCode(16,16);\r
-+ ar_code.loadFromARFile(CARCODE_FILE);\r
-+ ar_param=new J3dNyARParam();\r
-+ ar_param.loadFromARFile(PARAM_FILE);\r
-+ ar_param.changeSize(320,240);\r
-+ \r
-+ //locale\82Ì\8dì\90¬\82Ælocate\82Æview\82Ì\90Ý\92è\r
-+ universe = new VirtualUniverse();\r
-+ locale = new Locale( universe );\r
-+ canvas=new Canvas3D( SimpleUniverse.getPreferredConfiguration());\r
-+ View view = new View();\r
-+ ViewPlatform viewPlatform = new ViewPlatform();\r
-+ view.attachViewPlatform( viewPlatform );\r
-+ view.addCanvas3D(canvas);\r
-+ view.setPhysicalBody( new PhysicalBody() );\r
-+ view.setPhysicalEnvironment( new PhysicalEnvironment());\r
-+\r
-+ //\8e\8b\8aE\82Ì\90Ý\92è(\83J\83\81\83\89\90Ý\92è\82©\82ç\8eæ\93¾)\r
-+ Transform3D camera_3d=ar_param.getCameraTransform();\r
-+ view.setCompatibilityModeEnable(true);\r
-+ view.setProjectionPolicy(View.PERSPECTIVE_PROJECTION);\r
-+ view.setLeftProjection(camera_3d);\r
-+ \r
-+ //\8e\8b\93_\90Ý\92è(0,0,0\82©\82ç\81AY\8e²\82ð180\93x\89ñ\93]\82µ\82ÄZ+\95û\8cü\82ð\8cü\82\82æ\82¤\82É\82·\82é\81B)\r
-+ TransformGroup viewGroup = new TransformGroup();\r
-+ Transform3D viewTransform = new Transform3D();\r
-+ viewTransform.rotY(Math.PI);\r
-+ viewTransform.setTranslation(new Vector3d(0.0,0.0,0.0));\r
-+ viewGroup.setTransform( viewTransform );\r
-+ viewGroup.addChild( viewPlatform );\r
-+ BranchGroup viewRoot = new BranchGroup();\r
-+ viewRoot.addChild( viewGroup );\r
-+ locale.addBranchGraph( viewRoot );\r
-+\r
-+ \r
-+ //\83o\83b\83N\83O\83\89\83E\83\93\83h\82Ì\8dì\90¬\r
-+ Background background =new Background();\r
-+ BoundingSphere bounds = new BoundingSphere();\r
-+ bounds.setRadius( 10.0 ); \r
-+ background.setApplicationBounds(bounds);\r
-+ background.setImageScaleMode(Background.SCALE_FIT_ALL);\r
-+ background.setCapability(Background.ALLOW_IMAGE_WRITE);\r
-+ BranchGroup root = new BranchGroup();\r
-+ root.addChild(background);\r
-+ \r
-+ //TransformGroup\82Å\88Í\82Á\82½\83V\81[\83\93\83O\83\89\83t\82Ì\8dì\90¬\r
-+ TransformGroup transform=new TransformGroup();\r
-+ transform.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);\r
-+ transform.addChild(createSceneGraph());\r
-+ root.addChild(transform);\r
-+ \r
-+ //NyARToolkit\82ÌBehavior\82ð\8dì\82é\81B(\83}\81[\83J\81[\83T\83C\83Y\82Í\83\81\81[\83g\83\8b\82Å\8ew\92è\82·\82é\82±\82Æ)\r
-+ nya_behavior=new NyARSingleMarkerBehaviorHolder(ar_param,30f,ar_code,0.08);\r
-+ //Behavior\82É\98A\93®\82·\82é\83O\83\8b\81[\83v\82ð\83Z\83b\83g\r
-+ nya_behavior.setTransformGroup(transform);\r
-+ nya_behavior.setBackGround(background);\r
-+ \r
-+ //\8fo\97\88\82½behavior\82ð\83Z\83b\83g\r
-+ root.addChild(nya_behavior.getBehavior());\r
-+ nya_behavior.setUpdateListener(this);\r
-+ \r
-+ //\95\\8e¦\83u\83\89\83\93\83`\82ðLocate\82É\83Z\83b\83g\r
-+ locale.addBranchGraph(root);\r
-+ \r
-+ //\83E\83C\83\93\83h\83E\82Ì\90Ý\92è\r
-+ setLayout(new BorderLayout());\r
-+ add(canvas,BorderLayout.CENTER);\r
-+ }\r
-+ /**\r
-+ * \83V\81[\83\93\83O\83\89\83t\82ð\8dì\82Á\82Ä\81A\82»\82Ì\83m\81[\83h\82ð\95Ô\82·\81B\r
-+ * \82±\82Ì\83m\81[\83h\82Í40mm\82Ì\90F\82Â\82«\83i\83^\83f\83R\83R\82ð\95\\8e¦\82·\82é\83V\81[\83\93\81B\82\9a\8e²\82ð\8aî\8f\80\82É20mm\8fã\82É\95\82\82©\82¹\82Ä\82é\81B\r
-+ * @return\r
-+ */\r
-+ private Node createSceneGraph()\r
-+ {\r
-+ TransformGroup tg=new TransformGroup();\r
-+ Transform3D mt=new Transform3D();\r
-+ mt.setTranslation(new Vector3d(0.00,0.0,20*0.001));\r
-+ // \91å\82«\82³ 40mm\82Ì\90F\95t\82«\97§\95û\91Ì\82ð\81AZ\8e²\8fã\82Å20mm\93®\82©\82µ\82Ä\94z\92u\81j\r
-+ tg.setTransform(mt);\r
-+ tg.addChild(new ColorCube(20*0.001));\r
-+ return tg;\r
-+ }\r
-+}\r
-Index: D:/project.files/java.Lab/NyARToolKit/sample/jogl/JavaSimpleLite.java\r
-===================================================================\r
---- D:/project.files/java.Lab/NyARToolKit/sample/jogl/JavaSimpleLite.java (revision 174)\r
-+++ D:/project.files/java.Lab/NyARToolKit/sample/jogl/JavaSimpleLite.java (revision 178)\r
-@@ -1,217 +0,0 @@\r
--/**\r
-- * simpleLite\82Æ\93¯\82¶\82æ\82¤\82È\83e\83X\83g\83v\83\8d\83O\83\89\83\80\r
-- * \83}\81[\83J\81[\82Ì\88ê\92v\93x\82Ì\8dÅ\92á\92l\82ð\83`\83F\83b\83N\82·\82é\82Æ\82±\82ë\82ð\94²\82¢\82½\82Ì\82Å\81A\93¯\82¶\83}\81[\83J\81[\82ð\91å\97Ê\82É\r
-- * \8c\9f\8fo\82·\82é\82Æ\96Ê\94\92\82¢\82±\82Æ\82É\82È\82è\82Ü\82·\81B\r
-- * (c)2008 R.iizuka\r
-- * airmail(at)ebony.plala.or.jp\r
-- * http://nyatla.jp/\r
-- */\r
--import java.awt.event.WindowAdapter;\r
--import java.awt.event.WindowEvent;\r
--import java.awt.*;\r
--\r
--import javax.media.Buffer;\r
--\r
--import javax.media.opengl.GL;\r
--import javax.media.opengl.GLAutoDrawable;\r
--import javax.media.opengl.GLEventListener;\r
--import javax.media.opengl.GLCanvas;\r
--\r
--import com.sun.opengl.util.Animator;\r
--\r
--import jp.nyatla.nyartoolkit.core.NyARCode;\r
--\r
--import jp.nyatla.nyartoolkit.jmf.JmfCameraCapture;\r
--import jp.nyatla.nyartoolkit.jmf.JmfCaptureListener;\r
--import jp.nyatla.nyartoolkit.gutil.*;\r
--\r
--\r
--public class JavaSimpleLite implements GLEventListener,JmfCaptureListener\r
--{\r
-- private final String CARCODE_FILE ="../../Data/patt.hiro";\r
-- private final String PARAM_FILE ="../../Data/camera_para.dat";\r
-- \r
-- \r
-- private Animator animator;\r
-- private GLNyARRaster_RGB cap_image;\r
-- \r
-- private JmfCameraCapture capture;\r
-- private GL gl;\r
-- //NyARToolkit\8aÖ\8cW\r
-- private GLNyARSingleDetectMarker nya;\r
-- private GLNyARParam ar_param;\r
-- /**\r
-- * \97§\95û\91Ì\82ð\8f\91\82\r
-- *\r
-- */\r
-- void drawCube()\r
-- {\r
-- // Colour cube data.\r
-- int polyList = 0;\r
-- float fSize = 0.5f;\r
-- int f, i; \r
-- float[][] cube_vertices=new float[][]{\r
-- {1.0f, 1.0f, 1.0f}, {1.0f, -1.0f, 1.0f}, {-1.0f, -1.0f, 1.0f}, {-1.0f, 1.0f, 1.0f},\r
-- {1.0f, 1.0f, -1.0f}, {1.0f, -1.0f, -1.0f}, {-1.0f, -1.0f, -1.0f}, {-1.0f, 1.0f, -1.0f}\r
-- };\r
-- float[][] cube_vertex_colors=new float[][]{\r
-- {1.0f, 1.0f, 1.0f}, {1.0f, 1.0f, 0.0f}, {0.0f, 1.0f, 0.0f}, {0.0f, 1.0f, 1.0f},\r
-- {1.0f, 0.0f, 1.0f}, {1.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 1.0f}\r
-- };\r
-- int cube_num_faces = 6;\r
-- short[][] cube_faces =new short[][]{\r
-- {3, 2, 1, 0}, {2, 3, 7, 6}, {0, 1, 5, 4}, {3, 0, 4, 7}, {1, 2, 6, 5}, {4, 5, 6, 7}\r
-- };\r
-- \r
-- if (polyList==0) {\r
-- polyList = gl.glGenLists (1);\r
-- gl.glNewList(polyList, GL.GL_COMPILE);\r
-- gl.glBegin(GL.GL_QUADS);\r
-- for (f = 0; f < cube_num_faces; f++)\r
-- for (i = 0; i < 4; i++) {\r
-- gl.glColor3f (cube_vertex_colors[cube_faces[f][i]][0], cube_vertex_colors[cube_faces[f][i]][1], cube_vertex_colors[cube_faces[f][i]][2]);\r
-- gl.glVertex3f(cube_vertices[cube_faces[f][i]][0] * fSize, cube_vertices[cube_faces[f][i]][1] * fSize, cube_vertices[cube_faces[f][i]][2] * fSize);\r
-- }\r
-- gl.glEnd();\r
-- gl.glColor3f(0.0f, 0.0f, 0.0f);\r
-- for (f = 0; f < cube_num_faces; f++) {\r
-- gl.glBegin (GL.GL_LINE_LOOP);\r
-- for (i = 0; i < 4; i++)\r
-- gl.glVertex3f(cube_vertices[cube_faces[f][i]][0] * fSize, cube_vertices[cube_faces[f][i]][1] * fSize, cube_vertices[cube_faces[f][i]][2] * fSize);\r
-- gl.glEnd ();\r
-- }\r
-- gl.glEndList ();\r
-- }\r
-- \r
-- gl.glPushMatrix(); // Save world coordinate system.\r
-- gl.glTranslatef(0.0f, 0.0f, 0.5f); // Place base of cube on marker surface.\r
-- gl.glRotatef(0.0f, 0.0f, 0.0f, 1.0f); // Rotate about z axis.\r
-- gl.glDisable(GL.GL_LIGHTING); // Just use colours.\r
-- gl.glCallList(polyList); // Draw the cube.\r
-- gl.glPopMatrix(); // Restore world coordinate system.\r
-- \r
-- }\r
-- \r
-- \r
-- \r
-- public JavaSimpleLite()\r
-- {\r
-- Frame frame = new Frame("Java simpleLite with NyARToolkit");\r
--\r
--\r
-- // 3D\82ð\95`\89æ\82·\82é\83R\83\93\83|\81[\83l\83\93\83g\r
-- GLCanvas canvas = new GLCanvas();\r
-- frame.add(canvas);\r
-- canvas.addGLEventListener(this);\r
-- frame.addWindowListener(new WindowAdapter() {\r
-- public void windowClosing(WindowEvent e) {\r
-- System.exit(0);\r
-- }\r
-- });\r
--\r
-- frame.setVisible(true);\r
-- Insets ins=frame.getInsets();\r
-- frame.setSize(320+ins.left+ins.right,240+ins.top+ins.bottom);\r
-- canvas.setBounds(ins.left,ins.top,320,240);\r
-- }\r
--\r
-- public void init(GLAutoDrawable drawable) {\r
-- gl = drawable.getGL();\r
-- gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);\r
-- //NyARToolkit\82Ì\8f\80\94õ\r
-- try{\r
-- //\83L\83\83\83v\83`\83\83\82Ì\8f\80\94õ\r
-- capture=new JmfCameraCapture(320,240,15f,JmfCameraCapture.PIXEL_FORMAT_RGB);\r
-- capture.setCaptureListener(this);\r
-- //NyARToolkit\82Ì\8f\80\94õ\r
-- ar_param=new GLNyARParam();\r
-- NyARCode ar_code =new NyARCode(16,16);\r
-- ar_param.loadFromARFile(PARAM_FILE);\r
-- ar_param.changeSize(320,240);\r
-- nya=new GLNyARSingleDetectMarker(ar_param,ar_code,80.0);\r
-- ar_code.loadFromARFile(CARCODE_FILE);\r
-- //GL\91Î\89\9e\82ÌRGB\83\89\83X\83^\83I\83u\83W\83F\83N\83g\r
-- cap_image=new GLNyARRaster_RGB(gl,ar_param);\r
-- //\83L\83\83\83v\83`\83\83\8aJ\8en\r
-- capture.start();\r
-- }catch(Exception e){\r
-- e.printStackTrace();\r
-- }\r
-- animator = new Animator(drawable);\r
--\r
-- animator.start();\r
--\r
-- }\r
--\r
-- public void reshape(GLAutoDrawable drawable,\r
-- int x, int y,\r
-- int width, int height)\r
-- {\r
-- float ratio = (float)height / (float)width;\r
-- gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);\r
-- gl.glViewport(0, 0, width, height);\r
--\r
-- //\8e\8b\91Ì\90Ï\82Ì\90Ý\92è\r
-- gl.glMatrixMode(GL.GL_PROJECTION);\r
-- gl.glLoadIdentity();\r
-- gl.glFrustum(-1.0f, 1.0f, -ratio, ratio,\r
-- 5.0f, 40.0f);\r
-- //\8c©\82é\88Ê\92u\r
-- gl.glMatrixMode(GL.GL_MODELVIEW);\r
-- gl.glLoadIdentity();\r
-- gl.glTranslatef(0.0f, 0.0f, -10.0f);\r
-- }\r
--\r
-- public void display(GLAutoDrawable drawable)\r
-- {\r
-- \r
-- try{\r
-- if(!cap_image.hasData()){\r
-- return;\r
-- } \r
-- gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); // Clear the buffers for new frame. \r
-- //\89æ\91\9c\83`\83F\83b\83N\82µ\82Ä\83}\81[\83J\81[\92T\82µ\82Ä\81A\94w\8ci\82ð\8f\91\82\r
-- boolean is_marker_exist;\r
-- synchronized(cap_image){\r
-- is_marker_exist=nya.detectMarkerLite(cap_image,100);\r
-- //\94w\8ci\82ð\8f\91\82\r
-- cap_image.glDispImage(1.0);\r
-- }\r
-- //\82 \82Á\82½\82ç\97§\95û\91Ì\82ð\8f\91\82\r
-- if(is_marker_exist){\r
-- // Projection transformation.\r
-- gl.glMatrixMode(GL.GL_PROJECTION);\r
-- gl.glLoadMatrixd(ar_param.getCameraFrustumRH(),0);\r
-- gl.glMatrixMode(GL.GL_MODELVIEW);\r
-- // Viewing transformation.\r
-- gl.glLoadIdentity();\r
-- gl.glLoadMatrixd(nya.getCameraViewRH(),0);\r
--\r
-- \r
-- // All other lighting and geometry goes here.\r
-- drawCube();\r
-- }\r
-- }catch(Exception e){\r
-- e.printStackTrace();\r
-- }\r
-- }\r
-- public void onUpdateBuffer(Buffer i_buffer)\r
-- {\r
-- try{\r
-- synchronized(cap_image){\r
-- cap_image.setBuffer(i_buffer, true);\r
-- }\r
-- }catch(Exception e){\r
-- e.printStackTrace();\r
-- } \r
-- }\r
--\r
-- public void displayChanged(GLAutoDrawable drawable,\r
-- boolean modeChanged,\r
-- boolean deviceChanged) {}\r
--\r
-- public static void main(String[] args) {\r
-- new JavaSimpleLite();\r
-- }\r
--}\r
--\r
-Index: D:/project.files/java.Lab/NyARToolKit/sample/jogl/jp/nyatla/nyartoolkit/jogl/utils/GLNyARRaster_RGB.java\r
-===================================================================\r
---- D:/project.files/java.Lab/NyARToolKit/sample/jogl/jp/nyatla/nyartoolkit/jogl/utils/GLNyARRaster_RGB.java (revision 0)\r
-+++ D:/project.files/java.Lab/NyARToolKit/sample/jogl/jp/nyatla/nyartoolkit/jogl/utils/GLNyARRaster_RGB.java (revision 178)\r
-@@ -0,0 +1,76 @@\r
-+/**\r
-+ * NyARRaster_RGB\82ÉOpenGL\97p\82Ì\83f\81[\83^\95Ï\8a·\8b@\94\\82ð\92Ç\89Á\82µ\82½\82à\82Ì\82Å\82·\81B\r
-+ * \r
-+ * (c)2008 A\8cÕ\81\97nyatla.jp\r
-+ * airmail(at)ebony.plala.or.jp\r
-+ * http://nyatla.jp/\r
-+ */\r
-+package jp.nyatla.nyartoolkit.jogl.utils;\r
-+\r
-+import javax.media.format.RGBFormat;\r
-+import javax.media.opengl.GL;\r
-+import jp.nyatla.nyartoolkit.NyARException;\r
-+import jp.nyatla.nyartoolkit.jmf.utils.*;\r
-+import jp.nyatla.nyartoolkit.core.*;\r
-+\r
-+public class GLNyARRaster_RGB extends JmfNyARRaster_RGB\r
-+{\r
-+ private byte[] gl_buf;\r
-+ private int gl_flag;\r
-+\r
-+ public GLNyARRaster_RGB(GL i_ref_gl,NyARParam i_param)\r
-+ {\r
-+ super(i_param.getX(),i_param.getY());\r
-+ this.gl_flag=GL.GL_RGB;\r
-+ this.gl_buf=new byte[this.width*this.height*3];\r
-+ }\r
-+ public void setBuffer(javax.media.Buffer i_buffer,boolean i_is_reverse) throws NyARException\r
-+ {\r
-+ //JMF\83f\81[\83^\82Å\83t\83H\81[\83}\83b\83g\83v\83\8d\83p\83e\83B\82ð\8f\89\8aú\89»\r
-+ initFormatProperty((RGBFormat)i_buffer.getFormat());\r
-+ \r
-+ byte[] src_buf=(byte[])i_buffer.getData();\r
-+ //GL\97p\82Ì\83f\81[\83^\82ð\8f\80\94õ\r
-+ if(i_is_reverse){\r
-+ int length=this.width*3;\r
-+ int src_idx=0;\r
-+ int dest_idx=(this.height-1)*length;\r
-+ for(int i=0;i<this.height;i++){\r
-+ System.arraycopy(src_buf,src_idx,this.gl_buf,dest_idx,length);\r
-+ src_idx+=length;\r
-+ dest_idx-=length;\r
-+ }\r
-+ }else{\r
-+ System.arraycopy(src_buf,0,gl_buf,0,src_buf.length);\r
-+ }\r
-+ //GL\82Ì\83t\83\89\83O\90Ý\92è\r
-+ switch(this.pix_type){\r
-+ case GLNyARRaster_RGB.PIXEL_ORDER_BGR:\r
-+ this.gl_flag=GL.GL_BGR;\r
-+ break;\r
-+ case GLNyARRaster_RGB.PIXEL_ORDER_RGB:\r
-+ this.gl_flag=GL.GL_RGB;\r
-+ break;\r
-+ default:\r
-+ throw new NyARException();\r
-+ }\r
-+ //ref_buf\82ðgl_buf\82É\8d·\82µ\91Ö\82¦\82é\r
-+ ref_buf=gl_buf;\r
-+ }\r
-+ /**\r
-+ * GL\82Å\82»\82Ì\82Ü\82Ü\95`\89æ\82Å\82«\82éRGB\83o\83b\83t\83@\82ð\95Ô\82·\81B\r
-+ * @return\r
-+ */\r
-+ public byte[] getGLRgbArray()\r
-+ {\r
-+ return this.ref_buf;\r
-+ }\r
-+ /**\r
-+ * GL\97p\82ÌRGB\83o\83b\83t\83@\82Ì\83o\83C\83g\95À\82Ñ\83^\83C\83v\82ð\95Ô\82·\81B\r
-+ * @return\r
-+ */\r
-+ public int getGLPixelFlag()\r
-+ {\r
-+ return this.gl_flag;\r
-+ }\r
-+}\r
-Index: D:/project.files/java.Lab/NyARToolKit/sample/jogl/jp/nyatla/nyartoolkit/jogl/utils/GLNyARSingleDetectMarker.java\r
-===================================================================\r
---- D:/project.files/java.Lab/NyARToolKit/sample/jogl/jp/nyatla/nyartoolkit/jogl/utils/GLNyARSingleDetectMarker.java (revision 0)\r
-+++ D:/project.files/java.Lab/NyARToolKit/sample/jogl/jp/nyatla/nyartoolkit/jogl/utils/GLNyARSingleDetectMarker.java (revision 178)\r
-@@ -0,0 +1,57 @@\r
-+/**\r
-+ * NyARSingleDetectMarker\82ÉOpenGL\8cü\82¯\8aÖ\90\94\82ð\92Ç\89Á\82µ\82½\82à\82Ì\r
-+ * (c)2008 A\8cÕ\81\97nyatla.jp\r
-+ * airmail(at)ebony.plala.or.jp\r
-+ * http://nyatla.jp/\r
-+ */\r
-+package jp.nyatla.nyartoolkit.jogl.utils;\r
-+\r
-+import jp.nyatla.nyartoolkit.NyARException;\r
-+import jp.nyatla.nyartoolkit.core.NyARCode;\r
-+import jp.nyatla.nyartoolkit.core.NyARMat;\r
-+import jp.nyatla.nyartoolkit.core.NyARParam;\r
-+import jp.nyatla.nyartoolkit.detector.*;\r
-+\r
-+public class GLNyARSingleDetectMarker extends NyARSingleDetectMarker\r
-+{\r
-+ private double view_scale_factor=0.025;//#define VIEW_SCALEFACTOR 0.025 // 1.0 ARToolKit unit becomes 0.025 of my OpenGL units.\r
-+ public GLNyARSingleDetectMarker(NyARParam i_param,NyARCode i_code,double i_marker_width)\r
-+ {\r
-+ super(i_param,i_code,i_marker_width); \r
-+ }\r
-+ public void setScaleFactor(double i_new_value)\r
-+ {\r
-+ view_scale_factor=i_new_value;\r
-+ }\r
-+ // public static void arglCameraViewRH(const double para[3][4], GLdouble m_modelview[16], const double scale)\r
-+ public double[] getCameraViewRH() throws NyARException\r
-+ {\r
-+ //\8dÀ\95W\82ð\8cv\8eZ\r
-+ NyARMat mat=getTransmationMatrix();\r
-+ //\8ds\97ñ\95Ï\8a·\r
-+ double[][] para=mat.getArray();\r
-+ double[] result=new double[16];\r
-+ result[0 + 0*4] = para[0][0]; // R1C1\r
-+ result[0 + 1*4] = para[0][1]; // R1C2\r
-+ result[0 + 2*4] = para[0][2];\r
-+ result[0 + 3*4] = para[0][3];\r
-+ result[1 + 0*4] = -para[1][0]; // R2\r
-+ result[1 + 1*4] = -para[1][1];\r
-+ result[1 + 2*4] = -para[1][2];\r
-+ result[1 + 3*4] = -para[1][3];\r
-+ result[2 + 0*4] = -para[2][0]; // R3\r
-+ result[2 + 1*4] = -para[2][1];\r
-+ result[2 + 2*4] = -para[2][2];\r
-+ result[2 + 3*4] = -para[2][3];\r
-+ result[3 + 0*4] = 0.0;\r
-+ result[3 + 1*4] = 0.0;\r
-+ result[3 + 2*4] = 0.0;\r
-+ result[3 + 3*4] = 1.0;\r
-+ if (view_scale_factor != 0.0) {\r
-+ result[12] *= view_scale_factor;\r
-+ result[13] *= view_scale_factor;\r
-+ result[14] *= view_scale_factor;\r
-+ }\r
-+ return result;\r
-+ }\r
-+}\r
-Index: D:/project.files/java.Lab/NyARToolKit/sample/jogl/jp/nyatla/nyartoolkit/jogl/utils/NyARGLUtil.java\r
-===================================================================\r
---- D:/project.files/java.Lab/NyARToolKit/sample/jogl/jp/nyatla/nyartoolkit/jogl/utils/NyARGLUtil.java (revision 0)\r
-+++ D:/project.files/java.Lab/NyARToolKit/sample/jogl/jp/nyatla/nyartoolkit/jogl/utils/NyARGLUtil.java (revision 178)\r
-@@ -0,0 +1,99 @@\r
-+/**\r
-+ * NyARToolkit\97p\82ÌJOGL\8ex\89\87\8aÖ\90\94\8cQ\r
-+ * (c)2008 A\8cÕ\81\97nyatla.jp\r
-+ * airmail(at)ebony.plala.or.jp\r
-+ * http://nyatla.jp/\r
-+ */\r
-+package jp.nyatla.nyartoolkit.jogl.utils;\r
-+import java.nio.ByteBuffer;\r
-+import java.nio.IntBuffer;\r
-+\r
-+import javax.media.opengl.GL;\r
-+import javax.media.opengl.glu.GLU;\r
-+\r
-+import jp.nyatla.nyartoolkit.core.*;\r
-+\r
-+public class NyARGLUtil\r
-+{\r
-+ private NyARParam ar_param;\r
-+ private javax.media.opengl.GL gl;\r
-+ private javax.media.opengl.glu.GLU glu;\r
-+ public NyARGLUtil(javax.media.opengl.GL i_gl,NyARParam i_camera_param)\r
-+ {\r
-+ this.ar_param=i_camera_param;\r
-+ this.gl=i_gl;\r
-+ this.glu=new GLU();\r
-+ }\r
-+ /**\r
-+ * GLNyARRaster_RGB\82ð\83o\83b\83N\83O\83\89\83E\83\93\83h\82É\8f\91\82«\8fo\82·\81B\r
-+ * @param image\r
-+ * @param zoom\r
-+ */\r
-+ public void drawBackGround(GLNyARRaster_RGB i_raster,double i_zoom)\r
-+ {\r
-+ IntBuffer texEnvModeSave=IntBuffer.allocate(1); \r
-+ boolean lightingSave;\r
-+ boolean depthTestSave;\r
-+ javax.media.opengl.GL gl_=this.gl;\r
-+ \r
-+ // Prepare an orthographic projection, set camera position for 2D drawing, and save GL state.\r
-+ gl_.glGetTexEnviv(GL.GL_TEXTURE_ENV, GL.GL_TEXTURE_ENV_MODE, texEnvModeSave); // Save GL texture environment mode.\r
-+ if (texEnvModeSave.array()[0] != GL.GL_REPLACE){\r
-+ gl_.glTexEnvi(GL.GL_TEXTURE_ENV, GL.GL_TEXTURE_ENV_MODE, GL.GL_REPLACE);\r
-+ }\r
-+ lightingSave = gl_.glIsEnabled(GL.GL_LIGHTING); // Save enabled state of lighting.\r
-+ if (lightingSave == true){\r
-+ gl_.glDisable(GL.GL_LIGHTING);\r
-+ }\r
-+ depthTestSave = gl_.glIsEnabled(GL.GL_DEPTH_TEST); // Save enabled state of depth test.\r
-+ if (depthTestSave == true){\r
-+ gl_.glDisable(GL.GL_DEPTH_TEST);\r
-+ }\r
-+ gl_.glMatrixMode(GL.GL_PROJECTION);\r
-+ gl_.glPushMatrix();\r
-+ gl_.glLoadIdentity();\r
-+ glu.gluOrtho2D(0.0,ar_param.getX(),0.0,ar_param.getY());\r
-+ gl_.glMatrixMode(GL.GL_MODELVIEW);\r
-+ gl_.glPushMatrix();\r
-+ gl_.glLoadIdentity();\r
-+ arglDispImageStateful(i_raster,i_zoom);\r
-+\r
-+\r
-+ // Restore previous projection, camera position, and GL state.\r
-+ gl_.glMatrixMode(GL.GL_PROJECTION);\r
-+ gl_.glPopMatrix();\r
-+ gl_.glMatrixMode(GL.GL_MODELVIEW);\r
-+ gl_.glPopMatrix();\r
-+ if (depthTestSave){\r
-+ gl_.glEnable(GL.GL_DEPTH_TEST); // Restore enabled state of depth test.\r
-+ }\r
-+ if (lightingSave){\r
-+ gl_.glEnable(GL.GL_LIGHTING); // Restore enabled state of lighting.\r
-+ }\r
-+ if (texEnvModeSave.get(0) != GL.GL_REPLACE){\r
-+ gl_.glTexEnvi(GL.GL_TEXTURE_ENV, GL.GL_TEXTURE_ENV_MODE, texEnvModeSave.get(0)); // Restore GL texture environment mode.\r
-+ }\r
-+ gl_.glEnd();\r
-+ }\r
-+ /**\r
-+ * arglDispImageStateful\8aÖ\90\94\83\82\83h\83L\r
-+ * @param image\r
-+ * @param zoom\r
-+ */\r
-+ private void arglDispImageStateful(GLNyARRaster_RGB i_raster,double zoom)\r
-+ {\r
-+ javax.media.opengl.GL gl_=this.gl;\r
-+ int width =i_raster.getWidth();\r
-+ int height=i_raster.getHeight();\r
-+ float zoomf;\r
-+ IntBuffer params=IntBuffer.allocate(4);\r
-+ zoomf = (float)zoom;\r
-+ gl_.glDisable(GL.GL_TEXTURE_2D);\r
-+ gl_.glGetIntegerv(GL.GL_VIEWPORT,params);\r
-+ gl_.glPixelZoom(zoomf * ((float)(params.get(2)) / (float)width),-zoomf * ((float)(params.get(3)) / (float)height));\r
-+ gl_.glRasterPos2f(0.0f,(float)height);\r
-+ gl_.glPixelStorei(GL.GL_UNPACK_ALIGNMENT, 1);\r
-+ ByteBuffer buf=ByteBuffer.wrap(i_raster.getGLRgbArray());\r
-+ gl_.glDrawPixels(width,height,i_raster.getGLPixelFlag(),GL.GL_UNSIGNED_BYTE,buf);\r
-+ } \r
-+}\r
-Index: D:/project.files/java.Lab/NyARToolKit/sample/jogl/jp/nyatla/nyartoolkit/jogl/utils/GLNyARParam.java\r
-===================================================================\r
---- D:/project.files/java.Lab/NyARToolKit/sample/jogl/jp/nyatla/nyartoolkit/jogl/utils/GLNyARParam.java (revision 0)\r
-+++ D:/project.files/java.Lab/NyARToolKit/sample/jogl/jp/nyatla/nyartoolkit/jogl/utils/GLNyARParam.java (revision 178)\r
-@@ -0,0 +1,99 @@\r
-+/**\r
-+ * NyARParam\82ÉOpenGL\8cü\82¯\8aÖ\90\94\82ð\92Ç\89Á\82µ\82½\82à\82Ì\r
-+ * (c)2008 A\8cÕ\81\97nyatla.jp\r
-+ * airmail(at)ebony.plala.or.jp\r
-+ * http://nyatla.jp/\r
-+ */\r
-+package jp.nyatla.nyartoolkit.jogl.utils;\r
-+\r
-+import jp.nyatla.nyartoolkit.core.*;\r
-+public class GLNyARParam extends NyARParam\r
-+{\r
-+ private double view_distance_min=0.1;//#define VIEW_DISTANCE_MIN 0.1 // Objects closer to the camera than this will not be displayed.\r
-+ private double view_distance_max=100.0;//#define VIEW_DISTANCE_MAX 100.0 // Objects further away from the camera than this will not be displayed.\r
-+ private double[] m_projection=null;\r
-+ public void setViewDistanceMin(double i_new_value)\r
-+ {\r
-+ m_projection=null;//\83L\83\83\83b\83V\83\85\8dÏ\95Ï\90\94\8f\89\8aú\89»\r
-+ view_distance_min=i_new_value;\r
-+ }\r
-+ public void setViewDistanceMax(double i_new_value)\r
-+ {\r
-+ m_projection=null;//\83L\83\83\83b\83V\83\85\8dÏ\95Ï\90\94\8f\89\8aú\89»\r
-+ view_distance_max=i_new_value;\r
-+ }\r
-+ /**\r
-+ * void arglCameraFrustumRH(const ARParam *cparam, const double focalmin, const double focalmax, GLdouble m_projection[16])\r
-+ * \8aÖ\90\94\82Ì\92u\82«\8a·\82¦\r
-+ * @param focalmin\r
-+ * @param focalmax\r
-+ * @return\r
-+ */\r
-+ public double[] getCameraFrustumRH()\r
-+ {\r
-+ //\8aù\82É\92l\82ª\83L\83\83\83b\83V\83\85\82³\82ê\82Ä\82¢\82½\82ç\82»\82ê\82ð\8eg\82¤\r
-+ if(m_projection!=null){\r
-+ return m_projection;\r
-+ }\r
-+ //\96³\82¯\82ê\82Î\8cv\8eZ\r
-+ m_projection=new double[16];\r
-+ NyARMat trans_mat=new NyARMat(3,4);\r
-+ NyARMat icpara_mat=new NyARMat(3,4);\r
-+ double[][] p=new double[3][3], q=new double[4][4];\r
-+ int width, height;\r
-+ int i, j;\r
-+ \r
-+ width = xsize;\r
-+ height = ysize;\r
-+ \r
-+ decompMat(icpara_mat,trans_mat);\r
-+\r
-+ double[][] icpara=icpara_mat.getArray();\r
-+ double[][] trans=trans_mat.getArray();\r
-+ for (i = 0; i < 4; i++) {\r
-+ icpara[1][i] = (height - 1)*(icpara[2][i]) - icpara[1][i];\r
-+ }\r
-+ \r
-+ for(i = 0; i < 3; i++) {\r
-+ for(j = 0; j < 3; j++) {\r
-+ p[i][j] = icpara[i][j] / icpara[2][2];\r
-+ }\r
-+ }\r
-+ q[0][0] = (2.0 * p[0][0] / (width - 1));\r
-+ q[0][1] = (2.0 * p[0][1] / (width - 1));\r
-+ q[0][2] = -((2.0 * p[0][2] / (width - 1)) - 1.0);\r
-+ q[0][3] = 0.0;\r
-+ \r
-+ q[1][0] = 0.0;\r
-+ q[1][1] = -(2.0 * p[1][1] / (height - 1));\r
-+ q[1][2] = -((2.0 * p[1][2] / (height - 1)) - 1.0);\r
-+ q[1][3] = 0.0;\r
-+ \r
-+ q[2][0] = 0.0;\r
-+ q[2][1] = 0.0;\r
-+ q[2][2] = (view_distance_max + view_distance_min)/(view_distance_min - view_distance_max);\r
-+ q[2][3] = 2.0 * view_distance_max * view_distance_min / (view_distance_min - view_distance_max);\r
-+ \r
-+ q[3][0] = 0.0;\r
-+ q[3][1] = 0.0;\r
-+ q[3][2] = -1.0;\r
-+ q[3][3] = 0.0;\r
-+ \r
-+ for (i = 0; i < 4; i++) { // Row.\r
-+ // First 3 columns of the current row.\r
-+ for (j = 0; j < 3; j++) { // Column.\r
-+ m_projection[i + j*4] =\r
-+ q[i][0] * trans[0][j] +\r
-+ q[i][1] * trans[1][j] +\r
-+ q[i][2] * trans[2][j];\r
-+ }\r
-+ // Fourth column of the current row.\r
-+ m_projection[i + 3*4]=\r
-+ q[i][0] * trans[0][3] +\r
-+ q[i][1] * trans[1][3] +\r
-+ q[i][2] * trans[2][3] +\r
-+ q[i][3];\r
-+ }\r
-+ return m_projection;\r
-+ }\r
-+}\r
-Index: D:/project.files/java.Lab/NyARToolKit/sample/jogl/jp/nyatla/nyartoolkit/jogl/sample/JavaSimpleLite.java\r
-===================================================================\r
---- D:/project.files/java.Lab/NyARToolKit/sample/jogl/jp/nyatla/nyartoolkit/jogl/sample/JavaSimpleLite.java (revision 0)\r
-+++ D:/project.files/java.Lab/NyARToolKit/sample/jogl/jp/nyatla/nyartoolkit/jogl/sample/JavaSimpleLite.java (revision 178)\r
-@@ -0,0 +1,222 @@\r
-+/**\r
-+ * simpleLite\82Æ\93¯\82¶\82æ\82¤\82È\83e\83X\83g\83v\83\8d\83O\83\89\83\80\r
-+ * \83}\81[\83J\81[\82Ì\88ê\92v\93x\82Ì\8dÅ\92á\92l\82ð\83`\83F\83b\83N\82·\82é\82Æ\82±\82ë\82ð\94²\82¢\82½\82Ì\82Å\81A\93¯\82¶\83}\81[\83J\81[\82ð\91å\97Ê\82É\r
-+ * \8c\9f\8fo\82·\82é\82Æ\96Ê\94\92\82¢\82±\82Æ\82É\82È\82è\82Ü\82·\81B\r
-+ * (c)2008 A\8cÕ\81\97nyatla.jp\r
-+ * airmail(at)ebony.plala.or.jp\r
-+ * http://nyatla.jp/\r
-+ */\r
-+package jp.nyatla.nyartoolkit.jogl.sample;\r
-+\r
-+import java.awt.event.WindowAdapter;\r
-+import java.awt.event.WindowEvent;\r
-+import java.awt.*;\r
-+\r
-+import javax.media.Buffer;\r
-+\r
-+import javax.media.opengl.GL;\r
-+import javax.media.opengl.GLAutoDrawable;\r
-+import javax.media.opengl.GLEventListener;\r
-+import javax.media.opengl.GLCanvas;\r
-+\r
-+import com.sun.opengl.util.Animator;\r
-+\r
-+import jp.nyatla.nyartoolkit.core.NyARCode;\r
-+\r
-+import jp.nyatla.nyartoolkit.jmf.utils.JmfCameraCapture;\r
-+import jp.nyatla.nyartoolkit.jmf.utils.JmfCaptureListener;\r
-+import jp.nyatla.nyartoolkit.jogl.utils.*;\r
-+\r
-+\r
-+public class JavaSimpleLite implements GLEventListener,JmfCaptureListener\r
-+{\r
-+ private final String CARCODE_FILE ="../../Data/patt.hiro";\r
-+ private final String PARAM_FILE ="../../Data/camera_para.dat";\r
-+ \r
-+ private final static int SCREEN_X=320;\r
-+ private final static int SCREEN_Y=240;\r
-+ private Animator animator;\r
-+ private GLNyARRaster_RGB cap_image;\r
-+ \r
-+ private JmfCameraCapture capture;\r
-+ private GL gl;\r
-+ private NyARGLUtil glnya;\r
-+\r
-+\r
-+ //NyARToolkit\8aÖ\8cW\r
-+ private GLNyARSingleDetectMarker nya;\r
-+ private GLNyARParam ar_param;\r
-+ /**\r
-+ * \97§\95û\91Ì\82ð\8f\91\82\r
-+ *\r
-+ */\r
-+ void drawCube()\r
-+ {\r
-+ // Colour cube data.\r
-+ int polyList = 0;\r
-+ float fSize = 0.5f;//\83}\81[\83J\81[\83T\83C\83Y\82É\91Î\82µ\82Ä0.5\94{\82È\82Ì\82Å\81A4cm\82Ì\83i\83^\83f\83R\83R\r
-+ int f, i; \r
-+ float[][] cube_vertices=new float[][]{\r
-+ {1.0f, 1.0f, 1.0f}, {1.0f, -1.0f, 1.0f}, {-1.0f, -1.0f, 1.0f}, {-1.0f, 1.0f, 1.0f},\r
-+ {1.0f, 1.0f, -1.0f}, {1.0f, -1.0f, -1.0f}, {-1.0f, -1.0f, -1.0f}, {-1.0f, 1.0f, -1.0f}\r
-+ };\r
-+ float[][] cube_vertex_colors=new float[][]{\r
-+ {1.0f, 1.0f, 1.0f}, {1.0f, 1.0f, 0.0f}, {0.0f, 1.0f, 0.0f}, {0.0f, 1.0f, 1.0f},\r
-+ {1.0f, 0.0f, 1.0f}, {1.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 1.0f}\r
-+ };\r
-+ int cube_num_faces = 6;\r
-+ short[][] cube_faces =new short[][]{\r
-+ {3, 2, 1, 0}, {2, 3, 7, 6}, {0, 1, 5, 4}, {3, 0, 4, 7}, {1, 2, 6, 5}, {4, 5, 6, 7}\r
-+ };\r
-+ \r
-+ if (polyList==0) {\r
-+ polyList = gl.glGenLists (1);\r
-+ gl.glNewList(polyList, GL.GL_COMPILE);\r
-+ gl.glBegin(GL.GL_QUADS);\r
-+ for (f = 0; f < cube_num_faces; f++)\r
-+ for (i = 0; i < 4; i++) {\r
-+ gl.glColor3f (cube_vertex_colors[cube_faces[f][i]][0], cube_vertex_colors[cube_faces[f][i]][1], cube_vertex_colors[cube_faces[f][i]][2]);\r
-+ gl.glVertex3f(cube_vertices[cube_faces[f][i]][0] * fSize, cube_vertices[cube_faces[f][i]][1] * fSize, cube_vertices[cube_faces[f][i]][2] * fSize);\r
-+ }\r
-+ gl.glEnd();\r
-+ gl.glColor3f(0.0f, 0.0f, 0.0f);\r
-+ for (f = 0; f < cube_num_faces; f++) {\r
-+ gl.glBegin (GL.GL_LINE_LOOP);\r
-+ for (i = 0; i < 4; i++)\r
-+ gl.glVertex3f(cube_vertices[cube_faces[f][i]][0] * fSize, cube_vertices[cube_faces[f][i]][1] * fSize, cube_vertices[cube_faces[f][i]][2] * fSize);\r
-+ gl.glEnd ();\r
-+ }\r
-+ gl.glEndList ();\r
-+ }\r
-+ \r
-+ gl.glPushMatrix(); // Save world coordinate system.\r
-+ gl.glTranslatef(0.0f, 0.0f, 0.5f); // Place base of cube on marker surface.\r
-+ gl.glRotatef(0.0f, 0.0f, 0.0f, 1.0f); // Rotate about z axis.\r
-+ gl.glDisable(GL.GL_LIGHTING); // Just use colours.\r
-+ gl.glCallList(polyList); // Draw the cube.\r
-+ gl.glPopMatrix(); // Restore world coordinate system.\r
-+ \r
-+ }\r
-+ \r
-+ \r
-+ \r
-+ public JavaSimpleLite()\r
-+ {\r
-+ Frame frame = new Frame("Java simpleLite with NyARToolkit");\r
-+\r
-+\r
-+ // 3D\82ð\95`\89æ\82·\82é\83R\83\93\83|\81[\83l\83\93\83g\r
-+ GLCanvas canvas = new GLCanvas();\r
-+ frame.add(canvas);\r
-+ canvas.addGLEventListener(this);\r
-+ frame.addWindowListener(new WindowAdapter() {\r
-+ public void windowClosing(WindowEvent e) {\r
-+ System.exit(0);\r
-+ }\r
-+ });\r
-+\r
-+ frame.setVisible(true);\r
-+ Insets ins=frame.getInsets();\r
-+ frame.setSize(SCREEN_X+ins.left+ins.right,SCREEN_Y+ins.top+ins.bottom);\r
-+ canvas.setBounds(ins.left,ins.top,SCREEN_X,SCREEN_Y);\r
-+ }\r
-+\r
-+ public void init(GLAutoDrawable drawable) {\r
-+ gl = drawable.getGL();\r
-+ gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);\r
-+ //NyARToolkit\82Ì\8f\80\94õ\r
-+ try{\r
-+ //\83L\83\83\83v\83`\83\83\82Ì\8f\80\94õ\r
-+ capture=new JmfCameraCapture(320,240,15f,JmfCameraCapture.PIXEL_FORMAT_RGB);\r
-+ capture.setCaptureListener(this);\r
-+ //NyARToolkit\82Ì\8f\80\94õ\r
-+ ar_param=new GLNyARParam();\r
-+ NyARCode ar_code =new NyARCode(16,16);\r
-+ ar_param.loadFromARFile(PARAM_FILE);\r
-+ ar_param.changeSize(SCREEN_X,SCREEN_Y);\r
-+ nya=new GLNyARSingleDetectMarker(ar_param,ar_code,80.0);\r
-+ ar_code.loadFromARFile(CARCODE_FILE);\r
-+ //NyARToolkit\97p\82Ì\8ex\89\87\83N\83\89\83X\r
-+ glnya=new NyARGLUtil(gl,ar_param);\r
-+ //GL\91Î\89\9e\82ÌRGB\83\89\83X\83^\83I\83u\83W\83F\83N\83g\r
-+ cap_image=new GLNyARRaster_RGB(gl,ar_param);\r
-+ //\83L\83\83\83v\83`\83\83\8aJ\8en\r
-+ capture.start();\r
-+ }catch(Exception e){\r
-+ e.printStackTrace();\r
-+ }\r
-+ animator = new Animator(drawable);\r
-+\r
-+ animator.start();\r
-+\r
-+ }\r
-+\r
-+ public void reshape(GLAutoDrawable drawable,\r
-+ int x, int y,\r
-+ int width, int height)\r
-+ {\r
-+ gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);\r
-+ gl.glViewport(0, 0, width, height);\r
-+\r
-+ //\8e\8b\91Ì\90Ï\82Ì\90Ý\92è\r
-+ gl.glMatrixMode(GL.GL_PROJECTION);\r
-+ gl.glLoadIdentity();\r
-+ //\8c©\82é\88Ê\92u\r
-+ gl.glMatrixMode(GL.GL_MODELVIEW);\r
-+ gl.glLoadIdentity();\r
-+ }\r
-+\r
-+ public void display(GLAutoDrawable drawable)\r
-+ {\r
-+ \r
-+ try{\r
-+ if(!cap_image.hasData()){\r
-+ return;\r
-+ } \r
-+ gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); // Clear the buffers for new frame. \r
-+ //\89æ\91\9c\83`\83F\83b\83N\82µ\82Ä\83}\81[\83J\81[\92T\82µ\82Ä\81A\94w\8ci\82ð\8f\91\82\r
-+ boolean is_marker_exist;\r
-+ synchronized(cap_image){\r
-+ is_marker_exist=nya.detectMarkerLite(cap_image,100);\r
-+ //\94w\8ci\82ð\8f\91\82\r
-+ glnya.drawBackGround(cap_image, 1.0);\r
-+ }\r
-+ //\82 \82Á\82½\82ç\97§\95û\91Ì\82ð\8f\91\82\r
-+ if(is_marker_exist){\r
-+ //\83}\81[\83J\81[\82Ì\88ê\92v\93x\82ð\92²\8d¸\82·\82é\82È\82ç\82Î\81A\82±\82±\82Ånya.getConfidence()\82Å\88ê\92v\93x\82ð\92²\82×\82Ä\89º\82³\82¢\81B\r
-+ // Projection transformation.\r
-+ gl.glMatrixMode(GL.GL_PROJECTION);\r
-+ gl.glLoadMatrixd(ar_param.getCameraFrustumRH(),0);\r
-+ gl.glMatrixMode(GL.GL_MODELVIEW);\r
-+ // Viewing transformation.\r
-+ gl.glLoadIdentity();\r
-+ gl.glLoadMatrixd(nya.getCameraViewRH(),0);\r
-+\r
-+ \r
-+ // All other lighting and geometry goes here.\r
-+ drawCube();\r
-+ }\r
-+ }catch(Exception e){\r
-+ e.printStackTrace();\r
-+ }\r
-+ }\r
-+ public void onUpdateBuffer(Buffer i_buffer)\r
-+ {\r
-+ try{\r
-+ synchronized(cap_image){\r
-+ cap_image.setBuffer(i_buffer, true);\r
-+ }\r
-+ }catch(Exception e){\r
-+ e.printStackTrace();\r
-+ } \r
-+ }\r
-+\r
-+ public void displayChanged(GLAutoDrawable drawable,\r
-+ boolean modeChanged,\r
-+ boolean deviceChanged) {}\r
-+\r
-+ public static void main(String[] args) {\r
-+ new JavaSimpleLite();\r
-+ }\r
-+}\r
-+\r
-Index: D:/project.files/java.Lab/NyARToolKit/sample/jmf/JmfCaptureTest.java\r
-===================================================================\r
---- D:/project.files/java.Lab/NyARToolKit/sample/jmf/JmfCaptureTest.java (revision 174)\r
-+++ D:/project.files/java.Lab/NyARToolKit/sample/jmf/JmfCaptureTest.java (revision 178)\r
-@@ -1,56 +0,0 @@\r
--/**\r
-- * VFM\83L\83\83\83v\83`\83\83\83e\83X\83g\83v\83\8d\83O\83\89\83\80\r
-- * (c)2008 R.iizuka\r
-- * airmail@ebony.plala.or.jp\r
-- * http://nyatla.jp/\r
-- */\r
--import javax.media.*;\r
--\r
--import javax.media.util.BufferToImage;\r
--import javax.media.format.*;\r
--\r
--import jp.nyatla.nyartoolkit.NyARException;\r
--import jp.nyatla.nyartoolkit.jmf.*;\r
--import java.awt.*;\r
--\r
--\r
--\r
--public class JmfCaptureTest extends Frame implements JmfCaptureListener{\r
-- public JmfCaptureTest() throws NyARException\r
-- {\r
-- setTitle("JmfCaptureTest");\r
-- setBounds(0,0,320+64,240+64); \r
-- capture=new JmfCameraCapture(320,240,30f,JmfCameraCapture.PIXEL_FORMAT_RGB);\r
-- capture.setCaptureListener(this);\r
-- }\r
--\r
--\r
--\r
-- private JmfCameraCapture capture;\r
-- public void onUpdateBuffer(Buffer i_buffer)\r
-- {\r
-- BufferToImage b2i=new BufferToImage((VideoFormat)i_buffer.getFormat());\r
-- Image img=b2i.createImage(i_buffer);\r
-- Graphics g = getGraphics(); \r
-- g.drawImage(img, 32, 32,this); \r
-- }\r
-- private void startCapture()\r
-- {\r
-- try{\r
-- capture.start();\r
-- }catch(Exception e){\r
-- e.printStackTrace();\r
-- }\r
-- }\r
-- public static void main(String[] args) {\r
-- try{\r
-- JmfCaptureTest mainwin = new JmfCaptureTest();\r
-- mainwin.setVisible(true);\r
-- mainwin.startCapture();\r
-- }catch(Exception e){\r
-- e.printStackTrace();\r
-- }\r
-- \r
-- }\r
--\r
--}\r
-Index: D:/project.files/java.Lab/NyARToolKit/sample/jmf/NyarToolkitLinkTest.java\r
-===================================================================\r
---- D:/project.files/java.Lab/NyARToolKit/sample/jmf/NyarToolkitLinkTest.java (revision 174)\r
-+++ D:/project.files/java.Lab/NyARToolKit/sample/jmf/NyarToolkitLinkTest.java (revision 178)\r
-@@ -1,114 +0,0 @@\r
--/**\r
-- * VFM+ARToolkit\83e\83X\83g\83v\83\8d\83O\83\89\83\80\r
-- * \83J\83\81\83\89\82©\82ç\8eæ\82è\8d\9e\82ñ\82¾\83f\81[\83^\82©\82ç\83}\81[\83J\81[\82ð\8c\9f\8fo\82µ\82Ä\81A\88ê\92v\93x\82Æ\95Ï\8a·\8ds\97ñ\82ð\95\\8e¦\82µ\82Ü\82·\81B\r
-- * (c)2008 R.iizuka\r
-- * airmail(at)ebony.plala.or.jp\r
-- * http://nyatla.jp/\r
-- */\r
--import javax.media.*;\r
--\r
--import javax.media.util.BufferToImage;\r
--import javax.media.format.*;\r
--\r
--import jp.nyatla.nyartoolkit.NyARException;\r
--import jp.nyatla.nyartoolkit.jmf.*;\r
--import jp.nyatla.nyartoolkit.jmfutil.*;\r
--import java.awt.*;\r
--\r
--import jp.nyatla.nyartoolkit.core.*;\r
--import jp.nyatla.nyartoolkit.detector.*;\r
--import jp.nyatla.nyartoolkit.core.raster.*;\r
--\r
--\r
--\r
--\r
--\r
--public class NyarToolkitLinkTest extends Frame implements JmfCaptureListener\r
--{\r
-- private final String CARCODE_FILE ="../../Data/patt.hiro";\r
-- private final String PARAM_FILE ="../../Data/camera_para.dat";\r
-- private JmfCameraCapture capture;\r
-- NyARSingleDetectMarker nya;\r
-- JmfNyARRaster_RGB raster;\r
--\r
-- public NyarToolkitLinkTest() throws NyARException,NyARException\r
-- {\r
-- setTitle("JmfCaptureTest");\r
-- setBounds(0,0,320+64,240+64); \r
-- //\83L\83\83\83v\83`\83\83\82Ì\8f\80\94õ\r
-- capture=new JmfCameraCapture(320,240,30f,JmfCameraCapture.PIXEL_FORMAT_RGB);\r
-- capture.setCaptureListener(this);\r
-- \r
-- //NyARToolkit\82Ì\8f\80\94õ\r
-- NyARParam ar_param=new NyARParam();\r
-- NyARCode ar_code =new NyARCode(16,16);\r
-- ar_param.loadFromARFile(PARAM_FILE);\r
-- ar_param.changeSize(320,240);\r
-- nya=new NyARSingleDetectMarker(ar_param,ar_code,80.0);\r
-- ar_code.loadFromARFile(CARCODE_FILE);\r
-- //\83L\83\83\83v\83`\83\83\83C\83\81\81[\83W\97p\82Ì\83\89\83X\83^\82ð\8f\80\94õ\r
-- raster=new JmfNyARRaster_RGB(320,240);\r
-- }\r
--\r
--\r
--\r
-- public void onUpdateBuffer(Buffer i_buffer)\r
-- {\r
-- try{\r
-- //\83L\83\83\83v\83`\83\83\82µ\82½\83o\83b\83t\83@\82ð\83\89\83X\83^\82É\83Z\83b\83g\r
-- raster.setBuffer(i_buffer);\r
--\r
-- //\83L\83\83\83v\83`\83\83\82µ\82½\83C\83\81\81[\83W\82ð\95\\8e¦\97p\82É\89Á\8dH\r
-- BufferToImage b2i=new BufferToImage((VideoFormat)i_buffer.getFormat());\r
-- Image img=b2i.createImage(i_buffer);\r
--\r
-- Graphics g = getGraphics(); \r
-- double[][] atm=null;\r
--\r
-- //\83}\81[\83J\81[\8c\9f\8fo\r
-- boolean is_marker_exist=nya.detectMarkerLite(raster,100);\r
-- if(is_marker_exist){\r
-- //\95Ï\8a·\8ds\97ñ\82ð\8eæ\93¾\r
-- atm=nya.getTransmationMatrix().getArray();\r
-- }\r
-- //\8fî\95ñ\82ð\89æ\96Ê\82É\8f\91\82 \r
-- g.drawImage(img, 32, 32,this);\r
-- if(is_marker_exist){\r
-- g.drawString("\83}\81[\83J\81[\8c\9f\8fo:"+nya.getConfidence(),32,50);\r
-- for(int i=0;i<3;i++){\r
-- for(int i2=0;i2<4;i2++){\r
-- g.drawString("["+i+"]["+i2+"]"+atm[i][i2],32,50+(1+i2*3+i)*16);\r
-- }\r
-- \r
-- }\r
-- }else{\r
-- g.drawString("\83}\81[\83J\81[\96¢\8c\9f\8fo:",32,100);\r
-- }\r
-- }catch(Exception e){\r
-- e.printStackTrace();\r
-- }\r
-- \r
-- \r
-- \r
-- \r
-- }\r
-- private void startCapture()\r
-- {\r
-- try{\r
-- capture.start();\r
-- }catch(Exception e){\r
-- e.printStackTrace();\r
-- }\r
-- }\r
-- public static void main(String[] args) {\r
-- try{\r
-- NyarToolkitLinkTest mainwin = new NyarToolkitLinkTest();\r
-- mainwin.setVisible(true);\r
-- mainwin.startCapture();\r
-- }catch(Exception e){\r
-- e.printStackTrace();\r
-- }\r
-- \r
-- }\r
--\r
--}\r
-Index: D:/project.files/java.Lab/NyARToolKit/sample/jmf/jp/nyatla/nyartoolkit/jmf/MonitorCDS.java\r
-===================================================================\r
---- D:/project.files/java.Lab/NyARToolKit/sample/jmf/jp/nyatla/nyartoolkit/jmf/MonitorCDS.java (revision 174)\r
-+++ D:/project.files/java.Lab/NyARToolKit/sample/jmf/jp/nyatla/nyartoolkit/jmf/MonitorCDS.java (revision 178)\r
-@@ -1,136 +0,0 @@\r
--/*\r
-- * Copyright (c) 1996-2001 Sun Microsystems, Inc. All Rights Reserved.\r
-- *\r
-- * Sun grants you ("Licensee") a non-exclusive, royalty free, license to use,\r
-- * modify and redistribute this software in source and binary code form,\r
-- * provided that i) this copyright notice and license appear on all copies of\r
-- * the software; and ii) Licensee does not utilize the software in a manner\r
-- * which is disparaging to Sun.\r
-- *\r
-- * This software is provided "AS IS," without a warranty of any kind. ALL\r
-- * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY\r
-- * IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR\r
-- * NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE\r
-- * LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING\r
-- * OR DISTRIBUTING THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS\r
-- * LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT,\r
-- * INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER\r
-- * CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF\r
-- * OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE\r
-- * POSSIBILITY OF SUCH DAMAGES.\r
-- *\r
-- * This software is not designed or intended for use in on-line control of\r
-- * aircraft, air traffic, aircraft navigation or aircraft communications; or in\r
-- * the design, construction, operation or maintenance of any nuclear\r
-- * facility. Licensee represents and warrants that it will not use or\r
-- * redistribute the Software for such purposes.\r
-- */\r
--package jp.nyatla.nyartoolkit.jmf;\r
--\r
--\r
--import javax.media.*;\r
--import javax.media.protocol.*;\r
--import javax.media.control.*;\r
--\r
--import java.io.IOException;\r
--\r
--\r
--\r
--public class MonitorCDS extends PushBufferDataSource{\r
--\r
-- private PushBufferDataSource delegate = null;\r
-- private PushBufferStream [] delStreams = null;\r
-- private MonitorStream monitorStream = null;\r
-- private PushBufferStream [] monitorStreams = null;\r
-- boolean delStarted = false; // variable used by MonitorStream also\r
-- private Control [] controls;\r
--\r
-- public MonitorCDS(DataSource ds)\r
-- {\r
-- // Get the stream from the actual datasource\r
-- // and create a MonitorStream from it\r
-- // Export the MonitorControl interface of the MonitorStream\r
-- if (ds instanceof PushBufferDataSource)\r
-- {\r
-- delegate = (PushBufferDataSource) ds;\r
-- delStreams = delegate.getStreams();\r
-- monitorStream = new MonitorStream(delStreams[0], this);\r
-- monitorStreams = new PushBufferStream[] {monitorStream};\r
-- }\r
-- }\r
--\r
-- public Object [] getControls()\r
-- {\r
-- return controls;\r
-- }\r
--\r
-- public Object getControl(String value) {\r
-- if (value.equals("jmfsample.MonitorStream") || value.equals("javax.media.control.MonitorControl"))\r
-- return monitorStream;\r
-- else\r
-- return null;\r
-- }\r
--\r
-- public javax.media.CaptureDeviceInfo getCaptureDeviceInfo()\r
-- {\r
-- return ((CaptureDevice)delegate).getCaptureDeviceInfo();\r
-- }\r
--\r
-- public FormatControl[] getFormatControls()\r
-- {\r
-- return ((CaptureDevice)delegate).getFormatControls();\r
-- }\r
--\r
-- public String getContentType()\r
-- {\r
-- return delegate.getContentType();\r
-- }\r
--\r
-- public void connect() throws IOException\r
-- {\r
-- if (delegate == null)\r
-- throw new IOException("Incompatible DataSource");\r
-- // Delegate is already connected\r
-- }\r
--\r
-- public void disconnect()\r
-- {\r
-- monitorStream.setEnabled(false);\r
-- delegate.disconnect();\r
-- }\r
--\r
-- public synchronized void start() throws IOException\r
-- {\r
-- startDelegate();\r
-- delStarted = true;\r
-- }\r
--\r
-- public synchronized void stop() throws IOException\r
-- {\r
-- if (!monitorStream.isEnabled()) {\r
-- stopDelegate();\r
-- }\r
-- delStarted = false;\r
-- }\r
--\r
-- public Time getDuration()\r
-- {\r
-- return delegate.getDuration();\r
-- }\r
--\r
-- public PushBufferStream [] getStreams()\r
-- {\r
-- return monitorStreams;\r
-- }\r
--\r
-- void startDelegate() throws IOException\r
-- {\r
-- delegate.start();\r
-- }\r
--\r
-- void stopDelegate() throws IOException\r
-- {\r
-- delegate.stop();\r
-- }\r
--\r
--}\r
-Index: D:/project.files/java.Lab/NyARToolKit/sample/jmf/jp/nyatla/nyartoolkit/jmf/MonitorStream.java\r
-===================================================================\r
---- D:/project.files/java.Lab/NyARToolKit/sample/jmf/jp/nyatla/nyartoolkit/jmf/MonitorStream.java (revision 174)\r
-+++ D:/project.files/java.Lab/NyARToolKit/sample/jmf/jp/nyatla/nyartoolkit/jmf/MonitorStream.java (revision 178)\r
-@@ -1,196 +0,0 @@\r
--/*\r
-- * Copyright (c) 1996-2001 Sun Microsystems, Inc. All Rights Reserved.\r
-- *\r
-- * Sun grants you ("Licensee") a non-exclusive, royalty free, license to use,\r
-- * modify and redistribute this software in source and binary code form,\r
-- * provided that i) this copyright notice and license appear on all copies of\r
-- * the software; and ii) Licensee does not utilize the software in a manner\r
-- * which is disparaging to Sun.\r
-- *\r
-- * This software is provided "AS IS," without a warranty of any kind. ALL\r
-- * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY\r
-- * IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR\r
-- * NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE\r
-- * LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING\r
-- * OR DISTRIBUTING THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS\r
-- * LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT,\r
-- * INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER\r
-- * CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF\r
-- * OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE\r
-- * POSSIBILITY OF SUCH DAMAGES.\r
-- *\r
-- * This software is not designed or intended for use in on-line control of\r
-- * aircraft, air traffic, aircraft navigation or aircraft communications; or in\r
-- * the design, construction, operation or maintenance of any nuclear\r
-- * facility. Licensee represents and warrants that it will not use or\r
-- * redistribute the Software for such purposes.\r
-- */\r
--package jp.nyatla.nyartoolkit.jmf;\r
--\r
--\r
--\r
--import javax.media.*;\r
--import javax.media.protocol.*;\r
--\r
--import javax.media.util.BufferToImage;\r
--import java.io.IOException;\r
--import java.awt.*;\r
--\r
--public class MonitorStream implements PushBufferStream, BufferTransferHandler {\r
--\r
-- JmfCaptureListener img_listener;\r
-- PushBufferStream actual = null;\r
-- boolean dataAvailable = false;\r
-- boolean terminate = false;\r
-- boolean enabled = false;\r
-- Object bufferLock = new Object();\r
-- Buffer cbuffer = new Buffer();\r
-- BufferTransferHandler transferHandler = null;\r
-- Component component = null;\r
-- MonitorCDS cds;\r
-- BufferToImage bti = null;\r
-- \r
-- MonitorStream(PushBufferStream actual, MonitorCDS cds) {\r
-- this.actual = actual;\r
-- actual.setTransferHandler(this);\r
-- this.cds = cds;\r
-- }\r
--\r
-- public javax.media.Format getFormat()\r
-- {\r
-- return actual.getFormat();\r
-- }\r
-- /**\r
-- * \94ñ\93¯\8aúREAD\r
-- */\r
-- public void read(Buffer buffer) throws IOException\r
-- {\r
-- // Wait for data to be available\r
-- // Doesn't get used much because the transferData\r
-- // call is made when data IS available. And most\r
-- // Processors/Players read the data in the same\r
-- // thread that called transferData, although that's\r
-- // not a safe assumption to make\r
-- if (!dataAvailable) {\r
-- synchronized (bufferLock) {\r
-- while (!dataAvailable && !terminate) {\r
-- try {\r
-- bufferLock.wait(100);\r
-- } catch (InterruptedException ie) {\r
-- }\r
-- }\r
-- }\r
-- }\r
--\r
-- if (dataAvailable) {\r
-- synchronized (bufferLock) {\r
-- // Copy the buffer attributes, but swap the data\r
-- // attributes so that no extra copy is made.\r
-- buffer.copy(cbuffer, true);\r
-- //dataAvailable = false;\r
-- }\r
-- }\r
--// return;\r
-- }\r
-- public void setCaptureListener(JmfCaptureListener i_listener)\r
-- {\r
-- img_listener=i_listener;\r
-- }\r
--\r
-- public void transferData(PushBufferStream pbs)\r
-- {\r
-- // Get the data from the original source stream\r
-- synchronized (bufferLock) {\r
-- try {\r
-- pbs.read(cbuffer);\r
-- } catch (IOException ioe) {\r
-- return;\r
-- }\r
-- dataAvailable = true;\r
-- bufferLock.notifyAll();\r
-- }\r
-- if(img_listener!=null){\r
-- img_listener.onUpdateBuffer(cbuffer);\r
-- }\r
-- \r
--/*\r
-- // Display data if monitor is active\r
-- if (isEnabled()) {\r
-- if (bti == null) {\r
-- VideoFormat vf = (VideoFormat) cbuffer.getFormat();\r
-- bti = new BufferToImage(vf);\r
-- }\r
-- if (bti != null && component != null) {\r
-- Image im = bti.createImage(cbuffer);\r
-- Graphics g = component.getGraphics();\r
-- Dimension size = component.getSize();\r
-- if (g != null)\r
-- g.drawImage(im, 0, 0, component);\r
-- }\r
-- }\r
--*/\r
-- // Maybe synchronize this with setTransferHandler() ?\r
-- if (transferHandler != null && cds.delStarted)\r
-- transferHandler.transferData(this);\r
-- }\r
--\r
-- public void setTransferHandler(BufferTransferHandler transferHandler) {\r
-- this.transferHandler = transferHandler;\r
-- }\r
--\r
-- public boolean setEnabled(boolean value) {\r
-- enabled = value;\r
-- if (value == false) {\r
-- if (!cds.delStarted) {\r
-- try {\r
-- cds.stopDelegate();\r
-- } catch (IOException ioe) {\r
-- }\r
-- }\r
-- } else {\r
-- // Start the capture datasource if the monitor is enabled\r
-- try {\r
-- cds.startDelegate();\r
-- }catch (IOException ioe) {\r
-- }\r
-- }\r
-- return enabled;\r
-- }\r
--\r
-- public boolean isEnabled()\r
-- {\r
-- return enabled;\r
-- }\r
--\r
--\r
--\r
-- public float setPreviewFrameRate(float rate)\r
-- {\r
-- System.err.println("TODO");\r
-- return rate;\r
-- }\r
-- \r
-- public ContentDescriptor getContentDescriptor()\r
-- {\r
-- return actual.getContentDescriptor();\r
-- }\r
--\r
-- public long getContentLength()\r
-- {\r
-- return actual.getContentLength();\r
-- }\r
--\r
-- public boolean endOfStream() {\r
-- return actual.endOfStream();\r
-- }\r
--\r
-- public Object [] getControls() {\r
-- return new Object[0];\r
-- }\r
--\r
-- public Object getControl(String str) {\r
-- return null;\r
-- }\r
--\r
--\r
--}\r
-Index: D:/project.files/java.Lab/NyARToolKit/sample/jmf/jp/nyatla/nyartoolkit/jmf/JmfCaptureListener.java\r
-===================================================================\r
---- D:/project.files/java.Lab/NyARToolKit/sample/jmf/jp/nyatla/nyartoolkit/jmf/JmfCaptureListener.java (revision 174)\r
-+++ D:/project.files/java.Lab/NyARToolKit/sample/jmf/jp/nyatla/nyartoolkit/jmf/JmfCaptureListener.java (revision 178)\r
-@@ -1,14 +0,0 @@\r
--/**\r
-- * JMF\82¨\8eè\8cy\83L\83\83\83v\83`\83\83\97p\83\8a\83X\83i\r
-- * (c)2008 R.Iizuka\r
-- * airmail@ebony.plala.or.jp\r
-- * http://nyatla.jp/\r
-- */\r
--package jp.nyatla.nyartoolkit.jmf;\r
--\r
--import javax.media.Buffer;\r
--\r
--public interface JmfCaptureListener{\r
-- public void onUpdateBuffer(Buffer i_buffer);\r
-- \r
--}\r
-\ No newline at end of file\r
-Index: D:/project.files/java.Lab/NyARToolKit/sample/jmf/jp/nyatla/nyartoolkit/jmf/JmfCameraCapture.java\r
-===================================================================\r
---- D:/project.files/java.Lab/NyARToolKit/sample/jmf/jp/nyatla/nyartoolkit/jmf/JmfCameraCapture.java (revision 174)\r
-+++ D:/project.files/java.Lab/NyARToolKit/sample/jmf/jp/nyatla/nyartoolkit/jmf/JmfCameraCapture.java (revision 178)\r
-@@ -1,180 +0,0 @@\r
--/**\r
-- * JMF\82¨\8eè\8cy\83L\83\83\83v\83`\83\83\83N\83\89\83X\r
-- * (c)2008 R.Iizuka\r
-- * airmail@ebony.plala.or.jp\r
-- * http://nyatla.jp/\r
-- */\r
--package jp.nyatla.nyartoolkit.jmf;\r
--\r
--\r
--\r
--import javax.media.*;\r
--import javax.media.protocol.*;\r
--import javax.media.control.*;\r
--import javax.media.format.*;\r
--import java.awt.*;\r
--import java.util.*;\r
--import javax.media.protocol.DataSource;\r
--\r
--import jp.nyatla.nyartoolkit.NyARException;\r
--\r
--\r
--\r
--\r
--\r
--public class JmfCameraCapture\r
--{\r
-- private Dimension image_size;\r
-- private JmfCaptureListener capture_listener;\r
-- private DataSource jmf_data_source;\r
-- private MonitorStream jmf_monitor_stream;\r
-- private Processor jmf_processor;\r
-- private VideoFormat jmf_video_format;\r
-- \r
-- private Buffer read_buf=new Buffer();\r
-- public static final String PIXEL_FORMAT_RGB="RGB";\r
-- public JmfCameraCapture(int i_width,int i_height,float i_rate,String i_pixcel_format)\r
-- {\r
-- String encoding = i_pixcel_format;//comboEncoding.getSelectedItem();\r
-- image_size = new Dimension(i_width,i_height);\r
-- jmf_video_format = new VideoFormat(encoding, image_size, Format.NOT_SPECIFIED,null,i_rate);\r
-- }\r
-- public Dimension getSize()\r
-- {\r
-- return image_size;\r
-- }\r
-- public javax.media.Buffer readBuffer() throws NyARException\r
-- {\r
-- if(jmf_monitor_stream==null){\r
-- throw new NyARException();\r
-- }\r
-- try{\r
-- jmf_monitor_stream.read(read_buf);\r
-- }catch(Exception e){\r
-- throw new NyARException(e);\r
-- }\r
-- return read_buf;\r
-- }\r
-- public void setCaptureListener(JmfCaptureListener i_listener) throws NyARException\r
-- {\r
-- if(jmf_processor!=null){\r
-- throw new NyARException();\r
-- }\r
-- capture_listener=i_listener;\r
-- \r
-- }\r
-- public void start() throws NyARException\r
-- {\r
-- \r
-- DataSource ds=getCaptureDS(jmf_video_format);\r
-- VideoFormat[] formats=new VideoFormat[]{new VideoFormat(null)};\r
-- ProcessorModel pm = new ProcessorModel(ds,formats,null);//, formats, ftd);\r
-- Processor processor;\r
-- try {\r
-- processor = Manager.createRealizedProcessor(pm);\r
-- } catch (Exception e){\r
-- // Make sure the capture devices are released\r
-- ds.disconnect();\r
-- throw new NyARException(e);\r
-- }\r
-- // Get the monitor control:\r
-- // Since there are more than one MonitorControl objects\r
-- // exported by the DataSource, we get the specific one\r
-- // that is also the MonitorStream object.\r
-- jmf_monitor_stream=(MonitorStream)ds.getControl("jmfsample.MonitorStream");\r
-- jmf_monitor_stream.setCaptureListener(capture_listener);\r
-- jmf_data_source=ds;\r
-- jmf_processor=processor;\r
-- jmf_processor.start();\r
-- }\r
-- public void stop()\r
-- {\r
-- jmf_processor.stop();\r
-- jmf_processor.close();\r
-- jmf_processor = null;\r
-- \r
-- }\r
-- protected void finalize()\r
-- {\r
-- if(jmf_processor!=null){\r
-- jmf_processor.stop();\r
-- jmf_processor.close();\r
-- jmf_processor = null;\r
-- }\r
-- }\r
-- private static DataSource getCaptureDS(VideoFormat vf) {\r
-- DataSource dsVideo = null;\r
-- DataSource ds = null;\r
--\r
-- // Create a capture DataSource for the video\r
-- // If there is no video capture device, then exit with null\r
-- if (vf != null) {\r
-- dsVideo = createDataSource(vf);\r
-- if (dsVideo == null)\r
-- return null;\r
-- }\r
--\r
--\r
-- // Create the monitoring datasource wrapper\r
-- if (dsVideo != null) {\r
-- dsVideo = new MonitorCDS(dsVideo);\r
-- return dsVideo;\r
-- }\r
--\r
-- // Merge the data sources, if both audio and video are available\r
-- try {\r
-- ds = Manager.createMergingDataSource(new DataSource[]{dsVideo});\r
-- } catch (IncompatibleSourceException ise){\r
-- return null;\r
-- }\r
--\r
-- return ds;\r
-- }\r
--\r
-- private static DataSource createDataSource(Format format) {\r
-- DataSource ds;\r
-- Vector devices;\r
-- CaptureDeviceInfo cdi;\r
-- MediaLocator ml;\r
--\r
-- // Find devices for format\r
-- devices = CaptureDeviceManager.getDeviceList(format);\r
-- if (devices.size() < 1) {\r
-- System.err.println("! No Devices for " + format);\r
-- return null;\r
-- }\r
-- // Pick the first device\r
-- cdi = (CaptureDeviceInfo) devices.elementAt(0);\r
--\r
-- ml = cdi.getLocator();\r
--\r
-- try {\r
-- ds = Manager.createDataSource(ml);\r
-- ds.connect();\r
-- if (ds instanceof CaptureDevice)\r
-- {\r
-- setCaptureFormat((CaptureDevice) ds, format);\r
-- }\r
-- } catch (Exception e) {\r
-- System.err.println(e);\r
-- return null;\r
-- }\r
-- return ds;\r
-- }\r
--\r
-- private static void setCaptureFormat(CaptureDevice cdev, Format format) {\r
-- FormatControl [] fcs = cdev.getFormatControls();\r
-- if (fcs.length < 1){\r
-- return;\r
-- }\r
-- FormatControl fc = fcs[0];\r
-- Format [] formats = fc.getSupportedFormats();\r
-- for (int i = 0; i < formats.length; i++) {\r
-- if (formats[i].matches(format)){\r
-- format = formats[i].intersects(format);\r
-- fc.setFormat(format);\r
-- break;\r
-- }\r
-- }\r
-- }\r
--}\r
-\ No newline at end of file\r
-Index: D:/project.files/java.Lab/NyARToolKit/sample/jmf/jp/nyatla/nyartoolkit/jmf/utils/JmfNyARRaster_RGB.java\r
-===================================================================\r
---- D:/project.files/java.Lab/NyARToolKit/sample/jmf/jp/nyatla/nyartoolkit/jmf/utils/JmfNyARRaster_RGB.java (revision 0)\r
-+++ D:/project.files/java.Lab/NyARToolKit/sample/jmf/jp/nyatla/nyartoolkit/jmf/utils/JmfNyARRaster_RGB.java (revision 178)\r
-@@ -0,0 +1,119 @@\r
-+/**\r
-+ * RGB\8c`\8e®\82ÌJMF\83o\83b\83t\83@\82ð\83\89\83b\83v\82·\82éNyARRaster\82Å\82·\81B\r
-+ * JMF\82©\82ç\93¾\82½\83\89\83X\83^\83f\81[\83^\82Ì\83s\83N\83Z\83\8b\95À\82Ñ\8f\87\82ð\8dl\97¶\82µ\82Ü\82·\81B\r
-+ * (c)2008 A\8cÕ\81\97nyatla.jp\r
-+ * airmail(at)ebony.plala.or.jp\r
-+ * http://nyatla.jp/\r
-+ */\r
-+package jp.nyatla.nyartoolkit.jmf.utils;\r
-+\r
-+\r
-+import javax.media.format.RGBFormat;\r
-+import java.awt.Dimension;\r
-+import jp.nyatla.nyartoolkit.NyARException;\r
-+import jp.nyatla.nyartoolkit.core.raster.NyARRaster;\r
-+\r
-+\r
-+public class JmfNyARRaster_RGB implements NyARRaster\r
-+{\r
-+ public final static int PIXEL_ORDER_RGB=1;\r
-+ public final static int PIXEL_ORDER_BGR=2;\r
-+ protected int pix_type;\r
-+ private int red_idx;\r
-+ private int green_idx;\r
-+ private int blue_idx;\r
-+ protected byte[] ref_buf;\r
-+ protected int width=0;\r
-+ protected int height=0;\r
-+\r
-+ /**\r
-+ * RGB\8c`\8e®\82ÌJMF\83o\83b\83t\83@\82ð\83\89\83b\83v\82·\82é\83I\83u\83W\83F\83N\83g\82ð\82Â\82\82è\82Ü\82·\81B\r
-+ * \90¶\90¬\92¼\8cã\82Ì\83I\83u\83W\83F\83N\83g\82Í\83f\81[\83^\82ð\8e\9d\82¿\82Ü\82¹\82ñ\81B\r
-+ * \83\81\83\93\83o\8aÖ\90\94\82ÍsetBuffer\82ð\8eÀ\8ds\8cã\82É\8eg\97p\89Â\94\\82É\82È\82è\82Ü\82·\81B\r
-+ */\r
-+ public JmfNyARRaster_RGB(int i_width,int i_height)\r
-+ {\r
-+ ref_buf=null;\r
-+ width=i_width;\r
-+ height=i_height;\r
-+ }\r
-+ /**\r
-+ * \83t\83H\81[\83}\83b\83g\82ð\89ð\90Í\82µ\82Ä\81A\83C\83\93\83X\83^\83\93\83X\82Ì\83t\83H\81[\83}\83b\83g\83v\83\8d\83p\83e\83B\82ð\8f\89\8aú\89»\82µ\82Ü\82·\81B\r
-+ * \r
-+ * @param i_buffer\r
-+ * @throws NyARException\r
-+ */\r
-+ protected void initFormatProperty(RGBFormat i_fmt) throws NyARException\r
-+ {\r
-+ //\83f\81[\83^\83T\83C\83Y\82Ì\8am\94F\r
-+ Dimension s=i_fmt.getSize();\r
-+ if(width!=s.width || height !=s.height){\r
-+ throw new NyARException();\r
-+ }\r
-+ //\83f\81[\83^\94z\97ñ\82Ì\8am\94F\r
-+ red_idx =i_fmt.getRedMask()-1;\r
-+ green_idx=i_fmt.getGreenMask()-1;\r
-+ blue_idx =i_fmt.getBlueMask()-1;\r
-+ \r
-+ //\90F\94z\97ñ\82Ì\93Á\92è\r
-+ if(red_idx==0 && blue_idx==2){\r
-+ pix_type=PIXEL_ORDER_RGB;\r
-+ }else if(red_idx==2 && blue_idx==0){\r
-+ pix_type=PIXEL_ORDER_BGR;\r
-+ }else{\r
-+ throw new NyARException("Unknown pixel order.");\r
-+ } \r
-+ }\r
-+ /**\r
-+ * javax.media.Buffer\82ð\95ª\90Í\82µ\82Ä\81A\82»\82Ì\95ª\90Í\8c\8b\89Ê\82ðNyARRaster\82É\93K\8d\87\82·\82é\8c`\82Å\95Û\8e\9d\82µ\82Ü\82·\81B\r
-+ * \8aÖ\90\94\8eÀ\8ds\8cã\82É\8aO\95\94\82Åi_buffer\82Ì\93à\97e\95Ï\8dX\82µ\82½\8fê\8d\87\82É\82Í\81A\8dÄ\93xsetBuffer\8aÖ\90\94\82ð\8cÄ\82Ñ\8fo\82µ\82Ä\82\82¾\82³\82¢\81B\r
-+ * @param i_buffer\r
-+ * RGB\8c`\8e®\82Ì\83f\81[\83^\82ð\8ai\94[\82µ\82½javax.media.Buffer\83I\83u\83W\83F\83N\83g\82ð\8ew\92è\82µ\82Ä\82\82¾\82³\82¢\81B\r
-+ * @return\r
-+ * i_buffer\82ð\83\89\83b\83v\82µ\82½\83I\83u\83W\83F\83N\83g\82ð\95Ô\82µ\82Ü\82·\81B\r
-+ * @throws NyARException\r
-+ */\r
-+ public void setBuffer(javax.media.Buffer i_buffer) throws NyARException\r
-+ {\r
-+ initFormatProperty((RGBFormat)i_buffer.getFormat());\r
-+ ref_buf=(byte[])i_buffer.getData();\r
-+ }\r
-+ 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
-+ }\r
-+ public int getWidth()\r
-+ {\r
-+ return width;\r
-+ }\r
-+ public int getHeight()\r
-+ {\r
-+ return height;\r
-+ }\r
-+ public void pickRgbArray(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
-+ }\r
-+ /**\r
-+ * \83s\83N\83Z\83\8b\82Ì\8f\87\8f\98\83^\83C\83v\82ð\95Ô\82µ\82Ü\82·\81B\r
-+ * @return\r
-+ * \82»\82Ì\92l\r
-+ */\r
-+ public int getPixelOrder()\r
-+ {\r
-+ return pix_type;\r
-+ }\r
-+ /**\r
-+ * \83f\81[\83^\82ð\8e\9d\82Á\82Ä\82¢\82é\82©\82ð\95Ô\82µ\82Ü\82·\81B\r
-+ * @return\r
-+ */\r
-+ public boolean hasData()\r
-+ {\r
-+ return ref_buf!=null;\r
-+ }\r
-+\r
-+}\r
-Index: D:/project.files/java.Lab/NyARToolKit/sample/jmf/jp/nyatla/nyartoolkit/jmf/utils/MonitorCDS.java\r
-===================================================================\r
---- D:/project.files/java.Lab/NyARToolKit/sample/jmf/jp/nyatla/nyartoolkit/jmf/utils/MonitorCDS.java (revision 0)\r
-+++ D:/project.files/java.Lab/NyARToolKit/sample/jmf/jp/nyatla/nyartoolkit/jmf/utils/MonitorCDS.java (revision 178)\r
-@@ -0,0 +1,136 @@\r
-+/*\r
-+ * Copyright (c) 1996-2001 Sun Microsystems, Inc. All Rights Reserved.\r
-+ *\r
-+ * Sun grants you ("Licensee") a non-exclusive, royalty free, license to use,\r
-+ * modify and redistribute this software in source and binary code form,\r
-+ * provided that i) this copyright notice and license appear on all copies of\r
-+ * the software; and ii) Licensee does not utilize the software in a manner\r
-+ * which is disparaging to Sun.\r
-+ *\r
-+ * This software is provided "AS IS," without a warranty of any kind. ALL\r
-+ * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY\r
-+ * IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR\r
-+ * NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE\r
-+ * LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING\r
-+ * OR DISTRIBUTING THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS\r
-+ * LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT,\r
-+ * INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER\r
-+ * CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF\r
-+ * OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE\r
-+ * POSSIBILITY OF SUCH DAMAGES.\r
-+ *\r
-+ * This software is not designed or intended for use in on-line control of\r
-+ * aircraft, air traffic, aircraft navigation or aircraft communications; or in\r
-+ * the design, construction, operation or maintenance of any nuclear\r
-+ * facility. Licensee represents and warrants that it will not use or\r
-+ * redistribute the Software for such purposes.\r
-+ */\r
-+package jp.nyatla.nyartoolkit.jmf.utils;\r
-+\r
-+\r
-+import javax.media.*;\r
-+import javax.media.protocol.*;\r
-+import javax.media.control.*;\r
-+\r
-+import java.io.IOException;\r
-+\r
-+\r
-+\r
-+public class MonitorCDS extends PushBufferDataSource{\r
-+\r
-+ private PushBufferDataSource delegate = null;\r
-+ private PushBufferStream [] delStreams = null;\r
-+ private MonitorStream monitorStream = null;\r
-+ private PushBufferStream [] monitorStreams = null;\r
-+ boolean delStarted = false; // variable used by MonitorStream also\r
-+ private Control [] controls;\r
-+\r
-+ public MonitorCDS(DataSource ds)\r
-+ {\r
-+ // Get the stream from the actual datasource\r
-+ // and create a MonitorStream from it\r
-+ // Export the MonitorControl interface of the MonitorStream\r
-+ if (ds instanceof PushBufferDataSource)\r
-+ {\r
-+ delegate = (PushBufferDataSource) ds;\r
-+ delStreams = delegate.getStreams();\r
-+ monitorStream = new MonitorStream(delStreams[0], this);\r
-+ monitorStreams = new PushBufferStream[] {monitorStream};\r
-+ }\r
-+ }\r
-+\r
-+ public Object [] getControls()\r
-+ {\r
-+ return controls;\r
-+ }\r
-+\r
-+ public Object getControl(String value) {\r
-+ if (value.equals("jmfsample.MonitorStream") || value.equals("javax.media.control.MonitorControl"))\r
-+ return monitorStream;\r
-+ else\r
-+ return null;\r
-+ }\r
-+\r
-+ public javax.media.CaptureDeviceInfo getCaptureDeviceInfo()\r
-+ {\r
-+ return ((CaptureDevice)delegate).getCaptureDeviceInfo();\r
-+ }\r
-+\r
-+ public FormatControl[] getFormatControls()\r
-+ {\r
-+ return ((CaptureDevice)delegate).getFormatControls();\r
-+ }\r
-+\r
-+ public String getContentType()\r
-+ {\r
-+ return delegate.getContentType();\r
-+ }\r
-+\r
-+ public void connect() throws IOException\r
-+ {\r
-+ if (delegate == null)\r
-+ throw new IOException("Incompatible DataSource");\r
-+ // Delegate is already connected\r
-+ }\r
-+\r
-+ public void disconnect()\r
-+ {\r
-+ monitorStream.setEnabled(false);\r
-+ delegate.disconnect();\r
-+ }\r
-+\r
-+ public synchronized void start() throws IOException\r
-+ {\r
-+ startDelegate();\r
-+ delStarted = true;\r
-+ }\r
-+\r
-+ public synchronized void stop() throws IOException\r
-+ {\r
-+ if (!monitorStream.isEnabled()) {\r
-+ stopDelegate();\r
-+ }\r
-+ delStarted = false;\r
-+ }\r
-+\r
-+ public Time getDuration()\r
-+ {\r
-+ return delegate.getDuration();\r
-+ }\r
-+\r
-+ public PushBufferStream [] getStreams()\r
-+ {\r
-+ return monitorStreams;\r
-+ }\r
-+\r
-+ void startDelegate() throws IOException\r
-+ {\r
-+ delegate.start();\r
-+ }\r
-+\r
-+ void stopDelegate() throws IOException\r
-+ {\r
-+ delegate.stop();\r
-+ }\r
-+\r
-+}\r
-Index: D:/project.files/java.Lab/NyARToolKit/sample/jmf/jp/nyatla/nyartoolkit/jmf/utils/MonitorStream.java\r
-===================================================================\r
---- D:/project.files/java.Lab/NyARToolKit/sample/jmf/jp/nyatla/nyartoolkit/jmf/utils/MonitorStream.java (revision 0)\r
-+++ D:/project.files/java.Lab/NyARToolKit/sample/jmf/jp/nyatla/nyartoolkit/jmf/utils/MonitorStream.java (revision 178)\r
-@@ -0,0 +1,196 @@\r
-+/*\r
-+ * Copyright (c) 1996-2001 Sun Microsystems, Inc. All Rights Reserved.\r
-+ *\r
-+ * Sun grants you ("Licensee") a non-exclusive, royalty free, license to use,\r
-+ * modify and redistribute this software in source and binary code form,\r
-+ * provided that i) this copyright notice and license appear on all copies of\r
-+ * the software; and ii) Licensee does not utilize the software in a manner\r
-+ * which is disparaging to Sun.\r
-+ *\r
-+ * This software is provided "AS IS," without a warranty of any kind. ALL\r
-+ * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY\r
-+ * IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR\r
-+ * NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE\r
-+ * LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING\r
-+ * OR DISTRIBUTING THE SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS\r
-+ * LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT,\r
-+ * INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER\r
-+ * CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF\r
-+ * OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE\r
-+ * POSSIBILITY OF SUCH DAMAGES.\r
-+ *\r
-+ * This software is not designed or intended for use in on-line control of\r
-+ * aircraft, air traffic, aircraft navigation or aircraft communications; or in\r
-+ * the design, construction, operation or maintenance of any nuclear\r
-+ * facility. Licensee represents and warrants that it will not use or\r
-+ * redistribute the Software for such purposes.\r
-+ */\r
-+package jp.nyatla.nyartoolkit.jmf.utils;\r
-+\r
-+\r
-+\r
-+import javax.media.*;\r
-+import javax.media.protocol.*;\r
-+\r
-+import javax.media.util.BufferToImage;\r
-+import java.io.IOException;\r
-+import java.awt.*;\r
-+\r
-+public class MonitorStream implements PushBufferStream, BufferTransferHandler {\r
-+\r
-+ JmfCaptureListener img_listener;\r
-+ PushBufferStream actual = null;\r
-+ boolean dataAvailable = false;\r
-+ boolean terminate = false;\r
-+ boolean enabled = false;\r
-+ Object bufferLock = new Object();\r
-+ Buffer cbuffer = new Buffer();\r
-+ BufferTransferHandler transferHandler = null;\r
-+ Component component = null;\r
-+ MonitorCDS cds;\r
-+ BufferToImage bti = null;\r
-+ \r
-+ MonitorStream(PushBufferStream actual, MonitorCDS cds) {\r
-+ this.actual = actual;\r
-+ actual.setTransferHandler(this);\r
-+ this.cds = cds;\r
-+ }\r
-+\r
-+ public javax.media.Format getFormat()\r
-+ {\r
-+ return actual.getFormat();\r
-+ }\r
-+ /**\r
-+ * \94ñ\93¯\8aúREAD\r
-+ */\r
-+ public void read(Buffer buffer) throws IOException\r
-+ {\r
-+ // Wait for data to be available\r
-+ // Doesn't get used much because the transferData\r
-+ // call is made when data IS available. And most\r
-+ // Processors/Players read the data in the same\r
-+ // thread that called transferData, although that's\r
-+ // not a safe assumption to make\r
-+ if (!dataAvailable) {\r
-+ synchronized (bufferLock) {\r
-+ while (!dataAvailable && !terminate) {\r
-+ try {\r
-+ bufferLock.wait(100);\r
-+ } catch (InterruptedException ie) {\r
-+ }\r
-+ }\r
-+ }\r
-+ }\r
-+\r
-+ if (dataAvailable) {\r
-+ synchronized (bufferLock) {\r
-+ // Copy the buffer attributes, but swap the data\r
-+ // attributes so that no extra copy is made.\r
-+ buffer.copy(cbuffer, true);\r
-+ //dataAvailable = false;\r
-+ }\r
-+ }\r
-+// return;\r
-+ }\r
-+ public void setCaptureListener(JmfCaptureListener i_listener)\r
-+ {\r
-+ img_listener=i_listener;\r
-+ }\r
-+\r
-+ public void transferData(PushBufferStream pbs)\r
-+ {\r
-+ // Get the data from the original source stream\r
-+ synchronized (bufferLock) {\r
-+ try {\r
-+ pbs.read(cbuffer);\r
-+ } catch (IOException ioe) {\r
-+ return;\r
-+ }\r
-+ dataAvailable = true;\r
-+ bufferLock.notifyAll();\r
-+ }\r
-+ if(img_listener!=null){\r
-+ img_listener.onUpdateBuffer(cbuffer);\r
-+ }\r
-+ \r
-+/*\r
-+ // Display data if monitor is active\r
-+ if (isEnabled()) {\r
-+ if (bti == null) {\r
-+ VideoFormat vf = (VideoFormat) cbuffer.getFormat();\r
-+ bti = new BufferToImage(vf);\r
-+ }\r
-+ if (bti != null && component != null) {\r
-+ Image im = bti.createImage(cbuffer);\r
-+ Graphics g = component.getGraphics();\r
-+ Dimension size = component.getSize();\r
-+ if (g != null)\r
-+ g.drawImage(im, 0, 0, component);\r
-+ }\r
-+ }\r
-+*/\r
-+ // Maybe synchronize this with setTransferHandler() ?\r
-+ if (transferHandler != null && cds.delStarted)\r
-+ transferHandler.transferData(this);\r
-+ }\r
-+\r
-+ public void setTransferHandler(BufferTransferHandler transferHandler) {\r
-+ this.transferHandler = transferHandler;\r
-+ }\r
-+\r
-+ public boolean setEnabled(boolean value) {\r
-+ enabled = value;\r
-+ if (value == false) {\r
-+ if (!cds.delStarted) {\r
-+ try {\r
-+ cds.stopDelegate();\r
-+ } catch (IOException ioe) {\r
-+ }\r
-+ }\r
-+ } else {\r
-+ // Start the capture datasource if the monitor is enabled\r
-+ try {\r
-+ cds.startDelegate();\r
-+ }catch (IOException ioe) {\r
-+ }\r
-+ }\r
-+ return enabled;\r
-+ }\r
-+\r
-+ public boolean isEnabled()\r
-+ {\r
-+ return enabled;\r
-+ }\r
-+\r
-+\r
-+\r
-+ public float setPreviewFrameRate(float rate)\r
-+ {\r
-+ System.err.println("TODO");\r
-+ return rate;\r
-+ }\r
-+ \r
-+ public ContentDescriptor getContentDescriptor()\r
-+ {\r
-+ return actual.getContentDescriptor();\r
-+ }\r
-+\r
-+ public long getContentLength()\r
-+ {\r
-+ return actual.getContentLength();\r
-+ }\r
-+\r
-+ public boolean endOfStream() {\r
-+ return actual.endOfStream();\r
-+ }\r
-+\r
-+ public Object [] getControls() {\r
-+ return new Object[0];\r
-+ }\r
-+\r
-+ public Object getControl(String str) {\r
-+ return null;\r
-+ }\r
-+\r
-+\r
-+}\r
-Index: D:/project.files/java.Lab/NyARToolKit/sample/jmf/jp/nyatla/nyartoolkit/jmf/utils/JmfCaptureListener.java\r
-===================================================================\r
---- D:/project.files/java.Lab/NyARToolKit/sample/jmf/jp/nyatla/nyartoolkit/jmf/utils/JmfCaptureListener.java (revision 0)\r
-+++ D:/project.files/java.Lab/NyARToolKit/sample/jmf/jp/nyatla/nyartoolkit/jmf/utils/JmfCaptureListener.java (revision 178)\r
-@@ -0,0 +1,14 @@\r
-+/**\r
-+ * JMF\82¨\8eè\8cy\83L\83\83\83v\83`\83\83\97p\83\8a\83X\83i\r
-+ * (c)2008 A\8cÕ\81\97nyatla.jp\r
-+ * airmail@ebony.plala.or.jp\r
-+ * http://nyatla.jp/\r
-+ */\r
-+package jp.nyatla.nyartoolkit.jmf.utils;\r
-+\r
-+import javax.media.Buffer;\r
-+\r
-+public interface JmfCaptureListener{\r
-+ public void onUpdateBuffer(Buffer i_buffer);\r
-+ \r
-+}\r
-\ No newline at end of file\r
-Index: D:/project.files/java.Lab/NyARToolKit/sample/jmf/jp/nyatla/nyartoolkit/jmf/utils/JmfCameraCapture.java\r
-===================================================================\r
---- D:/project.files/java.Lab/NyARToolKit/sample/jmf/jp/nyatla/nyartoolkit/jmf/utils/JmfCameraCapture.java (revision 0)\r
-+++ D:/project.files/java.Lab/NyARToolKit/sample/jmf/jp/nyatla/nyartoolkit/jmf/utils/JmfCameraCapture.java (revision 178)\r
-@@ -0,0 +1,180 @@\r
-+/**\r
-+ * JMF\82¨\8eè\8cy\83L\83\83\83v\83`\83\83\83N\83\89\83X\r
-+ * (c)2008 A\8cÕ\81\97nyatla.jp\r
-+ * airmail@ebony.plala.or.jp\r
-+ * http://nyatla.jp/\r
-+ */\r
-+package jp.nyatla.nyartoolkit.jmf.utils;\r
-+\r
-+\r
-+\r
-+import javax.media.*;\r
-+import javax.media.protocol.*;\r
-+import javax.media.control.*;\r
-+import javax.media.format.*;\r
-+import java.awt.*;\r
-+import java.util.*;\r
-+import javax.media.protocol.DataSource;\r
-+\r
-+import jp.nyatla.nyartoolkit.NyARException;\r
-+\r
-+\r
-+\r
-+\r
-+\r
-+public class JmfCameraCapture\r
-+{\r
-+ private Dimension image_size;\r
-+ private JmfCaptureListener capture_listener;\r
-+ private DataSource jmf_data_source;\r
-+ private MonitorStream jmf_monitor_stream;\r
-+ private Processor jmf_processor;\r
-+ private VideoFormat jmf_video_format;\r
-+ \r
-+ private Buffer read_buf=new Buffer();\r
-+ public static final String PIXEL_FORMAT_RGB="RGB";\r
-+ public JmfCameraCapture(int i_width,int i_height,float i_rate,String i_pixcel_format)\r
-+ {\r
-+ String encoding = i_pixcel_format;//comboEncoding.getSelectedItem();\r
-+ image_size = new Dimension(i_width,i_height);\r
-+ jmf_video_format = new VideoFormat(encoding, image_size, Format.NOT_SPECIFIED,null,i_rate);\r
-+ }\r
-+ public Dimension getSize()\r
-+ {\r
-+ return image_size;\r
-+ }\r
-+ public javax.media.Buffer readBuffer() throws NyARException\r
-+ {\r
-+ if(jmf_monitor_stream==null){\r
-+ throw new NyARException();\r
-+ }\r
-+ try{\r
-+ jmf_monitor_stream.read(read_buf);\r
-+ }catch(Exception e){\r
-+ throw new NyARException(e);\r
-+ }\r
-+ return read_buf;\r
-+ }\r
-+ public void setCaptureListener(JmfCaptureListener i_listener) throws NyARException\r
-+ {\r
-+ if(jmf_processor!=null){\r
-+ throw new NyARException();\r
-+ }\r
-+ capture_listener=i_listener;\r
-+ \r
-+ }\r
-+ public void start() throws NyARException\r
-+ {\r
-+ \r
-+ DataSource ds=getCaptureDS(jmf_video_format);\r
-+ VideoFormat[] formats=new VideoFormat[]{new VideoFormat(null)};\r
-+ ProcessorModel pm = new ProcessorModel(ds,formats,null);//, formats, ftd);\r
-+ Processor processor;\r
-+ try {\r
-+ processor = Manager.createRealizedProcessor(pm);\r
-+ } catch (Exception e){\r
-+ // Make sure the capture devices are released\r
-+ ds.disconnect();\r
-+ throw new NyARException(e);\r
-+ }\r
-+ // Get the monitor control:\r
-+ // Since there are more than one MonitorControl objects\r
-+ // exported by the DataSource, we get the specific one\r
-+ // that is also the MonitorStream object.\r
-+ jmf_monitor_stream=(MonitorStream)ds.getControl("jmfsample.MonitorStream");\r
-+ jmf_monitor_stream.setCaptureListener(capture_listener);\r
-+ jmf_data_source=ds;\r
-+ jmf_processor=processor;\r
-+ jmf_processor.start();\r
-+ }\r
-+ public void stop()\r
-+ {\r
-+ jmf_processor.stop();\r
-+ jmf_processor.close();\r
-+ jmf_processor = null;\r
-+ \r
-+ }\r
-+ protected void finalize()\r
-+ {\r
-+ if(jmf_processor!=null){\r
-+ jmf_processor.stop();\r
-+ jmf_processor.close();\r
-+ jmf_processor = null;\r
-+ }\r
-+ }\r
-+ private static DataSource getCaptureDS(VideoFormat vf) {\r
-+ DataSource dsVideo = null;\r
-+ DataSource ds = null;\r
-+\r
-+ // Create a capture DataSource for the video\r
-+ // If there is no video capture device, then exit with null\r
-+ if (vf != null) {\r
-+ dsVideo = createDataSource(vf);\r
-+ if (dsVideo == null)\r
-+ return null;\r
-+ }\r
-+\r
-+\r
-+ // Create the monitoring datasource wrapper\r
-+ if (dsVideo != null) {\r
-+ dsVideo = new MonitorCDS(dsVideo);\r
-+ return dsVideo;\r
-+ }\r
-+\r
-+ // Merge the data sources, if both audio and video are available\r
-+ try {\r
-+ ds = Manager.createMergingDataSource(new DataSource[]{dsVideo});\r
-+ } catch (IncompatibleSourceException ise){\r
-+ return null;\r
-+ }\r
-+\r
-+ return ds;\r
-+ }\r
-+\r
-+ private static DataSource createDataSource(Format format) {\r
-+ DataSource ds;\r
-+ Vector devices;\r
-+ CaptureDeviceInfo cdi;\r
-+ MediaLocator ml;\r
-+\r
-+ // Find devices for format\r
-+ devices = CaptureDeviceManager.getDeviceList(format);\r
-+ if (devices.size() < 1) {\r
-+ System.err.println("! No Devices for " + format);\r
-+ return null;\r
-+ }\r
-+ // Pick the first device\r
-+ cdi = (CaptureDeviceInfo) devices.elementAt(0);\r
-+\r
-+ ml = cdi.getLocator();\r
-+\r
-+ try {\r
-+ ds = Manager.createDataSource(ml);\r
-+ ds.connect();\r
-+ if (ds instanceof CaptureDevice)\r
-+ {\r
-+ setCaptureFormat((CaptureDevice) ds, format);\r
-+ }\r
-+ } catch (Exception e) {\r
-+ System.err.println(e);\r
-+ return null;\r
-+ }\r
-+ return ds;\r
-+ }\r
-+\r
-+ private static void setCaptureFormat(CaptureDevice cdev, Format format) {\r
-+ FormatControl [] fcs = cdev.getFormatControls();\r
-+ if (fcs.length < 1){\r
-+ return;\r
-+ }\r
-+ FormatControl fc = fcs[0];\r
-+ Format [] formats = fc.getSupportedFormats();\r
-+ for (int i = 0; i < formats.length; i++) {\r
-+ if (formats[i].matches(format)){\r
-+ format = formats[i].intersects(format);\r
-+ fc.setFormat(format);\r
-+ break;\r
-+ }\r
-+ }\r
-+ }\r
-+}\r
-\ No newline at end of file\r
-Index: D:/project.files/java.Lab/NyARToolKit/sample/jmf/jp/nyatla/nyartoolkit/jmf/sample/JmfCaptureTest.java\r
-===================================================================\r
---- D:/project.files/java.Lab/NyARToolKit/sample/jmf/jp/nyatla/nyartoolkit/jmf/sample/JmfCaptureTest.java (revision 0)\r
-+++ D:/project.files/java.Lab/NyARToolKit/sample/jmf/jp/nyatla/nyartoolkit/jmf/sample/JmfCaptureTest.java (revision 178)\r
-@@ -0,0 +1,58 @@\r
-+/**\r
-+ * VFM\83L\83\83\83v\83`\83\83\83e\83X\83g\83v\83\8d\83O\83\89\83\80\r
-+ * (c)2008 A\8cÕ\81\97nyatla.jp\r
-+ * airmail@ebony.plala.or.jp\r
-+ * http://nyatla.jp/\r
-+ */\r
-+package jp.nyatla.nyartoolkit.jmf.sample;\r
-+\r
-+import javax.media.*;\r
-+\r
-+import javax.media.util.BufferToImage;\r
-+import javax.media.format.*;\r
-+import jp.nyatla.nyartoolkit.NyARException;\r
-+import jp.nyatla.nyartoolkit.jmf.utils.*;\r
-+\r
-+import java.awt.*;\r
-+\r
-+\r
-+\r
-+public class JmfCaptureTest extends Frame implements JmfCaptureListener{\r
-+ public JmfCaptureTest() throws NyARException\r
-+ {\r
-+ setTitle("JmfCaptureTest");\r
-+ setBounds(0,0,320+64,240+64); \r
-+ capture=new JmfCameraCapture(320,240,30f,JmfCameraCapture.PIXEL_FORMAT_RGB);\r
-+ capture.setCaptureListener(this);\r
-+ }\r
-+\r
-+\r
-+\r
-+ private JmfCameraCapture capture;\r
-+ public void onUpdateBuffer(Buffer i_buffer)\r
-+ {\r
-+ BufferToImage b2i=new BufferToImage((VideoFormat)i_buffer.getFormat());\r
-+ Image img=b2i.createImage(i_buffer);\r
-+ Graphics g = getGraphics(); \r
-+ g.drawImage(img, 32, 32,this); \r
-+ }\r
-+ private void startCapture()\r
-+ {\r
-+ try{\r
-+ capture.start();\r
-+ }catch(Exception e){\r
-+ e.printStackTrace();\r
-+ }\r
-+ }\r
-+ public static void main(String[] args) {\r
-+ try{\r
-+ JmfCaptureTest mainwin = new JmfCaptureTest();\r
-+ mainwin.setVisible(true);\r
-+ mainwin.startCapture();\r
-+ }catch(Exception e){\r
-+ e.printStackTrace();\r
-+ }\r
-+ \r
-+ }\r
-+\r
-+}\r
-Index: D:/project.files/java.Lab/NyARToolKit/sample/jmf/jp/nyatla/nyartoolkit/jmf/sample/NyarToolkitLinkTest.java\r
-===================================================================\r
---- D:/project.files/java.Lab/NyARToolKit/sample/jmf/jp/nyatla/nyartoolkit/jmf/sample/NyarToolkitLinkTest.java (revision 0)\r
-+++ D:/project.files/java.Lab/NyARToolKit/sample/jmf/jp/nyatla/nyartoolkit/jmf/sample/NyarToolkitLinkTest.java (revision 178)\r
-@@ -0,0 +1,116 @@\r
-+/**\r
-+ * VFM+ARToolkit\83e\83X\83g\83v\83\8d\83O\83\89\83\80\r
-+ * \83J\83\81\83\89\82©\82ç\8eæ\82è\8d\9e\82ñ\82¾\83f\81[\83^\82©\82ç\83}\81[\83J\81[\82ð\8c\9f\8fo\82µ\82Ä\81A\88ê\92v\93x\82Æ\95Ï\8a·\8ds\97ñ\82ð\95\\8e¦\82µ\82Ü\82·\81B\r
-+ * (c)2008 A\8cÕ\81\97nyatla.jp\r
-+ * airmail(at)ebony.plala.or.jp\r
-+ * http://nyatla.jp/\r
-+ */\r
-+package jp.nyatla.nyartoolkit.jmf.sample;\r
-+\r
-+import javax.media.*;\r
-+\r
-+import javax.media.util.BufferToImage;\r
-+import javax.media.format.*;\r
-+\r
-+import jp.nyatla.nyartoolkit.NyARException;\r
-+import jp.nyatla.nyartoolkit.jmf.utils.*;\r
-+\r
-+import java.awt.*;\r
-+\r
-+import jp.nyatla.nyartoolkit.core.*;\r
-+import jp.nyatla.nyartoolkit.detector.*;\r
-+\r
-+\r
-+\r
-+\r
-+\r
-+\r
-+public class NyarToolkitLinkTest extends Frame implements JmfCaptureListener\r
-+{\r
-+ private final String CARCODE_FILE ="../../Data/patt.hiro";\r
-+ private final String PARAM_FILE ="../../Data/camera_para.dat";\r
-+ private JmfCameraCapture capture;\r
-+ NyARSingleDetectMarker nya;\r
-+ JmfNyARRaster_RGB raster;\r
-+\r
-+ public NyarToolkitLinkTest() throws NyARException,NyARException\r
-+ {\r
-+ setTitle("JmfCaptureTest");\r
-+ setBounds(0,0,320+64,240+64); \r
-+ //\83L\83\83\83v\83`\83\83\82Ì\8f\80\94õ\r
-+ capture=new JmfCameraCapture(320,240,30f,JmfCameraCapture.PIXEL_FORMAT_RGB);\r
-+ capture.setCaptureListener(this);\r
-+ \r
-+ //NyARToolkit\82Ì\8f\80\94õ\r
-+ NyARParam ar_param=new NyARParam();\r
-+ NyARCode ar_code =new NyARCode(16,16);\r
-+ ar_param.loadFromARFile(PARAM_FILE);\r
-+ ar_param.changeSize(320,240);\r
-+ nya=new NyARSingleDetectMarker(ar_param,ar_code,80.0);\r
-+ ar_code.loadFromARFile(CARCODE_FILE);\r
-+ //\83L\83\83\83v\83`\83\83\83C\83\81\81[\83W\97p\82Ì\83\89\83X\83^\82ð\8f\80\94õ\r
-+ raster=new JmfNyARRaster_RGB(320,240);\r
-+ }\r
-+\r
-+\r
-+\r
-+ public void onUpdateBuffer(Buffer i_buffer)\r
-+ {\r
-+ try{\r
-+ //\83L\83\83\83v\83`\83\83\82µ\82½\83o\83b\83t\83@\82ð\83\89\83X\83^\82É\83Z\83b\83g\r
-+ raster.setBuffer(i_buffer);\r
-+\r
-+ //\83L\83\83\83v\83`\83\83\82µ\82½\83C\83\81\81[\83W\82ð\95\\8e¦\97p\82É\89Á\8dH\r
-+ BufferToImage b2i=new BufferToImage((VideoFormat)i_buffer.getFormat());\r
-+ Image img=b2i.createImage(i_buffer);\r
-+\r
-+ Graphics g = getGraphics(); \r
-+ double[][] atm=null;\r
-+\r
-+ //\83}\81[\83J\81[\8c\9f\8fo\r
-+ boolean is_marker_exist=nya.detectMarkerLite(raster,100);\r
-+ if(is_marker_exist){\r
-+ //\95Ï\8a·\8ds\97ñ\82ð\8eæ\93¾\r
-+ atm=nya.getTransmationMatrix().getArray();\r
-+ }\r
-+ //\8fî\95ñ\82ð\89æ\96Ê\82É\8f\91\82 \r
-+ g.drawImage(img, 32, 32,this);\r
-+ if(is_marker_exist){\r
-+ g.drawString("\83}\81[\83J\81[\8c\9f\8fo:"+nya.getConfidence(),32,50);\r
-+ for(int i=0;i<3;i++){\r
-+ for(int i2=0;i2<4;i2++){\r
-+ g.drawString("["+i+"]["+i2+"]"+atm[i][i2],32,50+(1+i2*3+i)*16);\r
-+ }\r
-+ \r
-+ }\r
-+ }else{\r
-+ g.drawString("\83}\81[\83J\81[\96¢\8c\9f\8fo:",32,100);\r
-+ }\r
-+ }catch(Exception e){\r
-+ e.printStackTrace();\r
-+ }\r
-+ \r
-+ \r
-+ \r
-+ \r
-+ }\r
-+ private void startCapture()\r
-+ {\r
-+ try{\r
-+ capture.start();\r
-+ }catch(Exception e){\r
-+ e.printStackTrace();\r
-+ }\r
-+ }\r
-+ public static void main(String[] args) {\r
-+ try{\r
-+ NyarToolkitLinkTest mainwin = new NyarToolkitLinkTest();\r
-+ mainwin.setVisible(true);\r
-+ mainwin.startCapture();\r
-+ }catch(Exception e){\r
-+ e.printStackTrace();\r
-+ }\r
-+ \r
-+ }\r
-+\r
-+}\r
--2008.03.29 R.Iizuka nyatla.jp\r
-+2008.03.29 R.Iizuka A\8cÕ\81\97nyatla.jp\r
-Index: D:/project.files/java.Lab/NyARToolKit/src/jp/nyatla/nyartoolkit/core/NyARCode.java\r
-===================================================================\r
---- D:/project.files/java.Lab/NyARToolKit/src/jp/nyatla/nyartoolkit/core/NyARCode.java (revision 174)\r
-+++ D:/project.files/java.Lab/NyARToolKit/src/jp/nyatla/nyartoolkit/core/NyARCode.java (revision 178)\r
-@@ -33,6 +33,7 @@\r
- package jp.nyatla.nyartoolkit.core;\r
- \r
- import java.io.FileInputStream;\r
-+import java.io.InputStream;\r
- import java.io.InputStreamReader;\r
- import java.io.StreamTokenizer;\r
- \r
-@@ -84,19 +85,32 @@\r
- pat=new int[4][height][width][3];//static int pat[AR_PATT_NUM_MAX][4][AR_PATT_SIZE_Y*AR_PATT_SIZE_X*3];\r
- patBW=new short[4][height][width];//static int patBW[AR_PATT_NUM_MAX][4][AR_PATT_SIZE_Y*AR_PATT_SIZE_X*3];\r
- }\r
--\r
--\r
- /**\r
- * int arLoadPatt( const char *filename );\r
- * ARToolKit\82Ì\83p\83^\81[\83\93\83t\83@\83C\83\8b\82ð\83\8d\81[\83h\82·\82é\81B\r
-+ * \83t\83@\83C\83\8b\8c`\8e®\82ÍBGR\8c`\8e®\82Å\8bL\98^\82³\82ê\82½\83p\83^\81[\83\93\83t\83@\83C\83\8b\82Å\82 \82é\82±\82Æ\81B\r
- * @param filename\r
- * @return\r
- * @throws Exception\r
- */\r
- public void loadFromARFile(String filename) throws NyARException\r
- {\r
-+ try {\r
-+ loadFromARFile(new FileInputStream(filename));\r
-+\r
-+ } catch (Exception e) {\r
-+ throw new NyARException(e);\r
-+ }\r
-+ }\r
-+ /**\r
-+ * \r
-+ * @param i_stream\r
-+ * @throws NyARException\r
-+ */\r
-+ public void loadFromARFile(InputStream i_stream) throws NyARException\r
-+ {\r
- try{\r
-- StreamTokenizer st=new StreamTokenizer(new InputStreamReader(new FileInputStream(filename)));\r
-+ StreamTokenizer st=new StreamTokenizer(new InputStreamReader(i_stream));\r
- //\83p\83^\81[\83\93\83f\81[\83^\82ÍGBRA\82Å\95À\82ñ\82Å\82é\81B\r
- for(int h=0; h<4; h++ ) {\r
- int l = 0;\r
-Index: D:/project.files/java.Lab/NyARToolKit/src/jp/nyatla/nyartoolkit/core/NyARParam.java\r
-===================================================================\r
---- D:/project.files/java.Lab/NyARToolKit/src/jp/nyatla/nyartoolkit/core/NyARParam.java (revision 174)\r
-+++ D:/project.files/java.Lab/NyARToolKit/src/jp/nyatla/nyartoolkit/core/NyARParam.java (revision 178)\r
-@@ -72,18 +72,25 @@\r
- */\r
- public void loadFromARFile(String i_filename) throws NyARException\r
- {\r
-- try{\r
-- FileInputStream fs=new FileInputStream(i_filename);\r
-- NyARParam new_inst[]=arParamLoad(fs,1);\r
-- fs.close();\r
-- xsize =new_inst[0].xsize;\r
-- ysize =new_inst[0].ysize;\r
-- mat =new_inst[0].mat;\r
-- dist_factor=new_inst[0].dist_factor;\r
-- }catch(Exception e){\r
-- throw new NyARException(e);\r
-- }\r
-+ try {\r
-+ loadFromARFile(new FileInputStream(i_filename));\r
-+ } catch (Exception e) {\r
-+ throw new NyARException(e);\r
-+ }\r
- }\r
-+ public void loadFromARFile(InputStream i_stream) throws NyARException\r
-+ {\r
-+ try {\r
-+ NyARParam new_inst[] = arParamLoad(i_stream, 1);\r
-+ i_stream.close();\r
-+ xsize = new_inst[0].xsize;\r
-+ ysize = new_inst[0].ysize;\r
-+ mat = new_inst[0].mat;\r
-+ dist_factor = new_inst[0].dist_factor;\r
-+ } catch (Exception e) {\r
-+ throw new NyARException(e);\r
-+ }\r
-+ }\r
- /*static double dot( double a1, double a2, double a3,double b1, double b2, double b3 )*/\r
- private static double dot( double a1, double a2, double a3,double b1, double b2, double b3 )\r
- {\r
-Index: D:/project.files/java.Lab/NyARToolKit/src/jp/nyatla/nyartoolkit/core/match/NyARMatchPatt.java\r
-===================================================================\r
---- D:/project.files/java.Lab/NyARToolKit/src/jp/nyatla/nyartoolkit/core/match/NyARMatchPatt.java (revision 174)\r
-+++ D:/project.files/java.Lab/NyARToolKit/src/jp/nyatla/nyartoolkit/core/match/NyARMatchPatt.java (revision 178)\r
-@@ -49,7 +49,7 @@\r
- public double getConfidence();\r
- public int getDirection();\r
- public void evaluate(NyARCode i_code);\r
-- public void setPatt(NyARColorPatt i_target_patt) throws NyARException;\r
-+ public boolean setPatt(NyARColorPatt i_target_patt) throws NyARException;\r
- }\r
- \r
- \r
-Index: D:/project.files/java.Lab/NyARToolKit/src/jp/nyatla/nyartoolkit/core/match/NyARMatchPatt_Color_WITHOUT_PCA.java\r
-===================================================================\r
---- D:/project.files/java.Lab/NyARToolKit/src/jp/nyatla/nyartoolkit/core/match/NyARMatchPatt_Color_WITHOUT_PCA.java (revision 174)\r
-+++ D:/project.files/java.Lab/NyARToolKit/src/jp/nyatla/nyartoolkit/core/match/NyARMatchPatt_Color_WITHOUT_PCA.java (revision 178)\r
-@@ -54,7 +54,7 @@\r
- public int getDirection(){\r
- return dir;\r
- }\r
-- public void setPatt(NyARColorPatt i_target_patt) throws NyARException\r
-+ public boolean setPatt(NyARColorPatt i_target_patt) throws NyARException\r
- {\r
- width=i_target_patt.getWidth();\r
- height=i_target_patt.getHeight();\r
-@@ -81,11 +81,12 @@\r
- }\r
- datapow = Math.sqrt( (double)sum );\r
- if(datapow == 0.0){\r
-- throw new NyARException();\r
-+ return false;// throw new NyARException();\r
- // dir.set(0);//*dir = 0;\r
- // cf.set(-1.0);//*cf = -1.0;\r
- // return -1;\r
-- } \r
-+ }\r
-+ return true;\r
- }\r
- /**\r
- * public int pattern_match(short[][][] data,IntPointer dir,DoublePointer cf)\r
-Index: D:/project.files/java.Lab/NyARToolKit/src/jp/nyatla/nyartoolkit/core/match/NyARMatchPatt_Color_WITH_PCA.java\r
-===================================================================\r
---- D:/project.files/java.Lab/NyARToolKit/src/jp/nyatla/nyartoolkit/core/match/NyARMatchPatt_Color_WITH_PCA.java (revision 174)\r
-+++ D:/project.files/java.Lab/NyARToolKit/src/jp/nyatla/nyartoolkit/core/match/NyARMatchPatt_Color_WITH_PCA.java (revision 178)\r
-@@ -59,7 +59,7 @@\r
- public int getDirection(){\r
- return dir;\r
- }\r
-- public void setPatt(NyARColorPatt i_target_patt) throws NyARException\r
-+ public boolean setPatt(NyARColorPatt i_target_patt) throws NyARException\r
- {\r
- width=i_target_patt.getWidth();\r
- height=i_target_patt.getHeight();\r
-@@ -87,11 +87,12 @@\r
- }\r
- datapow = Math.sqrt( (double)sum );\r
- if(datapow == 0.0){\r
-- throw new NyARException();\r
-+ return false;//throw new NyARException();\r
- // dir.set(0);//*dir = 0;\r
- // cf.set(-1.0);//*cf = -1.0;\r
- // return -1;\r
-- } \r
-+ }\r
-+ return true;\r
- }\r
- /**\r
- * public int pattern_match(short[][][] data,IntPointer dir,DoublePointer cf)\r
-Index: D:/project.files/java.Lab/NyARToolKit/src/jp/nyatla/nyartoolkit/core/match/NyARMatchPatt_BlackWhite.java\r
-===================================================================\r
---- D:/project.files/java.Lab/NyARToolKit/src/jp/nyatla/nyartoolkit/core/match/NyARMatchPatt_BlackWhite.java (revision 174)\r
-+++ D:/project.files/java.Lab/NyARToolKit/src/jp/nyatla/nyartoolkit/core/match/NyARMatchPatt_BlackWhite.java (revision 178)\r
-@@ -47,7 +47,7 @@\r
- private int dir=0;\r
- private int ave;\r
- private int[][][] input=new int[height][width][3];\r
-- public void setPatt(NyARColorPatt i_target_patt) throws NyARException\r
-+ public boolean setPatt(NyARColorPatt i_target_patt) throws NyARException\r
- {\r
- width=i_target_patt.getWidth();\r
- height=i_target_patt.getHeight();\r
-@@ -71,11 +71,12 @@\r
- \r
- datapow = Math.sqrt( (double)sum );\r
- if( datapow == 0.0 ){\r
-- throw new NyARException();\r
-+ return false;// throw new NyARException();\r
- // dir.set(0);//*dir = 0;\r
- // cf.set(-1.0);//*cf = -1.0;\r
- // return -1;\r
- }\r
-+ return true;\r
- }\r
- public double getConfidence()\r
- {\r
-Index: D:/project.files/java.Lab/NyARToolKit/src/jp/nyatla/nyartoolkit/detector/NyARSingleDetectMarker.java\r
-===================================================================\r
---- D:/project.files/java.Lab/NyARToolKit/src/jp/nyatla/nyartoolkit/detector/NyARSingleDetectMarker.java (revision 174)\r
-+++ D:/project.files/java.Lab/NyARToolKit/src/jp/nyatla/nyartoolkit/detector/NyARSingleDetectMarker.java (revision 178)\r
-@@ -91,7 +91,10 @@\r
- //\83p\83^\81[\83\93\82Ì\95]\89¿\83I\83u\83W\83F\83N\83g\82ð\8dì\82é\81B\r
- NyARMatchPatt_Color_WITHOUT_PCA eva=new NyARMatchPatt_Color_WITHOUT_PCA();\r
- //\83p\83^\81[\83\93\82ð\95]\89¿\8aí\82É\83Z\83b\83g\r
-- eva.setPatt(patt);\r
-+ if(!eva.setPatt(patt)){\r
-+ //\8cv\8eZ\82É\8e¸\94s\82µ\82½\81B\r
-+ return false;\r
-+ }\r
- //\83R\81[\83h\82Æ\94ä\8ar\82·\82é\r
- eva.evaluate(code);\r
- int square_index=0;\r