Longkong.ColorPicker.Controls.ColorSwatchPanel.AddColor C# (CSharp) Method

AddColor() private method

private AddColor ( Color c ) : void
c Color
return void
        private void AddColor( Color c )
        {
            bool writeSwatchesToFile = false;
            Point nextEmptySwatchPoint = m_nextEmptySwatchPoint;

            if ( DoesColorAlreadyExist( c ) ) {
                MessageBox.Show( this.Parent, "Color already exists.", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error );
            } else if ( m_numberOfEmptySwatches <= 0 ) {
                MessageBox.Show( this.Parent, "There are no empty swatches available.", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error );
            } else {

                using( AddNewColorSwatchForm colorForm = new AddNewColorSwatchForm( c ) ) {

                    colorForm.StartPosition = FormStartPosition.CenterParent;
                    colorForm.ShowInTaskbar = false;

                    if ( colorForm.ShowDialog() == DialogResult.OK ) {

                        if ( m_swatchBitmap != null ) {

                            int x = m_nextEmptySwatchPoint.X;
                            int y = m_nextEmptySwatchPoint.Y;

                            using ( Graphics g = Graphics.FromImage( m_swatchBitmap ) ) {

                                using ( SolidBrush sb = new SolidBrush( c ) ) {
                                    g.FillRectangle( sb, x, y, 10, 10 );
                                }

                                g.DrawRectangle( Pens.Black, x, y, 10, 10 );

                            }

                            m_numberOfEmptySwatches--;

                            ColorSwatch cs = new ColorSwatch(
                                c,
                                colorForm.ColorDescription,
                                new Point( x, y ),
                                new Size( SWATCH_WIDTH, SWATCH_HEIGHT ) );

                            m_swatchArray[ m_swatchColumnNum++, m_swatchRowNum ] = cs;
                            m_swatches.Add( cs );
                            writeSwatchesToFile = true;

                            UpdatePositions( ref x, ref y, ref m_swatchColumnNum, ref m_swatchRowNum );
                            m_nextEmptySwatchPoint = new Point( x, y );

                        }

                    }

                }

            }

            if ( writeSwatchesToFile ) {
                ColorSwatchXml.WriteSwatches( m_customSwatchesFile, m_swatches );
            }

            m_paintActiveEmptySwatch = false;
            this.InvalidateEmptySwatch( nextEmptySwatchPoint );
        }