public void Export(TextWriter writer, int index)
        {
            if (!SrcBlendValue.IsOne() || !DestBlendValue.IsZero() || !SrcBlendAlphaValue.IsOne() || !DestBlendAlphaValue.IsZero())
            {
                writer.WriteIntent(3);
                writer.Write("Blend ");
                if (index != -1)
                {
                    writer.Write("{0} ", index);
                }
                writer.Write("{0} {1}", SrcBlendValue, DestBlendValue);
                if (!SrcBlendAlphaValue.IsOne() || !DestBlendAlphaValue.IsZero())
                {
                    writer.Write(", {0} {1}", SrcBlendAlphaValue, DestBlendAlphaValue);
                }
                writer.Write('\n');
            }

            if (!BlendOpValue.IsAdd() || !BlendOpAlphaValue.IsAdd())
            {
                writer.WriteIntent(3);
                writer.Write("BlendOp ");
                if (index != -1)
                {
                    writer.Write("{0} ", index);
                }
                writer.Write(BlendOpValue.ToString());
                if (!BlendOpAlphaValue.IsAdd())
                {
                    writer.Write(", {0}", BlendOpAlphaValue);
                }
                writer.Write('\n');
            }

            if (!ColMaskValue.IsRBGA())
            {
                writer.WriteIntent(3);
                writer.Write("ColorMask ");
                if (ColMaskValue.IsNone())
                {
                    writer.Write(0);
                }
                else
                {
                    if (ColMaskValue.IsRed())
                    {
                        writer.Write(nameof(ColorMask.R));
                    }
                    if (ColMaskValue.IsGreen())
                    {
                        writer.Write(nameof(ColorMask.G));
                    }
                    if (ColMaskValue.IsBlue())
                    {
                        writer.Write(nameof(ColorMask.B));
                    }
                    if (ColMaskValue.IsAlpha())
                    {
                        writer.Write(nameof(ColorMask.A));
                    }
                }
                writer.Write(" {0}\n", index);
            }
        }
        public StringBuilder ToString(StringBuilder sb, int index)
        {
            if (!SrcBlendValue.IsOne() || !DestBlendValue.IsZero() || !SrcBlendAlphaValue.IsOne() || !DestBlendAlphaValue.IsZero())
            {
                sb.Append("\t\t\t").Append("Blend").Append(' ');
                if (index != -1)
                {
                    sb.Append(index).Append(' ');
                }
                sb.Append(SrcBlendValue).Append(' ').Append(DestBlendValue);
                if (!SrcBlendAlphaValue.IsOne() || !DestBlendAlphaValue.IsZero())
                {
                    sb.Append(',').Append(' ').Append(SrcBlendAlphaValue).Append(' ').Append(DestBlendAlphaValue);
                }
                sb.Append('\n');
            }

            if (!BlendOpValue.IsAdd() || !BlendOpAlphaValue.IsAdd())
            {
                sb.AppendIntent(3).Append("BlendOp").Append(' ');
                if (index != -1)
                {
                    sb.Append(index).Append(' ');
                }
                sb.Append(BlendOpValue);
                if (!BlendOpAlphaValue.IsAdd())
                {
                    sb.Append(',').Append(' ').Append(BlendOpAlphaValue);
                }
                sb.Append('\n');
            }

            if (!ColMaskValue.IsRBGA())
            {
                sb.AppendIntent(3).Append("ColorMask").Append(' ');
                if (ColMaskValue.IsNone())
                {
                    sb.Append(0);
                }
                else
                {
                    if (ColMaskValue.IsRed())
                    {
                        sb.Append(ColorMask.R.ToString());
                    }
                    if (ColMaskValue.IsGreen())
                    {
                        sb.Append(ColorMask.G.ToString());
                    }
                    if (ColMaskValue.IsBlue())
                    {
                        sb.Append(ColorMask.B.ToString());
                    }
                    if (ColMaskValue.IsAlpha())
                    {
                        sb.Append(ColorMask.A.ToString());
                    }
                }
                sb.Append(' ').Append(index).Append('\n');
            }

            return(sb);
        }