+typedef struct tag_name_t {
+ uint16_t tag;
+ const char *name;
+} tag_name_t;
+
+tag_name_t tag_names[] = {
+ { 0x0100, "ImageWidth" },
+ { 0x0101, "ImageHeight" },
+ { 0x0102, "BitsPerSample" },
+ { 0x0103, "Compression" },
+ { 0x0106, "PhotometricInterpretation" },
+ { 0x0107, "Thresholding" },
+ { 0x010e, "ImageDescription" },
+ { 0x010f, "Make" },
+ { 0x0112, "Orientation" },
+ { 0x011a, "XResolution" },
+ { 0x011b, "YResolution" },
+ { 0x011c, "PlanarConfiguration" },
+ { 0x011e, "XPosition" },
+ { 0x011f, "YPosition" },
+ { 0x0128, "ResolutionUnit" },
+ { 0x0131, "Software" },
+ { 0x0132, "ModifyDate" },
+ { 0xa001, "ColorSpace" },
+ { 0xa002, "ExifImageWidth" },
+ { 0xa003, "ExifImageHeight" },
+ { 0xa20e, "FocalPlaneXResolution" },
+ { 0xa20f, "FocalPlaneYResolution" },
+ { 0xa210, "FocalPlaneResolutionUnit" },
+ /* Renishaw WiRE Custom Tags */
+ { 0xfea0, "WiREPosition" },
+ { 0xfea1, "WiREFoV" },
+ { 0xfea2, "WiREObjective" },
+ { 0xfea3, "WiRELUTLimits" },
+ { 0xfea4, "WiRERotationAngle" },
+ { 0xfea5, "WiRERotationCenter" },
+ { 0xfea6, "WiREZPosition" }
+};
+
+void exif_print_item(FILE *fp, const exif_item_t* item, const char *prefix)