unit umakernote; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, ComCtrls; type TfMakerNote = class(TForm) lblMakerNotes: TLabel; Panel1: TPanel; ListView1: TListView; cmbMakerNotes: TComboBox; procedure cmbMakerNotesChange(Sender: TObject); procedure FormActivate(Sender: TObject); private { Private declarations } procedure UpdateMakerNotes(); public { Public declarations } end; var fMakerNote: TfMakerNote; implementation uses umain; {$R *.DFM} procedure TfMakerNote.cmbMakerNotesChange(Sender: TObject); begin UpdateMakerNotes(); end; procedure TfMakerNote.FormActivate(Sender: TObject); begin cmbMakerNotes.ItemIndex := 0; UpdateMakerNotes(); end; procedure TfMakerNote.UpdateMakerNotes(); var i:integer; tag:string; procedure AddTag(const desc: string); begin with ListView1.Items.Add do begin Caption := tag; SubItems.Append( desc ); end; end; begin ListView1.Items.Clear; with MainForm.ImageEnView1.IO.Params.EXIF_MakerNote do begin cmbMakerNotes.Enabled := Data.Size > 0; if Data.Size = 0 then begin // NO MAKER NOTES tag := ''; AddTag( 'No maker notes found' ); end else if cmbMakerNotes.ItemIndex > 0 then begin // NIKON MAKER NOTE // Source: http://www.tawbaware.com/990exif.htm tag := 'Color mode'; AddTag( Trim( GetString(3))); tag := 'Image quality setting'; AddTag( Trim( GetString(4))); tag := 'White balance'; AddTag( Trim( GetString(5))); tag := 'Image sharpening setting'; AddTag( Trim( GetString(6))); tag := 'Focus mode'; AddTag( Trim( GetString(7))); tag := 'Flash setting'; AddTag( Trim( GetString(8))); tag := 'ISO selection'; AddTag( Trim( GetString(15))); tag := 'Image adjustment setting'; AddTag( Trim( GetString(128))); tag := 'Auxiliary lens (adapter)'; AddTag( Trim( GetString(130))); tag := 'Manual focus distance'; AddTag( FloatToStr(GetRational(133))); tag := 'Digital zoom setting'; AddTag( FloatToStr(GetRational(134))); end else begin // CANON MAKER NOTE // Source: http://www.burren.cx/david/canon.html // Macro Mode tag:='Macro mode'; case GetIntegerIndexed(1, 1) of 1: AddTag('Macro'); 2: AddTag('Normal'); end; // Self timer tag:='Self timer'; i:=GetIntegerIndexed(1, 2); if i=0 then AddTag('Off') else AddTag(floattostr(i/10)+' s'); // Quality tag:='Quality'; case GetIntegerIndexed(1, 3) of 2: AddTag('Normal'); 3: AddTag('Fine'); 5: AddTag('Superfine'); end; // Flash mode tag:='Flash mode'; case GetIntegerIndexed(1, 4) of 0: AddTag('Flash not fired'); 1: AddTag('Auto'); 2: AddTag('On'); 3: AddTag('Red-eye reduction'); 4: AddTag('Slow synchro'); 5: AddTag('Auto + Red-eye reduction'); 6: AddTag('On + Red-eye reduction'); 16: AddTag('External flash'); end; // Continuous drive mode tag:='Continuous drive mode'; case GetIntegerIndexed(1, 5) of 0: AddTag('Single or Timer'); 1: AddTag('Continuous'); end; // Focus Mode tag:='Focus Mode'; case GetIntegerIndexed(1, 7) of 0: AddTag('One-Shot'); 1: AddTag('AI Servo'); 2: AddTag('AI Focus'); 3: AddTag('MF'); 4: AddTag('Single'); 5: AddTag('Continuous'); 6: AddTag('MF'); end; // Image size tag:='Image size'; case GetIntegerIndexed(1, 8) of 0: AddTag('Large'); 1: AddTag('Medium'); 2: AddTag('Small'); end; // "Easy shooting" mode tag:='"Easy shooting" mode'; case GetIntegerIndexed(1, 11) of 0: AddTag('Full Auto'); 1: AddTag('Manual'); 2: AddTag('Landscape'); 3: AddTag('Fast Shutter'); 4: AddTag('Slow Shutter'); 5: AddTag('Night'); 6: AddTag('B&W'); 7: AddTag('Sepia'); 8: AddTag('Portrait'); 9: AddTag('Sports'); 10: AddTag('Macro / Close-Up'); 11: AddTag('Pan Focus'); end; // Digital Zoom tag:='Digital Zoom'; case GetIntegerIndexed(1, 12) of 0: AddTag('None'); 1: AddTag('2x'); 2: AddTag('4x'); end; // Contrast tag:='Contrast'; case GetIntegerIndexed(1, 13) of $ffff: AddTag('Low'); $0000: AddTag('Normal'); $0001: AddTag('High'); end; // Saturation tag:='Saturation'; case GetIntegerIndexed(1, 14) of $ffff: AddTag('Low'); $0000: AddTag('Normal'); $0001: AddTag('High'); end; // Sharpness tag:='Sharpness'; case GetIntegerIndexed(1, 15) of $ffff: AddTag('Low'); $0000: AddTag('Normal'); $0001: AddTag('High'); end; // ISO tag:='ISO'; case GetIntegerIndexed(1, 16) of 15: AddTag('Auto'); 16: AddTag('50'); 17: AddTag('100'); 18: AddTag('200'); 19: AddTag('400'); end; // Metering mode tag:='Metering mode'; case GetIntegerIndexed(1, 17) of 3: AddTag('Evaluative'); 4: AddTag('Partial'); 5: AddTag('Center-weighted'); end; // Focus type tag:='Focus type'; case GetIntegerIndexed(1, 18) of 0: AddTag('Manual'); 1: AddTag('Auto'); 3: AddTag('Close-up (macro)'); 8: AddTag('Locked (pan mode)'); end; // AF point selected tag:='AF point selected'; case GetIntegerIndexed(1, 19) of $3000: AddTag('None (MF)'); $3001: AddTag('Auto-selected'); $3002: AddTag('Right'); $3003: AddTag('Center'); $3004: AddTag('Left'); end; // Exposure mode tag:='Exposure mode'; case GetIntegerIndexed(1, 20) of 0: AddTag('"Easy shooting" (use field 11)'); 1: AddTag('Program'); 2: AddTag('Tv-priority'); 3: AddTag('Av-priority'); 4: AddTag('Manual'); 5: AddTag('A-DEP'); end; // Focal length tag:='Focal length'; i:=GetIntegerIndexed(1, 25); // "focal units" per mm if i <> 0 then AddTag(FloatToStr(GetIntegerIndexed(1,24)/i)+' - '+FloatToStr(GetIntegerIndexed(1,23)/i)); // Flash Activity tag:='Flash Activity'; case GetIntegerIndexed(1, 28) of 0: AddTag('Did not fire'); 1: AddTag('fired'); end; // Flash details tag:='Flash details'; i:=GetIntegerIndexed(1, 29); if i and (1 shl 14) <> 0 then AddTag('External E-TTL'); if i and (1 shl 13) <> 0 then AddTag('Internal flash'); if i and (1 shl 11) <> 0 then AddTag('FP sync used'); if i and (1 shl 7) <> 0 then AddTag('2nd("rear")-curtain sync used'); if i and (1 shl 4) <> 0 then AddTag('FP sync enabled'); // Focus mode tag:='Focus mode'; case GetIntegerIndexed(1, 32) of 0: AddTag('Single'); 1: AddTag('Continuous'); end; // White balance tag:='White balance'; case GetIntegerIndexed(4, 7) of 0: AddTag('Auto'); 1: AddTag('Sunny'); 2: AddTag('Cloudy'); 3: AddTag('Tungsten'); 4: AddTag('Flourescent'); 5: AddTag('Flash'); 6: AddTag('Custom'); end; // Sequence number tag:='Sequence number'; AddTag(inttostr( GetIntegerIndexed(4, 9) )); // AF point used tag:='AF point used'; i:=GetIntegerIndexed(4, 14); if i and (1 shl 2) <> 0 then AddTag('Left'); if i and (1 shl 1) <> 0 then AddTag('Center'); if i and (1 shl 0) <> 0 then AddTag('Right'); // Flash bias tag:='Flash bias'; case GetIntegerIndexed(4, 15) of $ffc0: AddTag('-2 EV'); $ffcc: AddTag('-1.67 EV'); $ffd0: AddTag('-1.50 EV'); $ffd4: AddTag('-1.33 EV'); $ffe0: AddTag('-1 EV'); $ffec: AddTag('-0.67 EV'); $fff0: AddTag('-0.50 EV'); $fff4: AddTag('-0.33 EV'); $0000: AddTag('0 EV'); $000c: AddTag('0.33 EV'); $0010: AddTag('0.50 EV'); $0014: AddTag('0.67 EV'); $0020: AddTag('1 EV'); $002c: AddTag('1.33 EV'); $0030: AddTag('1.50 EV'); $0034: AddTag('1.67 EV'); $0040: AddTag('2 EV'); end; // Subject Distance tag:='Subject Distance'; AddTag( IntToStr(GetIntegerIndexed(4, 19)) ); // Image type tag:='Image type'; AddTag( GetString(6) ); // Firmware version tag:='Firmware version'; AddTag( GetString(7) ); // Image Number tag:='Image Number'; AddTag( inttostr(GetInteger(8)) ); // Owner name tag:='Owner name'; AddTag( GetString(9) ); // Camera serial number tag:='Camera serial number'; AddTag( inttostr(GetInteger($c)) ); end; end; end; end.