student.cpp
////////////////////////////////////////////////////////////////////////////////////////////////
// Vzorove reseni
////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////
// include
#include "main.h"
#include <assert.h>
#include <stdlib.h>
////////////////////////////////////////////////////////////////////////////////////////////////
// Funkce vyplnene ve cvicenich
////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////
// funkce prevede obrazek na urovne sedi
//
void GreyScale()
{
S_RGBA color;
double luma;
for (int x = 0; x < frame_w; x++) {
for (int y = 0; y < frame_h; y++) {
GetPixel(x, y, color);
luma = 0.299 * color.red + 0.587 * color.green + 0.114 * color.blue;
color.red = ROUND(luma);
color.green = ROUND(luma);
color.blue = ROUND(luma);
PutPixel(x, y, color);
}
}
}
////////////////////////////////////////////////////////////////////////////////////////////////
// funkce prevede obrazek na cernobily
//
// Threshold - prah
//
void Prahovani(int Threshold)
{
S_RGBA color;
double luma;
for (int x = 0; x < frame_w; x++) {
for (int y = 0; y < frame_h; y++) {
GetPixel(x, y, color);
luma = 0.299 * color.red + 0.587 * color.green + 0.114 * color.blue;
if (luma <= Threshold) {
PutPixel(x, y, COLOR_BLACK);
} else {
PutPixel(x, y, COLOR_WHITE);
}
}
}
}
////////////////////////////////////////////////////////////////////////////////////////////////
// Funkce za domaci ukol
////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////
// funkce prevede obrazek na cernobily
// pomoci matice metodou DITHERINGU, velikost obrazku se tedy nemeni!
// pouzijte promenne definovane v main.h:
// VelikostMatice - rozmer ctvercove matice
// Matice[][] - hodnoty pro porovnavani
//
void RozptylMatice()
{
S_RGBA color;
double luma;
for (int x = 0; x < frame_w; x++) {
for (int y = 0; y < frame_h; y++) {
GetPixel(x, y, color);
luma = 0.299 * color.red + 0.587 * color.green + 0.114 * color.blue;
if (luma <= Matice[x % VelikostMatice][y % VelikostMatice]) {
PutPixel(x, y, COLOR_BLACK);
} else {
PutPixel(x, y, COLOR_WHITE);
}
}
}
}