//--------------------------------------------------------------------
        ///<summary>
        ///</summary>
        ///<param name="x1"></param>
        ///<param name="y"></param>
        ///<param name="x2"></param>
        ///<param name="c"></param>
        ///<param name="cover"></param>
        public override void BlendHorizontalLine(int x1, int y, int x2, RGBA_Bytes c, byte cover)
        {
            int len = x2 - x1 + 1;

            if (cover == CoverFull)
            {
                ReallocateSpan(len);
                unsafe
                {
                    fixed(byte *pBuffer = _span.Array)
                    {
                        _alphaMask.CombineHorizontalSpanFullCover(x1, y, pBuffer, len);
                        PixelFormat.BlendSolidHorizontalSpan(x1, y, (uint)len, c, pBuffer);
                    }
                }
            }
            else
            {
                InitSpan(len, cover);
                unsafe
                {
                    fixed(byte *pBuffer = _span.Array)
                    {
                        _alphaMask.CombineHorizontalSpan(x1, y, pBuffer, len);
                        PixelFormat.BlendSolidHorizontalSpan(x1, y, (uint)len, c, pBuffer);
                    }
                }
            }
        }