1/* exif-format.c
2 *
3 * Copyright (c) 2001 Lutz Mueller <lutz@users.sourceforge.net>
4 *
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2 of the License, or (at your option) any later version.
9 *
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13 * Lesser General Public License for more details.
14 *
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this library; if not, write to the
17 * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18 * Boston, MA  02110-1301  USA.
19 */
20
21#include <config.h>
22
23#include <libexif/exif-format.h>
24#include <libexif/i18n.h>
25
26#include <stdlib.h>
27
28/*! Table of data format types, descriptions and sizes.
29 * This table should be sorted in decreasing order of popularity in order
30 * to decrease the total average lookup time.
31 */
32static const struct {
33        ExifFormat format;
34	const char *name;
35        unsigned char size;
36} ExifFormatTable[] = {
37        {EXIF_FORMAT_SHORT,     N_("Short"),     2},
38        {EXIF_FORMAT_RATIONAL,  N_("Rational"),  8},
39        {EXIF_FORMAT_SRATIONAL, N_("SRational"), 8},
40        {EXIF_FORMAT_UNDEFINED, N_("Undefined"), 1},
41        {EXIF_FORMAT_ASCII,     N_("ASCII"),     1},
42        {EXIF_FORMAT_LONG,      N_("Long"),      4},
43        {EXIF_FORMAT_BYTE,      N_("Byte"),      1},
44	{EXIF_FORMAT_SBYTE,     N_("SByte"),     1},
45	{EXIF_FORMAT_SSHORT,    N_("SShort"),    2},
46        {EXIF_FORMAT_SLONG,     N_("SLong"),     4},
47	{EXIF_FORMAT_FLOAT,     N_("Float"),     4},
48	{EXIF_FORMAT_DOUBLE,    N_("Double"),    8},
49        {0, NULL, 0}
50};
51
52const char *
53exif_format_get_name (ExifFormat format)
54{
55	unsigned int i;
56
57	/* FIXME: This belongs to somewhere else. */
58	/* libexif should use the default system locale.
59	 * If an application specifically requires UTF-8, then we
60	 * must give the application a way to tell libexif that.
61	 *
62	 * bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
63	 */
64	bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
65
66	for (i = 0; ExifFormatTable[i].name; i++)
67		if (ExifFormatTable[i].format == format)
68			return _(ExifFormatTable[i].name);
69	return NULL;
70}
71
72unsigned char
73exif_format_get_size (ExifFormat format)
74{
75	unsigned int i;
76
77	for (i = 0; ExifFormatTable[i].size; i++)
78		if (ExifFormatTable[i].format == format)
79			return ExifFormatTable[i].size;
80	return 0;
81}
82