1/* mnote-olympus-tag.c: 2 * 3 * Copyright (c) 2002 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#include "mnote-olympus-tag.h" 23 24#include <libexif/i18n.h> 25#include <libexif/exif-utils.h> 26 27#include <stdlib.h> 28 29static const struct { 30 MnoteOlympusTag tag; 31 const char *name; 32 const char *title; 33 const char *description; 34} table[] = { 35#ifndef NO_VERBOSE_TAG_STRINGS 36 /* Nikon v2 */ 37 {MNOTE_NIKON_TAG_FIRMWARE, "Firmware", N_("Firmware Version"), ""}, 38 {MNOTE_NIKON_TAG_ISO, "ISO", N_("ISO Setting"), ""}, 39 {MNOTE_NIKON_TAG_COLORMODE1, "COLORMODE1", N_("Color Mode (?)"), ""}, 40 {MNOTE_NIKON_TAG_QUALITY, "QUALITY", N_("Quality"), ""}, 41 {MNOTE_NIKON_TAG_WHITEBALANCE, "WHITEBALANCE", N_("White Balance"), ""}, 42 {MNOTE_NIKON_TAG_SHARPENING, "SHARPENING", N_("Image Sharpening"), ""}, 43 {MNOTE_NIKON_TAG_FOCUSMODE, "FOCUSMODE", N_("Focus Mode"), ""}, 44 {MNOTE_NIKON_TAG_FLASHSETTING, "FLASHSETTING", N_("Flash Setting"), ""}, 45 {MNOTE_NIKON_TAG_FLASHMODE, "FLASHMODE", N_("Flash Mode"), ""}, 46 {MNOTE_NIKON_TAG_WHITEBALANCEFINE,"WHITEBALANCEFINE",N_("White Balance Fine Adjustment"), ""}, 47 {MNOTE_NIKON_TAG_WHITEBALANCERB, "WHITEBALANCERB", N_("White Balance RB"), ""}, 48 {MNOTE_NIKON_TAG_UNKNOWN_0X000D, NULL, NULL, NULL}, 49 {MNOTE_NIKON_TAG_ISOSELECTION, "ISOSELECTION", N_("ISO Selection"), ""}, 50 {MNOTE_NIKON_TAG_PREVIEWIMAGE_IFD_POINTER, "PREVIEWIMAGE", N_("Preview Image IFD"), ""}, 51 {MNOTE_NIKON_TAG_EXPOSUREDIFF, "EXPOSUREDIFF", N_("Exposurediff ?"), ""}, 52 {MNOTE_NIKON_TAG_FLASHEXPCOMPENSATION, "FLASHEXPCOMPENSATION", N_("Flash Exposure Compensation"), ""}, 53 {MNOTE_NIKON_TAG_ISO2, "ISO", N_("ISO Setting"), ""}, 54 {MNOTE_NIKON_TAG_IMAGEBOUNDARY, "IMAGEBOUNDARY", N_("Image Boundary"), ""}, 55 {MNOTE_NIKON_TAG_UNKNOWN_0X0017, NULL, NULL, NULL}, 56 {MNOTE_NIKON_TAG_FLASHEXPOSUREBRACKETVAL, "FLASHEXPOSUREBRACKETVAL", N_("Flash Exposure Bracket Value"), ""}, 57 {MNOTE_NIKON_TAG_EXPOSUREBRACKETVAL, "EXPOSUREBRACKETVAL", N_("Exposure Bracket Value"), ""}, 58 {MNOTE_NIKON_TAG_IMAGEADJUSTMENT, "ImageAdjustment", N_("Image Adjustment"), ""}, 59 {MNOTE_NIKON_TAG_TONECOMPENSATION, "TONECOMPENSATION", N_("Tone Compensation"), ""}, 60 {MNOTE_NIKON_TAG_ADAPTER, "ADAPTER", N_("Adapter"), ""}, 61 {MNOTE_NIKON_TAG_LENSTYPE, "LENSTYPE", N_("Lens Type"), ""}, 62 {MNOTE_NIKON_TAG_LENS, "LENS", N_("Lens"), ""}, 63 {MNOTE_NIKON_TAG_MANUALFOCUSDISTANCE, "MANUALFOCUSDISTANCE", N_("Manual Focus Distance"), ""}, 64 {MNOTE_NIKON_TAG_DIGITALZOOM, "DigitalZoom", N_("Digital Zoom"), ""}, 65 {MNOTE_NIKON_TAG_FLASHUSED, "FLASHUSED", N_("Flash Used"), ""}, 66 {MNOTE_NIKON_TAG_AFFOCUSPOSITION, "AFFOCUSPOSITION", N_("AF Focus Position"), ""}, 67 {MNOTE_NIKON_TAG_BRACKETING, "BRACKETING", N_("Bracketing"), ""}, 68 {MNOTE_NIKON_TAG_UNKNOWN_0X008A, NULL, NULL, NULL}, 69 {MNOTE_NIKON_TAG_LENS_FSTOPS, "LENSFSTOPS", N_("Lens F Stops"), ""}, 70 {MNOTE_NIKON_TAG_CURVE, "CURVE,", N_("Contrast Curve"), ""}, 71 {MNOTE_NIKON_TAG_COLORMODE, "COLORMODE,", N_("Color Mode"), ""}, 72 {MNOTE_NIKON_TAG_LIGHTTYPE, "LIGHTTYPE,", N_("Light Type"), ""}, 73 {MNOTE_NIKON_TAG_UNKNOWN_0X0091, NULL, NULL, NULL}, 74 {MNOTE_NIKON_TAG_HUE, "HUE", N_("Hue Adjustment"), ""}, 75 {MNOTE_NIKON_TAG_SATURATION, "SATURATION", N_("Saturation"), ""}, 76 {MNOTE_NIKON_TAG_NOISEREDUCTION, "NOISEREDUCTION,", N_("Noisereduction"), ""}, 77 {MNOTE_NIKON_TAG_UNKNOWN_0X0097, NULL, NULL, NULL}, 78 {MNOTE_NIKON_TAG_UNKNOWN_0X0098, NULL, NULL, NULL}, 79 {MNOTE_NIKON_TAG_SENSORPIXELSIZE, "SENSORPIXELSIZE", N_("Sensor Pixel Size"), ""}, 80 {MNOTE_NIKON_TAG_UNKNOWN_0X009B, NULL, NULL, NULL}, 81 {MNOTE_NIKON_TAG_SERIALNUMBER, "SERIALNUMBER", N_("Serial Number"), ""}, 82 {MNOTE_NIKON_TAG_IMAGE_DATASIZE, "IMAGEDATASIZE", N_("Image Datasize"), N_("Size of compressed image data in bytes.")}, 83 {MNOTE_NIKON_TAG_UNKNOWN_0X00A3, NULL, NULL, NULL}, 84 {MNOTE_NIKON_TAG_TOTALPICTURES, "TOTALPICTURES,", N_("Total Number of Pictures Taken"), ""}, 85 {MNOTE_NIKON_TAG_UNKNOWN_0X00A8, NULL, NULL, NULL}, 86 {MNOTE_NIKON_TAG_OPTIMIZATION, "OPTIMIZATION,", N_("Optimize Image"), ""}, 87 {MNOTE_NIKON_TAG_SATURATION, "SATURATION", N_("Saturation"), ""}, 88 {MNOTE_NIKON_TAG_VARIPROGRAM, "VARIPROGRAM", N_("Vari Program"), ""}, 89 {MNOTE_NIKON_TAG_CAPTUREEDITORDATA, "CAPTUREEDITORDATA", N_("Capture Editor Data"), ""}, 90 {MNOTE_NIKON_TAG_CAPTUREEDITORVER, "CAPTUREEDITORVER", N_("Capture Editor Version"), ""}, 91 {MNOTE_NIKON_TAG_UNKNOWN_0X0E0E, NULL, NULL, NULL}, 92 {MNOTE_NIKON_TAG_UNKNOWN_0X0E10, NULL, NULL, NULL}, 93 {MNOTE_NIKON1_TAG_UNKNOWN_0X0002, NULL, NULL, NULL}, 94 {MNOTE_NIKON1_TAG_QUALITY, "QUALITY", N_("Quality"), ""}, 95 {MNOTE_NIKON1_TAG_COLORMODE, "COLORMODE,", N_("Color Mode"), ""}, 96 {MNOTE_NIKON1_TAG_IMAGEADJUSTMENT, "ImageAdjustment", N_("Image Adjustment"), ""}, 97 {MNOTE_NIKON1_TAG_CCDSENSITIVITY, "CCDSensitivity", N_("CCD Sensitivity"), ""}, 98 {MNOTE_NIKON1_TAG_WHITEBALANCE, "WhiteBalance", N_("White Balance"), ""}, 99 {MNOTE_NIKON1_TAG_FOCUS, "Focus", N_("Focus"), ""}, 100 {MNOTE_NIKON1_TAG_UNKNOWN_0X0009, NULL, NULL, NULL}, 101 {MNOTE_NIKON1_TAG_DIGITALZOOM, "DigitalZoom", N_("Digital Zoom"), ""}, 102 {MNOTE_NIKON1_TAG_CONVERTER, "Converter", N_("Converter"), ""}, 103 104 /* Olympus & some Sanyo */ 105 {MNOTE_OLYMPUS_TAG_THUMBNAILIMAGE, "ThumbnailImage", N_("Thumbnail Image"), ""}, 106 {MNOTE_OLYMPUS_TAG_MODE, "Mode", N_("Speed/Sequence/Panorama Direction"), ""}, 107 {MNOTE_OLYMPUS_TAG_QUALITY, "Quality", N_("Quality"), ""}, 108 {MNOTE_OLYMPUS_TAG_MACRO, "Macro", N_("Macro"), ""}, 109 {MNOTE_OLYMPUS_TAG_BWMODE, "BWMode", N_("B&W Mode"), ""}, 110 {MNOTE_OLYMPUS_TAG_DIGIZOOM, "DigiZoom", N_("Digital Zoom"), ""}, 111 {MNOTE_OLYMPUS_TAG_FOCALPLANEDIAGONAL, "FocalPlaneDiagonal", N_("Focal Plane Diagonal"), ""}, 112 {MNOTE_OLYMPUS_TAG_LENSDISTORTION, "LensDistortionParams", N_("Lens Distortion Parameters"), ""}, 113 {MNOTE_OLYMPUS_TAG_VERSION, "FirmwareVersion", N_("Firmware Version"), ""}, 114 {MNOTE_OLYMPUS_TAG_INFO, "Info", N_("Info"), ""}, 115 {MNOTE_OLYMPUS_TAG_ID, "CameraID", N_("Camera ID"), ""}, 116 {MNOTE_OLYMPUS_TAG_PRECAPTUREFRAMES, "PreCaptureFrames", N_("Precapture Frames"), ""}, 117 {MNOTE_OLYMPUS_TAG_WHITEBOARD, "WhiteBoard", N_("White Board"), ""}, 118 {MNOTE_OLYMPUS_TAG_ONETOUCHWB, "OneTouchWB", N_("One Touch White Balance"), ""}, 119 {MNOTE_OLYMPUS_TAG_WHITEBALANCEBRACKET, "WhiteBalanceBracket", N_("White Balance Bracket"), ""}, 120 {MNOTE_OLYMPUS_TAG_WHITEBALANCEBIAS, "WhiteBalanceBias", N_("White Balance Bias"), ""}, 121 {MNOTE_OLYMPUS_TAG_DATADUMP, "DataDump", N_("Data Dump"), NULL}, 122 {MNOTE_OLYMPUS_TAG_UNKNOWN_4, NULL, NULL, NULL}, 123 {MNOTE_OLYMPUS_TAG_SHUTTERSPEED, "ShutterSpeed", N_("Shutter Speed"), ""}, 124 {MNOTE_OLYMPUS_TAG_ISOVALUE, "ISOValue", N_("ISO Value"), ""}, 125 {MNOTE_OLYMPUS_TAG_APERTUREVALUE, "ApertureValue", N_("Aperture Value"), ""}, 126 {MNOTE_OLYMPUS_TAG_BRIGHTNESSVALUE, "BrightnessValue", N_("Brightness Value"), ""}, 127 {MNOTE_OLYMPUS_TAG_FLASHMODE, "FlashMode", N_("Flash Mode"), ""}, 128 {MNOTE_OLYMPUS_TAG_FLASHDEVICE, "FlashDevice", N_("Flash Device"), ""}, 129 {MNOTE_OLYMPUS_TAG_EXPOSURECOMP, "ExposureCompensation", N_("Exposure Compensation"), ""}, 130 {MNOTE_OLYMPUS_TAG_SENSORTEMPERATURE, "SensorTemperature", N_("Sensor Temperature"), ""}, 131 {MNOTE_OLYMPUS_TAG_LENSTEMPERATURE, "LensTemperature", N_("Lens Temperature"), ""}, 132 {MNOTE_OLYMPUS_TAG_LIGHTCONDITION, "LightCondition", N_("Light Condition"), ""}, 133 {MNOTE_OLYMPUS_TAG_FOCUSRANGE, "FocusRange", N_("Focus Range"), ""}, 134 {MNOTE_OLYMPUS_TAG_MANFOCUS, "FocusMode", N_("Focus Mode"), "Automatic or manual focusing mode"}, 135 {MNOTE_OLYMPUS_TAG_FOCUSDIST, "ManualFocusDistance", N_("Manual Focus Distance"), ""}, 136 {MNOTE_OLYMPUS_TAG_ZOOMSTEPCOUNT, "ZoomStepCount", N_("Zoom Step Count"), ""}, 137 {MNOTE_OLYMPUS_TAG_FOCUSSTEPCOUNT, "FocusStepCount", N_("Focus Step Count"), ""}, 138 {MNOTE_OLYMPUS_TAG_SHARPNESS, "Sharpness", N_("Sharpness Setting"), ""}, 139 {MNOTE_OLYMPUS_TAG_FLASHCHARGELEVEL, "FlashChargeLevel", N_("Flash Charge Level"), ""}, 140 {MNOTE_OLYMPUS_TAG_COLORMATRIX, "ColorMatrix", N_("Color Matrix"), ""}, 141 {MNOTE_OLYMPUS_TAG_BLACKLEVEL, "BlackLevel", N_("Black Level"), ""}, 142 {MNOTE_OLYMPUS_TAG_WBALANCE, "WhiteBalance", N_("White Balance Setting"), ""}, 143 {MNOTE_OLYMPUS_TAG_REDBALANCE, "RedBalance", N_("Red Balance"), ""}, 144 {MNOTE_OLYMPUS_TAG_BLUEBALANCE, "BlueBalance", N_("Blue Balance"), ""}, 145 {MNOTE_OLYMPUS_TAG_COLORMATRIXNUMBER, "ColorMatrixNumber", N_("Color Matrix Number"), ""}, 146 {MNOTE_OLYMPUS_TAG_SERIALNUMBER2, "SerialNumber", N_("Serial Number"), ""}, 147 {MNOTE_OLYMPUS_TAG_FLASHEXPOSURECOMP, "FlashExposureComp", N_("Flash Exposure Comp"), ""}, 148 {MNOTE_OLYMPUS_TAG_INTERNALFLASHTABLE, "InternalFlashTable", N_("Internal Flash Table"), ""}, 149 {MNOTE_OLYMPUS_TAG_EXTERNALFLASHGVALUE, "ExternalFlashGValue", N_("External Flash G Value"), ""}, 150 {MNOTE_OLYMPUS_TAG_EXTERNALFLASHBOUNCE, "ExternalFlashBounce", N_("External Flash Bounce"), ""}, 151 {MNOTE_OLYMPUS_TAG_EXTERNALFLASHZOOM, "ExternalFlashZoom", N_("External Flash Zoom"), ""}, 152 {MNOTE_OLYMPUS_TAG_EXTERNALFLASHMODE, "ExternalFlashMode", N_("External Flash Mode"), ""}, 153 {MNOTE_OLYMPUS_TAG_CONTRAST, "Contrast", N_("Contrast Setting"), ""}, 154 {MNOTE_OLYMPUS_TAG_SHARPNESSFACTOR, "SharpnessFactor", N_("Sharpness Factor"), ""}, 155 {MNOTE_OLYMPUS_TAG_COLORCONTROL, "ColorControl", N_("Color Control"), ""}, 156 {MNOTE_OLYMPUS_TAG_IMAGEWIDTH, "OlympusImageWidth", N_("Olympus Image Width"), ""}, 157 {MNOTE_OLYMPUS_TAG_IMAGEHEIGHT, "OlympusImageHeight", N_("Olympus Image Height"), ""}, 158 {MNOTE_OLYMPUS_TAG_SCENEDETECT, "SceneDetect", N_("Scene Detect"), ""}, 159 {MNOTE_OLYMPUS_TAG_COMPRESSIONRATIO, "CompressionRatio", N_("Compression Ratio"), ""}, 160 {MNOTE_OLYMPUS_TAG_PREVIEWIMAGEVALID, "PreviewImageValid", N_("Preview Image Valid"), ""}, 161 {MNOTE_OLYMPUS_TAG_AFRESULT, "AFResult", N_("AF Result"), ""}, 162 {MNOTE_OLYMPUS_TAG_CCDSCANMODE, "CCDScanMode", N_("CCD Scan Mode"), ""}, 163 {MNOTE_OLYMPUS_TAG_NOISEREDUCTION, "NoiseReduction", N_("Noise Reduction"), ""}, 164 {MNOTE_OLYMPUS_TAG_INFINITYLENSSTEP, "InfinityLensStep", N_("Infinity Lens Step"), ""}, 165 {MNOTE_OLYMPUS_TAG_NEARLENSSTEP, "NearLensStep", N_("Near Lens Step"), ""}, 166 {MNOTE_OLYMPUS_TAG_LIGHTVALUECENTER, "LightValueCenter", N_("Light Value Center"), ""}, 167 {MNOTE_OLYMPUS_TAG_LIGHTVALUEPERIPHERY, "LightValuePeriphery", N_("Light Value Periphery"), ""}, 168 169 /* Sanyo */ 170 {MNOTE_SANYO_TAG_SEQUENTIALSHOT, "SequentialShot", N_("Sequential Shot"), ""}, 171 {MNOTE_SANYO_TAG_WIDERANGE, "WideRange", N_("Wide Range"), ""}, 172 {MNOTE_SANYO_TAG_COLORADJUSTMENTMODE, "ColorAdjustmentMode", N_("Color Adjustment Mode"), ""}, 173 {MNOTE_SANYO_TAG_FOCUSMODE, "FocusMode", N_("Focus Mode"), ""}, 174 {MNOTE_SANYO_TAG_QUICKSHOT, "QuickShot", N_("Quick Shot"), ""}, 175 {MNOTE_SANYO_TAG_SELFTIMER, "SelfTimer", N_("Self Timer"), ""}, 176 {MNOTE_SANYO_TAG_VOICEMEMO, "VoiceMemo", N_("Voice Memo"), ""}, 177 {MNOTE_SANYO_TAG_RECORDSHUTTERRELEASE, "RecordShutterRelease", N_("Record Shutter Release"), ""}, 178 {MNOTE_SANYO_TAG_FLICKERREDUCE, "FlickerReduce", N_("Flicker Reduce"), ""}, 179 {MNOTE_SANYO_TAG_OPTICALZOOM, "OpticalZoom", N_("Optical Zoom"), ""}, 180 {MNOTE_SANYO_TAG_DIGITALZOOM, "DigitalZoom", N_("Digital Zoom"), ""}, 181 {MNOTE_SANYO_TAG_LIGHTSOURCESPECIAL, "LightSourceSpecial", N_("Light Source Special"), ""}, 182 {MNOTE_SANYO_TAG_RESAVED, "Resaved", N_("Resaved"), ""}, 183 {MNOTE_SANYO_TAG_CCDSENSITIVITY, "CCDSensitivity", N_("CCD Sensitivity"), ""}, 184 {MNOTE_SANYO_TAG_SCENESELECT, "SceneSelect", N_("Scene Select"), ""}, 185 {MNOTE_SANYO_TAG_MANUALFOCUSDISTANCE, "ManualFocusDistance", N_("Manual Focus Distance"), ""}, 186 {MNOTE_SANYO_TAG_SEQUENCESHOTINTERVAL, "SequenceShotInterval", N_("Sequence Shot Interval"), ""}, 187 188 /* Epson */ 189 {MNOTE_EPSON_TAG_IMAGE_WIDTH, "EpsonImageWidth", N_("Epson Image Width"), ""}, 190 {MNOTE_EPSON_TAG_IMAGE_HEIGHT, "EpsonImageHeight", N_("Epson Image Height"), ""}, 191 {MNOTE_EPSON_TAG_SOFTWARE, "EpsonSoftware", N_("Epson Software Version"), ""}, 192#endif 193 {0, NULL, NULL, NULL} 194}; 195 196const char * 197mnote_olympus_tag_get_name (MnoteOlympusTag t) 198{ 199 unsigned int i; 200 201 for (i = 0; i < sizeof (table) / sizeof (table[0]); i++) 202 if (table[i].tag == t) return (table[i].name); 203 return NULL; 204} 205 206const char * 207mnote_olympus_tag_get_title (MnoteOlympusTag t) 208{ 209 unsigned int i; 210 211 bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); 212 for (i = 0; i < sizeof (table) / sizeof (table[0]); i++) 213 if (table[i].tag == t) return (_(table[i].title)); 214 return NULL; 215} 216 217const char * 218mnote_olympus_tag_get_description (MnoteOlympusTag t) 219{ 220 unsigned int i; 221 222 bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); 223 for (i = 0; i < sizeof (table) / sizeof (table[0]); i++) 224 if (table[i].tag == t) { 225 if (!table[i].description || !*table[i].description) 226 return ""; 227 return (_(table[i].description)); 228 } 229 return NULL; 230} 231