Bitmap.cc
author viric <viriketo@gmail.com>
Sun, 24 Apr 2011 18:25:11 +0200
changeset 1 a573dab6cb46
parent 0 6b8091ca909a
child 2 5cdb891abc1e
permissions -rw-r--r--
Afegeixo el Makefile.am que falta.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     1
#include "Bitmap.h"
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     2
#include "Errors.h"
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     3
#include "Histogram.h"
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     4
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     5
Bitmap::Bitmap(int w, int h)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     6
{
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     7
	int i;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     8
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
     9
	height = h;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    10
	width = w;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    11
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    12
	// Assignem memòria
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    13
	pixels = new (char*)[height];
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    14
	for (i=0; i<height; i++)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    15
		pixels[i] = new char[width];
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    16
	// Memòria assignada
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
	//PointsPerLine = new vector<int>
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
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    21
Bitmap::~Bitmap()
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    22
{
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    23
	int i;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    24
	for (i=0; i<height; i++)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    25
		delete[] pixels[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
	delete[] pixels;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    28
}
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    29
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    30
void Bitmap::setToZero()
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    31
{
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    32
	int i,j;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    33
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    34
	for (i=0; i<height; i++)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    35
		for (j=0; j<width; j++)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    36
			pixels[i][j] = 0;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    37
}
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    38
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    39
int Bitmap::points_per_row(int line)
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
	int weight=0;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    42
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    43
	for(int j=0; j<width; j++)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    44
		if (pixels[line][j])
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    45
			++weight;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    46
	return weight;
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
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    49
void Bitmap::calcHistogram(Histogram* &myhist)
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
	int i,j;
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    52
	
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    53
	myhist = new Histogram(height);
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
	for(i=0; i<height; i++)
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    56
		myhist->weights[i] = points_per_row(i);
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    57
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    58
	myhist->calcStatistics();
6b8091ca909a Init from working directory of svn repository.
viric@llimona
parents:
diff changeset
    59
}