#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct ifd_struktura {
    unsigned short azonosito;
    unsigned short tipus;
    unsigned int hossz;
    unsigned int ertek;
} ifd_tipus;

typedef struct fejlec_struktura {
    unsigned short adatabrazolas;
    unsigned short azonosito;
    unsigned int eltolas;
    unsigned short szunet;
    unsigned short ifdszam;
    ifd_tipus ifd[12];
} fejlec_tipus;

fejlec_tipus fejlec;
unsigned char kep[100][200];

void ifd_beallit(n, azonosito, tipus, hossz, ertek)
int n;
unsigned short azonosito;
unsigned short tipus;
unsigned int hossz;
unsigned int ertek;
{
    fejlec.ifd[n].azonosito = azonosito;
    fejlec.ifd[n].tipus = tipus;
    fejlec.ifd[n].hossz = hossz;
    fejlec.ifd[n].ertek = ertek;
}

void tiff_ment(char *fnev)
{
    int n, i, j;
    FILE *file;

    for (i = 0; i < 100; i++) {
        for (j = 0; j < 200; j++) {
            kep[i][j] = 0;
            if ((i > 10) && (i < 90) && (j > 20) && (j < 180))
                kep[i][j] = 128;
            if ((i == 0) || (i == 99) || (j == 0) || (j == 199))
                kep[i][j] = 255;
        }
    }

    n = sizeof(fejlec_tipus);

    fejlec.adatabrazolas = 0x4949;
    fejlec.azonosito = 0x2a;
    fejlec.eltolas = 10;
    fejlec.ifdszam = 12;

    ifd_beallit(0,  0x0fe, 4, 1, 0);
    ifd_beallit(1,  0x100, 4, 1, 200); /* X méret */
    ifd_beallit(2,  0x101, 4, 1, 100); /* Y méret */
    ifd_beallit(3,  0x102, 3, 1, 8);   /* bit/minta */
    ifd_beallit(4,  0x103, 3, 1, 1);   /* sűrítés */
    ifd_beallit(5,  0x106, 3, 1, 0);   /* háttér 0=fehér 1=fekete */
    ifd_beallit(6,  0x111, 4, 1, n);   /* kép kezdete */
    ifd_beallit(7,  0x116, 4, 1, 100 * 200); /* szallagok */
    ifd_beallit(8,  0x117, 4, 1, 100 * 200);
    ifd_beallit(9,  0x11a, 5, 1, 300); /* X felbontás */
    ifd_beallit(10, 0x11b, 5, 1, 300); /* Y felbontás */
    ifd_beallit(11, 0x128, 3, 1, 2);   /* mértékegység 2=inch 3=cm */

    file = fopen(fnev, "wb");
    if (file == NULL) exit;
    if (fwrite(&fejlec, 1, sizeof(fejlec), file) == 0) {
        fclose(file);
        exit;
    }
    if (fwrite(kep, 1, sizeof(kep), file) == 0) {
        fclose(file);
        exit;
    }
    fclose(file);
}

void main()
{
    tiff_ment("kep.tif");
}