Portfolio[UWM] Techniki Multimedialne / PIRO

Funkcja Resize

Zadanie
Zadaniem tej funkcji jest utworzenie nowej bitmapy o zmienionej wielkości obszaru roboczego bitmapy.

ma parametry funkcji:
  • _BitMap źródło obrazka,
  • _Width nowa szerokość bitmapy,
  • _Height nowa wyskoość bitmapy,
BitMap Resize(BitMap _BitMap, int _Width, int _Height)
{
	// podmienienie starej wysokości i szerokości na nowe wartości
	_BitMap.Width = _BitMap.Header[1] = _Width;
	_BitMap.Height = _BitMap.Header[2] = _Height;
	
	// uwzglednienie paddingu dla szerokości
	_Width = (_Width%4 > 0) ? _Width + 4 - _Width%4 : _Width;
	// wyliczenie nowego rozmiaru bitmapy (do tego uwzglednienie było paddingu) 
	_BitMap.Header[5] = _Width * _Height * (_BitMap.Bits/8);

	// obliczamy całkowity rozmiar pliku
	int oFileSize = Scale(_BitMap.File[5],_BitMap.File[6]) + _BitMap.Header[5]; // FileSize
	_BitMap.File[2] =  oFileSize >> 16;
	_BitMap.File[1] =  (oFileSize << 16 ) >> 16;

	// czyszczenie bitmapy 
	_BitMap.Pixels = Clear(_BitMap);
	return _BitMap;
}


Funkcja Clone

Zadanie
Zadaniem tej funkcji jest zawrócenie tablicy dwu-wymiarowej kopii pikseli. 

ma parametry funkcji:
  • _BitMap źródło obrazka,
  • _Width nowa szerokość bitmapy,
  • _Height nowa wyskoość bitmapy,
Pix** Clone(BitMap _BitMap)
{
	Pix** oPixs;
	oPixs = (Pix**) malloc(sizeof(Pix*) * _BitMap.Height);
	for(int y = 0; y < _BitMap.Height; y++)
		oPixs[y] = (Pix*) malloc(sizeof(Pix) * _BitMap.Width);

	for(int y = 0; y < _BitMap.Height; y++)
		for(int x = 0; x < _BitMap.Width; x++)
			oPixs[y][x] = _BitMap.Pixels[y][x];
	return oPixs;
}


Funkcja Clear

Zadanie
Zadaniem tej funkcji jest zwrócenie dwu-wymiarowej tablicy z wyczyszczonymi pikselami (tzn. wartość skłądowych równe 0 )

ma parametry funkcji:
  • _BitMap źródło obrazka,
  • _Width nowa szerokość bitmapy,
  • _Height nowa wyskoość bitmapy,
Pix** Clear(BitMap _BitMap)
{
	Pix** oPixs;
	oPixs = (Pix**) malloc(sizeof(Pix*) * _BitMap.Height);
	for(int y = 0; y < _BitMap.Height; y++)
		oPixs[y] = (Pix*) malloc(sizeof(Pix) * _BitMap.Width);

	Pix oBlack;
	oBlack.Red = 0;
	oBlack.Green = 0;
	oBlack.Blue = 0;
	oBlack.Light = 0;

	for(int y = 0; y < _BitMap.Height; y++)
		for(int x = 0; x < _BitMap.Width; x++)
			oPixs[y][x] = oBlack;
	return oPixs;
}

  • Administracja