Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: com/drew/metadata/exif/OlympusMakernoteDescriptor.java


1   /*
2    * Created by dnoakes on 27-Nov-2002 10:12:05 using IntelliJ IDEA.
3    */
4   package com.drew.metadata.exif;
5   
6   import com.drew.metadata.Directory;
7   import com.drew.metadata.MetadataException;
8   import com.drew.metadata.TagDescriptor;
9   
10  /**
11   *
12   */
13  public class OlympusMakernoteDescriptor extends TagDescriptor
14  {
15      public OlympusMakernoteDescriptor(Directory directory)
16      {
17          super(directory);
18      }
19  
20      public String getDescription(int tagType) throws MetadataException
21      {
22          switch (tagType) {
23              case OlympusMakernoteDirectory.TAG_OLYMPUS_SPECIAL_MODE:
24                  return getSpecialModeDescription();
25              case OlympusMakernoteDirectory.TAG_OLYMPUS_JPEG_QUALITY:
26                  return getJpegQualityDescription();
27              case OlympusMakernoteDirectory.TAG_OLYMPUS_MACRO_MODE:
28                  return getMacroModeDescription();
29              case OlympusMakernoteDirectory.TAG_OLYMPUS_DIGI_ZOOM_RATIO:
30                  return getDigiZoomRatioDescription();
31              default:
32                  return _directory.getString(tagType);
33          }
34      }
35  
36      private String getDigiZoomRatioDescription() throws MetadataException
37      {
38          if (!_directory.containsTag(OlympusMakernoteDirectory.TAG_OLYMPUS_DIGI_ZOOM_RATIO)) return null;
39          int value = _directory.getInt(OlympusMakernoteDirectory.TAG_OLYMPUS_DIGI_ZOOM_RATIO);
40          switch (value) {
41              case 0:
42                  return "Normal";
43              case 2:
44                  return "Digital 2x Zoom";
45              default:
46                  return "Unknown (" + value + ")";
47          }
48      }
49  
50      private String getMacroModeDescription() throws MetadataException
51      {
52          if (!_directory.containsTag(OlympusMakernoteDirectory.TAG_OLYMPUS_MACRO_MODE)) return null;
53          int value = _directory.getInt(OlympusMakernoteDirectory.TAG_OLYMPUS_MACRO_MODE);
54          switch (value) {
55              case 0:
56                  return "Normal (no macro)";
57              case 1:
58                  return "Macro";
59              default:
60                  return "Unknown (" + value + ")";
61          }
62      }
63  
64      private String getJpegQualityDescription() throws MetadataException
65      {
66          if (!_directory.containsTag(OlympusMakernoteDirectory.TAG_OLYMPUS_JPEG_QUALITY)) return null;
67          int value = _directory.getInt(OlympusMakernoteDirectory.TAG_OLYMPUS_JPEG_QUALITY);
68          switch (value) {
69              case 1:
70                  return "SQ";
71              case 2:
72                  return "HQ";
73              case 3:
74                  return "SHQ";
75              default:
76                  return "Unknown (" + value + ")";
77          }
78      }
79  
80      private String getSpecialModeDescription() throws MetadataException
81      {
82          if (!_directory.containsTag(OlympusMakernoteDirectory.TAG_OLYMPUS_SPECIAL_MODE)) return null;
83          int[] values = _directory.getIntArray(OlympusMakernoteDirectory.TAG_OLYMPUS_SPECIAL_MODE);
84          StringBuffer desc = new StringBuffer();
85          switch (values[0]) {
86              case 0:
87                  desc.append("Normal picture taking mode");
88                  break;
89              case 1:
90                  desc.append("Unknown picture taking mode");
91                  break;
92              case 2:
93                  desc.append("Fast picture taking mode");
94                  break;
95              case 3:
96                  desc.append("Panorama picture taking mode");
97                  break;
98              default:
99                  desc.append("Unknown picture taking mode");
100                 break;
101         }
102         desc.append(" - ");
103         switch (values[1]) {
104             case 0:
105                 desc.append("Unknown sequence number");
106                 break;
107             case 1:
108                 desc.append("1st in a sequnce");
109                 break;
110             case 2:
111                 desc.append("2nd in a sequence");
112                 break;
113             case 3:
114                 desc.append("3rd in a sequence");
115                 break;
116             default:
117                 desc.append(values[1]);
118                 desc.append("th in a sequence");
119                 break;
120         }
121         switch (values[2]) {
122             case 1:
123                 desc.append("Left to right panorama direction");
124                 break;
125             case 2:
126                 desc.append("Right to left panorama direction");
127                 break;
128             case 3:
129                 desc.append("Bottom to top panorama direction");
130                 break;
131             case 4:
132                 desc.append("Top to bottom panorama direction");
133                 break;
134         }
135         return desc.toString();
136     }
137 }