Пример #1
0
        /// ============================================================
        /// <summary>找到指定颜色在调色板内的索引位置。</summary>
        /// <param name="color">颜色</param>
        /// <returns>索引位置</returns>
        /// ============================================================
        public int FindPaletteIndex(Color color)
        {
            color = RQuantizationHelper.ConvertAlpha(color);
            int redIndex   = color.R >> 5;
            int greenIndex = color.G >> 5;
            int blueIndex  = color.B >> 6;

            return((redIndex << 5) + (greenIndex << 2) + blueIndex);
        }
Пример #2
0
        /// ============================================================
        /// <summary>增加一个新颜色。</summary>
        /// <param name="color">颜色</param>
        /// ============================================================
        public void AddColor(Color color)
        {
            color = RQuantizationHelper.ConvertAlpha(color);
            int redIndex   = color.R >> 5;
            int greenIndex = color.G >> 5;
            int blueIndex  = color.B >> 6;

            _redSlots[redIndex].AddValue(color.R);
            _greenSlots[greenIndex].AddValue(color.G);
            _blueSlots[blueIndex].AddValue(color.B);
        }
Пример #3
0
        /// ============================================================
        /// <summary>找到指定颜色在调色板内的索引位置。</summary>
        /// <param name="color">颜色</param>
        /// <returns>索引位置</returns>
        /// ============================================================
        public int FindPaletteIndex(Color color)
        {
            color = RQuantizationHelper.ConvertAlpha(color);
            int result;

            if (!_cache.TryGetValue(color, out result))
            {
                result        = RQuantizationHelper.GetNearestColor(_palette, color);
                _cache[color] = result;
            }
            return(result);
        }
Пример #4
0
        /// ============================================================
        /// <summary>增加一个新颜色。</summary>
        /// <param name="color">颜色</param>
        /// ============================================================
        public void AddColor(Color color)
        {
            color = RQuantizationHelper.ConvertAlpha(color);
            SColorInfo value;

            if (_colorMap.TryGetValue(color, out value))
            {
                value.IncreaseCount();
            }
            else
            {
                SColorInfo colorInfo = new SColorInfo(color);
                _colorMap.Add(color, colorInfo);
            }
        }
Пример #5
0
        /// ============================================================
        /// <summary>增加一个新颜色。</summary>
        /// <param name="color">颜色</param>
        /// ============================================================
        public void AddColor(Color color)
        {
            FPopularityColorSlot slot;

            color = RQuantizationHelper.ConvertAlpha(color);
            Int32 index = GetColorIndex(color);

            if (_colorMap.TryGetValue(index, out slot))
            {
                slot.AddValue(color);
            }
            else
            {
                _colorMap[index] = new FPopularityColorSlot(color);
            }
        }
Пример #6
0
        /// ============================================================
        /// <summary>找到指定颜色在调色板内的索引位置。</summary>
        /// <param name="color">颜色</param>
        /// <returns>索引位置</returns>
        /// ============================================================
        public int FindPaletteIndex(Color color)
        {
            color = RQuantizationHelper.ConvertAlpha(color);
            int result;

            if (!_cache.TryGetValue(color, out result))
            {
                foreach (FMedianCutCube cube in _cubeList)
                {
                    if (cube.IsColorIn(color))
                    {
                        result = cube.PaletteIndex;
                    }
                }
            }
            return(result);
        }
Пример #7
0
 /// ============================================================
 /// <summary>增加一个新颜色。</summary>
 /// <param name="color">颜色</param>
 /// ============================================================
 public void AddColor(Color color)
 {
     color = RQuantizationHelper.ConvertAlpha(color);
     _colorList.Add(color);
 }
Пример #8
0
 //============================================================
 // <T>增加一个新颜色。</T>
 //
 // @param color 颜色
 //============================================================
 public void AddColor(Color color)
 {
     color = RQuantizationHelper.ConvertAlpha(color);
     _root.AddColor(color, 0, this);
 }
Пример #9
0
 //============================================================
 // <T>找到指定颜色在调色板内的索引位置。</T>
 //
 // @param color 颜色
 // @return 索引位置
 //============================================================
 public int FindPaletteIndex(Color color)
 {
     color = RQuantizationHelper.ConvertAlpha(color);
     return(_root.GetPaletteIndex(color, 0));
 }