/** * [readonly]マーカにマッチした{@link NyARMatchPattDeviationColorData}インスタンスを得る。 * @ */ public NyARMatchPattDeviationColorData getDeviationColorData(ARMarkerList.Item i_marker, INyARPerspectiveCopy i_pix_drv, NyARIntPoint2d[] i_vertex) { int mk_edge = i_marker.patt_edge_percentage; for (int i = this.items.Count - 1; i >= 0; i--) { Item ptr = this.items[i]; if (!ptr._patt.getSize().isEqualSize(i_marker.patt_w, i_marker.patt_h) || ptr._patt_edge != mk_edge) { //サイズとエッジサイズが合致しない物はスルー continue; } //古かったら更新 i_pix_drv.copyPatt(i_vertex, ptr._patt_edge, ptr._patt_edge, ptr._patt_resolution, ptr._patt); ptr._patt_d.setRaster(ptr._patt); return(ptr._patt_d); } //無い。新しく生成 Item item = new Item(i_marker.patt_w, i_marker.patt_h, mk_edge); //タイムスタンプの更新とデータの生成 i_pix_drv.copyPatt(i_vertex, item._patt_edge, item._patt_edge, item._patt_resolution, item._patt); item._patt_d.setRaster(item._patt); this.items.Add(item); return(item._patt_d); }
/** * リスト中の、i_itemと同じマーカIDか、同じ矩形情報を参照しているものを無効に(ptr.idを-1)する。 */ public void disableMatchItem(Item i_item) { //削除対象のオブジェクトのポインタ保存 ARMarkerList.Item match_mk = i_item.marker; SquareStack.Item match_sq = i_item.ref_sq; //リストを走査して該当アイテムを削除 Item ptr = this._head_item; for (int i = this._num_of_item - 1; i >= 0; i--) { if (ptr.marker != null) { if ((ptr.marker == match_mk) || (ptr.ref_sq == match_sq)) { ptr.marker = null; } } ptr = (Item)ptr.next; } }