Text.cc
author viric <viriketo@gmail.com>
Sun, 24 Apr 2011 18:47:28 +0200
changeset 2 5cdb891abc1e
parent 0 6b8091ca909a
permissions -rw-r--r--
Almenys faig que compili amb un g++ -I. -lnetpbm -o rektigi *.cc
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2
5cdb891abc1e Almenys faig que compili amb un g++ -I. -lnetpbm -o rektigi *.cc
viric <viriketo@gmail.com>
parents: 0
diff changeset
     1
#include <cstdio>
0
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     2
#include <Text.h>
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     3
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     4
void Text::getLines(Bitmap *map)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     5
{
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     6
	int map_height = map->get_height();
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     7
	int linenum=0;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     8
	int last_linenum=0;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     9
	int lineSize;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    10
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    11
	// FIXME: Comprovacions
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    12
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    13
	int line_top;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    14
	int line_bottom;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    15
	int lastline_top;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    16
	int lastline_bottom;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    17
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    18
	Lines.clear();
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    19
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    20
	for (int i = 0; i < map_height; i++)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    21
	{
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    22
		// Fins a trobar començament de línia
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    23
		while (i< map_height &&
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    24
			map->points_per_row(i) < NoiseTolerance)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    25
			i++;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    26
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    27
		line_top = i++;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    28
		// Fins a trobar final de línia
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    29
		while (i< map_height &&
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    30
			map->points_per_row(i) > NoiseTolerance)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    31
			i++;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    32
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    33
		// If this line is less than MinVertSeparation away
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    34
		//  from the last line.  Join the two together.
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    35
		if (linenum > 0)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    36
		{
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    37
			if (line_top - lastline_bottom < MinVertSeparation)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    38
				lastline_bottom = i;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    39
		}
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    40
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    41
		lineSize = i - line_top + 1;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    42
		if (lineSize >= MinLineSize)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    43
		{
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    44
			line_bottom = i;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    45
			Lines.push_back(Rectangle(0,line_top,
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    46
				map->get_height(), line_bottom));
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    47
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    48
			fprintf(stderr, "Line from %i to %i : %i.\n", line_top,
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    49
				line_bottom, line_bottom - line_top + 1);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    50
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    51
			lastline_top = line_top;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    52
			lastline_bottom = line_bottom;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    53
		}
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    54
	}
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    55
}