source: josm/trunk/src/com/drew/metadata/exif/CasioType1MakernoteDescriptor.java@ 6209

Last change on this file since 6209 was 6127, checked in by bastiK, 11 years ago

applied #8895 - Upgrade metadata-extractor to v. 2.6.4 (patch by ebourg)

File size: 9.7 KB
Line 
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 */
21package com.drew.metadata.exif;
22
23import com.drew.lang.annotations.NotNull;
24import com.drew.lang.annotations.Nullable;
25import com.drew.metadata.TagDescriptor;
26
27/**
28 * Provides human-readable string representations of tag values stored in a <code>CasioType1MakernoteDirectory</code>.
29 *
30 * @author Drew Noakes http://drewnoakes.com
31 */
32public class CasioType1MakernoteDescriptor extends TagDescriptor<CasioType1MakernoteDirectory>
33{
34 public CasioType1MakernoteDescriptor(@NotNull CasioType1MakernoteDirectory directory)
35 {
36 super(directory);
37 }
38
39 @Nullable
40 public String getDescription(int tagType)
41 {
42 switch (tagType) {
43 case CasioType1MakernoteDirectory.TAG_CASIO_RECORDING_MODE:
44 return getRecordingModeDescription();
45 case CasioType1MakernoteDirectory.TAG_CASIO_QUALITY:
46 return getQualityDescription();
47 case CasioType1MakernoteDirectory.TAG_CASIO_FOCUSING_MODE:
48 return getFocusingModeDescription();
49 case CasioType1MakernoteDirectory.TAG_CASIO_FLASH_MODE:
50 return getFlashModeDescription();
51 case CasioType1MakernoteDirectory.TAG_CASIO_FLASH_INTENSITY:
52 return getFlashIntensityDescription();
53 case CasioType1MakernoteDirectory.TAG_CASIO_OBJECT_DISTANCE:
54 return getObjectDistanceDescription();
55 case CasioType1MakernoteDirectory.TAG_CASIO_WHITE_BALANCE:
56 return getWhiteBalanceDescription();
57 case CasioType1MakernoteDirectory.TAG_CASIO_DIGITAL_ZOOM:
58 return getDigitalZoomDescription();
59 case CasioType1MakernoteDirectory.TAG_CASIO_SHARPNESS:
60 return getSharpnessDescription();
61 case CasioType1MakernoteDirectory.TAG_CASIO_CONTRAST:
62 return getContrastDescription();
63 case CasioType1MakernoteDirectory.TAG_CASIO_SATURATION:
64 return getSaturationDescription();
65 case CasioType1MakernoteDirectory.TAG_CASIO_CCD_SENSITIVITY:
66 return getCcdSensitivityDescription();
67 default:
68 return super.getDescription(tagType);
69 }
70 }
71
72 @Nullable
73 public String getCcdSensitivityDescription()
74 {
75 Integer value = _directory.getInteger(CasioType1MakernoteDirectory.TAG_CASIO_CCD_SENSITIVITY);
76
77 if (value == null)
78 return null;
79
80 switch (value) {
81 // these four for QV3000
82 case 64:
83 return "Normal";
84 case 125:
85 return "+1.0";
86 case 250:
87 return "+2.0";
88 case 244:
89 return "+3.0";
90 // these two for QV8000/2000
91 case 80:
92 return "Normal (ISO 80 equivalent)";
93 case 100:
94 return "High";
95 default:
96 return "Unknown (" + value + ")";
97 }
98 }
99
100 @Nullable
101 public String getSaturationDescription()
102 {
103 Integer value = _directory.getInteger(CasioType1MakernoteDirectory.TAG_CASIO_SATURATION);
104
105 if (value == null)
106 return null;
107
108 switch (value) {
109 case 0:
110 return "Normal";
111 case 1:
112 return "Low";
113 case 2:
114 return "High";
115 default:
116 return "Unknown (" + value + ")";
117 }
118 }
119
120 @Nullable
121 public String getContrastDescription()
122 {
123 Integer value = _directory.getInteger(CasioType1MakernoteDirectory.TAG_CASIO_CONTRAST);
124
125 if (value == null)
126 return null;
127
128 switch (value) {
129 case 0:
130 return "Normal";
131 case 1:
132 return "Low";
133 case 2:
134 return "High";
135 default:
136 return "Unknown (" + value + ")";
137 }
138 }
139
140 @Nullable
141 public String getSharpnessDescription()
142 {
143 Integer value = _directory.getInteger(CasioType1MakernoteDirectory.TAG_CASIO_SHARPNESS);
144
145 if (value == null)
146 return null;
147
148 switch (value) {
149 case 0:
150 return "Normal";
151 case 1:
152 return "Soft";
153 case 2:
154 return "Hard";
155 default:
156 return "Unknown (" + value + ")";
157 }
158 }
159
160 @Nullable
161 public String getDigitalZoomDescription()
162 {
163 Integer value = _directory.getInteger(CasioType1MakernoteDirectory.TAG_CASIO_DIGITAL_ZOOM);
164
165 if (value == null)
166 return null;
167
168 switch (value) {
169 case 0x10000:
170 return "No digital zoom";
171 case 0x10001:
172 return "2x digital zoom";
173 case 0x20000:
174 return "2x digital zoom";
175 case 0x40000:
176 return "4x digital zoom";
177 default:
178 return "Unknown (" + value + ")";
179 }
180 }
181
182 @Nullable
183 public String getWhiteBalanceDescription()
184 {
185 Integer value = _directory.getInteger(CasioType1MakernoteDirectory.TAG_CASIO_WHITE_BALANCE);
186
187 if (value == null)
188 return null;
189
190 switch (value) {
191 case 1:
192 return "Auto";
193 case 2:
194 return "Tungsten";
195 case 3:
196 return "Daylight";
197 case 4:
198 return "Florescent";
199 case 5:
200 return "Shade";
201 case 129:
202 return "Manual";
203 default:
204 return "Unknown (" + value + ")";
205 }
206 }
207
208 @Nullable
209 public String getObjectDistanceDescription()
210 {
211 Integer value = _directory.getInteger(CasioType1MakernoteDirectory.TAG_CASIO_OBJECT_DISTANCE);
212
213 if (value == null)
214 return null;
215
216 return value + " mm";
217 }
218
219 @Nullable
220 public String getFlashIntensityDescription()
221 {
222 Integer value = _directory.getInteger(CasioType1MakernoteDirectory.TAG_CASIO_FLASH_INTENSITY);
223
224 if (value == null)
225 return null;
226
227 switch (value) {
228 case 11:
229 return "Weak";
230 case 13:
231 return "Normal";
232 case 15:
233 return "Strong";
234 default:
235 return "Unknown (" + value + ")";
236 }
237 }
238
239 @Nullable
240 public String getFlashModeDescription()
241 {
242 Integer value = _directory.getInteger(CasioType1MakernoteDirectory.TAG_CASIO_FLASH_MODE);
243
244 if (value == null)
245 return null;
246
247 switch (value) {
248 case 1:
249 return "Auto";
250 case 2:
251 return "On";
252 case 3:
253 return "Off";
254 case 4:
255 // this documented as additional value for off here:
256 // http://www.ozhiker.com/electronics/pjmt/jpeg_info/casio_mn.html
257 return "Red eye reduction";
258 default:
259 return "Unknown (" + value + ")";
260 }
261 }
262
263 @Nullable
264 public String getFocusingModeDescription()
265 {
266 Integer value = _directory.getInteger(CasioType1MakernoteDirectory.TAG_CASIO_FOCUSING_MODE);
267
268 if (value == null)
269 return null;
270
271 switch (value) {
272 case 2:
273 return "Macro";
274 case 3:
275 return "Auto focus";
276 case 4:
277 return "Manual focus";
278 case 5:
279 return "Infinity";
280 default:
281 return "Unknown (" + value + ")";
282 }
283 }
284
285 @Nullable
286 public String getQualityDescription()
287 {
288 Integer value = _directory.getInteger(CasioType1MakernoteDirectory.TAG_CASIO_QUALITY);
289
290 if (value == null)
291 return null;
292
293 switch (value) {
294 case 1:
295 return "Economy";
296 case 2:
297 return "Normal";
298 case 3:
299 return "Fine";
300 default:
301 return "Unknown (" + value + ")";
302 }
303 }
304
305 @Nullable
306 public String getRecordingModeDescription()
307 {
308 Integer value = _directory.getInteger(CasioType1MakernoteDirectory.TAG_CASIO_RECORDING_MODE);
309
310 if (value == null)
311 return null;
312
313 switch (value) {
314 case 1:
315 return "Single shutter";
316 case 2:
317 return "Panorama";
318 case 3:
319 return "Night scene";
320 case 4:
321 return "Portrait";
322 case 5:
323 return "Landscape";
324 default:
325 return "Unknown (" + value + ")";
326 }
327 }
328}
Note: See TracBrowser for help on using the repository browser.