//Grid and panel config functions
        private void PaintGrid()
        {
            IGridPaintStrategy gridPainter = (IGridPaintStrategy)cmbGridLines.SelectedItem;

            drawer.GridPainter = gridPainter;
            drawer.PaintGrid();
            drawer.drawSurface.Invalidate();
        }
        public Drawer(int gridCellCountX, int gridCellCountY, int cellSizeInPixels, int windowXBoundryInPixels, int windowYBoundryInPixels, int gridLinesMarginToLayerInPixels, int drawSurfaceMarginToWindowInPixels)
        {
            this.gridCellCountX                    = gridCellCountX;
            this.gridCellCountY                    = gridCellCountY;
            this.cellSizeInPixels                  = cellSizeInPixels;
            this.windowXBoundryInPixels            = windowXBoundryInPixels;
            this.windowYBoundryInPixels            = windowYBoundryInPixels;
            this.gridLinesMarginToLayerInPixels    = gridLinesMarginToLayerInPixels;
            this.drawSurfaceMarginToWindowInPixels = drawSurfaceMarginToWindowInPixels;

            layers         = new LayersStructure(20, 20);
            gridPainter    = new CompleteLineGridPaint(layers.gridLayer, gridCellCountX, gridCellCountY, gridLinesMarginToLayerInPixels);
            pencilcase     = new Pencilcase(new Pen(Brushes.Black, 5), new Pen(Brushes.DarkRed, 8), new Pen(Brushes.DarkGoldenrod, 1), new Pen(Brushes.Sienna, 1), new Pen(Brushes.Purple, 12));
            pointConverter = new PointConverter(cellSizeInPixels);
        }