OSDN Git Service

[backup]NyARToolkitCS/2.4.2
authornyatla <nyatla@7cac0a50-4618-4814-88d0-24b83990f816>
Sun, 6 Dec 2009 16:25:22 +0000 (16:25 +0000)
committernyatla <nyatla@7cac0a50-4618-4814-88d0-24b83990f816>
Sun, 6 Dec 2009 16:25:22 +0000 (16:25 +0000)
2.4.1のバグフィクス,jp.nyatla.utilsの削除と、NyObjectStackの移動。

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

14 files changed:
trunk/sample/sandbox/jp/nyatla/nyartoolkit/sandbox/qrcode/SingleQrTest.java
trunk/sample/sandbox/jp/nyatla/nyartoolkit/sandbox/x2/VisualTest.java
trunk/src/jp/nyatla/nyartoolkit/core/analyzer/histgram/NyARHistgramAnalyzer_SlidePTile.java
trunk/src/jp/nyatla/nyartoolkit/core/labeling/NyARLabelInfoStack.java
trunk/src/jp/nyatla/nyartoolkit/core/labeling/rlelabeling/NyARLabeling_Rle.java
trunk/src/jp/nyatla/nyartoolkit/core/rasterfilter/NyARRasterFilter_CustomToneTable.java
trunk/src/jp/nyatla/nyartoolkit/core/squaredetect/NyARSquareStack.java
trunk/src/jp/nyatla/nyartoolkit/core/types/stack/NyARIntPointStack.java
trunk/src/jp/nyatla/nyartoolkit/core/types/stack/NyARIntRectStack.java
trunk/src/jp/nyatla/nyartoolkit/core/types/stack/NyObjectStack.java [new file with mode: 0644]
trunk/src/jp/nyatla/nyartoolkit/detector/NyARDetectMarker.java
trunk/test/jp/nyatla/nyartoolkit/dev/LabelingCamera.java
trunk/test/jp/nyatla/nyartoolkit/dev/LabelingTest.java
trunk/test/jp/nyatla/nyartoolkit/dev/PattPickupTest.java

index 607239e..0dfc1fa 100644 (file)
@@ -11,6 +11,7 @@ import javax.media.format.*;
 
 import jp.nyatla.nyartoolkit.NyARException;
 import jp.nyatla.nyartoolkit.jmf.utils.*;
+import jp.nyatla.nyartoolkit.utils.j2se.LabelingBufferdImage;
 
 
 import java.awt.*;
@@ -27,7 +28,6 @@ import jp.nyatla.nyartoolkit.core.squaredetect.NyARSquare;
 import jp.nyatla.nyartoolkit.core.squaredetect.NyARSquareStack;
 import jp.nyatla.nyartoolkit.core2.rasterfilter.rgb2gs.*;
 import jp.nyatla.nyartoolkit.core2.rasterfilter.gs2bin.*;
-import jp.nyatla.utils.j2se.LabelingBufferdImage;
 import jp.nyatla.nyartoolkit.core.types.*;
 import jp.nyatla.nyartoolkit.core2.rasteranalyzer.threshold.*;
 
index 0317aa9..e71277f 100644 (file)
@@ -12,6 +12,7 @@ import javax.media.format.*;
 import jp.nyatla.nyartoolkit.NyARException;
 import jp.nyatla.nyartoolkit.jmf.utils.*;
 import jp.nyatla.nyartoolkit.sandbox.quadx2.*;
+import jp.nyatla.nyartoolkit.utils.j2se.LabelingBufferdImage;
 
 import jp.nyatla.nyartoolkit.core.*;
 
@@ -29,7 +30,6 @@ import jp.nyatla.nyartoolkit.core.rasterfilter.rgb2gs.INyARRasterFilter_RgbToGs;
 import jp.nyatla.nyartoolkit.core.squaredetect.NyARSquareStack;
 import jp.nyatla.nyartoolkit.core2.rasterfilter.rgb2gs.*;
 import jp.nyatla.nyartoolkit.core2.rasterfilter.gs2bin.*;
-import jp.nyatla.utils.j2se.LabelingBufferdImage;
 import jp.nyatla.nyartoolkit.core2.rasteranalyzer.threshold.*;
 
 
index 114052e..57e3d5e 100644 (file)
@@ -9,7 +9,7 @@ import jp.nyatla.nyartoolkit.core.types.NyARHistgram;
  * \r
  * \r
  */\r
-public class NyARHistgramAnalyzer_SlidePTile\r
+public class NyARHistgramAnalyzer_SlidePTile implements INyARHistgramAnalyzer_Threshold\r
 {\r
        private int _persentage;\r
        public NyARHistgramAnalyzer_SlidePTile(int i_persentage)\r
index a32397a..cbb5edb 100644 (file)
@@ -31,6 +31,7 @@
 package jp.nyatla.nyartoolkit.core.labeling;\r
 \r
 \r
+import jp.nyatla.nyartoolkit.core.types.stack.NyObjectStack;\r
 import jp.nyatla.utils.*;\r
 \r
 /**\r
index 6d207ca..68d0b0d 100644 (file)
@@ -26,6 +26,7 @@ package jp.nyatla.nyartoolkit.core.labeling.rlelabeling;
 \r
 import jp.nyatla.nyartoolkit.NyARException;\r
 import jp.nyatla.nyartoolkit.core.raster.*;\r
+import jp.nyatla.nyartoolkit.core.types.stack.NyObjectStack;\r
 import jp.nyatla.utils.*;\r
 \r
 class RleInfoStack extends NyObjectStack<RleInfoStack.RleInfo>\r
index 800fe7a..9ec4926 100644 (file)
@@ -54,13 +54,13 @@ public class NyARRasterFilter_CustomToneTable implements INyARRasterFilter
                this._dofilterimpl.doFilter(i_input.getBufferReader(),i_output.getBufferReader(),i_input.getSize());\r
        }\r
        \r
-       abstract class IdoFilterImpl\r
+       private abstract class IdoFilterImpl\r
        {\r
-               int[] _table_ref;\r
+               public int[] _table_ref;\r
                public abstract void doFilter(INyARBufferReader i_input, INyARBufferReader i_output,NyARIntSize i_size) throws NyARException;\r
                \r
        }\r
-       class IdoFilterImpl_INT1D_GRAY_8 extends IdoFilterImpl\r
+       private class IdoFilterImpl_INT1D_GRAY_8 extends IdoFilterImpl\r
        {\r
                public void doFilter(INyARBufferReader i_input, INyARBufferReader i_output,NyARIntSize i_size) throws NyARException\r
                {\r
index 924d5cb..2906b5e 100644 (file)
@@ -31,6 +31,7 @@
 package jp.nyatla.nyartoolkit.core.squaredetect;\r
 \r
 \r
+import jp.nyatla.nyartoolkit.core.types.stack.NyObjectStack;\r
 import jp.nyatla.utils.*;\r
 \r
 public class NyARSquareStack extends NyObjectStack<NyARSquare>\r
index 43e514d..a1f1305 100644 (file)
@@ -32,7 +32,6 @@ package jp.nyatla.nyartoolkit.core.types.stack;
 \r
 \r
 import jp.nyatla.nyartoolkit.core.types.*;\r
-import jp.nyatla.utils.NyObjectStack;\r
 \r
 public class NyARIntPointStack extends NyObjectStack<NyARIntPoint2d>\r
 {\r
index ec9542e..4494d0c 100644 (file)
@@ -32,7 +32,6 @@ package jp.nyatla.nyartoolkit.core.types.stack;
 \r
 \r
 import jp.nyatla.nyartoolkit.core.types.NyARIntRect;\r
-import jp.nyatla.utils.NyObjectStack;\r
 \r
 public class NyARIntRectStack extends NyObjectStack<NyARIntRect>\r
 {\r
diff --git a/trunk/src/jp/nyatla/nyartoolkit/core/types/stack/NyObjectStack.java b/trunk/src/jp/nyatla/nyartoolkit/core/types/stack/NyObjectStack.java
new file mode 100644 (file)
index 0000000..c3d8cd8
--- /dev/null
@@ -0,0 +1,187 @@
+/* \r
+ * PROJECT: NyARToolkit\r
+ * --------------------------------------------------------------------------------\r
+ * The NyARToolkit is Java edition ARToolKit class library.\r
+ * Copyright (C)2008-2009 Ryo Iizuka\r
+ *\r
+ * This program is free software: you can redistribute it and/or modify\r
+ * it under the terms of the GNU General Public License as published by\r
+ * the Free Software Foundation, either version 3 of the License, or\r
+ * (at your option) any later version.\r
+ * \r
+ * This program is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+ * GNU General Public License for more details.\r
+ *\r
+ * You should have received a copy of the GNU General Public License\r
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.\r
+ * \r
+ * For further information please contact.\r
+ *     http://nyatla.jp/nyatoolkit/\r
+ *     <airmail(at)ebony.plala.or.jp> or <nyatla(at)nyatla.jp>\r
+ * \r
+ */\r
+package jp.nyatla.nyartoolkit.core.types.stack;\r
+import java.lang.reflect.*;\r
+import jp.nyatla.nyartoolkit.NyARException;\r
+\r
+\r
+\r
+\r
+/**\r
+ * オンデマンド割り当てをするオブジェクト配列。\r
+ * 配列には実体を格納します。\r
+ */\r
+public abstract class NyObjectStack<T>\r
+{\r
+       private final static int ARRAY_APPEND_STEP = 64;\r
+\r
+       protected final T[] _items;\r
+\r
+       private int _allocated_size;\r
+\r
+       protected int _length;\r
+\r
+       /**\r
+        * 最大ARRAY_MAX個の動的割り当てバッファを準備する。\r
+        * \r
+        * @param i_array\r
+        * @param i_element_type\r
+        * JavaのGenedicsの制限突破\r
+        */\r
+       @SuppressWarnings("unchecked")\r
+       protected NyObjectStack(int i_length,Class<T> i_element_type)\r
+       {\r
+               // ポインタだけははじめに確保しておく\r
+               this._items = (T[])Array.newInstance(i_element_type, i_length);\r
+               // アロケート済サイズと、使用中個数をリセット\r
+               this._allocated_size = 0;\r
+               this._length = 0;\r
+               return;\r
+       }\r
+       protected abstract T createElement();\r
+       /**\r
+        * ポインタを1進めて、その要素を予約し、その要素へのポインタを返します。\r
+        * 特定型に依存させるときには、継承したクラスでこの関数をオーバーライドしてください。\r
+        */\r
+       public final T prePush() throws NyARException\r
+       {\r
+               // 必要に応じてアロケート\r
+               if (this._length >= this._allocated_size) {\r
+                       // 要求されたインデクスは範囲外\r
+                       if (this._length >= this._items.length) {\r
+                               throw new NyARException();\r
+                       }\r
+                       // 追加アロケート範囲を計算\r
+                       int range = this._length + ARRAY_APPEND_STEP;\r
+                       if (range >= this._items.length) {\r
+                               range = this._items.length;\r
+                       }\r
+                       // アロケート\r
+                       this.onReservRequest(this._allocated_size, range, this._items);\r
+                       this._allocated_size = range;\r
+               }\r
+               // 使用領域を+1して、予約した領域を返す。\r
+               T ret = this._items[this._length];\r
+               this._length++;\r
+               return ret;\r
+       }\r
+       /** \r
+        * 見かけ上の要素数を1減らして、最後尾のアイテムを返します。\r
+        * @return\r
+        */\r
+       public final T pop()\r
+       {\r
+               assert(this._length>=1);\r
+               this._length--;\r
+               return this._items[this._length];\r
+       }\r
+       /**\r
+        * 見かけ上の要素数をi_count個減らします。\r
+        * @param i_count\r
+        * @return\r
+        * NULLを返します。\r
+        */\r
+       public final void pops(int i_count)\r
+       {\r
+               assert(this._length>=i_count);\r
+               this._length-=i_count;\r
+               return;\r
+       }       \r
+       \r
+       /**\r
+        * 0~i_number_of_item-1までの領域を予約します。\r
+        * 予約済の領域よりも小さい場合には、現在の長さを調整します。\r
+        * @param i_number_of_reserv\r
+        */\r
+       final public void reserv(int i_number_of_item) throws NyARException\r
+       {\r
+               // 必要に応じてアロケート\r
+               if (i_number_of_item >= this._allocated_size) {\r
+                       // 要求されたインデクスは範囲外\r
+                       if (i_number_of_item >= this._items.length) {\r
+                               throw new NyARException();\r
+                       }\r
+                       // 追加アロケート範囲を計算\r
+                       int range = i_number_of_item+ARRAY_APPEND_STEP;\r
+                       if (range >= this._items.length) {\r
+                               range = this._items.length;\r
+                       }\r
+                       // アロケート\r
+                       this.onReservRequest(this._allocated_size, range, this._items);\r
+                       this._allocated_size = range;\r
+               }\r
+               //見かけ上の配列サイズを指定\r
+               this._length=i_number_of_item;\r
+               return;\r
+       }\r
+       /**\r
+        * 必要に応じて、この関数を継承先クラスで実装して下さい。\r
+        * i_bufferの配列の、i_start番目からi_end-1番目までの要素に、オブジェクトを割り当てて下さい。\r
+        * @param i_start\r
+        * @param i_end\r
+        * @param i_buffer\r
+        */     \r
+       final protected void onReservRequest(int i_start, int i_end, Object[] i_buffer)\r
+       {\r
+               try {  \r
+                       for (int i = i_start; i < i_end; i++){\r
+                               i_buffer[i] =createElement();\r
+                       }\r
+               } catch(Exception e) {  \r
+                       e.printStackTrace();  \r
+               }\r
+               return;\r
+       }\r
+\r
+\r
+       /**\r
+        * 配列を返します。\r
+        * \r
+        * @return\r
+        */\r
+       public final T[] getArray()\r
+       {\r
+               return this._items;\r
+       }\r
+       public final T getItem(int i_index)\r
+       {\r
+               return this._items[i_index];\r
+       }\r
+       /**\r
+        * 配列の見かけ上の要素数を返却します。\r
+        * @return\r
+        */\r
+       public final int getLength()\r
+       {\r
+               return this._length;\r
+       }\r
+       /**\r
+        * 見かけ上の要素数をリセットします。\r
+        */\r
+       public final void clear()\r
+       {\r
+               this._length = 0;\r
+       }\r
+}\r
index 8408b04..080c9e6 100644 (file)
@@ -44,7 +44,7 @@ import jp.nyatla.nyartoolkit.core.squaredetect.INyARSquareContourDetector;
 import jp.nyatla.nyartoolkit.core.squaredetect.NyARSquare;\r
 import jp.nyatla.nyartoolkit.core.squaredetect.NyARSquareContourDetector_Rle;\r
 import jp.nyatla.nyartoolkit.core.types.*;\r
-import jp.nyatla.utils.NyObjectStack;\r
+import jp.nyatla.nyartoolkit.core.types.stack.NyObjectStack;\r
 \r
 class NyARDetectMarkerResult\r
 {\r
index 3f305aa..769f334 100644 (file)
@@ -33,7 +33,6 @@ import jp.nyatla.nyartoolkit.core2.rasteranalyzer.*;
 import jp.nyatla.nyartoolkit.core2.rasteranalyzer.threshold.*;
 import jp.nyatla.nyartoolkit.core2.rasterfilter.gs2bin.*;
 import jp.nyatla.nyartoolkit.core2.rasterfilter.rgb2gs.NyARRasterFilter_RgbAve;
-import jp.nyatla.utils.NyObjectStack;
 import jp.nyatla.utils.j2se.LabelingBufferdImage;
 import jp.nyatla.nyartoolkit.core.rasterfilter.bin.INyARRasterFilter_RgbToGs;
 import jp.nyatla.nyartoolkit.core.rasterfilter.rgb2bin.*;
@@ -44,6 +43,7 @@ import jp.nyatla.nyartoolkit.core.squaredetect.NyARVertexCounter;
 import jp.nyatla.nyartoolkit.core.transmat.*;
 import jp.nyatla.nyartoolkit.core.types.*;
 import jp.nyatla.nyartoolkit.core.types.matrix.NyARDoubleMatrix22;
+import jp.nyatla.nyartoolkit.core.types.stack.NyObjectStack;
 
 
 ///**
index a945957..3a4947f 100644 (file)
@@ -15,9 +15,9 @@ import jp.nyatla.nyartoolkit.core.raster.*;
 import jp.nyatla.nyartoolkit.core.raster.rgb.NyARRgbRaster_BGRA;\r
 import jp.nyatla.nyartoolkit.core.rasterfilter.gs2bin.*;\r
 import jp.nyatla.nyartoolkit.core.rasterfilter.rgb2bin.NyARRasterFilterBuilder_RgbToBin;\r
+import jp.nyatla.nyartoolkit.utils.j2se.*;\r
 \r
 \r
-import jp.nyatla.utils.j2se.*;\r
 \r
 public class LabelingTest extends Frame\r
 {\r
index 7fcd460..28a3a6a 100644 (file)
@@ -29,8 +29,8 @@ import jp.nyatla.nyartoolkit.core.types.*;
 import jp.nyatla.nyartoolkit.core.raster.rgb.*;\r
 import jp.nyatla.nyartoolkit.core.rasterfilter.gs2bin.*;\r
 import jp.nyatla.nyartoolkit.core.rasterfilter.rgb2bin.NyARRasterFilterBuilder_RgbToBin;\r
-import jp.nyatla.utils.j2se.*;\r
 import jp.nyatla.nyartoolkit.nyidmarker.*;\r
+import jp.nyatla.nyartoolkit.utils.j2se.*;\r
 import jp.nyatla.nyartoolkit.core.squaredetect.*;\r
 \r
 \r