| 1 | /*
|
|---|
| 2 | * Copyright 2002-2012 Drew Noakes
|
|---|
| 3 | *
|
|---|
| 4 | * Licensed under the Apache License, Version 2.0 (the "License");
|
|---|
| 5 | * you may not use this file except in compliance with the License.
|
|---|
| 6 | * You may obtain a copy of the License at
|
|---|
| 7 | *
|
|---|
| 8 | * http://www.apache.org/licenses/LICENSE-2.0
|
|---|
| 9 | *
|
|---|
| 10 | * Unless required by applicable law or agreed to in writing, software
|
|---|
| 11 | * distributed under the License is distributed on an "AS IS" BASIS,
|
|---|
| 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|---|
| 13 | * See the License for the specific language governing permissions and
|
|---|
| 14 | * limitations under the License.
|
|---|
| 15 | *
|
|---|
| 16 | * More information about this project is available at:
|
|---|
| 17 | *
|
|---|
| 18 | * http://drewnoakes.com/code/exif/
|
|---|
| 19 | * http://code.google.com/p/metadata-extractor/
|
|---|
| 20 | */
|
|---|
| 21 | package com.drew.metadata.exif;
|
|---|
| 22 |
|
|---|
| 23 | import com.drew.lang.annotations.NotNull;
|
|---|
| 24 | import com.drew.metadata.Directory;
|
|---|
| 25 |
|
|---|
| 26 | import java.util.HashMap;
|
|---|
| 27 |
|
|---|
| 28 | /**
|
|---|
| 29 | * The Olympus makernote is used by many manufacturers (Konica, Minolta and Epson...), and as such contains some tags
|
|---|
| 30 | * that appear specific to those manufacturers.
|
|---|
| 31 | *
|
|---|
| 32 | * @author Drew Noakes http://drewnoakes.com
|
|---|
| 33 | */
|
|---|
| 34 | public class OlympusMakernoteDirectory extends Directory
|
|---|
| 35 | {
|
|---|
| 36 | /** Used by Konica / Minolta cameras. */
|
|---|
| 37 | public static final int TAG_OLYMPUS_MAKERNOTE_VERSION = 0x0000;
|
|---|
| 38 | /** Used by Konica / Minolta cameras. */
|
|---|
| 39 | public static final int TAG_OLYMPUS_CAMERA_SETTINGS_1 = 0x0001;
|
|---|
| 40 | /** Alternate Camera Settings Tag. Used by Konica / Minolta cameras. */
|
|---|
| 41 | public static final int TAG_OLYMPUS_CAMERA_SETTINGS_2 = 0x0003;
|
|---|
| 42 | /** Used by Konica / Minolta cameras. */
|
|---|
| 43 | public static final int TAG_OLYMPUS_COMPRESSED_IMAGE_SIZE = 0x0040;
|
|---|
| 44 | /** Used by Konica / Minolta cameras. */
|
|---|
| 45 | public static final int TAG_OLYMPUS_MINOLTA_THUMBNAIL_OFFSET_1 = 0x0081;
|
|---|
| 46 | /** Alternate Thumbnail Offset. Used by Konica / Minolta cameras. */
|
|---|
| 47 | public static final int TAG_OLYMPUS_MINOLTA_THUMBNAIL_OFFSET_2 = 0x0088;
|
|---|
| 48 | /** Length of thumbnail in bytes. Used by Konica / Minolta cameras. */
|
|---|
| 49 | public static final int TAG_OLYMPUS_MINOLTA_THUMBNAIL_LENGTH = 0x0089;
|
|---|
| 50 |
|
|---|
| 51 | /**
|
|---|
| 52 | * Used by Konica / Minolta cameras
|
|---|
| 53 | * 0 = Natural Colour
|
|---|
| 54 | * 1 = Black & White
|
|---|
| 55 | * 2 = Vivid colour
|
|---|
| 56 | * 3 = Solarization
|
|---|
| 57 | * 4 = AdobeRGB
|
|---|
| 58 | */
|
|---|
| 59 | public static final int TAG_OLYMPUS_COLOUR_MODE = 0x0101;
|
|---|
| 60 |
|
|---|
| 61 | /**
|
|---|
| 62 | * Used by Konica / Minolta cameras.
|
|---|
| 63 | * 0 = Raw
|
|---|
| 64 | * 1 = Super Fine
|
|---|
| 65 | * 2 = Fine
|
|---|
| 66 | * 3 = Standard
|
|---|
| 67 | * 4 = Extra Fine
|
|---|
| 68 | */
|
|---|
| 69 | public static final int TAG_OLYMPUS_IMAGE_QUALITY_1 = 0x0102;
|
|---|
| 70 |
|
|---|
| 71 | /**
|
|---|
| 72 | * Not 100% sure about this tag.
|
|---|
| 73 | * <p/>
|
|---|
| 74 | * Used by Konica / Minolta cameras.
|
|---|
| 75 | * 0 = Raw
|
|---|
| 76 | * 1 = Super Fine
|
|---|
| 77 | * 2 = Fine
|
|---|
| 78 | * 3 = Standard
|
|---|
| 79 | * 4 = Extra Fine
|
|---|
| 80 | */
|
|---|
| 81 | public static final int TAG_OLYMPUS_IMAGE_QUALITY_2 = 0x0103;
|
|---|
| 82 |
|
|---|
| 83 |
|
|---|
| 84 | /**
|
|---|
| 85 | * Three values:
|
|---|
| 86 | * Value 1: 0=Normal, 2=Fast, 3=Panorama
|
|---|
| 87 | * Value 2: Sequence Number Value 3:
|
|---|
| 88 | * 1 = Panorama Direction: Left to Right
|
|---|
| 89 | * 2 = Panorama Direction: Right to Left
|
|---|
| 90 | * 3 = Panorama Direction: Bottom to Top
|
|---|
| 91 | * 4 = Panorama Direction: Top to Bottom
|
|---|
| 92 | */
|
|---|
| 93 | public static final int TAG_OLYMPUS_SPECIAL_MODE = 0x0200;
|
|---|
| 94 |
|
|---|
| 95 | /**
|
|---|
| 96 | * 1 = Standard Quality
|
|---|
| 97 | * 2 = High Quality
|
|---|
| 98 | * 3 = Super High Quality
|
|---|
| 99 | */
|
|---|
| 100 | public static final int TAG_OLYMPUS_JPEG_QUALITY = 0x0201;
|
|---|
| 101 |
|
|---|
| 102 | /**
|
|---|
| 103 | * 0 = Normal (Not Macro)
|
|---|
| 104 | * 1 = Macro
|
|---|
| 105 | */
|
|---|
| 106 | public static final int TAG_OLYMPUS_MACRO_MODE = 0x0202;
|
|---|
| 107 |
|
|---|
| 108 | public static final int TAG_OLYMPUS_UNKNOWN_1 = 0x0203;
|
|---|
| 109 |
|
|---|
| 110 | /** Zoom Factor (0 or 1 = normal) */
|
|---|
| 111 | public static final int TAG_OLYMPUS_DIGI_ZOOM_RATIO = 0x0204;
|
|---|
| 112 | public static final int TAG_OLYMPUS_UNKNOWN_2 = 0x0205;
|
|---|
| 113 | public static final int TAG_OLYMPUS_UNKNOWN_3 = 0x0206;
|
|---|
| 114 | public static final int TAG_OLYMPUS_FIRMWARE_VERSION = 0x0207;
|
|---|
| 115 | public static final int TAG_OLYMPUS_PICT_INFO = 0x0208;
|
|---|
| 116 | public static final int TAG_OLYMPUS_CAMERA_ID = 0x0209;
|
|---|
| 117 |
|
|---|
| 118 | /**
|
|---|
| 119 | * Used by Epson cameras
|
|---|
| 120 | * Units = pixels
|
|---|
| 121 | */
|
|---|
| 122 | public static final int TAG_OLYMPUS_IMAGE_WIDTH = 0x020B;
|
|---|
| 123 |
|
|---|
| 124 | /**
|
|---|
| 125 | * Used by Epson cameras
|
|---|
| 126 | * Units = pixels
|
|---|
| 127 | */
|
|---|
| 128 | public static final int TAG_OLYMPUS_IMAGE_HEIGHT = 0x020C;
|
|---|
| 129 |
|
|---|
| 130 | /** A string. Used by Epson cameras. */
|
|---|
| 131 | public static final int TAG_OLYMPUS_ORIGINAL_MANUFACTURER_MODEL = 0x020D;
|
|---|
| 132 |
|
|---|
| 133 | /**
|
|---|
| 134 | * See the PIM specification here:
|
|---|
| 135 | * http://www.ozhiker.com/electronics/pjmt/jpeg_info/pim.html
|
|---|
| 136 | */
|
|---|
| 137 | public static final int TAG_OLYMPUS_PRINT_IMAGE_MATCHING_INFO = 0x0E00;
|
|---|
| 138 |
|
|---|
| 139 | public static final int TAG_OLYMPUS_DATA_DUMP = 0x0F00;
|
|---|
| 140 | public static final int TAG_OLYMPUS_FLASH_MODE = 0x1004;
|
|---|
| 141 | public static final int TAG_OLYMPUS_BRACKET = 0x1006;
|
|---|
| 142 | public static final int TAG_OLYMPUS_FOCUS_MODE = 0x100B;
|
|---|
| 143 | public static final int TAG_OLYMPUS_FOCUS_DISTANCE = 0x100C;
|
|---|
| 144 | public static final int TAG_OLYMPUS_ZOOM = 0x100D;
|
|---|
| 145 | public static final int TAG_OLYMPUS_MACRO_FOCUS = 0x100E;
|
|---|
| 146 | public static final int TAG_OLYMPUS_SHARPNESS = 0x100F;
|
|---|
| 147 | public static final int TAG_OLYMPUS_COLOUR_MATRIX = 0x1011;
|
|---|
| 148 | public static final int TAG_OLYMPUS_BLACK_LEVEL = 0x1012;
|
|---|
| 149 | public static final int TAG_OLYMPUS_WHITE_BALANCE = 0x1015;
|
|---|
| 150 | public static final int TAG_OLYMPUS_RED_BIAS = 0x1017;
|
|---|
| 151 | public static final int TAG_OLYMPUS_BLUE_BIAS = 0x1018;
|
|---|
| 152 | public static final int TAG_OLYMPUS_SERIAL_NUMBER = 0x101A;
|
|---|
| 153 | public static final int TAG_OLYMPUS_FLASH_BIAS = 0x1023;
|
|---|
| 154 | public static final int TAG_OLYMPUS_CONTRAST = 0x1029;
|
|---|
| 155 | public static final int TAG_OLYMPUS_SHARPNESS_FACTOR = 0x102A;
|
|---|
| 156 | public static final int TAG_OLYMPUS_COLOUR_CONTROL = 0x102B;
|
|---|
| 157 | public static final int TAG_OLYMPUS_VALID_BITS = 0x102C;
|
|---|
| 158 | public static final int TAG_OLYMPUS_CORING_FILTER = 0x102D;
|
|---|
| 159 | public static final int TAG_OLYMPUS_FINAL_WIDTH = 0x102E;
|
|---|
| 160 | public static final int TAG_OLYMPUS_FINAL_HEIGHT = 0x102F;
|
|---|
| 161 | public static final int TAG_OLYMPUS_COMPRESSION_RATIO = 0x1034;
|
|---|
| 162 |
|
|---|
| 163 | @NotNull
|
|---|
| 164 | protected static final HashMap<Integer, String> _tagNameMap = new HashMap<Integer, String>();
|
|---|
| 165 |
|
|---|
| 166 | static {
|
|---|
| 167 | _tagNameMap.put(TAG_OLYMPUS_SPECIAL_MODE, "Special Mode");
|
|---|
| 168 | _tagNameMap.put(TAG_OLYMPUS_JPEG_QUALITY, "Jpeg Quality");
|
|---|
| 169 | _tagNameMap.put(TAG_OLYMPUS_MACRO_MODE, "Macro");
|
|---|
| 170 | _tagNameMap.put(TAG_OLYMPUS_UNKNOWN_1, "Makernote Unknown 1");
|
|---|
| 171 | _tagNameMap.put(TAG_OLYMPUS_DIGI_ZOOM_RATIO, "DigiZoom Ratio");
|
|---|
| 172 | _tagNameMap.put(TAG_OLYMPUS_UNKNOWN_2, "Makernote Unknown 2");
|
|---|
| 173 | _tagNameMap.put(TAG_OLYMPUS_UNKNOWN_3, "Makernote Unknown 3");
|
|---|
| 174 | _tagNameMap.put(TAG_OLYMPUS_FIRMWARE_VERSION, "Firmware Version");
|
|---|
| 175 | _tagNameMap.put(TAG_OLYMPUS_PICT_INFO, "Pict Info");
|
|---|
| 176 | _tagNameMap.put(TAG_OLYMPUS_CAMERA_ID, "Camera Id");
|
|---|
| 177 | _tagNameMap.put(TAG_OLYMPUS_DATA_DUMP, "Data Dump");
|
|---|
| 178 | _tagNameMap.put(TAG_OLYMPUS_MAKERNOTE_VERSION, "Makernote Version");
|
|---|
| 179 | _tagNameMap.put(TAG_OLYMPUS_CAMERA_SETTINGS_1, "Camera Settings");
|
|---|
| 180 | _tagNameMap.put(TAG_OLYMPUS_CAMERA_SETTINGS_2, "Camera Settings");
|
|---|
| 181 | _tagNameMap.put(TAG_OLYMPUS_COMPRESSED_IMAGE_SIZE, "Compressed Image Size");
|
|---|
| 182 | _tagNameMap.put(TAG_OLYMPUS_MINOLTA_THUMBNAIL_OFFSET_1, "Thumbnail Offset");
|
|---|
| 183 | _tagNameMap.put(TAG_OLYMPUS_MINOLTA_THUMBNAIL_OFFSET_2, "Thumbnail Offset");
|
|---|
| 184 | _tagNameMap.put(TAG_OLYMPUS_MINOLTA_THUMBNAIL_LENGTH, "Thumbnail Length");
|
|---|
| 185 | _tagNameMap.put(TAG_OLYMPUS_COLOUR_MODE, "Colour Mode");
|
|---|
| 186 | _tagNameMap.put(TAG_OLYMPUS_IMAGE_QUALITY_1, "Image Quality");
|
|---|
| 187 | _tagNameMap.put(TAG_OLYMPUS_IMAGE_QUALITY_2, "Image Quality");
|
|---|
| 188 | _tagNameMap.put(TAG_OLYMPUS_IMAGE_HEIGHT, "Image Height");
|
|---|
| 189 | _tagNameMap.put(TAG_OLYMPUS_IMAGE_WIDTH, "Image Width");
|
|---|
| 190 | _tagNameMap.put(TAG_OLYMPUS_ORIGINAL_MANUFACTURER_MODEL, "Original Manufacturer Model");
|
|---|
| 191 | _tagNameMap.put(TAG_OLYMPUS_PRINT_IMAGE_MATCHING_INFO, "Print Image Matching (PIM) Info");
|
|---|
| 192 | _tagNameMap.put(TAG_OLYMPUS_FLASH_MODE, "Flash Mode");
|
|---|
| 193 | _tagNameMap.put(TAG_OLYMPUS_BRACKET, "Bracket");
|
|---|
| 194 | _tagNameMap.put(TAG_OLYMPUS_FOCUS_MODE, "Focus Mode");
|
|---|
| 195 | _tagNameMap.put(TAG_OLYMPUS_FOCUS_DISTANCE, "Focus Distance");
|
|---|
| 196 | _tagNameMap.put(TAG_OLYMPUS_ZOOM, "Zoom");
|
|---|
| 197 | _tagNameMap.put(TAG_OLYMPUS_MACRO_FOCUS, "Macro Focus");
|
|---|
| 198 | _tagNameMap.put(TAG_OLYMPUS_SHARPNESS, "Sharpness");
|
|---|
| 199 | _tagNameMap.put(TAG_OLYMPUS_COLOUR_MATRIX, "Colour Matrix");
|
|---|
| 200 | _tagNameMap.put(TAG_OLYMPUS_BLACK_LEVEL, "Black Level");
|
|---|
| 201 | _tagNameMap.put(TAG_OLYMPUS_WHITE_BALANCE, "White Balance");
|
|---|
| 202 | _tagNameMap.put(TAG_OLYMPUS_RED_BIAS, "Red Bias");
|
|---|
| 203 | _tagNameMap.put(TAG_OLYMPUS_BLUE_BIAS, "Blue Bias");
|
|---|
| 204 | _tagNameMap.put(TAG_OLYMPUS_SERIAL_NUMBER, "Serial Number");
|
|---|
| 205 | _tagNameMap.put(TAG_OLYMPUS_FLASH_BIAS, "Flash Bias");
|
|---|
| 206 | _tagNameMap.put(TAG_OLYMPUS_CONTRAST, "Contrast");
|
|---|
| 207 | _tagNameMap.put(TAG_OLYMPUS_SHARPNESS_FACTOR, "Sharpness Factor");
|
|---|
| 208 | _tagNameMap.put(TAG_OLYMPUS_COLOUR_CONTROL, "Colour Control");
|
|---|
| 209 | _tagNameMap.put(TAG_OLYMPUS_VALID_BITS, "Valid Bits");
|
|---|
| 210 | _tagNameMap.put(TAG_OLYMPUS_CORING_FILTER, "Coring Filter");
|
|---|
| 211 | _tagNameMap.put(TAG_OLYMPUS_FINAL_WIDTH, "Final Width");
|
|---|
| 212 | _tagNameMap.put(TAG_OLYMPUS_FINAL_HEIGHT, "Final Height");
|
|---|
| 213 | _tagNameMap.put(TAG_OLYMPUS_COMPRESSION_RATIO, "Compression Ratio");
|
|---|
| 214 | }
|
|---|
| 215 |
|
|---|
| 216 | public OlympusMakernoteDirectory()
|
|---|
| 217 | {
|
|---|
| 218 | this.setDescriptor(new OlympusMakernoteDescriptor(this));
|
|---|
| 219 | }
|
|---|
| 220 |
|
|---|
| 221 | @NotNull
|
|---|
| 222 | public String getName()
|
|---|
| 223 | {
|
|---|
| 224 | return "Olympus Makernote";
|
|---|
| 225 | }
|
|---|
| 226 |
|
|---|
| 227 | @NotNull
|
|---|
| 228 | protected HashMap<Integer, String> getTagNameMap()
|
|---|
| 229 | {
|
|---|
| 230 | return _tagNameMap;
|
|---|
| 231 | }
|
|---|
| 232 | }
|
|---|