1548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen/* test-mem.c
2548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *
3548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * Copyright (c) 2002 Lutz Mueller <lutz@users.sourceforge.net>
4548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *
5548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * This library is free software; you can redistribute it and/or
6548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * modify it under the terms of the GNU Lesser General Public
7548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * License as published by the Free Software Foundation; either
8548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * version 2 of the License, or (at your option) any later version.
9548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *
10548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * This library is distributed in the hope that it will be useful,
11548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * but WITHOUT ANY WARRANTY; without even the implied warranty of
12548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * Lesser General Public License for more details.
14548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *
15548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * You should have received a copy of the GNU Lesser General Public
16548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * License along with this library; if not, write to the
17548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * Boston, MA  02110-1301  USA.
19548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen */
20548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
21548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#include <config.h>
22548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
23548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#include <libexif/exif-data.h>
24548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#include <libexif/exif-ifd.h>
25548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#include <libexif/exif-loader.h>
26548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
27548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#include <stdio.h>
28548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#include <stdlib.h>
29548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
30548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenint
31548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenmain ()
32548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{
33548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	ExifData *ed;
34548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	/* ExifEntry *e; */
35548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	unsigned char *eb, size[2];
36548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	unsigned int ebs;
37548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	ExifLoader *loader;
38548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	unsigned int i;
39548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
40548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	printf ("Creating EXIF data...\n");
41548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	ed = exif_data_new ();
42548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	exif_data_set_data_type (ed, EXIF_DATA_TYPE_UNCOMPRESSED_CHUNKY);
43548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
44548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	printf ("Fill EXIF data with all necessary entries to follow specs...\n");
45548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	exif_data_fix (ed);
46548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
47548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	exif_data_dump (ed);
48548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
49548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	printf ("Saving EXIF data to memory...\n");
50548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	exif_data_save_data (ed, &eb, &ebs);
51548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	exif_data_unref (ed);
52548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
53548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	printf ("Writing %i byte(s) EXIF data to loader...\n", ebs);
54548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	loader = exif_loader_new ();
55548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	size[0] = (unsigned char) ebs;
56548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	size[1] = (unsigned char) (ebs >> 8);
57548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	exif_loader_write (loader, size, 2);
58548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	for (i = 0; i < ebs && exif_loader_write (loader, eb + i, 1); i++);
59548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	printf ("Wrote %i byte(s).\n", i);
60548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	free (eb);
61548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	ed = exif_loader_get_data (loader);
62548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	exif_loader_unref (loader);
63548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	exif_data_dump (ed);
64548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	exif_data_unref (ed);
65548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen
66548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen	return 0;
67548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}
68