/// <summary> /// すべてのノードへのポインタを一つのシーケンスに集める /// </summary> /// <typeparam name="T"></typeparam> /// <param name="first">ツリーの先頭ノード.</param> /// <param name="headerSize">作成したシーケンスのヘッダサイズ(sizeof(CvSeq) が用いられることが多い).</param> /// <param name="storage">シーケンスのためのコンテナ.</param> /// <returns></returns> #else /// <summary> /// Gathers all node pointers to the single sequence /// </summary> /// <typeparam name="T"></typeparam> /// <param name="first">The initial tree node. </param> /// <param name="headerSize">Header size of the created sequence (sizeof(CvSeq) is the most used value). </param> /// <param name="storage">Container for the sequence. </param> /// <returns></returns> #endif public static CvSeq TreeToNodeSeq <T>(CvTreeNode <T> first, int headerSize, CvMemStorage storage) where T : CvTreeNode <T> { if (first == null) { throw new ArgumentNullException("first"); } if (storage == null) { throw new ArgumentNullException("storage"); } IntPtr result = NativeMethods.cvTreeToNodeSeq(first.CvPtr, headerSize, storage); if (result == IntPtr.Zero) { return(null); } else { return(new CvSeq(result)); } }
/// <summary> /// ツリーからノードを削除する /// </summary> /// <param name="frame">トップレベルノード.node->v_prev = null かつ node->h_prev = null (つまり,node が frameの最初の子ノードである)である場合, /// frame->v_next は node->h_next にセットされる (つまり,最初の子ノードかframeが変更される).</param> #else /// <summary> /// Removes node from tree /// </summary> /// <param name="frame">The top level node. If node->v_prev = null and node->h_prev is null (i.e. if node is the first child of frame), /// frame->v_next is set to node->h_next (i.e. the first child or frame is changed). </param> #endif public void RemoveNodeFromTree(CvTreeNode <T> frame) { Cv.RemoveNodeFromTree(this, frame); }
/// <summary> /// ツリーに新しいノードを追加する /// </summary> /// <param name="parent">ツリー内に既に存在している親ノード.</param> /// <param name="frame">トップレベルノード.parent と frame が同じである場合, nodeのv_prevフィールドには,parent ではなく,nullがセットされる.</param> #else /// <summary> /// Adds new node to the tree /// </summary> /// <param name="parent">The parent node that is already in the tree. </param> /// <param name="frame">The top level node. If parent and frame are the same, v_prev field of node is set to null rather than parent. </param> #endif public void InsertNodeIntoTree(CvTreeNode <T> parent, CvTreeNode <T> frame) { Cv.InsertNodeIntoTree(this, parent, frame); }