private void BBXConnect(int min_dist, int char_width, int[] labels, int label_width, int label_height)
{
int char_count = _char_list.Count;
for (int i = 0; i < char_count; i++)
{
if (_char_list[i].bbx.Width < char_width / 2 && _char_list[i].bbx.Height < char_width / 2) continue;
for (int j = i + 1; j < char_count; j++)
{
if (_char_list[j].bbx.Width < char_width / 2 && _char_list[j].bbx.Height < char_width / 2) continue;
int x1 = _char_list[i].bbx.X;
int y1 = _char_list[i].bbx.Y;
bool overlap = false;
if (_char_list[i].bbx.IntersectsWith(_char_list[j].bbx))
overlap = true;
else
{
Rectangle rect = new Rectangle(x1 - min_dist, y1 - min_dist, _char_list[i].bbx.Width + min_dist * 2, _char_list[i].bbx.Height + min_dist * 2);
if (rect.IntersectsWith(_char_list[j].bbx))
overlap = true;
}
if (overlap)//(dist <= min_dist)
{
_char_list[i].neighbors.Add(j);
_char_list[j].neighbors.Add(i);
_char_list[i].neighbor_count++;
_char_list[j].neighbor_count++;
}
}
}
for (int i = 0; i < char_count; i++)
{
if (_char_list[i].neighbors.Count > 2) _needsplit = true;
if (_debug)
{
Console.Write("NE: " + i + "--- ");
for (int j = 0; j < _char_list[i].neighbors.Count; j++)
Console.Write(_char_list[i].neighbors[j] + " ");
Console.WriteLine();
}
}
}