%Funkce provede prevedeni obrazku v BMP formatu na hlavickovy soubor
%kompatibilni s jazykem C. Data v nem jsou ulozena ve specialnim formatu:
%const unsigned short BMP_disconnected[] = {vyska, sirka, p1, p2, ..., PN};
%Volani funkce: 
%               image.....obrazek ke konverzi
%               bits......bitova hloubka 12/16 bitů
%               filename..jmeno vysledneho souboru
%               name......jmeno promenne v jazyce C
%Autor:         Jiri Machacek
%ID:            106 608
%
%Funkce vznikla v ramci diplomove prace na tema:
%               Bezdrátové ovládání
%počítače PC
function [ image_conv ] = imageToHeader( image, bits, filename,name)
image = uint16(image);                      %Prevedeni obrazku do vhodneho formatu
disp(name);                                 %Vypis jmena
imsize = size(image);                       %Zjisteni velikosti
file = fopen(filename,'w');                 %Otevreni vysledneho souboru pro zapis

%Zapis hlavicky do komentaru
fprintf(file,'//Matlab image generator by Jiri Machacek\n//Image properties: %d x %d x %d\n',imsize(2), imsize(1), bits);

fwrite(file,'const unsigned short ');       %Zapis definice
fwrite(file,name);              
fwrite(file,'[] = {');
fwrite(file,int2str(imsize(2)));
fwrite(file,',');
fwrite(file,int2str(imsize(1)));
image_conv = uint16(zeros(imsize(1),imsize(2)));

%Konverze jednotlivych pixelu do vhodneho formatu
for y = 1:imsize(1)
    for x = 1:imsize(2)
        fwrite(file,',');
        if bits == 16
            image_conv(y,x) =  bitor(bitor(bitand(bitshift(image(y,x,1),7),31774),bitand(bitshift(image(y,x,2),2),992)),bitand(bitshift(image(y,x,3),-3),31));
        elseif bits == 12
            image_conv(y,x) =  bitor(bitor(bitand(bitshift(image(y,x,3),4),3840),bitand(bitshift(image(y,x,2),0),240)),bitand(bitshift(image(y,x,1),-4),15));
        else
            error('invalid bit count');
        end
        fwrite(file,int2str(image_conv(y,x)));
    end
end

fwrite(file,'};');                      %Ukoncovaci znaky

fclose(file);                           %Uzavreni souboru
end

