Esempio n. 1
0
        /// <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));
            }
        }
Esempio n. 2
0
        /// <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);
        }
Esempio n. 3
0
        /// <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);
        }