Jillzhang.GifUtility.OcTreeNode.AddColor C# (CSharp) Method

AddColor() private method

private AddColor ( Color32 pixel, int level, OcTree tree ) : void
pixel Color32
level int
tree OcTree
return void
        internal void AddColor(Color32* pixel, int level,OcTree tree)
        {
            //�������Ҷ�ˣ���ʾһ����ɫ����������
            if (this.Leaf)
            {
                Increment(pixel);
                tree.TracePrevious(this);
                return;
            }
            int shift = 7 - level;
            int index = ((pixel->Red & mask[level]) >> (shift - 2)) |
                          ((pixel->Green & mask[level]) >> (shift - 1)) |
                          ((pixel->Blue & mask[level]) >> (shift));
            OcTreeNode child = Children[index];
            if (child == null)
            {
                child = new OcTreeNode(ColorDepth, level+1, tree);
                Children[index] = child;
            }
            child.AddColor(pixel, ++level,tree);
        }

Usage Example

コード例 #1
0
 internal void AddColor(Color32 *pixel)
 {
     //如果当前处理颜色与前一个颜色相同
     if (_prefixColor == pixel->ARGB)
     {
         if (_prefixNode == null)
         {
             //如果是第一次处理
             _prefixColor = pixel->ARGB;
             _rootNode.AddColor(pixel, 0, this);
             return;
         }
         //如果颜色与前一个相同,且不是第一次处理,可以复制拷贝上一次的处理结果
         _prefixNode.Increment(pixel);
         return;
     }
     //如果与上一个颜色不同,则需要添加颜色像素到八叉树
     _prefixColor = pixel->ARGB;
     _rootNode.AddColor(pixel, 0, this);
     return;
 }