void WriteCurrentCell()
            {
                if ((cCell_area | cCell_cover) != 0)
                {
                    //check cell limit
                    if (m_num_used_cells >= BLOCK_LIMIT)
                    {
                        return;
                    }
                    //------------------------------------------
                    //alloc if required
                    if ((m_num_used_cells + 1) >= m_cells.AllocatedSize)
                    {
                        m_cells = new ArrayList <CellAA>(m_cells, BLOCK_SIZE);
                    }
#if DEBUG
                    //m_cells.SetData(m_num_used_cells, CellAA.dbugCreate(
                    //    cCell_x, cCell_y,
                    //    cCell_cover, cCell_area,
                    //    cCell_left,
                    //    cCell_right));
                    m_cells.SetData(m_num_used_cells, CellAA.Create(
                                        cCell_x, cCell_y,
                                        cCell_cover, cCell_area));
#else
                    m_cells.SetData(m_num_used_cells, CellAA.Create(
                                        cCell_x, cCell_y,
                                        cCell_cover, cCell_area));
#endif
                    m_num_used_cells++;
                }
            }