private void add_curr_cell()
        {
            if ((m_curr_cell.area | m_curr_cell.cover) != 0)
            {
                if (m_num_used_cells >= (int)cell_block_scale_e.cell_block_limit)
                {
                    return;
                }

                allocate_cells_if_required();
                m_cells.data()[m_num_used_cells].Set(m_curr_cell);
                m_num_used_cells++;

#if false
                if (m_num_used_cells == 281)
                {
                    int a = 12;
                }

                DebugFile.Print(m_num_used_cells.ToString()
                                + ". x=" + m_curr_cell.m_x.ToString()
                                + " y=" + m_curr_cell.m_y.ToString()
                                + " area=" + m_curr_cell.m_area.ToString()
                                + " cover=" + m_curr_cell.m_cover.ToString()
                                + "\n");
#endif
            }
        }
 public void scanline_cells(int y, out cell_aa[] CellData, out int Offset)
 {
     CellData = m_sorted_cells.data();
     Offset   = m_sorted_y[y - m_min_y].start;
 }
 public int scanline_num_cells(int y)
 {
     return((int)m_sorted_y.data()[y - m_min_y].num);
 }