1
// ==========================================================
2
// FreeImage 3 .NET wrapper
3
// Original FreeImage 3 functions and .NET compatible derived functions
5
// Design and implementation by
6
// - Jean-Philippe Goerke (jpgoerke@users.sourceforge.net)
7
// - Carsten Klein (cklein05@users.sourceforge.net)
10
// - David Boland (davidboland@vodafone.ie)
12
// Main reference : MSDN Knowlede Base
14
// This file is part of FreeImage 3
16
// COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTY
17
// OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES
18
// THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE
19
// OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED
20
// CODE IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT
21
// THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY
22
// SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL
23
// PART OF THIS LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER
26
// Use at your own risk!
27
// ==========================================================
29
// ==========================================================
32
// $Date: 2009/09/15 11:49:24 $
33
// $Id: MetadataModels.cs,v 1.6 2009/09/15 11:49:24 cklein05 Exp $
34
// ==========================================================
41
namespace FreeImageAPI.Metadata
44
/// Represents a collection of all tags contained in the metadata model
45
/// <see cref="FREE_IMAGE_MDMODEL.FIMD_ANIMATION"/>.
47
public class MDM_ANIMATION : MetadataModel
50
/// Initializes a new instance of this class.
52
/// <param name="dib">Handle to a FreeImage bitmap.</param>
53
public MDM_ANIMATION(FIBITMAP dib) : base(dib) { }
56
/// Retrieves the datamodel that this instance represents.
58
public override FREE_IMAGE_MDMODEL Model
60
get { return FREE_IMAGE_MDMODEL.FIMD_ANIMATION; }
64
/// Gets or sets the width of the entire canvas area, that each page is displayed in.
67
/// <b>Handling of null values</b><para/>
68
/// A null value indicates, that the corresponding metadata tag is not
69
/// present in the metadata model.
70
/// Setting this property's value to a non-null reference creates the
71
/// metadata tag if necessary.
72
/// Setting this property's value to a null reference deletes the
73
/// metadata tag from the metadata model.
75
public ushort? LogicalWidth
79
return GetTagValue<ushort>("LogicalWidth");
83
SetTagValue("LogicalWidth", value);
88
/// Gets or sets the height of the entire canvas area, that each page is displayed in.
91
/// <b>Handling of null values</b><para/>
92
/// A null value indicates, that the corresponding metadata tag is not
93
/// present in the metadata model.
94
/// Setting this property's value to a non-null reference creates the
95
/// metadata tag if necessary.
96
/// Setting this property's value to a null reference deletes the
97
/// metadata tag from the metadata model.
99
public ushort? LogicalHeight
103
return GetTagValue<ushort>("LogicalHeight");
107
SetTagValue("LogicalHeight", value);
112
/// Gets or sets the global palette of the GIF image.
115
/// <b>Handling of null values</b><para/>
116
/// A null value indicates, that the corresponding metadata tag is not
117
/// present in the metadata model.
118
/// Setting this property's value to a non-null reference creates the
119
/// metadata tag if necessary.
120
/// Setting this property's value to a null reference deletes the
121
/// metadata tag from the metadata model.
123
public Palette GlobalPalette
127
MetadataTag mdtag = GetTag("GlobalPalette");
128
return (mdtag == null) ? null : new Palette(mdtag);
132
SetTagValue("GlobalPalette", (value != null) ? null : value.Data);
137
/// Gets or sets the number of replays for the animation.
138
/// Use 0 (zero) to specify an infinte number of replays.
141
/// <b>Handling of null values</b><para/>
142
/// A null value indicates, that the corresponding metadata tag is not
143
/// present in the metadata model.
144
/// Setting this property's value to a non-null reference creates the
145
/// metadata tag if necessary.
146
/// Setting this property's value to a null reference deletes the
147
/// metadata tag from the metadata model.
149
public uint? LoopCount
153
return GetTagValue<uint>("Loop");
157
SetTagValue("Loop", value);
162
/// Gets or sets the horizontal offset within the logical canvas area, this frame is to be displayed at.
165
/// <b>Handling of null values</b><para/>
166
/// A null value indicates, that the corresponding metadata tag is not
167
/// present in the metadata model.
168
/// Setting this property's value to a non-null reference creates the
169
/// metadata tag if necessary.
170
/// Setting this property's value to a null reference deletes the
171
/// metadata tag from the metadata model.
173
public ushort? FrameLeft
177
return GetTagValue<ushort>("FrameLeft");
181
SetTagValue("FrameLeft", value);
186
/// Gets or sets the vertical offset within the logical canvas area, this frame is to be displayed at.
189
/// <b>Handling of null values</b><para/>
190
/// A null value indicates, that the corresponding metadata tag is not
191
/// present in the metadata model.
192
/// Setting this property's value to a non-null reference creates the
193
/// metadata tag if necessary.
194
/// Setting this property's value to a null reference deletes the
195
/// metadata tag from the metadata model.
197
public ushort? FrameTop
201
return GetTagValue<ushort>("FrameTop");
205
SetTagValue("FrameTop", value);
210
/// Gets or sets a flag to supress saving the dib's attached palette
211
/// (making it use the global palette). The local palette is the palette used by a page.
214
/// <b>Handling of null values</b><para/>
215
/// A null value indicates, that the corresponding metadata tag is not
216
/// present in the metadata model.
217
/// Setting this property's value to a non-null reference creates the
218
/// metadata tag if necessary.
219
/// Setting this property's value to a null reference deletes the
220
/// metadata tag from the metadata model.
222
public bool? NoLocalPalette
226
byte? useGlobalPalette = GetTagValue<byte>("NoLocalPalette");
227
return useGlobalPalette.HasValue ? (useGlobalPalette.Value != 0) : default(bool?);
234
val = (byte)(value.Value ? 1 : 0);
236
SetTagValue("NoLocalPalette", val);
241
/// Gets or sets a value indicating whether the image is interlaced.
244
/// <b>Handling of null values</b><para/>
245
/// A null value indicates, that the corresponding metadata tag is not
246
/// present in the metadata model.
247
/// Setting this property's value to a non-null reference creates the
248
/// metadata tag if necessary.
249
/// Setting this property's value to a null reference deletes the
250
/// metadata tag from the metadata model.
252
public bool? Interlaced
256
byte? useGlobalPalette = GetTagValue<byte>("Interlaced");
257
return useGlobalPalette.HasValue ? (useGlobalPalette.Value != 0) : default(bool?);
264
val = (byte)(value.Value ? 1 : 0);
266
SetTagValue("Interlaced", val);
271
/// Gets or sets the amout of time in milliseconds this frame is to be displayed.
274
/// <b>Handling of null values</b><para/>
275
/// A null value indicates, that the corresponding metadata tag is not
276
/// present in the metadata model.
277
/// Setting this property's value to a non-null reference creates the
278
/// metadata tag if necessary.
279
/// Setting this property's value to a null reference deletes the
280
/// metadata tag from the metadata model.
282
public uint? FrameTime
286
return GetTagValue<uint>("FrameTime");
290
SetTagValue("FrameTime", value);
295
/// Gets or sets this frame's disposal method. Generally, this method defines, how to
296
/// remove or replace a frame when the next frame has to be drawn.<para/>
299
/// <b>Handling of null values</b><para/>
300
/// A null value indicates, that the corresponding metadata tag is not
301
/// present in the metadata model.
302
/// Setting this property's value to a non-null reference creates the
303
/// metadata tag if necessary.
304
/// Setting this property's value to a null reference deletes the
305
/// metadata tag from the metadata model.
307
public DisposalMethodType? DisposalMethod
311
return GetTagValue<DisposalMethodType>("DisposalMethod");
315
SetTagValue("DisposalMethod", value);
321
/// Represents a collection of all tags contained in the metadata model
322
/// <see cref="FREE_IMAGE_MDMODEL.FIMD_COMMENTS"/>.
324
public class MDM_COMMENTS : MetadataModel
327
/// Initializes a new instance of this class.
329
/// <param name="dib">Handle to a FreeImage bitmap.</param>
330
public MDM_COMMENTS(FIBITMAP dib) : base(dib) { }
333
/// Retrieves the datamodel that this instance represents.
335
public override FREE_IMAGE_MDMODEL Model
337
get { return FREE_IMAGE_MDMODEL.FIMD_COMMENTS; }
341
/// Gets or sets the comment of the image.
342
/// Supported formats are JPEG, PNG and GIF.
345
/// <b>Handling of null values</b><para/>
346
/// A null value indicates, that the corresponding metadata tag is not
347
/// present in the metadata model.
348
/// Setting this property's value to a non-null reference creates the
349
/// metadata tag if necessary.
350
/// Setting this property's value to a null reference deletes the
351
/// metadata tag from the metadata model.
353
public string Comment
357
return GetTagText("Comment");
361
SetTagValue("Comment", value);
367
/// Represents a collection of all tags contained in the metadata model
368
/// <see cref="FREE_IMAGE_MDMODEL.FIMD_CUSTOM"/>.
370
public class MDM_CUSTOM : MetadataModel
373
/// Initializes a new instance of this class.
375
/// <param name="dib">Handle to a FreeImage bitmap.</param>
376
public MDM_CUSTOM(FIBITMAP dib) : base(dib) { }
379
/// Retrieves the datamodel that this instance represents.
381
public override FREE_IMAGE_MDMODEL Model
383
get { return FREE_IMAGE_MDMODEL.FIMD_CUSTOM; }
388
/// Represents a collection of all tags contained in the metadata model
389
/// <see cref="FREE_IMAGE_MDMODEL.FIMD_EXIF_EXIF"/>.
391
public class MDM_EXIF_EXIF : MetadataModel
394
/// Initializes a new instance of this class.
396
/// <param name="dib">Handle to a FreeImage bitmap.</param>
397
public MDM_EXIF_EXIF(FIBITMAP dib) : base(dib) { }
400
/// Retrieves the datamodel that this instance represents.
402
public override FREE_IMAGE_MDMODEL Model
404
get { return FREE_IMAGE_MDMODEL.FIMD_EXIF_EXIF; }
408
/// Gets or sets the version of this standard supported.
409
/// Constant length or 4.
412
/// <b>Handling of null values</b><para/>
413
/// A null value indicates, that the corresponding metadata tag is not
414
/// present in the metadata model.
415
/// Setting this property's value to a non-null reference creates the
416
/// metadata tag if necessary.
417
/// Setting this property's value to a null reference deletes the
418
/// metadata tag from the metadata model.
420
public byte[] ExifVersion
424
return GetTagArray<byte>("ExifVersion");
428
FreeImage.Resize(ref value, 4);
429
SetTagValueUndefined("ExifVersion", value);
434
/// Gets or sets the Flashpix format version supported by a FPXR file.
435
/// Constant length or 4.
438
/// <b>Handling of null values</b><para/>
439
/// A null value indicates, that the corresponding metadata tag is not
440
/// present in the metadata model.
441
/// Setting this property's value to a non-null reference creates the
442
/// metadata tag if necessary.
443
/// Setting this property's value to a null reference deletes the
444
/// metadata tag from the metadata model.
446
public byte[] FlashpixVersion
450
return GetTagArray<byte>("FlashpixVersion");
454
FreeImage.Resize(ref value, 4);
455
SetTagValueUndefined("FlashpixVersion", value);
460
/// Gets or sets the color space information tag.
461
/// See remarks for further information.
464
/// The following values are defined:<para/>
465
/// <list type="table">
468
/// <description>Description</description>
472
/// <description>sRGB (default)</description>
475
/// <term>0xFFFF</term>
476
/// <description>uncalibrated</description>
479
/// <term>other</term>
480
/// <description>reserved</description>
484
/// <br/><b>Handling of null values</b><para/>
485
/// A null value indicates, that the corresponding metadata tag is not
486
/// present in the metadata model.
487
/// Setting this property's value to a non-null reference creates the
488
/// metadata tag if necessary.
489
/// Setting this property's value to a null reference deletes the
490
/// metadata tag from the metadata model.
492
public ushort? ColorSpace
496
return GetTagValue<ushort>("ColorSpace");
500
SetTagValue("ColorSpace", value);
505
/// Gets or sets the valid width of a compressed image.
508
/// <b>Handling of null values</b><para/>
509
/// A null value indicates, that the corresponding metadata tag is not
510
/// present in the metadata model.
511
/// Setting this property's value to a non-null reference creates the
512
/// metadata tag if necessary.
513
/// Setting this property's value to a null reference deletes the
514
/// metadata tag from the metadata model.
516
public uint? PixelXDimension
520
return GetUInt32Value("PixelXDimension");
524
RemoveTag("PixelXDimension");
527
SetTagValue("PixelXDimension", value.Value);
533
/// Gets or sets the valid height of a compressed image.
536
/// <b>Handling of null values</b><para/>
537
/// A null value indicates, that the corresponding metadata tag is not
538
/// present in the metadata model.
539
/// Setting this property's value to a non-null reference creates the
540
/// metadata tag if necessary.
541
/// Setting this property's value to a null reference deletes the
542
/// metadata tag from the metadata model.
544
public uint? PixelYDimension
548
return GetUInt32Value("PixelYDimension");
552
RemoveTag("PixelYDimension");
555
SetTagValue("PixelYDimension", value.Value);
561
/// Gets or sets components configuration. See remarks for further information.
562
/// Constant length of 4.
565
/// The channels of each component are arranged in order from the 1st component to the 4th.
566
/// For uncompressed data the data arrangement is given in the PhotometricInterpretation tag.
567
/// However, since PhotometricInterpretation can only express the order of Y,Cb and Cr,
568
/// this tag is provided for cases when compressed data uses components other than Y, Cb,
569
/// and Cr and to enable support of other sequences.<para/>
570
/// Default = 4 5 6 0 (if RGB uncompressed)<para/>
571
/// The following values are defined:<para/>
572
/// <list type="table">
575
/// <description>Description</description>
579
/// <description>does not exist</description>
583
/// <description>Y</description>
587
/// <description>Cb</description>
591
/// <description>Cr</description>
595
/// <description>R</description>
599
/// <description>R</description>
603
/// <description>R</description>
606
/// <term>other</term>
607
/// <description>reserved</description>
611
/// <br/><b>Handling of null values</b><para/>
612
/// A null value indicates, that the corresponding metadata tag is not
613
/// present in the metadata model.
614
/// Setting this property's value to a non-null reference creates the
615
/// metadata tag if necessary.
616
/// Setting this property's value to a null reference deletes the
617
/// metadata tag from the metadata model.
619
public byte[] ComponentsConfiguration
623
return GetTagArray<byte>("ComponentsConfiguration");
627
FreeImage.Resize(ref value, 4);
628
SetTagValueUndefined("ComponentsConfiguration", value);
633
/// Gets or sets compression mode used for a compressed image is indicated
634
/// in unit bits per pixel.
637
/// <b>Handling of null values</b><para/>
638
/// A null value indicates, that the corresponding metadata tag is not
639
/// present in the metadata model.
640
/// Setting this property's value to a non-null reference creates the
641
/// metadata tag if necessary.
642
/// Setting this property's value to a null reference deletes the
643
/// metadata tag from the metadata model.
645
public FIURational? CompressedBitsPerPixel
649
return GetTagValue<FIURational>("CompressedBitsPerPixel");
653
SetTagValue("CompressedBitsPerPixel", value);
658
/// Gets or sets a tag for manufacturers of Exif writers to record any desired information.
659
/// The contents are up to the manufacturer, but this tag should not be used for any other
660
/// than its intended purpose.
663
/// <b>Handling of null values</b><para/>
664
/// A null value indicates, that the corresponding metadata tag is not
665
/// present in the metadata model.
666
/// Setting this property's value to a non-null reference creates the
667
/// metadata tag if necessary.
668
/// Setting this property's value to a null reference deletes the
669
/// metadata tag from the metadata model.
671
public byte[] MakerNote
675
return GetTagArray<byte>("FlashpixVersion");
679
SetTagValueUndefined("FlashpixVersion", value);
684
/// Gets or sets a tag for Exif users to write keywords or comments on the image besides
685
/// those in ImageDescription, and without the character code limitations of the ImageDescription tag.
686
/// Minimum length of 8. See remarks for further information.
689
/// The character code used in the UserComment tag is identified based on an ID code in a fixed 8-byte
690
/// area at the start of the tag data area. The unused portion of the area is padded with NULL.
691
/// The ID code for the UserComment area may be a Defined code such as JIS or ASCII, or may be Undefined.
693
/// <br/><b>Handling of null values</b><para/>
694
/// A null value indicates, that the corresponding metadata tag is not
695
/// present in the metadata model.
696
/// Setting this property's value to a non-null reference creates the
697
/// metadata tag if necessary.
698
/// Setting this property's value to a null reference deletes the
699
/// metadata tag from the metadata model.
701
public byte[] UserComment
705
return GetTagArray<byte>("UserComment");
709
FreeImage.Resize(ref value, 8, int.MaxValue);
710
SetTagValueUndefined("UserComment", value);
715
/// Gets or sets the name of an audio file related to the image data.
716
/// The format is 8.3.
717
/// Constant length of 12
720
/// <b>Handling of null values</b><para/>
721
/// A null value indicates, that the corresponding metadata tag is not
722
/// present in the metadata model.
723
/// Setting this property's value to a non-null reference creates the
724
/// metadata tag if necessary.
725
/// Setting this property's value to a null reference deletes the
726
/// metadata tag from the metadata model.
728
public string RelatedSoundFile
732
string text = GetTagText("RelatedSoundFile");
733
if (!string.IsNullOrEmpty(text))
735
text = text.Substring(0, text.Length - 1);
743
FreeImage.Resize(ref value, 12);
746
SetTagValue("RelatedSoundFile", value);
751
/// Gets or sets the date and time when the original image data was generated.
754
/// <b>Handling of null values</b><para/>
755
/// A null value indicates, that the corresponding metadata tag is not
756
/// present in the metadata model.
757
/// Setting this property's value to a non-null reference creates the
758
/// metadata tag if necessary.
759
/// Setting this property's value to a null reference deletes the
760
/// metadata tag from the metadata model.
762
public DateTime? DateTimeOriginal
766
DateTime? result = null;
767
string text = GetTagText("DateTimeOriginal");
772
result = System.DateTime.ParseExact(text, "yyyy:MM:dd HH:mm:ss\0", null);
787
val = value.Value.ToString("yyyy:MM:dd HH:mm:ss\0");
793
SetTagValue("DateTimeOriginal", val);
798
/// Gets or sets the date and time when the image was stored as digital data.
801
/// <b>Handling of null values</b><para/>
802
/// A null value indicates, that the corresponding metadata tag is not
803
/// present in the metadata model.
804
/// Setting this property's value to a non-null reference creates the
805
/// metadata tag if necessary.
806
/// Setting this property's value to a null reference deletes the
807
/// metadata tag from the metadata model.
809
public DateTime? DateTimeDigitized
813
DateTime? result = null;
814
string text = GetTagText("DateTimeDigitized");
819
result = System.DateTime.ParseExact(text, "yyyy:MM:dd HH:mm:ss\0", null);
834
val = value.Value.ToString("yyyy:MM:dd HH:mm:ss\0");
840
SetTagValue("DateTimeDigitized", val);
845
/// Gets or sets a tag used to record fractions of seconds for the DateTime tag.
848
/// <b>Handling of null values</b><para/>
849
/// A null value indicates, that the corresponding metadata tag is not
850
/// present in the metadata model.
851
/// Setting this property's value to a non-null reference creates the
852
/// metadata tag if necessary.
853
/// Setting this property's value to a null reference deletes the
854
/// metadata tag from the metadata model.
856
public string SubsecTime
860
string text = GetTagText("SubsecTime");
861
if (!string.IsNullOrEmpty(text))
863
text = text.Substring(0, text.Length - 1);
873
SetTagValue("SubsecTime", value);
878
/// Gets or sets a tag used to record fractions of seconds for the DateTimeOriginal tag.
881
/// <b>Handling of null values</b><para/>
882
/// A null value indicates, that the corresponding metadata tag is not
883
/// present in the metadata model.
884
/// Setting this property's value to a non-null reference creates the
885
/// metadata tag if necessary.
886
/// Setting this property's value to a null reference deletes the
887
/// metadata tag from the metadata model.
889
public string SubsecTimeOriginal
893
string text = GetTagText("SubsecTimeOriginal");
894
if (!string.IsNullOrEmpty(text))
896
text = text.Substring(0, text.Length - 1);
906
SetTagValue("SubsecTimeOriginal", value);
911
/// Gets or sets a tag used to record fractions of seconds for the DateTimeDigitized tag.
914
/// <b>Handling of null values</b><para/>
915
/// A null value indicates, that the corresponding metadata tag is not
916
/// present in the metadata model.
917
/// Setting this property's value to a non-null reference creates the
918
/// metadata tag if necessary.
919
/// Setting this property's value to a null reference deletes the
920
/// metadata tag from the metadata model.
922
public string SubsecTimeDigitized
926
string text = GetTagText("SubsecTimeDigitized");
927
if (!string.IsNullOrEmpty(text))
929
text = text.Substring(0, text.Length - 1);
939
SetTagValue("SubsecTimeDigitized", value);
944
/// Gets or the exposure time, given in seconds (sec).
947
/// <b>Handling of null values</b><para/>
948
/// A null value indicates, that the corresponding metadata tag is not
949
/// present in the metadata model.
950
/// Setting this property's value to a non-null reference creates the
951
/// metadata tag if necessary.
952
/// Setting this property's value to a null reference deletes the
953
/// metadata tag from the metadata model.
955
public FIURational? ExposureTime
959
return GetTagValue<FIURational>("ExposureTime");
963
SetTagValue("ExposureTime", value);
968
/// Gets or the F number.
971
/// <b>Handling of null values</b><para/>
972
/// A null value indicates, that the corresponding metadata tag is not
973
/// present in the metadata model.
974
/// Setting this property's value to a non-null reference creates the
975
/// metadata tag if necessary.
976
/// Setting this property's value to a null reference deletes the
977
/// metadata tag from the metadata model.
979
public FIURational? FNumber
983
return GetTagValue<FIURational>("FNumber");
987
SetTagValue("FNumber", value);
992
/// Gets or sets the class of the program used by the camera to set exposure when the
993
/// picture is taken.
994
/// See remarks for further information.
997
/// The following values are defined:<para/>
998
/// <list type="table">
1001
/// <description>Description</description>
1005
/// <description>not defined</description>
1009
/// <description>manual</description>
1013
/// <description>normal program</description>
1017
/// <description>aperture priority</description>
1021
/// <description>shutter priority</description>
1025
/// <description>create program</description>
1029
/// <description>action program</description>
1033
/// <description>portrait mode</description>
1037
/// <description>landscape mode</description>
1040
/// <term>others</term>
1041
/// <description>reserved</description>
1045
/// <br/><b>Handling of null values</b><para/>
1046
/// A null value indicates, that the corresponding metadata tag is not
1047
/// present in the metadata model.
1048
/// Setting this property's value to a non-null reference creates the
1049
/// metadata tag if necessary.
1050
/// Setting this property's value to a null reference deletes the
1051
/// metadata tag from the metadata model.
1053
public ushort? ExposureProgram
1057
return GetTagValue<ushort>("ExposureProgram");
1061
SetTagValue("ExposureProgram", value);
1066
/// Gets or sets the spectral sensitivity of each channel of the camera used.
1069
/// <b>Handling of null values</b><para/>
1070
/// A null value indicates, that the corresponding metadata tag is not
1071
/// present in the metadata model.
1072
/// Setting this property's value to a non-null reference creates the
1073
/// metadata tag if necessary.
1074
/// Setting this property's value to a null reference deletes the
1075
/// metadata tag from the metadata model.
1077
public string SpectralSensitivity
1081
string text = GetTagText("SpectralSensitivity");
1082
if (!string.IsNullOrEmpty(text))
1084
text = text.Substring(0, text.Length - 1);
1094
SetTagValue("SpectralSensitivity", value);
1099
/// Gets or sets the the ISO Speed and ISO Latitude of the camera or input device as
1100
/// specified in ISO 12232.
1103
/// <b>Handling of null values</b><para/>
1104
/// A null value indicates, that the corresponding metadata tag is not
1105
/// present in the metadata model.
1106
/// Setting this property's value to a non-null reference creates the
1107
/// metadata tag if necessary.
1108
/// Setting this property's value to a null reference deletes the
1109
/// metadata tag from the metadata model.
1111
public ushort[] ISOSpeedRatings
1115
return GetTagArray<ushort>("ISOSpeedRatings");
1119
SetTagValue("ISOSpeedRatings", value);
1124
/// Gets or sets the Opto-Electric Conversion Function (OECF) specified in ISO 14524.
1125
/// OECF is the relationship between the camera optical input and the image values.
1128
/// <b>Handling of null values</b><para/>
1129
/// A null value indicates, that the corresponding metadata tag is not
1130
/// present in the metadata model.
1131
/// Setting this property's value to a non-null reference creates the
1132
/// metadata tag if necessary.
1133
/// Setting this property's value to a null reference deletes the
1134
/// metadata tag from the metadata model.
1140
return GetTagArray<byte>("OECF");
1144
SetTagValueUndefined("OECF", value);
1149
/// Gets or sets the shutter speed. The unit is the APEX (Additive System of Photographic Exposure).
1152
/// <b>Handling of null values</b><para/>
1153
/// A null value indicates, that the corresponding metadata tag is not
1154
/// present in the metadata model.
1155
/// Setting this property's value to a non-null reference creates the
1156
/// metadata tag if necessary.
1157
/// Setting this property's value to a null reference deletes the
1158
/// metadata tag from the metadata model.
1160
public FIRational? ShutterSpeedValue
1164
return GetTagValue<FIRational>("ShutterSpeedValue");
1168
SetTagValue("ShutterSpeedValue", value);
1173
/// Gets or sets the lens aperture. The unit is the APEX value.
1176
/// <b>Handling of null values</b><para/>
1177
/// A null value indicates, that the corresponding metadata tag is not
1178
/// present in the metadata model.
1179
/// Setting this property's value to a non-null reference creates the
1180
/// metadata tag if necessary.
1181
/// Setting this property's value to a null reference deletes the
1182
/// metadata tag from the metadata model.
1184
public FIURational? ApertureValue
1188
return GetTagValue<FIURational>("ApertureValue");
1192
SetTagValue("ApertureValue", value);
1197
/// Gets or sets the value of brightness. The unit is the APEX value.
1198
/// Ordinarily it is given in the range of -99.99 to 99.99.
1201
/// <b>Handling of null values</b><para/>
1202
/// A null value indicates, that the corresponding metadata tag is not
1203
/// present in the metadata model.
1204
/// Setting this property's value to a non-null reference creates the
1205
/// metadata tag if necessary.
1206
/// Setting this property's value to a null reference deletes the
1207
/// metadata tag from the metadata model.
1209
public FIRational? BrightnessValue
1213
return GetTagValue<FIRational>("BrightnessValue");
1217
SetTagValue("BrightnessValue", value);
1222
/// Gets or sets the exposure bias. The unit is the APEX value.
1223
/// Ordinarily it is given in the range of ļæ½99.99 to 99.99.
1226
/// <b>Handling of null values</b><para/>
1227
/// A null value indicates, that the corresponding metadata tag is not
1228
/// present in the metadata model.
1229
/// Setting this property's value to a non-null reference creates the
1230
/// metadata tag if necessary.
1231
/// Setting this property's value to a null reference deletes the
1232
/// metadata tag from the metadata model.
1234
public FIRational? ExposureBiasValue
1238
return GetTagValue<FIRational>("ExposureBiasValue");
1242
SetTagValue("ExposureBiasValue", value);
1247
/// Gets or sets the smallest F number of the lens. The unit is the APEX value.
1248
/// Ordinarily it is given in the range of 00.00 to 99.99,
1249
/// but it is not limited to this range.
1252
/// <b>Handling of null values</b><para/>
1253
/// A null value indicates, that the corresponding metadata tag is not
1254
/// present in the metadata model.
1255
/// Setting this property's value to a non-null reference creates the
1256
/// metadata tag if necessary.
1257
/// Setting this property's value to a null reference deletes the
1258
/// metadata tag from the metadata model.
1260
public FIURational? MaxApertureValue
1264
return GetTagValue<FIURational>("MaxApertureValue");
1268
SetTagValue("MaxApertureValue", value);
1273
/// Gets or sets distance to the subject, given in meters.
1274
/// Note that if the numerator of the recorded value is FFFFFFFF, infinity shall be indicated;
1275
/// and if the numerator is 0, distance unknown shall be indicated.
1278
/// <b>Handling of null values</b><para/>
1279
/// A null value indicates, that the corresponding metadata tag is not
1280
/// present in the metadata model.
1281
/// Setting this property's value to a non-null reference creates the
1282
/// metadata tag if necessary.
1283
/// Setting this property's value to a null reference deletes the
1284
/// metadata tag from the metadata model.
1286
public FIURational? SubjectDistance
1290
return GetTagValue<FIURational>("SubjectDistance");
1294
SetTagValue("SubjectDistance", value);
1299
/// Gets or sets the metering mode. See remarks for further information.
1302
/// The following values are defined:<para/>
1303
/// <list type="table">
1306
/// <description>Description</description>
1310
/// <description>unknown</description>
1314
/// <description>average</description>
1318
/// <description>center-weighted-average</description>
1322
/// <description>spot</description>
1326
/// <description>multi-spot</description>
1330
/// <description>pattern</description>
1334
/// <description>partial</description>
1337
/// <term>other</term>
1338
/// <description>reserved</description>
1341
/// <term>255</term>
1342
/// <description>other</description>
1346
/// <br/><b>Handling of null values</b><para/>
1347
/// A null value indicates, that the corresponding metadata tag is not
1348
/// present in the metadata model.
1349
/// Setting this property's value to a non-null reference creates the
1350
/// metadata tag if necessary.
1351
/// Setting this property's value to a null reference deletes the
1352
/// metadata tag from the metadata model.
1354
public ushort? MeteringMode
1358
return GetTagValue<ushort>("MeteringMode");
1362
SetTagValue("MeteringMode", value);
1367
/// Gets or sets the kind of light source.
1368
/// See remarks for further information.
1371
/// The following values are defined:<para/>
1372
/// <list type="table">
1375
/// <description>Description</description>
1379
/// <description>unknown</description>
1383
/// <description>daylight</description>
1387
/// <description>fluorescent</description>
1391
/// <description>tungsten</description>
1395
/// <description>flash</description>
1399
/// <description>fine weather</description>
1403
/// <description>cloudy weather</description>
1407
/// <description>shade</description>
1411
/// <description>daylight fluorecent (D 5700 - 7100K)</description>
1415
/// <description>day white fluorescent (N 4600 - 5400K)</description>
1419
/// <description>cool white fluorescent (W 3900 - 4500K)</description>
1423
/// <description>white fluorescent (WW 3200 - 3700K)</description>
1427
/// <description>standard light A</description>
1431
/// <description>standard light B</description>
1435
/// <description>standard light C</description>
1439
/// <description>D55</description>
1443
/// <description>D65</description>
1447
/// <description>D75</description>
1451
/// <description>D50</description>
1455
/// <description>ISO studio tungsten</description>
1458
/// <term>255</term>
1459
/// <description>other light source</description>
1462
/// <term>other</term>
1463
/// <description>reserved</description>
1467
/// <br/><b>Handling of null values</b><para/>
1468
/// A null value indicates, that the corresponding metadata tag is not
1469
/// present in the metadata model.
1470
/// Setting this property's value to a non-null reference creates the
1471
/// metadata tag if necessary.
1472
/// Setting this property's value to a null reference deletes the
1473
/// metadata tag from the metadata model.
1475
public ushort? LightSource
1479
return GetTagValue<ushort>("LightSource");
1483
SetTagValue("LightSource", value);
1488
/// Gets or sets a value indicating the status of flash when the image was shot.
1489
/// Bit 0 indicates the flash firing status, bits 1 and 2 indicate the flash return
1490
/// status, bits 3 and 4 indicate the flash mode, bit 5 indicates whether the flash
1491
/// function is present, and bit 6 indicates "red eye" mode.
1494
/// <b>Handling of null values</b><para/>
1495
/// A null value indicates, that the corresponding metadata tag is not
1496
/// present in the metadata model.
1497
/// Setting this property's value to a non-null reference creates the
1498
/// metadata tag if necessary.
1499
/// Setting this property's value to a null reference deletes the
1500
/// metadata tag from the metadata model.
1502
public ushort? Flash
1506
return GetTagValue<ushort>("Flash");
1510
SetTagValue("Flash", value);
1515
/// Gets or sets a value indicating the location and area of the main subject in
1516
/// the overall scene. Variable length between 2 and 4.
1519
/// <b>Handling of null values</b><para/>
1520
/// A null value indicates, that the corresponding metadata tag is not
1521
/// present in the metadata model.
1522
/// Setting this property's value to a non-null reference creates the
1523
/// metadata tag if necessary.
1524
/// Setting this property's value to a null reference deletes the
1525
/// metadata tag from the metadata model.
1527
public ushort[] SubjectArea
1531
return GetTagArray<ushort>("SubjectArea");
1535
FreeImage.Resize(ref value, 2, 4);
1536
SetTagValue("SubjectArea", value);
1541
/// Gets or sets the actual focal length of the lens, in mm.
1542
/// Conversion is not made to the focal length of a 35 mm film camera.
1545
/// <b>Handling of null values</b><para/>
1546
/// A null value indicates, that the corresponding metadata tag is not
1547
/// present in the metadata model.
1548
/// Setting this property's value to a non-null reference creates the
1549
/// metadata tag if necessary.
1550
/// Setting this property's value to a null reference deletes the
1551
/// metadata tag from the metadata model.
1553
public FIURational? FocalLength
1557
return GetTagValue<FIURational>("FocalLength");
1561
SetTagValue("FocalLength", value);
1566
/// Gets or sets the strobe energy at the time the image is captured,
1567
/// as measured in Beam Candle Power Seconds (BCPS).
1570
/// <b>Handling of null values</b><para/>
1571
/// A null value indicates, that the corresponding metadata tag is not
1572
/// present in the metadata model.
1573
/// Setting this property's value to a non-null reference creates the
1574
/// metadata tag if necessary.
1575
/// Setting this property's value to a null reference deletes the
1576
/// metadata tag from the metadata model.
1578
public FIURational? FlashEnergy
1582
return GetTagValue<FIURational>("FlashEnergy");
1586
SetTagValue("FlashEnergy", value);
1591
/// Gets or sets the camera or input device spatial frequency table and SFR values
1592
/// in the direction of image width, image height, and diagonal direction,
1593
/// as specified in ISO 12233.
1596
/// <b>Handling of null values</b><para/>
1597
/// A null value indicates, that the corresponding metadata tag is not
1598
/// present in the metadata model.
1599
/// Setting this property's value to a non-null reference creates the
1600
/// metadata tag if necessary.
1601
/// Setting this property's value to a null reference deletes the
1602
/// metadata tag from the metadata model.
1604
public byte[] SpatialFrequencyResponse
1608
return GetTagArray<byte>("SpatialFrequencyResponse");
1612
SetTagValueUndefined("SpatialFrequencyResponse", value);
1617
/// Gets or sets the number of pixels in the image width (X) direction per
1618
/// FocalPlaneResolutionUnit on the camera focal plane.
1621
/// <b>Handling of null values</b><para/>
1622
/// A null value indicates, that the corresponding metadata tag is not
1623
/// present in the metadata model.
1624
/// Setting this property's value to a non-null reference creates the
1625
/// metadata tag if necessary.
1626
/// Setting this property's value to a null reference deletes the
1627
/// metadata tag from the metadata model.
1629
public FIURational? FocalPlaneXResolution
1633
return GetTagValue<FIURational>("FocalPlaneXResolution");
1637
SetTagValue("FocalPlaneXResolution", value);
1642
/// Gets or sets the number of pixels in the image height (Y) direction per
1643
/// FocalPlaneResolutionUnit on the camera focal plane.
1646
/// <b>Handling of null values</b><para/>
1647
/// A null value indicates, that the corresponding metadata tag is not
1648
/// present in the metadata model.
1649
/// Setting this property's value to a non-null reference creates the
1650
/// metadata tag if necessary.
1651
/// Setting this property's value to a null reference deletes the
1652
/// metadata tag from the metadata model.
1654
public FIURational? FocalPlaneYResolution
1658
return GetTagValue<FIURational>("FocalPlaneYResolution");
1662
SetTagValue("FocalPlaneYResolution", value);
1667
/// Gets or sets the unit for measuring FocalPlaneXResolution and FocalPlaneYResolution.
1668
/// This value is the same as the ResolutionUnit.
1671
/// <b>Handling of null values</b><para/>
1672
/// A null value indicates, that the corresponding metadata tag is not
1673
/// present in the metadata model.
1674
/// Setting this property's value to a non-null reference creates the
1675
/// metadata tag if necessary.
1676
/// Setting this property's value to a null reference deletes the
1677
/// metadata tag from the metadata model.
1679
public ushort? FocalPlaneResolutionUnit
1683
return GetTagValue<ushort>("FocalPlaneResolutionUnit");
1687
SetTagValue("FocalPlaneResolutionUnit", value);
1692
/// Gets or sets the location of the main subject in the scene.
1693
/// The value of this tag represents the pixel at the center of the main subject
1694
/// relative to the left edge, prior to rotation processing as per the Rotation tag.
1695
/// The first value indicates the X column number and second indicates the Y row number.
1698
/// <b>Handling of null values</b><para/>
1699
/// A null value indicates, that the corresponding metadata tag is not
1700
/// present in the metadata model.
1701
/// Setting this property's value to a non-null reference creates the
1702
/// metadata tag if necessary.
1703
/// Setting this property's value to a null reference deletes the
1704
/// metadata tag from the metadata model.
1706
public ushort? SubjectLocation
1710
return GetTagValue<ushort>("SubjectLocation");
1714
SetTagValue("SubjectLocation", value);
1719
/// Gets or sets the exposure index selected on the camera or input device at the
1720
/// time the image was captured.
1723
/// <b>Handling of null values</b><para/>
1724
/// A null value indicates, that the corresponding metadata tag is not
1725
/// present in the metadata model.
1726
/// Setting this property's value to a non-null reference creates the
1727
/// metadata tag if necessary.
1728
/// Setting this property's value to a null reference deletes the
1729
/// metadata tag from the metadata model.
1731
public FIURational? ExposureIndex
1735
return GetTagValue<FIURational>("ExposureIndex");
1739
SetTagValue("ExposureIndex", value);
1744
/// Gets or sets the image sensor type on the camera or input device.
1745
/// See remarks for further information.
1748
/// The following values are defined:<para/>
1749
/// <list type="table">
1752
/// <description>Description</description>
1756
/// <description>not defined</description>
1760
/// <description>one-chip color area sensor</description>
1764
/// <description>two-chip color area sensor</description>
1768
/// <description>three-chip color area sensor</description>
1772
/// <description>color sequential area sensor</description>
1776
/// <description>trilinear sensor</description>
1780
/// <description>color sequential linear sensor</description>
1783
/// <term>other</term>
1784
/// <description>reserved</description>
1788
/// <br/><b>Handling of null values</b><para/>
1789
/// A null value indicates, that the corresponding metadata tag is not
1790
/// present in the metadata model.
1791
/// Setting this property's value to a non-null reference creates the
1792
/// metadata tag if necessary.
1793
/// Setting this property's value to a null reference deletes the
1794
/// metadata tag from the metadata model.
1796
public ushort? SensingMethod
1800
return GetTagValue<ushort>("SensingMethod");
1804
SetTagValue("SensingMethod", value);
1809
/// Gets or sets the image source. If a DSC recorded the image, this tag value of this
1810
/// tag always be set to 3, indicating that the image was recorded on a DSC.
1813
/// <b>Handling of null values</b><para/>
1814
/// A null value indicates, that the corresponding metadata tag is not
1815
/// present in the metadata model.
1816
/// Setting this property's value to a non-null reference creates the
1817
/// metadata tag if necessary.
1818
/// Setting this property's value to a null reference deletes the
1819
/// metadata tag from the metadata model.
1821
public byte? FileSource
1825
return GetTagValue<byte>("FileSource");
1829
SetTagValueUndefined("FileSource", value.HasValue ? new byte[] { value.Value } : null);
1834
/// Gets or sets the type of scene. If a DSC recorded the image, this tag value shall
1835
/// always be set to 1, indicating that the image was directly photographed.
1838
/// <b>Handling of null values</b><para/>
1839
/// A null value indicates, that the corresponding metadata tag is not
1840
/// present in the metadata model.
1841
/// Setting this property's value to a non-null reference creates the
1842
/// metadata tag if necessary.
1843
/// Setting this property's value to a null reference deletes the
1844
/// metadata tag from the metadata model.
1846
public byte? SceneType
1850
return GetTagValue<byte>("SceneType");
1854
SetTagValueUndefined("SceneType", value.HasValue ? new byte[] { value.Value } : null);
1859
/// Gets or sets the color filter array (CFA) geometric pattern of the image sensor
1860
/// when a one-chip color area sensor is used. It does not apply to all sensing methods.
1863
/// <b>Handling of null values</b><para/>
1864
/// A null value indicates, that the corresponding metadata tag is not
1865
/// present in the metadata model.
1866
/// Setting this property's value to a non-null reference creates the
1867
/// metadata tag if necessary.
1868
/// Setting this property's value to a null reference deletes the
1869
/// metadata tag from the metadata model.
1871
public byte[] CFAPattern
1875
return GetTagArray<byte>("CFAPattern");
1879
SetTagValueUndefined("CFAPattern", value);
1884
/// Gets or sets the use of special processing on image data, such as rendering geared to output.
1885
/// When special processing is performed, the reader is expected to disable or minimize any
1886
/// further processing. See remarks for further information.
1889
/// The following values are definied:<para/>
1890
/// <list type="table">
1893
/// <description>Description</description>
1897
/// <description>normal process</description>
1901
/// <description>custom process</description>
1904
/// <term>other</term>
1905
/// <description>reserved</description>
1909
/// <br/><b>Handling of null values</b><para/>
1910
/// A null value indicates, that the corresponding metadata tag is not
1911
/// present in the metadata model.
1912
/// Setting this property's value to a non-null reference creates the
1913
/// metadata tag if necessary.
1914
/// Setting this property's value to a null reference deletes the
1915
/// metadata tag from the metadata model.
1917
public ushort? CustomRendered
1921
return GetTagValue<ushort>("CustomRendered");
1925
SetTagValue("CustomRendered", value);
1930
/// Gets or sets the exposure mode set when the image was shot.
1931
/// In auto-bracketing mode, the camera shoots a series of frames of the same scene
1932
/// at different exposure settings. See remarks for further information.
1935
/// The following values are definied:<para/>
1936
/// <list type="table">
1939
/// <description>Description</description>
1943
/// <description>auto exposure</description>
1947
/// <description>manual exposure</description>
1951
/// <description>auto bracket</description>
1954
/// <term>other</term>
1955
/// <description>reserved</description>
1959
/// <br/><b>Handling of null values</b><para/>
1960
/// A null value indicates, that the corresponding metadata tag is not
1961
/// present in the metadata model.
1962
/// Setting this property's value to a non-null reference creates the
1963
/// metadata tag if necessary.
1964
/// Setting this property's value to a null reference deletes the
1965
/// metadata tag from the metadata model.
1967
public ushort? ExposureMode
1971
return GetTagValue<ushort>("ExposureMode");
1975
SetTagValue("ExposureMode", value);
1980
/// Gets or sets the white balance mode set when the image was shot.
1981
/// See remarks for further information.
1984
/// The following values are definied:<para/>
1985
/// <list type="table">
1988
/// <description>Description</description>
1992
/// <description>auto white balance</description>
1996
/// <description>manual white balance</description>
1999
/// <term>other</term>
2000
/// <description>reserved</description>
2004
/// <br/><b>Handling of null values</b><para/>
2005
/// A null value indicates, that the corresponding metadata tag is not
2006
/// present in the metadata model.
2007
/// Setting this property's value to a non-null reference creates the
2008
/// metadata tag if necessary.
2009
/// Setting this property's value to a null reference deletes the
2010
/// metadata tag from the metadata model.
2012
public ushort? WhiteBalance
2016
return GetTagValue<ushort>("WhiteBalance");
2020
SetTagValue("WhiteBalance", value);
2025
/// Gets or sets the digital zoom ratio when the image was shot.
2026
/// If the numerator of the recorded value is 0, this indicates that digital zoom was not used.
2029
/// <b>Handling of null values</b><para/>
2030
/// A null value indicates, that the corresponding metadata tag is not
2031
/// present in the metadata model.
2032
/// Setting this property's value to a non-null reference creates the
2033
/// metadata tag if necessary.
2034
/// Setting this property's value to a null reference deletes the
2035
/// metadata tag from the metadata model.
2037
public FIURational? DigitalZoomRatio
2041
return GetTagValue<FIURational>("DigitalZoomRatio");
2045
SetTagValue("DigitalZoomRatio", value);
2050
/// Gets or sets the equivalent focal length assuming a 35mm film camera, in mm.
2051
/// A value of 0 means the focal length is unknown. Note that this tag differs
2052
/// from the FocalLength tag.
2055
/// <b>Handling of null values</b><para/>
2056
/// A null value indicates, that the corresponding metadata tag is not
2057
/// present in the metadata model.
2058
/// Setting this property's value to a non-null reference creates the
2059
/// metadata tag if necessary.
2060
/// Setting this property's value to a null reference deletes the
2061
/// metadata tag from the metadata model.
2063
public ushort? FocalLengthIn35mmFilm
2067
return GetTagValue<ushort>("DigitalZoomRatio");
2071
SetTagValue("DigitalZoomRatio", value);
2076
/// Gets or sets the type of scene that was shot.
2077
/// It can also be used to record the mode in which the image was shot.
2078
/// See remarks for further information.
2081
/// The following values are definied:<para/>
2082
/// <list type="table">
2085
/// <description>Description</description>
2089
/// <description>standard</description>
2093
/// <description>landscape</description>
2097
/// <description>portrait</description>
2101
/// <description>night scene</description>
2104
/// <term>other</term>
2105
/// <description>reserved</description>
2109
/// <br/><b>Handling of null values</b><para/>
2110
/// A null value indicates, that the corresponding metadata tag is not
2111
/// present in the metadata model.
2112
/// Setting this property's value to a non-null reference creates the
2113
/// metadata tag if necessary.
2114
/// Setting this property's value to a null reference deletes the
2115
/// metadata tag from the metadata model.
2117
public ushort? SceneCaptureType
2121
return GetTagValue<ushort>("SceneCaptureType");
2125
SetTagValue("SceneCaptureType", value);
2130
/// Gets or sets the degree of overall image gain adjustment.
2131
/// See remarks for further information.
2134
/// The following values are definied:<para/>
2135
/// <list type="table">
2138
/// <description>Description</description>
2142
/// <description>none</description>
2146
/// <description>low gain up</description>
2150
/// <description>high gain up</description>
2154
/// <description>low gain down</description>
2158
/// <description>high gain down</description>
2161
/// <term>other</term>
2162
/// <description>reserved</description>
2166
/// <br/><b>Handling of null values</b><para/>
2167
/// A null value indicates, that the corresponding metadata tag is not
2168
/// present in the metadata model.
2169
/// Setting this property's value to a non-null reference creates the
2170
/// metadata tag if necessary.
2171
/// Setting this property's value to a null reference deletes the
2172
/// metadata tag from the metadata model.
2174
public ushort? GainControl
2178
return GetTagValue<ushort>("GainControl");
2182
SetTagValue("GainControl", value);
2187
/// Gets or sets the direction of contrast processing applied by the camera
2188
/// when the image was shot.
2189
/// See remarks for further information.
2192
/// The following values are definied:<para/>
2193
/// <list type="table">
2196
/// <description>Description</description>
2200
/// <description>normal</description>
2204
/// <description>soft</description>
2208
/// <description>hard</description>
2211
/// <term>other</term>
2212
/// <description>reserved</description>
2216
/// <br/><b>Handling of null values</b><para/>
2217
/// A null value indicates, that the corresponding metadata tag is not
2218
/// present in the metadata model.
2219
/// Setting this property's value to a non-null reference creates the
2220
/// metadata tag if necessary.
2221
/// Setting this property's value to a null reference deletes the
2222
/// metadata tag from the metadata model.
2224
public ushort? Contrast
2228
return GetTagValue<ushort>("Contrast");
2232
SetTagValue("Contrast", value);
2237
/// Gets or sets the direction of saturation processing applied by the camera
2238
/// when the image was shot.
2239
/// See remarks for further information.
2242
/// The following values are definied:<para/>
2243
/// <list type="table">
2246
/// <description>Description</description>
2250
/// <description>normal</description>
2254
/// <description>low saturation</description>
2258
/// <description>high saturation</description>
2261
/// <term>other</term>
2262
/// <description>reserved</description>
2266
/// <br/><b>Handling of null values</b><para/>
2267
/// A null value indicates, that the corresponding metadata tag is not
2268
/// present in the metadata model.
2269
/// Setting this property's value to a non-null reference creates the
2270
/// metadata tag if necessary.
2271
/// Setting this property's value to a null reference deletes the
2272
/// metadata tag from the metadata model.
2274
public ushort? Saturation
2278
return GetTagValue<ushort>("Saturation");
2282
SetTagValue("Saturation", value);
2287
/// Gets or sets the direction of sharpness processing applied by the camera
2288
/// when the image was shot.
2289
/// See remarks for further information.
2292
/// The following values are definied:<para/>
2293
/// <list type="table">
2296
/// <description>Description</description>
2300
/// <description>normal</description>
2304
/// <description>soft</description>
2308
/// <description>hard</description>
2311
/// <term>other</term>
2312
/// <description>reserved</description>
2316
/// <br/><b>Handling of null values</b><para/>
2317
/// A null value indicates, that the corresponding metadata tag is not
2318
/// present in the metadata model.
2319
/// Setting this property's value to a non-null reference creates the
2320
/// metadata tag if necessary.
2321
/// Setting this property's value to a null reference deletes the
2322
/// metadata tag from the metadata model.
2324
public ushort? Sharpness
2328
return GetTagValue<ushort>("Sharpness");
2332
SetTagValue("Sharpness", value);
2337
/// Gets or sets information on the picture-taking conditions of a particular camera model.
2338
/// The tag is used only to indicate the picture-taking conditions in the reader.
2341
/// <b>Handling of null values</b><para/>
2342
/// A null value indicates, that the corresponding metadata tag is not
2343
/// present in the metadata model.
2344
/// Setting this property's value to a non-null reference creates the
2345
/// metadata tag if necessary.
2346
/// Setting this property's value to a null reference deletes the
2347
/// metadata tag from the metadata model.
2349
public byte[] DeviceSettingDescription
2353
return GetTagArray<byte>("DeviceSettingDescription");
2357
SetTagValueUndefined("DeviceSettingDescription", value);
2362
/// Gets or sets the distance to the subject.
2363
/// See remarks for further information.
2366
/// The following values are definied:<para/>
2367
/// <list type="table">
2370
/// <description>Description</description>
2374
/// <description>unknown</description>
2378
/// <description>macro</description>
2382
/// <description>close view</description>
2386
/// <description>distant view</description>
2389
/// <term>other</term>
2390
/// <description>reserved</description>
2394
/// <br/><b>Handling of null values</b><para/>
2395
/// A null value indicates, that the corresponding metadata tag is not
2396
/// present in the metadata model.
2397
/// Setting this property's value to a non-null reference creates the
2398
/// metadata tag if necessary.
2399
/// Setting this property's value to a null reference deletes the
2400
/// metadata tag from the metadata model.
2402
public ushort? SubjectDistanceRange
2406
return GetTagValue<ushort>("SubjectDistanceRange");
2410
SetTagValue("SubjectDistanceRange", value);
2415
/// Gets or sets an identifier assigned uniquely to each image.
2416
/// It is recorded as an ASCII string equivalent to hexadecimal notation and 128-bit fixed length.
2417
/// Constant length of 32.
2420
/// <b>Handling of null values</b><para/>
2421
/// A null value indicates, that the corresponding metadata tag is not
2422
/// present in the metadata model.
2423
/// Setting this property's value to a non-null reference creates the
2424
/// metadata tag if necessary.
2425
/// Setting this property's value to a null reference deletes the
2426
/// metadata tag from the metadata model.
2428
public string ImageUniqueID
2432
string text = GetTagText("ImageUniqueID");
2433
if (!string.IsNullOrEmpty(text))
2435
text = text.Substring(0, text.Length - 1);
2443
FreeImage.Resize(ref value, 32);
2446
SetTagValue("ImageUniqueID", value);
2452
/// Represents a collection of all tags contained in the metadata model
2453
/// <see cref="FREE_IMAGE_MDMODEL.FIMD_EXIF_GPS"/>.
2455
public class MDM_EXIF_GPS : MetadataModel
2458
/// Initializes a new instance of this class.
2460
/// <param name="dib">Handle to a FreeImage bitmap.</param>
2461
public MDM_EXIF_GPS(FIBITMAP dib) : base(dib) { }
2464
/// Retrieves the datamodel that this instance represents.
2466
public override FREE_IMAGE_MDMODEL Model
2468
get { return FREE_IMAGE_MDMODEL.FIMD_EXIF_GPS; }
2472
/// Gets or sets the GPS version ID. Constant length of 4.
2475
/// <b>Handling of null values</b><para/>
2476
/// A null value indicates, that the corresponding metadata tag is not
2477
/// present in the metadata model.
2478
/// Setting this property's value to a non-null reference creates the
2479
/// metadata tag if necessary.
2480
/// Setting this property's value to a null reference deletes the
2481
/// metadata tag from the metadata model.
2483
public byte[] VersionID
2487
return GetTagArray<byte>("GPSVersionID");
2491
FreeImage.Resize(ref value, 4);
2492
SetTagValue("GPSVersionID", value);
2497
/// Gets or sets a value indicating whether the <see cref="Latitude"/>
2498
/// is north or south latitude.
2501
/// <b>Handling of null values</b><para/>
2502
/// A null value indicates, that the corresponding metadata tag is not
2503
/// present in the metadata model.
2504
/// Setting this property's value to a non-null reference creates the
2505
/// metadata tag if necessary.
2506
/// Setting this property's value to a null reference deletes the
2507
/// metadata tag from the metadata model.
2509
public LatitudeType? LatitudeDirection
2513
return ToLatitudeType(GetTagText("GPSLatitudeRef"));
2517
SetTagValue("GPSLatitudeRef", ToString(value) + '\0');
2522
/// Gets or sets the latitude of the image. The latitude is expressed as three rational
2523
/// values giving the degrees, minutes, and seconds, respectively. Constant length of 3.
2526
/// <b>Handling of null values</b><para/>
2527
/// A null value indicates, that the corresponding metadata tag is not
2528
/// present in the metadata model.
2529
/// Setting this property's value to a non-null reference creates the
2530
/// metadata tag if necessary.
2531
/// Setting this property's value to a null reference deletes the
2532
/// metadata tag from the metadata model.
2534
/// <seealso cref="LatitudeDirection"/>
2535
public FIURational[] Latitude
2539
return GetTagArray<FIURational>("GPSLatitude");
2543
FreeImage.Resize(ref value, 3);
2544
SetTagValue("GPSLatitude", value);
2549
/// Gets or sets a value indicating whether <see cref="Longitude"/>
2550
/// is east or west longitude.
2553
/// <b>Handling of null values</b><para/>
2554
/// A null value indicates, that the corresponding metadata tag is not
2555
/// present in the metadata model.
2556
/// Setting this property's value to a non-null reference creates the
2557
/// metadata tag if necessary.
2558
/// Setting this property's value to a null reference deletes the
2559
/// metadata tag from the metadata model.
2561
public LongitudeType? LongitudeDirection
2565
return ToLongitudeType(GetTagText("GPSLongitudeRef"));
2569
SetTagValue("GPSLongitudeRef", ToString(value) + '\0');
2574
/// Gets or sets the longitude of the image. The longitude is expressed as three rational
2575
/// values giving the degrees, minutes, and seconds, respectively. Constant length of 3.
2578
/// <b>Handling of null values</b><para/>
2579
/// A null value indicates, that the corresponding metadata tag is not
2580
/// present in the metadata model.
2581
/// Setting this property's value to a non-null reference creates the
2582
/// metadata tag if necessary.
2583
/// Setting this property's value to a null reference deletes the
2584
/// metadata tag from the metadata model.
2586
/// <seealso cref="LongitudeDirection"/>
2587
public FIURational[] Longitude
2591
return GetTagArray<FIURational>("GPSLongitude");
2595
FreeImage.Resize(ref value, 3);
2596
SetTagValue("GPSLongitude", value);
2601
/// Gets a value indicating whether <see cref="Altitude"/> is sea level and the altitude
2602
/// is above sea level. If the altitude is below sea level <see cref="Altitude"/> is
2603
/// indicated as an absolute value.
2606
/// <b>Handling of null values</b><para/>
2607
/// A null value indicates, that the corresponding metadata tag is not
2608
/// present in the metadata model.
2609
/// Setting this property's value to a non-null reference creates the
2610
/// metadata tag if necessary.
2611
/// Setting this property's value to a null reference deletes the
2612
/// metadata tag from the metadata model.
2614
public AltitudeType? AltitudeDirection
2618
byte? flag = GetTagValue<byte>("GPSAltitudeRef");
2624
return AltitudeType.AboveSeaLevel;
2626
return AltitudeType.BelowSeaLevel;
2628
return AltitudeType.Undefined;
2638
switch (value.Value)
2640
case AltitudeType.AboveSeaLevel:
2644
case AltitudeType.BelowSeaLevel:
2653
SetTagValue("GPSAltitudeRef", val);
2658
/// Gets or sets the altitude based on the reference in <see cref="AltitudeDirection"/>.
2659
/// Altitude is expressed as one rational value. The reference unit is meters.
2662
/// <b>Handling of null values</b><para/>
2663
/// A null value indicates, that the corresponding metadata tag is not
2664
/// present in the metadata model.
2665
/// Setting this property's value to a non-null reference creates the
2666
/// metadata tag if necessary.
2667
/// Setting this property's value to a null reference deletes the
2668
/// metadata tag from the metadata model.
2670
public FIURational? Altitude
2674
return GetTagValue<FIURational>("GPSAltitude");
2678
SetTagValue("GPSAltitude", value);
2683
/// Gets or sets the sign of the <see cref="SignedAltitude"/>.
2686
/// This is a derived property. There is no metadata tag directly associated
2687
/// with this property value.
2689
/// <br/><b>Handling of null values</b><para/>
2690
/// A null value indicates, that the corresponding metadata tag is not
2691
/// present in the metadata model.
2692
/// Setting this property's value to a non-null reference creates the
2693
/// metadata tag if necessary.
2694
/// Setting this property's value to a null reference deletes the
2695
/// metadata tag from the metadata model.
2697
public int? AltitudeSign
2701
AltitudeType? seaLevel = AltitudeDirection;
2702
if (seaLevel.HasValue)
2704
return (seaLevel.Value == AltitudeType.BelowSeaLevel) ? -1 : 1;
2712
AltitudeDirection = value.Value >= 0 ? AltitudeType.AboveSeaLevel : AltitudeType.BelowSeaLevel;
2716
AltitudeDirection = null;
2722
/// Gets or sets the signed altitude.
2723
/// Altitude is expressed as one rational value. The reference unit is meters.
2725
/// <exception cref="OverflowException">
2726
/// Altitude is too large to fit into a FIRational.
2729
/// This is a derived property. There is no metadata tag directly associated
2730
/// with this property value.
2732
/// <br/><b>Handling of null values</b><para/>
2733
/// A null value indicates, that the corresponding metadata tag is not
2734
/// present in the metadata model.
2735
/// Setting this property's value to a non-null reference creates the
2736
/// metadata tag if necessary.
2737
/// Setting this property's value to a null reference deletes the
2738
/// metadata tag from the metadata model.
2740
public FIRational? SignedAltitude
2744
FIRational? result = null;
2745
FIURational? altitude = Altitude;
2746
if (altitude.HasValue)
2748
int sign = AltitudeSign ?? 1;
2749
if (((int)altitude.Value.Numerator < 0) || ((int)altitude.Value.Denominator < 0))
2750
throw new OverflowException();
2751
result = new FIRational((int)altitude.Value.Numerator * sign, (int)altitude.Value.Denominator);
2757
FIURational? val = null;
2760
if (value.Value < 0)
2763
value = -value.Value;
2769
val = new FIURational((uint)value.Value.Numerator, (uint)value.Value.Denominator);
2777
/// Gets or sets the time as UTC (Coordinated Universal Time). Constant length of 3.
2780
/// <b>Handling of null values</b><para/>
2781
/// A null value indicates, that the corresponding metadata tag is not
2782
/// present in the metadata model.
2783
/// Setting this property's value to a non-null reference creates the
2784
/// metadata tag if necessary.
2785
/// Setting this property's value to a null reference deletes the
2786
/// metadata tag from the metadata model.
2788
public TimeSpan? TimeStamp
2792
FIURational[] stamp = GetTagArray<FIURational>("GPSTimeStamp");
2793
if ((stamp == null) || stamp.Length != 3)
2799
return new TimeSpan((int)stamp[0], (int)stamp[1], (int)stamp[2]);
2804
FIURational[] stamp = null;
2807
TimeSpan span = value.Value;
2808
stamp = new FIURational[3];
2809
stamp[0] = span.Hours;
2810
stamp[1] = span.Minutes;
2811
stamp[2] = span.Seconds;
2813
SetTagValue("GPSTimeStamp", stamp);
2818
/// Gets or sets the GPS satellites used for measurements. This tag can be used to describe
2819
/// the number of satellites, their ID number, angle of elevation, azimuth, SNR and other
2820
/// information in ASCII notation. The format is not specified.
2823
/// <b>Handling of null values</b><para/>
2824
/// A null value indicates, that the corresponding metadata tag is not
2825
/// present in the metadata model.
2826
/// Setting this property's value to a non-null reference creates the
2827
/// metadata tag if necessary.
2828
/// Setting this property's value to a null reference deletes the
2829
/// metadata tag from the metadata model.
2831
public string Satellites
2835
string result = GetTagText("GPSSatellites");
2836
if (!string.IsNullOrEmpty(result))
2838
result = result.Substring(0, result.Length - 1);
2848
SetTagValue("GPSTimeStamp", value);
2853
/// Gets or sets a value indicating the status of the GPS receiver when the image was recorded.
2854
/// <b>true</b> indicates measurement was in progress;
2855
/// <b>false</b> indicates measurement was Interoperability.
2858
/// <b>Handling of null values</b><para/>
2859
/// A null value indicates, that the corresponding metadata tag is not
2860
/// present in the metadata model.
2861
/// Setting this property's value to a non-null reference creates the
2862
/// metadata tag if necessary.
2863
/// Setting this property's value to a null reference deletes the
2864
/// metadata tag from the metadata model.
2870
string text = GetTagText("GPSStatus");
2871
return string.IsNullOrEmpty(text) ? default(bool?) : text[0] == 'A';
2875
SetTagValue("GPSStatus", value.HasValue ? (value.Value ? "A\0" : "V\0") : null);
2880
/// Gets or sets a value indicating the GPS measurement mode.
2881
/// <b>true</b> indicates three-dimensional measurement;
2882
/// <b>false</b> indicated two-dimensional measurement was in progress.
2885
/// <b>Handling of null values</b><para/>
2886
/// A null value indicates, that the corresponding metadata tag is not
2887
/// present in the metadata model.
2888
/// Setting this property's value to a non-null reference creates the
2889
/// metadata tag if necessary.
2890
/// Setting this property's value to a null reference deletes the
2891
/// metadata tag from the metadata model.
2893
public bool? MeasureMode3D
2897
string text = GetTagText("GPSMeasureMode");
2898
return string.IsNullOrEmpty(text) ? default(bool?) : text[0] == '3';
2902
SetTagValue("GPSMeasureMode", value.HasValue ? (value.Value ? "3\0" : "2\0") : null);
2907
/// Gets or sets the GPS DOP (data degree of precision). An HDOP value is written during
2908
/// two-dimensional measurement, and PDOP during three-dimensional measurement.
2911
/// <b>Handling of null values</b><para/>
2912
/// A null value indicates, that the corresponding metadata tag is not
2913
/// present in the metadata model.
2914
/// Setting this property's value to a non-null reference creates the
2915
/// metadata tag if necessary.
2916
/// Setting this property's value to a null reference deletes the
2917
/// metadata tag from the metadata model.
2919
public FIURational? DOP
2923
return GetTagValue<FIURational>("GPSDOP");
2927
SetTagValue("GPSDOP", value);
2932
/// Gets or sets the unit used to express the GPS receiver <see cref="Speed"/> of movement.
2935
/// <b>Handling of null values</b><para/>
2936
/// A null value indicates, that the corresponding metadata tag is not
2937
/// present in the metadata model.
2938
/// Setting this property's value to a non-null reference creates the
2939
/// metadata tag if necessary.
2940
/// Setting this property's value to a null reference deletes the
2941
/// metadata tag from the metadata model.
2943
/// <seealso cref="Speed"/>
2944
public VelocityUnit? SpeedUnit
2948
return ToUnitType(GetTagText("GPSSpeedRef"));
2952
SetTagValue("GPSSpeedRef", ToString(value) + '\0');
2957
/// Gets or sets the speed of GPS receiver movement.
2960
/// <b>Handling of null values</b><para/>
2961
/// A null value indicates, that the corresponding metadata tag is not
2962
/// present in the metadata model.
2963
/// Setting this property's value to a non-null reference creates the
2964
/// metadata tag if necessary.
2965
/// Setting this property's value to a null reference deletes the
2966
/// metadata tag from the metadata model.
2968
/// <seealso cref="SpeedUnit"/>
2969
public FIURational? Speed
2973
return GetTagValue<FIURational>("GPSSpeed");
2977
SetTagValue("GPSSpeed", value);
2982
/// Gets or sets the reference for giving the direction of GPS receiver movement.
2985
/// <b>Handling of null values</b><para/>
2986
/// A null value indicates, that the corresponding metadata tag is not
2987
/// present in the metadata model.
2988
/// Setting this property's value to a non-null reference creates the
2989
/// metadata tag if necessary.
2990
/// Setting this property's value to a null reference deletes the
2991
/// metadata tag from the metadata model.
2993
/// <seealso cref="Track"/>
2994
public DirectionReference? TrackDirectionReference
2998
return ToDirectionType(GetTagText("GPSTrackRef"));
3002
SetTagValue("GPSTrackRef", ToString(value) + '\0');
3007
/// Gets or sets the direction of GPS receiver movement.
3008
/// The range of values is from 0.00 to 359.99.
3011
/// <b>Handling of null values</b><para/>
3012
/// A null value indicates, that the corresponding metadata tag is not
3013
/// present in the metadata model.
3014
/// Setting this property's value to a non-null reference creates the
3015
/// metadata tag if necessary.
3016
/// Setting this property's value to a null reference deletes the
3017
/// metadata tag from the metadata model.
3019
/// <seealso cref="TrackDirectionReference"/>
3020
public FIURational? Track
3024
return GetTagValue<FIURational>("GPSTrack");
3028
SetTagValue("GPSTrack", value);
3033
/// Gets or sets the reference for giving the direction of GPS receiver movement.
3036
/// <b>Handling of null values</b><para/>
3037
/// A null value indicates, that the corresponding metadata tag is not
3038
/// present in the metadata model.
3039
/// Setting this property's value to a non-null reference creates the
3040
/// metadata tag if necessary.
3041
/// Setting this property's value to a null reference deletes the
3042
/// metadata tag from the metadata model.
3044
/// <seealso cref="ImageDirection"/>
3045
public DirectionReference? ImageDirectionReference
3049
return ToDirectionType(GetTagText("GPSImgDirectionRef"));
3053
SetTagValue("GPSImgDirectionRef", ToString(value) + '\0');
3058
/// Gets or sets the direction of the image when it was captured.
3059
/// The range of values is from 0.00 to 359.99.
3062
/// <b>Handling of null values</b><para/>
3063
/// A null value indicates, that the corresponding metadata tag is not
3064
/// present in the metadata model.
3065
/// Setting this property's value to a non-null reference creates the
3066
/// metadata tag if necessary.
3067
/// Setting this property's value to a null reference deletes the
3068
/// metadata tag from the metadata model.
3070
/// <seealso cref="ImageDirectionReference"/>
3071
public FIURational? ImageDirection
3075
return GetTagValue<FIURational>("GPSImgDirection");
3079
SetTagValue("GPSImgDirection", value);
3084
/// Gets or sets the geodetic survey data used by the GPS receiver. If the survey data
3085
/// is restricted to Japan, the value of this tag is 'TOKYO' or 'WGS-84'.
3088
/// <b>Handling of null values</b><para/>
3089
/// A null value indicates, that the corresponding metadata tag is not
3090
/// present in the metadata model.
3091
/// Setting this property's value to a non-null reference creates the
3092
/// metadata tag if necessary.
3093
/// Setting this property's value to a null reference deletes the
3094
/// metadata tag from the metadata model.
3096
public string MapDatum
3100
string result = GetTagText("GPSMapDatum");
3101
if (!string.IsNullOrEmpty(result))
3103
result = result.Substring(0, result.Length - 1);
3109
SetTagValue("GPSMapDatum", value + '\0');
3114
/// Gets or sets a value indicating whether the destination point
3115
/// is north or south latitude.
3118
/// <b>Handling of null values</b><para/>
3119
/// A null value indicates, that the corresponding metadata tag is not
3120
/// present in the metadata model.
3121
/// Setting this property's value to a non-null reference creates the
3122
/// metadata tag if necessary.
3123
/// Setting this property's value to a null reference deletes the
3124
/// metadata tag from the metadata model.
3126
/// <seealso cref="Latitude"/>
3127
public LatitudeType? DestinationLatitudeDirection
3131
return ToLatitudeType(GetTagText("GPSDestLatitudeRef"));
3135
SetTagValue("GPSDestLatitudeRef", ToString(value) + '\0');
3140
/// Gets or sets the latitude of the destination point. The latitude is expressed as three rational
3141
/// values giving the degrees, minutes, and seconds, respectively. Constant length of 3.
3144
/// <b>Handling of null values</b><para/>
3145
/// A null value indicates, that the corresponding metadata tag is not
3146
/// present in the metadata model.
3147
/// Setting this property's value to a non-null reference creates the
3148
/// metadata tag if necessary.
3149
/// Setting this property's value to a null reference deletes the
3150
/// metadata tag from the metadata model.
3152
/// <seealso cref="DestinationLatitudeDirection"/>
3153
public FIURational[] DestinationLatitude
3157
return GetTagArray<FIURational>("GPSDestLatitude");
3161
FreeImage.Resize(ref value, 3);
3162
SetTagValue("GPSDestLatitude", value);
3167
/// Gets or sets a value indicating whether the destination point
3168
/// is east or west longitude.
3171
/// <b>Handling of null values</b><para/>
3172
/// A null value indicates, that the corresponding metadata tag is not
3173
/// present in the metadata model.
3174
/// Setting this property's value to a non-null reference creates the
3175
/// metadata tag if necessary.
3176
/// Setting this property's value to a null reference deletes the
3177
/// metadata tag from the metadata model.
3179
/// <seealso cref="Latitude"/>
3180
public LongitudeType? DestinationLongitudeDirection
3184
return ToLongitudeType(GetTagText("GPSDestLongitudeRef"));
3188
SetTagValue("GPSDestLongitudeRef", ToString(value) + '\0');
3193
/// Gets or sets the longitude of the destination point. The longitude is expressed as three rational
3194
/// values giving the degrees, minutes, and seconds, respectively. Constant length of 3.
3197
/// <b>Handling of null values</b><para/>
3198
/// A null value indicates, that the corresponding metadata tag is not
3199
/// present in the metadata model.
3200
/// Setting this property's value to a non-null reference creates the
3201
/// metadata tag if necessary.
3202
/// Setting this property's value to a null reference deletes the
3203
/// metadata tag from the metadata model.
3205
public FIURational[] DestinationLongitude
3209
return GetTagArray<FIURational>("GPSDestLongitude");
3213
FreeImage.Resize(ref value, 3);
3214
SetTagValue("GPSDestLongitude", value);
3219
/// Gets or sets the reference used for giving the bearing to the destination point.
3222
/// <b>Handling of null values</b><para/>
3223
/// A null value indicates, that the corresponding metadata tag is not
3224
/// present in the metadata model.
3225
/// Setting this property's value to a non-null reference creates the
3226
/// metadata tag if necessary.
3227
/// Setting this property's value to a null reference deletes the
3228
/// metadata tag from the metadata model.
3230
/// <seealso cref="DestinationBearing"/>
3231
public DirectionReference? DestinationDirectionReference
3235
return ToDirectionType(GetTagText("GPSDestBearingRef"));
3239
SetTagValue("GPSDestBearingRef", ToString(value) + '\0');
3244
/// Gets or sets the bearing to the destination point.
3245
/// The range of values is from 0.00 to 359.99.
3248
/// <b>Handling of null values</b><para/>
3249
/// A null value indicates, that the corresponding metadata tag is not
3250
/// present in the metadata model.
3251
/// Setting this property's value to a non-null reference creates the
3252
/// metadata tag if necessary.
3253
/// Setting this property's value to a null reference deletes the
3254
/// metadata tag from the metadata model.
3256
/// <seealso cref="DestinationDirectionReference"/>
3257
public FIURational? DestinationBearing
3261
return GetTagValue<FIURational>("GPSDestBearing");
3265
SetTagValue("GPSDestBearing", value);
3270
/// Gets or sets the unit used to express the distance to the destination point.
3273
/// <b>Handling of null values</b><para/>
3274
/// A null value indicates, that the corresponding metadata tag is not
3275
/// present in the metadata model.
3276
/// Setting this property's value to a non-null reference creates the
3277
/// metadata tag if necessary.
3278
/// Setting this property's value to a null reference deletes the
3279
/// metadata tag from the metadata model.
3281
/// <seealso cref="DestinationBearing"/>
3282
public VelocityUnit? DestinationUnit
3286
return ToUnitType(GetTagText("GPSDestDistanceRef"));
3290
SetTagValue("GPSDestDistanceRef", ToString(value) + '\0');
3295
/// Gets or sets a character string recording the name of the method used
3296
/// for location finding. The first byte indicates the character code used,
3297
/// and this is followed by the name of the method. Since the Type is not ASCII,
3298
/// NULL termination is not necessary.
3301
/// <b>Handling of null values</b><para/>
3302
/// A null value indicates, that the corresponding metadata tag is not
3303
/// present in the metadata model.
3304
/// Setting this property's value to a non-null reference creates the
3305
/// metadata tag if necessary.
3306
/// Setting this property's value to a null reference deletes the
3307
/// metadata tag from the metadata model.
3309
public byte[] ProcessingMethod
3313
return GetTagArray<byte>("GPSProcessingMethod");
3317
SetTagValue("GPSProcessingMethod", value);
3322
/// Gets or sets a character string recording the name of the GPS area.
3323
/// The first byte indicates the character code used, and this is followed by
3324
/// the name of the GPS area. Since the Type is not ASCII, NULL termination is
3328
/// <b>Handling of null values</b><para/>
3329
/// A null value indicates, that the corresponding metadata tag is not
3330
/// present in the metadata model.
3331
/// Setting this property's value to a non-null reference creates the
3332
/// metadata tag if necessary.
3333
/// Setting this property's value to a null reference deletes the
3334
/// metadata tag from the metadata model.
3336
public byte[] AreaInformation
3340
return GetTagArray<byte>("GPSAreaInformation");
3344
SetTagValue("GPSAreaInformation", value);
3349
/// Gets or sets date and time information relative to UTC (Coordinated Universal Time).
3352
/// This is a derived property. There is no metadata tag directly associated
3353
/// with this property value.
3355
/// <br/><b>Handling of null values</b><para/>
3356
/// A null value indicates, that the corresponding metadata tag is not
3357
/// present in the metadata model.
3358
/// Setting this property's value to a non-null reference creates the
3359
/// metadata tag if necessary.
3360
/// Setting this property's value to a null reference deletes the
3361
/// metadata tag from the metadata model.
3363
public DateTime? DateTimeStamp
3367
DateTime? date = DateStamp;
3368
TimeSpan? time = TimeStamp;
3369
if ((date == null) && (time == null))
3377
date = DateTime.MinValue;
3381
time = TimeSpan.MinValue;
3383
return date.Value.Add(time.Value);
3390
DateStamp = value.Value.Date;
3391
TimeStamp = value.Value.TimeOfDay;
3402
/// Gets or sets date information relative to UTC (Coordinated Universal Time).
3405
/// <b>Handling of null values</b><para/>
3406
/// A null value indicates, that the corresponding metadata tag is not
3407
/// present in the metadata model.
3408
/// Setting this property's value to a non-null reference creates the
3409
/// metadata tag if necessary.
3410
/// Setting this property's value to a null reference deletes the
3411
/// metadata tag from the metadata model.
3413
public DateTime? DateStamp
3417
string stamp = GetTagText("GPSDateStamp");
3422
return DateTime.ParseExact(stamp, "yyyy:MM:dd\0", null);
3437
val = value.Value.ToString("yyyy:MM:dd\0");
3443
SetTagValue("GPSDateStamp", val);
3448
/// Gets or sets a value indicating whether differential correction was applied to
3449
/// the GPS receiver.
3452
/// <b>Handling of null values</b><para/>
3453
/// A null value indicates, that the corresponding metadata tag is not
3454
/// present in the metadata model.
3455
/// Setting this property's value to a non-null reference creates the
3456
/// metadata tag if necessary.
3457
/// Setting this property's value to a null reference deletes the
3458
/// metadata tag from the metadata model.
3460
public bool? IsDifferential
3464
ushort? value = GetTagValue<ushort>("GPSDifferential");
3465
return value.HasValue ? (value != 0) : (default(bool?));
3469
SetTagValue("GPSDifferential", value.HasValue ? (object)(value.Value ? (ushort)1 : (ushort)0) : (null));
3475
/// Represents a collection of all tags contained in the metadata model
3476
/// <see cref="FREE_IMAGE_MDMODEL.FIMD_EXIF_INTEROP"/>.
3478
public class MDM_INTEROP : MetadataModel
3481
/// Initializes a new instance of this class.
3483
/// <param name="dib">Handle to a FreeImage bitmap.</param>
3484
public MDM_INTEROP(FIBITMAP dib) : base(dib) { }
3487
/// Retrieves the datamodel that this instance represents.
3489
public override FREE_IMAGE_MDMODEL Model
3491
get { return FREE_IMAGE_MDMODEL.FIMD_EXIF_INTEROP; }
3495
/// Gets or sets the identification of the Interoperability rule.
3498
/// <b>Handling of null values</b><para/>
3499
/// A null value indicates, that the corresponding metadata tag is not
3500
/// present in the metadata model.
3501
/// Setting this property's value to a non-null reference creates the
3502
/// metadata tag if necessary.
3503
/// Setting this property's value to a null reference deletes the
3504
/// metadata tag from the metadata model.
3506
public InteroperabilityMode? Identification
3510
return ToInteroperabilityType(GetTagText("InteroperabilityIndex"));
3514
SetTagValue("InteroperabilityIndex", ToString(value) + '\0');
3520
/// Represents a collection of all tags contained in the metadata model
3521
/// <see cref="FREE_IMAGE_MDMODEL.FIMD_EXIF_MAIN"/>.
3523
/// <b>This class is obsolete. Use class <see cref="MDM_EXIF_MAIN"/> instead.</b>
3525
[Obsolete("To be removed in future releases. Use MDM_EXIF_MAIN instead.")]
3526
public class MDM_MAIN : MDM_EXIF_MAIN
3529
/// Initializes a new instance of this class.
3531
/// <param name="dib">Handle to a FreeImage bitmap.</param>
3532
public MDM_MAIN(FIBITMAP dib) : base(dib) { }
3536
/// Represents a collection of all tags contained in the metadata model
3537
/// <see cref="FREE_IMAGE_MDMODEL.FIMD_EXIF_MAIN"/>.
3539
public class MDM_EXIF_MAIN : MetadataModel
3542
/// Initializes a new instance of this class.
3544
/// <param name="dib">Handle to a FreeImage bitmap.</param>
3545
public MDM_EXIF_MAIN(FIBITMAP dib) : base(dib) { }
3548
/// Retrieves the datamodel that this instance represents.
3550
public override FREE_IMAGE_MDMODEL Model
3552
get { return FREE_IMAGE_MDMODEL.FIMD_EXIF_MAIN; }
3556
/// Gets or sets the number of columns of image data, equal to the number
3557
/// of pixels per row. In JPEG compressed data a JPEG marker is used
3558
/// instead of this tag.
3561
/// <b>Handling of null values</b><para/>
3562
/// A null value indicates, that the corresponding metadata tag is not
3563
/// present in the metadata model.
3564
/// Setting this property's value to a non-null reference creates the
3565
/// metadata tag if necessary.
3566
/// Setting this property's value to a null reference deletes the
3567
/// metadata tag from the metadata model.
3569
public uint? ImageWidth
3573
return GetUInt32Value("ImageWidth");
3577
RemoveTag("ImageWidth");
3580
SetTagValue("ImageWidth", value);
3586
/// Gets or sets number of rows of image data. In JPEG compressed data a JPEG marker
3587
/// is used instead of this tag.
3590
/// <b>Handling of null values</b><para/>
3591
/// A null value indicates, that the corresponding metadata tag is not
3592
/// present in the metadata model.
3593
/// Setting this property's value to a non-null reference creates the
3594
/// metadata tag if necessary.
3595
/// Setting this property's value to a null reference deletes the
3596
/// metadata tag from the metadata model.
3598
public uint? ImageHeight
3602
return GetUInt32Value("ImageLength");
3606
RemoveTag("ImageLength");
3609
SetTagValue("ImageLength", value);
3615
/// Gets or sets number of bits per image component. In this standard
3616
/// each component of the image is 8 bits, so the value for this tag is 8.
3617
/// Constant length of 3.
3620
/// <b>Handling of null values</b><para/>
3621
/// A null value indicates, that the corresponding metadata tag is not
3622
/// present in the metadata model.
3623
/// Setting this property's value to a non-null reference creates the
3624
/// metadata tag if necessary.
3625
/// Setting this property's value to a null reference deletes the
3626
/// metadata tag from the metadata model.
3628
public ushort[] BitsPerSample
3632
return GetTagArray<ushort>("BitsPerSample");
3636
FreeImage.Resize(ref value, 3);
3637
SetTagValue("BitsPerSample", value);
3642
/// Gets or sets compression scheme used for the image data. When a primary image
3643
/// is JPEG compressed, this designation is not necessary and is omitted.
3644
/// When thumbnails use JPEG compression, this tag value is set to 6.
3647
/// <b>Handling of null values</b><para/>
3648
/// A null value indicates, that the corresponding metadata tag is not
3649
/// present in the metadata model.
3650
/// Setting this property's value to a non-null reference creates the
3651
/// metadata tag if necessary.
3652
/// Setting this property's value to a null reference deletes the
3653
/// metadata tag from the metadata model.
3655
public ushort? Compression
3659
return GetTagValue<ushort>("Compression");
3663
SetTagValue("Compression", value);
3668
/// Gets or sets pixel composition. In JPEG compressed data a JPEG marker is
3669
/// used instead of this tag. See remarks for further information.
3672
/// The following values are definied:<para/>
3673
/// <list type="table">
3676
/// <description>Description</description>
3680
/// <description>RGB</description>
3684
/// <description>YCbCr</description>
3687
/// <term>other</term>
3688
/// <description>reserved</description>
3692
/// <br/><b>Handling of null values</b><para/>
3693
/// A null value indicates, that the corresponding metadata tag is not
3694
/// present in the metadata model.
3695
/// Setting this property's value to a non-null reference creates the
3696
/// metadata tag if necessary.
3697
/// Setting this property's value to a null reference deletes the
3698
/// metadata tag from the metadata model.
3700
public ushort? PhotometricInterpretation
3704
return GetTagValue<ushort>("PhotometricInterpretation");
3708
SetTagValue("PhotometricInterpretation", value);
3713
/// Gets or sets the image orientation viewed in terms of rows and columns.
3716
/// <b>Handling of null values</b><para/>
3717
/// A null value indicates, that the corresponding metadata tag is not
3718
/// present in the metadata model.
3719
/// Setting this property's value to a non-null reference creates the
3720
/// metadata tag if necessary.
3721
/// Setting this property's value to a null reference deletes the
3722
/// metadata tag from the metadata model.
3724
public ExifImageOrientation? Orientation
3728
return (ExifImageOrientation?)GetTagValue<ushort>("Orientation");
3732
SetTagValue("Orientation", (ushort?)value);
3737
/// Gets or sets the number of components per pixel. Since this standard applies
3738
/// to RGB and YCbCr images, the value set for this tag is 3. In JPEG compressed
3739
/// data a JPEG marker is used instead of this tag.
3742
/// <b>Handling of null values</b><para/>
3743
/// A null value indicates, that the corresponding metadata tag is not
3744
/// present in the metadata model.
3745
/// Setting this property's value to a non-null reference creates the
3746
/// metadata tag if necessary.
3747
/// Setting this property's value to a null reference deletes the
3748
/// metadata tag from the metadata model.
3750
public ushort? SamplesPerPixel
3754
return GetTagValue<ushort>("SamplesPerPixel");
3758
SetTagValue("SamplesPerPixel", value);
3763
/// Gets or sets a value that indicates whether pixel components are recorded in
3764
/// chunky or planar format. In JPEG compressed files a JPEG marker is used instead
3765
/// of this tag. If this field does not exist, the TIFF default of 1 (chunky) is assumed.
3766
/// See remarks for further information.
3769
/// The following values are definied:<para/>
3770
/// <list type="table">
3773
/// <description>Description</description>
3777
/// <description>chunky format</description>
3781
/// <description>planar format</description>
3784
/// <term>other</term>
3785
/// <description>reserved</description>
3789
/// <br/><b>Handling of null values</b><para/>
3790
/// A null value indicates, that the corresponding metadata tag is not
3791
/// present in the metadata model.
3792
/// Setting this property's value to a non-null reference creates the
3793
/// metadata tag if necessary.
3794
/// Setting this property's value to a null reference deletes the
3795
/// metadata tag from the metadata model.
3797
public ushort? PlanarConfiguration
3801
return GetTagValue<ushort>("PlanarConfiguration");
3805
SetTagValue("PlanarConfiguration", value);
3810
/// Gets or sets the sampling ratio of chrominance components in relation to
3811
/// the luminance component. In JPEG compressed dat a JPEG marker is used
3812
/// instead of this tag.
3813
/// See remarks for further information.
3816
/// The following values are definied:<para/>
3817
/// <list type="table">
3820
/// <description>Description</description>
3823
/// <term>[2,1]</term>
3824
/// <description>YCbCr4:2:2</description>
3827
/// <term>[2,2]</term>
3828
/// <description>YCbCr4:2:0</description>
3831
/// <term>other</term>
3832
/// <description>reserved</description>
3836
/// <br/><b>Handling of null values</b><para/>
3837
/// A null value indicates, that the corresponding metadata tag is not
3838
/// present in the metadata model.
3839
/// Setting this property's value to a non-null reference creates the
3840
/// metadata tag if necessary.
3841
/// Setting this property's value to a null reference deletes the
3842
/// metadata tag from the metadata model.
3844
public ushort[] YCbCrSubSampling
3848
return GetTagArray<ushort>("YCbCrSubSampling");
3852
FreeImage.Resize(ref value, 2);
3853
SetTagValue("YCbCrSubSampling", value);
3858
/// Gets or sets position of chrominance components in relation to the luminance component.
3859
/// See remarks for further information.
3862
/// This field is designated only for JPEG compressed data or uncompressed YCbCr data.
3863
/// The TIFF default is 1 (centered); but when Y:Cb:Cr = 4:2:2 it is recommended in
3864
/// this standard that 2 (co-sited) be used to record data, in order to improve the
3865
/// image quality when viewed on TV systems.
3867
/// When this field does not exist, the reader shall assume the TIFF default.
3868
/// In the case of Y:Cb:Cr = 4:2:0, the TIFF default (centered) is recommended.
3869
/// If the reader does not have the capability of supporting both kinds of YCbCrPositioning,
3870
/// it shall follow the TIFF default regardless of the value in this field.
3871
/// It is preferable that readers be able to support both centered and co-sited positioning.
3873
/// The following values are definied:<para/>
3874
/// <list type="table">
3877
/// <description>Description</description>
3881
/// <description>centered</description>
3885
/// <description>co-sited</description>
3888
/// <term>other</term>
3889
/// <description>reserved</description>
3893
/// <br/><b>Handling of null values</b><para/>
3894
/// A null value indicates, that the corresponding metadata tag is not
3895
/// present in the metadata model.
3896
/// Setting this property's value to a non-null reference creates the
3897
/// metadata tag if necessary.
3898
/// Setting this property's value to a null reference deletes the
3899
/// metadata tag from the metadata model.
3901
public ushort? YCbCrPositioning
3905
return GetTagValue<ushort>("YCbCrPositioning");
3909
SetTagValue("YCbCrPositioning", value);
3914
/// Gets or sets the number of pixels per <see cref="ResolutionUnit"/>
3915
/// in the <see cref="ImageWidth"/> direction. When the image resolution is unknown,
3916
/// 72 [dpi] is designated.
3919
/// <b>Handling of null values</b><para/>
3920
/// A null value indicates, that the corresponding metadata tag is not
3921
/// present in the metadata model.
3922
/// Setting this property's value to a non-null reference creates the
3923
/// metadata tag if necessary.
3924
/// Setting this property's value to a null reference deletes the
3925
/// metadata tag from the metadata model.
3927
public FIURational? XResolution
3931
return GetTagValue<FIURational>("XResolution");
3935
SetTagValue("XResolution", value);
3940
/// Gets or sets the number of pixels per <see cref="ResolutionUnit"/>
3941
/// in the <see cref="ImageHeight"/> direction. When the image resolution is unknown,
3942
/// 72 [dpi] is designated.
3945
/// <b>Handling of null values</b><para/>
3946
/// A null value indicates, that the corresponding metadata tag is not
3947
/// present in the metadata model.
3948
/// Setting this property's value to a non-null reference creates the
3949
/// metadata tag if necessary.
3950
/// Setting this property's value to a null reference deletes the
3951
/// metadata tag from the metadata model.
3953
public FIURational? YResolution
3957
return GetTagValue<FIURational>("YResolution");
3961
SetTagValue("YResolution", value);
3966
/// Gets or sets the unit for measuring <see cref="XResolution"/> and <see cref="YResolution"/>.
3967
/// The same unit is used for both <see cref="XResolution"/> and <see cref="YResolution"/>.
3968
/// If the image resolution in unknown, 2 (inches) is designated.
3969
/// See remarks for further information.
3972
/// The following values are definied:<para/>
3973
/// <list type="table">
3976
/// <description>Description</description>
3980
/// <description>inches</description>
3984
/// <description>YCbCr4:2:0</description>
3987
/// <term>other</term>
3988
/// <description>centimeters</description>
3992
/// <br/><b>Handling of null values</b><para/>
3993
/// A null value indicates, that the corresponding metadata tag is not
3994
/// present in the metadata model.
3995
/// Setting this property's value to a non-null reference creates the
3996
/// metadata tag if necessary.
3997
/// Setting this property's value to a null reference deletes the
3998
/// metadata tag from the metadata model.
4000
public ushort? ResolutionUnit
4004
return GetTagValue<ushort>("ResolutionUnit");
4008
SetTagValue("ResolutionUnit", value);
4013
/// Gets or sets the byte offset of that strip.
4014
/// It is recommended that this be selected so the number of strip bytes
4015
/// does not exceed 64 Kbytes.
4016
/// With JPEG compressed data this designation is not needed and is omitted.
4017
/// Constant length of <see cref="SamplesPerPixel"/> * StripsPerImage.
4020
/// <b>Handling of null values</b><para/>
4021
/// A null value indicates, that the corresponding metadata tag is not
4022
/// present in the metadata model.
4023
/// Setting this property's value to a non-null reference creates the
4024
/// metadata tag if necessary.
4025
/// Setting this property's value to a null reference deletes the
4026
/// metadata tag from the metadata model.
4028
/// <seealso cref="RowsPerStrip"/>
4029
/// <see cref="StripByteCounts"/>
4030
public uint[] StripOffsets
4034
return GetUInt32Array("StripOffsets");
4038
RemoveTag("StripOffsets");
4041
SetTagValue("StripOffsets", value);
4047
/// Gets or sets number of rows per strip. This is the number of rows in the image of
4048
/// one strip when an image is divided into strips. With JPEG compressed data this
4049
/// designation is not needed and is omitted.
4052
/// <b>Handling of null values</b><para/>
4053
/// A null value indicates, that the corresponding metadata tag is not
4054
/// present in the metadata model.
4055
/// Setting this property's value to a non-null reference creates the
4056
/// metadata tag if necessary.
4057
/// Setting this property's value to a null reference deletes the
4058
/// metadata tag from the metadata model.
4060
/// <seealso cref="StripByteCounts"/>
4061
public uint? RowsPerStrip
4065
return GetUInt32Value("RowsPerStrip");
4069
RemoveTag("RowsPerStrip");
4072
SetTagValue("RowsPerStrip", value);
4078
/// Gets or sets the total number of bytes in each strip.
4079
/// With JPEG compressed data this designation is not needed and is omitted.
4080
/// Constant length of <see cref="SamplesPerPixel"/> * StripsPerImage.
4083
/// <b>Handling of null values</b><para/>
4084
/// A null value indicates, that the corresponding metadata tag is not
4085
/// present in the metadata model.
4086
/// Setting this property's value to a non-null reference creates the
4087
/// metadata tag if necessary.
4088
/// Setting this property's value to a null reference deletes the
4089
/// metadata tag from the metadata model.
4091
public uint[] StripByteCounts
4095
return GetUInt32Array("StripByteCounts");
4099
RemoveTag("StripByteCounts");
4102
SetTagValue("StripByteCounts", value);
4108
/// Gets or sets the offset to the start byte (SOI) of JPEG compressed thumbnail data.
4109
/// This is not used for primary image JPEG data.
4112
/// <b>Handling of null values</b><para/>
4113
/// A null value indicates, that the corresponding metadata tag is not
4114
/// present in the metadata model.
4115
/// Setting this property's value to a non-null reference creates the
4116
/// metadata tag if necessary.
4117
/// Setting this property's value to a null reference deletes the
4118
/// metadata tag from the metadata model.
4120
public uint? JPEGInterchangeFormat
4124
return GetTagValue<uint>("JPEGInterchangeFormat");
4128
SetTagValue("JPEGInterchangeFormat", value);
4133
/// Gets or sets the number of bytes of JPEG compressed thumbnail data.
4136
/// This is not used for primary image JPEG data.
4137
/// JPEG thumbnails are not divided but are recorded as a continuous
4138
/// JPEG bitstream from SOI to EOI. APPn and COM markers should not be recorded.
4139
/// Compressed thumbnails shall be recorded in no more than 64 Kbytes,
4140
/// including all other data to be recorded in APP1.
4142
/// <br/><b>Handling of null values</b><para/>
4143
/// A null value indicates, that the corresponding metadata tag is not
4144
/// present in the metadata model.
4145
/// Setting this property's value to a non-null reference creates the
4146
/// metadata tag if necessary.
4147
/// Setting this property's value to a null reference deletes the
4148
/// metadata tag from the metadata model.
4150
public uint? JPEGInterchangeFormatLength
4154
return GetTagValue<uint>("JPEGInterchangeFormatLength");
4158
SetTagValue("JPEGInterchangeFormatLength", value);
4163
/// Gets or sets a transfer function for the image, described in tabular style.
4164
/// Constant length of 3 * 256.
4167
/// <b>Handling of null values</b><para/>
4168
/// A null value indicates, that the corresponding metadata tag is not
4169
/// present in the metadata model.
4170
/// Setting this property's value to a non-null reference creates the
4171
/// metadata tag if necessary.
4172
/// Setting this property's value to a null reference deletes the
4173
/// metadata tag from the metadata model.
4175
public ushort[] TransferFunction
4179
return GetTagArray<ushort>("TransferFunction");
4183
FreeImage.Resize(ref value, 3 * 256);
4184
SetTagValue("TransferFunction", value);
4189
/// Gets or sets the chromaticity of the white point of the image.
4190
/// Constant length of 2.
4193
/// <b>Handling of null values</b><para/>
4194
/// A null value indicates, that the corresponding metadata tag is not
4195
/// present in the metadata model.
4196
/// Setting this property's value to a non-null reference creates the
4197
/// metadata tag if necessary.
4198
/// Setting this property's value to a null reference deletes the
4199
/// metadata tag from the metadata model.
4201
public FIURational[] WhitePoint
4205
return GetTagArray<FIURational>("WhitePoint");
4209
FreeImage.Resize(ref value, 2);
4210
SetTagValue("WhitePoint", value);
4215
/// Gets or sets the chromaticity of the three primary colors of the image.
4216
/// Constant length of 6.
4219
/// <b>Handling of null values</b><para/>
4220
/// A null value indicates, that the corresponding metadata tag is not
4221
/// present in the metadata model.
4222
/// Setting this property's value to a non-null reference creates the
4223
/// metadata tag if necessary.
4224
/// Setting this property's value to a null reference deletes the
4225
/// metadata tag from the metadata model.
4227
public FIURational[] PrimaryChromaticities
4231
return GetTagArray<FIURational>("PrimaryChromaticities");
4235
FreeImage.Resize(ref value, 6);
4236
SetTagValue("PrimaryChromaticities", value);
4241
/// Gets or sets the matrix coefficients for transformation from RGB to YCbCr image data.
4242
/// Constant length of 3.
4245
/// <b>Handling of null values</b><para/>
4246
/// A null value indicates, that the corresponding metadata tag is not
4247
/// present in the metadata model.
4248
/// Setting this property's value to a non-null reference creates the
4249
/// metadata tag if necessary.
4250
/// Setting this property's value to a null reference deletes the
4251
/// metadata tag from the metadata model.
4253
public FIURational[] YCbCrCoefficients
4257
return GetTagArray<FIURational>("YCbCrCoefficients");
4261
FreeImage.Resize(ref value, 3);
4262
SetTagValue("PrimaryChromaticities", value);
4267
/// Gets or sets the reference black point value and reference white point value.
4268
/// Constant length of 6.
4271
/// <b>Handling of null values</b><para/>
4272
/// A null value indicates, that the corresponding metadata tag is not
4273
/// present in the metadata model.
4274
/// Setting this property's value to a non-null reference creates the
4275
/// metadata tag if necessary.
4276
/// Setting this property's value to a null reference deletes the
4277
/// metadata tag from the metadata model.
4279
public FIURational[] ReferenceBlackWhite
4283
return GetTagArray<FIURational>("ReferenceBlackWhite");
4287
FreeImage.Resize(ref value, 6);
4288
SetTagValue("ReferenceBlackWhite", value);
4293
/// Gets or sets the date and time of image creation.
4296
/// <b>Handling of null values</b><para/>
4297
/// A null value indicates, that the corresponding metadata tag is not
4298
/// present in the metadata model.
4299
/// Setting this property's value to a non-null reference creates the
4300
/// metadata tag if necessary.
4301
/// Setting this property's value to a null reference deletes the
4302
/// metadata tag from the metadata model.
4304
public DateTime? DateTime
4308
DateTime? result = null;
4309
string text = GetTagText("DateTime");
4314
result = System.DateTime.ParseExact(text, "yyyy:MM:dd HH:mm:ss\0", null);
4329
val = value.Value.ToString("yyyy:MM:dd HH:mm:ss\0");
4335
SetTagValue("DateTime", val);
4340
/// Gets or sets a string giving the title of the image.
4343
/// <b>Handling of null values</b><para/>
4344
/// A null value indicates, that the corresponding metadata tag is not
4345
/// present in the metadata model.
4346
/// Setting this property's value to a non-null reference creates the
4347
/// metadata tag if necessary.
4348
/// Setting this property's value to a null reference deletes the
4349
/// metadata tag from the metadata model.
4351
public string ImageDescription
4355
string result = GetTagText("ImageDescription");
4356
if (!string.IsNullOrEmpty(result))
4358
result = result.Substring(0, result.Length - 1);
4368
SetTagValue("ImageDescription", value);
4373
/// Gets or sets the manufacturer of the recording equipment.
4376
/// <b>Handling of null values</b><para/>
4377
/// A null value indicates, that the corresponding metadata tag is not
4378
/// present in the metadata model.
4379
/// Setting this property's value to a non-null reference creates the
4380
/// metadata tag if necessary.
4381
/// Setting this property's value to a null reference deletes the
4382
/// metadata tag from the metadata model.
4388
string result = GetTagText("Make");
4389
if (!string.IsNullOrEmpty(result))
4391
result = result.Substring(0, result.Length - 1);
4401
SetTagValue("Make", value);
4406
/// Gets or sets the model name or model number of the equipment.
4409
/// <b>Handling of null values</b><para/>
4410
/// A null value indicates, that the corresponding metadata tag is not
4411
/// present in the metadata model.
4412
/// Setting this property's value to a non-null reference creates the
4413
/// metadata tag if necessary.
4414
/// Setting this property's value to a null reference deletes the
4415
/// metadata tag from the metadata model.
4417
public string EquipmentModel
4421
string result = GetTagText("Model");
4422
if (!string.IsNullOrEmpty(result))
4424
result = result.Substring(0, result.Length - 1);
4434
SetTagValue("Model", value);
4439
/// Gets or sets the name and version of the software or firmware of the camera
4440
/// or image input device used to generate the image.
4443
/// <b>Handling of null values</b><para/>
4444
/// A null value indicates, that the corresponding metadata tag is not
4445
/// present in the metadata model.
4446
/// Setting this property's value to a non-null reference creates the
4447
/// metadata tag if necessary.
4448
/// Setting this property's value to a null reference deletes the
4449
/// metadata tag from the metadata model.
4451
public string Software
4455
string result = GetTagText("Software");
4456
if (!string.IsNullOrEmpty(result))
4458
result = result.Substring(0, result.Length - 1);
4468
SetTagValue("Software", value);
4473
/// Gets or sets the name of the camera owner, photographer or image creator.
4476
/// <b>Handling of null values</b><para/>
4477
/// A null value indicates, that the corresponding metadata tag is not
4478
/// present in the metadata model.
4479
/// Setting this property's value to a non-null reference creates the
4480
/// metadata tag if necessary.
4481
/// Setting this property's value to a null reference deletes the
4482
/// metadata tag from the metadata model.
4484
public string Artist
4488
string result = GetTagText("Artist");
4489
if (!string.IsNullOrEmpty(result))
4491
result = result.Substring(0, result.Length - 1);
4501
SetTagValue("Artist", value);
4506
/// Gets or sets the photographer and editor copyrights.
4507
/// Constant length of 1-2.
4510
/// <b>Handling of null values</b><para/>
4511
/// A null value indicates, that the corresponding metadata tag is not
4512
/// present in the metadata model.
4513
/// Setting this property's value to a non-null reference creates the
4514
/// metadata tag if necessary.
4515
/// Setting this property's value to a null reference deletes the
4516
/// metadata tag from the metadata model.
4518
public string[] Copyright
4522
string[] result = null;
4523
string text = GetTagText("Copyright");
4524
if (!string.IsNullOrEmpty(text))
4526
result = text.Split(new char[] { '\0' }, StringSplitOptions.RemoveEmptyEntries);
4535
if (value.Length == 1)
4537
if (value[0] != null)
4539
val = value[0] + '\0';
4542
else if (value.Length == 2)
4544
if ((value[0] != null) && (value[1] != null))
4546
val = value[0] + '\0' + value[1] + '\0';
4550
SetTagValue("Copyright", val);
4556
/// Represents a collection of all tags contained in the metadata model
4557
/// <see cref="FREE_IMAGE_MDMODEL.FIMD_EXIF_MAKERNOTE"/>.
4559
public class MDM_MAKERNOTE : MetadataModel
4562
/// Initializes a new instance of this class.
4564
/// <param name="dib">Handle to a FreeImage bitmap.</param>
4565
public MDM_MAKERNOTE(FIBITMAP dib) : base(dib) { }
4568
/// Retrieves the datamodel that this instance represents.
4570
public override FREE_IMAGE_MDMODEL Model
4572
get { return FREE_IMAGE_MDMODEL.FIMD_EXIF_MAKERNOTE; }
4577
/// Represents a collection of all tags contained in the metadata model
4578
/// <see cref="FREE_IMAGE_MDMODEL.FIMD_GEOTIFF"/>.
4580
public class MDM_GEOTIFF : MetadataModel
4583
/// Initializes a new instance of this class.
4585
/// <param name="dib">Handle to a FreeImage bitmap.</param>
4586
public MDM_GEOTIFF(FIBITMAP dib) : base(dib) { }
4589
/// Retrieves the datamodel that this instance represents.
4591
public override FREE_IMAGE_MDMODEL Model
4593
get { return FREE_IMAGE_MDMODEL.FIMD_GEOTIFF; }
4597
/// Gets or sets the value of the GeoTIFF GeoASCIIParamsTag.
4600
/// The GeoASCIIParamsTag is used to store all of the <see cref="String"/> valued
4601
/// GeoKeys, referenced by the <see cref="GeoKeyDirectory"/> property. Since keys
4602
/// defined in the GeoKeyDirectoryTag use offsets into this tag, any special
4603
/// comments may be placed at the beginning of this tag.
4604
/// For the most part, the only keys that are <see cref="String"/> valued are
4605
/// <i>Citation</i> keys, giving documentation and references for obscure
4606
/// projections, datums, etc.
4608
/// Special handling is required for <see cref="String"/>-valued keys. While it
4609
/// is true that TIFF 6.0 permits multiple NULL-delimited strings within a single
4610
/// ASCII tag, the secondary strings might not appear in the output of naive
4611
/// <i>tiffdump</i> programs. For this reason, the NULL delimiter of each ASCII key
4612
/// value shall be converted to a "|" (pipe) character before being installed
4613
/// back into the <see cref="String"/> holding tag, so that a dump of the tag
4614
/// will look like this.
4616
/// AsciiTag="first_value|second_value|etc...last_value|"
4618
/// A baseline GeoTIFF-reader must check for and convert the final "|" pipe
4619
/// character of a key back into a NULL before returning it to the client
4622
/// <br/><b>Handling of null values</b><para/>
4623
/// A null value indicates, that the corresponding metadata tag is not
4624
/// present in the metadata model.
4625
/// Setting this property's value to a non-null reference creates the
4626
/// metadata tag if necessary.
4627
/// Setting this property's value to a null reference deletes the
4628
/// metadata tag from the metadata model.
4630
public string GeoASCIIParams
4634
string text = GetTagText("GeoASCIIParams");
4635
if (!string.IsNullOrEmpty(text))
4637
text = text.Substring(0, text.Length - 1);
4647
SetTagValue("GeoASCIIParams", value);
4652
/// Gets or sets the value of the GeoTIFF GeoDoubleParamsTag.
4655
/// The GeoDoubleParamsTag is used to store all of the <see cref="Double"/> valued
4656
/// GeoKeys, referenced by the <see cref="GeoKeyDirectory"/> property. The meaning of
4657
/// any value of this double array is determined from the GeoKeyDirectoryTag reference
4658
/// pointing to it. <see cref="Single"/> values should first be converted to
4659
/// <see cref="Double"/> and stored here.
4661
/// <br/><b>Handling of null values</b><para/>
4662
/// A null value indicates, that the corresponding metadata tag is not
4663
/// present in the metadata model.
4664
/// Setting this property's value to a non-null reference creates the
4665
/// metadata tag if necessary.
4666
/// Setting this property's value to a null reference deletes the
4667
/// metadata tag from the metadata model.
4669
public double[] GeoDoubleParams
4673
return GetTagArray<double>("GeoDoubleParams");
4677
SetTagValue("GeoDoubleParams", value);
4682
/// Gets or sets the value of the GeoTIFF GeoKeyDirectoryTag.
4685
/// The GeoKeyDirectoryTag may be used to store the GeoKey Directory, which defines and
4686
/// references the <i>GeoKeys</i>.
4688
/// The tag is an array of unsigned <see cref="UInt16"/> values, which are primarily
4689
/// grouped into blocks of 4. The first 4 values are special, and contain GeoKey directory
4690
/// header information. The header values consist of the following information, in order:
4692
/// Header={KeyDirectoryVersion, KeyRevision, MinorRevision, NumberOfKeys}
4696
/// <i>KeyDirectoryVersion</i> indicates the current version of Key implementation, and will
4697
/// only change if this Tag's Key structure is changed. (Similar to the TIFFVersion (42)).
4698
/// The current DirectoryVersion number is 1. This value will most likely never change,
4699
/// and may be used to ensure that this is a valid Key-implementation.
4701
/// <i>KeyRevision</i> indicates what revision of Key-Sets are used.
4703
/// <i>MinorRevision</i> indicates what set of Key-Codes are used. The complete revision number
4704
/// is denoted <KeyRevision>.<MinorRevision>.
4706
/// <i>NumberOfKeys</i> indicates how many Keys are defined by the rest of this Tag.
4708
/// This header is immediately followed by a collection of <NumberOfKeys> KeyEntry
4709
/// sets, each of which is also 4-<see cref="UInt16"/> long. Each KeyEntry is modeled on the
4710
/// <i>TIFFEntry</i> format of the TIFF directory header, and is of the form:
4712
/// KeyEntry = { KeyID, TIFFTagLocation, Count, Value_Offset }
4716
/// <i>KeyID</i> gives the Key-ID value of the Key (identical in function to TIFF tag ID,
4717
/// but completely independent of TIFF tag-space),
4719
/// <i>TIFFTagLocation</i> indicates which TIFF tag contains the value(s) of the Key: if
4720
/// TIFFTagLocation is 0, then the value is <see cref="UInt16"/>, and is contained in the
4721
/// <i>Value_Offset</i> entry. Otherwise, the type (format) of the value is implied by the
4722
/// TIFF-Type of the tag containing the value.
4724
/// <i>Count</i> indicates the number of values in this key.
4726
/// <i>Value_Offset</i> Value_Offset indicates the index-offset into the TagArray indicated
4727
/// by TIFFTagLocation, if it is nonzero. If TIFFTagLocation is 0 (zero) , then Value_Offset
4728
/// contains the actual (<see cref="UInt16"/>) value of the Key, and Count=1 is implied.
4729
/// Note that the offset is not a byte-offset, but rather an index based on the natural data
4730
/// type of the specified tag array.
4732
/// Following the KeyEntry definitions, the KeyDirectory tag may also contain additional
4733
/// values. For example, if a key requires multiple <see cref="UInt16"/> values, they shall
4734
/// be placed at the end of this tag, and the KeyEntry will set
4735
/// TIFFTagLocation=GeoKeyDirectoryTag, with the Value_Offset pointing to the location of the
4738
/// <br/><b>Handling of null values</b><para/>
4739
/// A null value indicates, that the corresponding metadata tag is not
4740
/// present in the metadata model.
4741
/// Setting this property's value to a non-null reference creates the
4742
/// metadata tag if necessary.
4743
/// Setting this property's value to a null reference deletes the
4744
/// metadata tag from the metadata model.
4746
public ushort[] GeoKeyDirectory
4750
return GetTagArray<ushort>("GeoKeyDirectory");
4754
SetTagValue("GeoKeyDirectory", value);
4759
/// Gets or sets the value of the GeoTIFF ModelPixelScaleTag.
4762
/// The ModelPixelScaleTag tag may be used to specify the size of raster pixel spacing
4763
/// in the model space units, when the raster space can be embedded in the model space
4764
/// coordinate system without rotation, and consists of the following 3 values:
4766
/// ModelPixelScaleTag = (ScaleX, ScaleY, ScaleZ)
4768
/// where <i>ScaleX</i> and <i>ScaleY</i> give the horizontal and vertical spacing of
4769
/// raster pixels. The <i>ScaleZ</i> is primarily used to map the pixel value of a
4770
/// digital elevation model into the correct Z-scale, and so for most other purposes
4771
/// this value should be zero (since most model spaces are 2-D, with Z=0).
4773
/// A single tiepoint in the <see cref="ModelTiePoints"/> tag, together with this tag,
4774
/// completely determine the relationship between raster and model space; thus they
4775
/// comprise the two tags which Baseline GeoTIFF files most often will use to place a
4776
/// raster image into a "standard position" in model space.
4778
/// Like the <see cref="ModelTiePoints"/> tag, this tag information is independent of the
4779
/// XPosition, YPosition, Resolution and Orientation tags of the standard TIFF 6.0 spec.
4780
/// However, simple reversals of orientation between raster and model space
4781
/// (e.g. horizontal or vertical flips) may be indicated by reversal of sign in the
4782
/// corresponding component of the ModelPixelScaleTag. GeoTIFF compliant readers must
4783
/// honor this signreversal convention.
4785
/// This tag must not be used if the raster image requires rotation or shearing to place
4786
/// it into the standard model space. In such cases the transformation shall be defined
4787
/// with the more general <see cref="ModelTransformationMatrix"/>.
4789
/// <br/><b>Naming differences</b><para/>
4790
/// In the native FreeImage library and thus, in the FreeImage API documentation, this
4791
/// property's key is named <i>GeoPixelScale</i>. Since the GeoTIFF specification
4792
/// as well as Java's <c>EXIFTIFFTagSet</c> class call this tag
4793
/// <see cref="ModelPixelScale"/>, this property was renamed accordingly.
4794
/// However, when accessing this property's tag by its <see cref="MetadataTag"/> object,
4795
/// the native FreeImage tag key <i>GeoPixelScale</i> must be used.
4797
/// <br/><b>Handling of null values</b><para/>
4798
/// A null value indicates, that the corresponding metadata tag is not
4799
/// present in the metadata model.
4800
/// Setting this property's value to a non-null reference creates the
4801
/// metadata tag if necessary.
4802
/// Setting this property's value to a null reference deletes the
4803
/// metadata tag from the metadata model.
4805
public double[] ModelPixelScale
4809
return GetTagArray<double>("GeoPixelScale");
4813
SetTagValue("GeoPixelScale", value);
4818
/// Gets or sets the value of the GeoTIFF GeoTiePointsTag.
4821
/// The GeoTiePointsTag stores raster -> model tiepoint pairs in the order
4823
/// ModelTiePoints = (...,I,J,K, X,Y,Z...),
4825
/// where <i>(I,J,K)</i> is the point at location <i>(I,J)</i> in raster space with
4826
/// pixel-value <i>K</i>, and <i>(X,Y,Z)</i> is a vector in model space. In most cases
4827
/// the model space is only two-dimensional, in which case both K and Z should be set
4828
/// to zero; this third dimension is provided in anticipation of future support for 3D
4829
/// digital elevation models and vertical coordinate systems.
4831
/// A raster image may be georeferenced simply by specifying its location, size and
4832
/// orientation in the model coordinate space M. This may be done by specifying the
4833
/// location of three of the four bounding corner points. However, tiepoints are only
4834
/// to be considered exact at the points specified; thus defining such a set of
4835
/// bounding tiepoints does not imply that the model space locations of the interior
4836
/// of the image may be exactly computed by a linear interpolation of these tiepoints.
4838
/// However, since the relationship between the Raster space and the model space will
4839
/// often be an exact, affine transformation, this relationship can be defined using
4840
/// one set of tiepoints and the <see cref="ModelPixelScale"/>, described below, which
4841
/// gives the vertical and horizontal raster grid cell size, specified in model units.
4843
/// If possible, the first tiepoint placed in this tag shall be the one establishing
4844
/// the location of the point (0,0) in raster space. However, if this is not possible
4845
/// (for example, if (0,0) is goes to a part of model space in which the projection is
4846
/// ill-defined), then there is no particular order in which the tiepoints need be
4849
/// For orthorectification or mosaicking applications a large number of tiepoints may
4850
/// be specified on a mesh over the raster image. However, the definition of associated
4851
/// grid interpolation methods is not in the scope of the current GeoTIFF spec.
4853
/// <br/><b>Naming differences</b><para/>
4854
/// In the native FreeImage library and thus, in the FreeImage API documentation, this
4855
/// property's key is named <i>GeoTiePoints</i>. Since the GeoTIFF specification
4856
/// as well as Java's <c>EXIFTIFFTagSet</c> class call this tag
4857
/// <see cref="ModelTiePoints"/>, this property was renamed accordingly.
4858
/// However, when accessing this property's tag by its <see cref="MetadataTag"/> object,
4859
/// the native FreeImage tag key <i>GeoTiePoints</i> must be used.
4861
/// <br/><b>Handling of null values</b><para/>
4862
/// A null value indicates, that the corresponding metadata tag is not
4863
/// present in the metadata model.
4864
/// Setting this property's value to a non-null reference creates the
4865
/// metadata tag if necessary.
4866
/// Setting this property's value to a null reference deletes the
4867
/// metadata tag from the metadata model.
4869
public double[] ModelTiePoints
4873
return GetTagArray<double>("GeoTiePoints");
4877
SetTagValue("GeoTiePoints", value);
4882
/// Gets or sets the value of the GeoTIFF ModelTransformationMatrixTag.
4885
/// This tag may be used to specify the transformation matrix between the raster space
4886
/// (and its dependent pixel-value space) and the (possibly 3D) model space.
4888
/// <br/><b>Naming differences</b><para/>
4889
/// In the native FreeImage library and thus, in the FreeImage API documentation, this
4890
/// property's key is named <i>GeoTransformationMatrix</i>. Since the GeoTIFF specification
4891
/// as well as Java's <c>EXIFTIFFTagSet</c> class call this tag
4892
/// <see cref="ModelTransformationMatrix"/>, this property was renamed accordingly.
4893
/// However, when accessing this property's tag by its <see cref="MetadataTag"/> object,
4894
/// the native FreeImage tag key <i>GeoTransformationMatrix</i> must be used.
4896
/// <br/><b>Handling of null values</b><para/>
4897
/// A null value indicates, that the corresponding metadata tag is not
4898
/// present in the metadata model.
4899
/// Setting this property's value to a non-null reference creates the
4900
/// metadata tag if necessary.
4901
/// Setting this property's value to a null reference deletes the
4902
/// metadata tag from the metadata model.
4904
public double[] ModelTransformationMatrix
4908
return GetTagArray<double>("GeoTransformationMatrix");
4912
SetTagValue("GeoTransformationMatrix", value);
4917
/// Gets or sets the value of the GeoTIFF IntergraphTransformationMatrixTag.
4920
/// The IntergraphTransformationMatrixTag conflicts with an internal software implementation
4921
/// at Intergraph, and so its use is no longer encouraged. A GeoTIFF reader should look first
4922
/// for the new tag, and only if it is not found should it check for this older tag. If found,
4923
/// it should only consider it to be contain valid GeoTIFF matrix information if the tag-count
4924
/// is 16; the Intergraph version uses 17 values.
4926
/// <br/><b>Handling of null values</b><para/>
4927
/// A null value indicates, that the corresponding metadata tag is not
4928
/// present in the metadata model.
4929
/// Setting this property's value to a non-null reference creates the
4930
/// metadata tag if necessary.
4931
/// Setting this property's value to a null reference deletes the
4932
/// metadata tag from the metadata model.
4934
public double[] IntergraphTransformationMatrix
4938
return GetTagArray<double>("Intergraph TransformationMatrix");
4942
SetTagValue("Intergraph TransformationMatrix", value);
4947
/// Gets or sets the value of the GeoTIFF JPLCartoIFDOffsetTag.
4950
/// <b>Handling of null values</b><para/>
4951
/// A null value indicates, that the corresponding metadata tag is not
4952
/// present in the metadata model.
4953
/// Setting this property's value to a non-null reference creates the
4954
/// metadata tag if necessary.
4955
/// Setting this property's value to a null reference deletes the
4956
/// metadata tag from the metadata model.
4958
public uint? JPLCartoIFDOffset
4962
return GetTagValue<uint>("JPL Carto IFD offset");
4966
SetTagValue("JPL Carto IFD offset", value);
4972
/// Represents a collection of all tags contained in the metadata model
4973
/// <see cref="FREE_IMAGE_MDMODEL.FIMD_IPTC"/>.
4975
public class MDM_IPTC : MetadataModel
4978
/// Initializes a new instance of this class.
4980
/// <param name="dib">Handle to a FreeImage bitmap.</param>
4981
public MDM_IPTC(FIBITMAP dib) : base(dib) { }
4984
/// Retrieves the datamodel that this instance represents.
4987
/// <b>Handling of null values</b><para/>
4988
/// A null value indicates, that the corresponding metadata tag is not
4989
/// present in the metadata model.
4990
/// Setting this property's value to a non-null reference creates the
4991
/// metadata tag if necessary.
4992
/// Setting this property's value to a null reference deletes the
4993
/// metadata tag from the metadata model.
4995
public override FREE_IMAGE_MDMODEL Model
4997
get { return FREE_IMAGE_MDMODEL.FIMD_IPTC; }
5001
/// Gets the Application Record Version.
5004
/// <b>Handling of null values</b><para/>
5005
/// A null value indicates, that the corresponding metadata tag is not
5006
/// present in the metadata model.
5007
/// Setting this property's value to a non-null reference creates the
5008
/// metadata tag if necessary.
5009
/// Setting this property's value to a null reference deletes the
5010
/// metadata tag from the metadata model.
5012
public short? ApplicationRecordVersion
5016
return GetTagValue<short>("ApplicationRecordVersion");
5021
/// Gets or sets the value of the IPTC/NAA tag Object Type Reference.
5024
/// <b>Handling of null values</b><para/>
5025
/// A null value indicates, that the corresponding metadata tag is not
5026
/// present in the metadata model.
5027
/// Setting this property's value to a non-null reference creates the
5028
/// metadata tag if necessary.
5029
/// Setting this property's value to a null reference deletes the
5030
/// metadata tag from the metadata model.
5032
public string ObjectTypeReference
5036
return GetTagText("ObjectTypeReference");
5040
SetTagValue("ObjectTypeReference", value);
5045
/// Gets or sets the value of the IPTC/NAA tag Object Attribute Reference.
5048
/// <b>Handling of null values</b><para/>
5049
/// A null value indicates, that the corresponding metadata tag is not
5050
/// present in the metadata model.
5051
/// Setting this property's value to a non-null reference creates the
5052
/// metadata tag if necessary.
5053
/// Setting this property's value to a null reference deletes the
5054
/// metadata tag from the metadata model.
5056
public string ObjectAttributeReference
5060
return GetTagText("ObjectAttributeReference");
5064
SetTagValue("ObjectAttributeReference", value);
5069
/// Gets or sets the value of the IPTC/NAA tag Object Name.
5070
/// This is also referred to as Title.
5073
/// <b>Handling of null values</b><para/>
5074
/// A null value indicates, that the corresponding metadata tag is not
5075
/// present in the metadata model.
5076
/// Setting this property's value to a non-null reference creates the
5077
/// metadata tag if necessary.
5078
/// Setting this property's value to a null reference deletes the
5079
/// metadata tag from the metadata model.
5081
public string ObjectName
5085
return GetTagText("ObjectName");
5089
SetTagValue("ObjectName", value);
5094
/// Gets or sets the value of the IPTC/NAA tag Edit Status.
5097
/// <b>Handling of null values</b><para/>
5098
/// A null value indicates, that the corresponding metadata tag is not
5099
/// present in the metadata model.
5100
/// Setting this property's value to a non-null reference creates the
5101
/// metadata tag if necessary.
5102
/// Setting this property's value to a null reference deletes the
5103
/// metadata tag from the metadata model.
5105
public string EditStatus
5109
return GetTagText("EditStatus");
5113
SetTagValue("EditStatus", value);
5118
/// Gets or sets the value of the IPTC/NAA tag Editorial Update.
5121
/// <b>Handling of null values</b><para/>
5122
/// A null value indicates, that the corresponding metadata tag is not
5123
/// present in the metadata model.
5124
/// Setting this property's value to a non-null reference creates the
5125
/// metadata tag if necessary.
5126
/// Setting this property's value to a null reference deletes the
5127
/// metadata tag from the metadata model.
5129
public string EditorialUpdate
5133
return GetTagText("EditorialUpdate");
5137
SetTagValue("EditorialUpdate", value);
5142
/// Gets or sets the value of the IPTC/NAA tag Urgency.
5145
/// <b>Handling of null values</b><para/>
5146
/// A null value indicates, that the corresponding metadata tag is not
5147
/// present in the metadata model.
5148
/// Setting this property's value to a non-null reference creates the
5149
/// metadata tag if necessary.
5150
/// Setting this property's value to a null reference deletes the
5151
/// metadata tag from the metadata model.
5153
public string Urgency
5157
return GetTagText("Urgency");
5161
SetTagValue("Urgency", value);
5166
/// Gets or sets the value of the IPTC/NAA tag Subject Reference.
5169
/// <b>Handling of null values</b><para/>
5170
/// A null value indicates, that the corresponding metadata tag is not
5171
/// present in the metadata model.
5172
/// Setting this property's value to a non-null reference creates the
5173
/// metadata tag if necessary.
5174
/// Setting this property's value to a null reference deletes the
5175
/// metadata tag from the metadata model.
5177
public string SubjectReference
5181
return GetTagText("SubjectReference");
5185
SetTagValue("SubjectReference", value);
5190
/// Gets or sets the value of the IPTC/NAA tag Category.
5193
/// <b>Handling of null values</b><para/>
5194
/// A null value indicates, that the corresponding metadata tag is not
5195
/// present in the metadata model.
5196
/// Setting this property's value to a non-null reference creates the
5197
/// metadata tag if necessary.
5198
/// Setting this property's value to a null reference deletes the
5199
/// metadata tag from the metadata model.
5201
public string Category
5205
return GetTagText("Category");
5209
SetTagValue("Category", value);
5214
/// Gets or sets the value of the IPTC/NAA tag Supplemental Categories.
5217
/// <b>Handling of null values</b><para/>
5218
/// A null value indicates, that the corresponding metadata tag is not
5219
/// present in the metadata model.
5220
/// Setting this property's value to a non-null reference creates the
5221
/// metadata tag if necessary.
5222
/// Setting this property's value to a null reference deletes the
5223
/// metadata tag from the metadata model.
5225
public string SupplementalCategories
5229
return GetTagText("SupplementalCategories");
5233
SetTagValue("SupplementalCategories", value);
5238
/// Gets or sets the value of the IPTC/NAA tag Fixture Identifier.
5241
/// <b>Handling of null values</b><para/>
5242
/// A null value indicates, that the corresponding metadata tag is not
5243
/// present in the metadata model.
5244
/// Setting this property's value to a non-null reference creates the
5245
/// metadata tag if necessary.
5246
/// Setting this property's value to a null reference deletes the
5247
/// metadata tag from the metadata model.
5249
public string FixtureIdentifier
5253
return GetTagText("FixtureIdentifier");
5257
SetTagValue("FixtureIdentifier", value);
5262
/// Gets or sets the value of the IPTC/NAA tag Keywords.
5265
/// <b>Handling of null values</b><para/>
5266
/// A null value indicates, that the corresponding metadata tag is not
5267
/// present in the metadata model.
5268
/// Setting this property's value to a non-null reference creates the
5269
/// metadata tag if necessary.
5270
/// Setting this property's value to a null reference deletes the
5271
/// metadata tag from the metadata model.
5273
public string Keywords
5277
return GetTagText("Keywords");
5281
SetTagValue("Keywords", value);
5286
/// Gets or sets the value of the IPTC/NAA tag Content Location Code.
5289
/// <b>Handling of null values</b><para/>
5290
/// A null value indicates, that the corresponding metadata tag is not
5291
/// present in the metadata model.
5292
/// Setting this property's value to a non-null reference creates the
5293
/// metadata tag if necessary.
5294
/// Setting this property's value to a null reference deletes the
5295
/// metadata tag from the metadata model.
5297
public string ContentLocationCode
5301
return GetTagText("ContentLocationCode");
5305
SetTagValue("ContentLocationCode", value);
5310
/// Gets or sets the value of the IPTC/NAA tag Content Location Name.
5313
/// <b>Handling of null values</b><para/>
5314
/// A null value indicates, that the corresponding metadata tag is not
5315
/// present in the metadata model.
5316
/// Setting this property's value to a non-null reference creates the
5317
/// metadata tag if necessary.
5318
/// Setting this property's value to a null reference deletes the
5319
/// metadata tag from the metadata model.
5321
public string ContentLocationName
5325
return GetTagText("ContentLocationName");
5329
SetTagValue("ContentLocationName", value);
5334
/// Gets or sets the value of the IPTC/NAA tag Release Date.
5337
/// <b>Handling of null values</b><para/>
5338
/// A null value indicates, that the corresponding metadata tag is not
5339
/// present in the metadata model.
5340
/// Setting this property's value to a non-null reference creates the
5341
/// metadata tag if necessary.
5342
/// Setting this property's value to a null reference deletes the
5343
/// metadata tag from the metadata model.
5345
public string ReleaseDate
5349
return GetTagText("ReleaseDate");
5353
SetTagValue("ReleaseDate", value);
5358
/// Gets or sets the value of the IPTC/NAA tag Release Time.
5361
/// <b>Handling of null values</b><para/>
5362
/// A null value indicates, that the corresponding metadata tag is not
5363
/// present in the metadata model.
5364
/// Setting this property's value to a non-null reference creates the
5365
/// metadata tag if necessary.
5366
/// Setting this property's value to a null reference deletes the
5367
/// metadata tag from the metadata model.
5369
public string ReleaseTime
5373
return GetTagText("ReleaseTime");
5377
SetTagValue("ReleaseTime", value);
5382
/// Gets or sets the value of the IPTC/NAA tag Expiration Date.
5385
/// <b>Handling of null values</b><para/>
5386
/// A null value indicates, that the corresponding metadata tag is not
5387
/// present in the metadata model.
5388
/// Setting this property's value to a non-null reference creates the
5389
/// metadata tag if necessary.
5390
/// Setting this property's value to a null reference deletes the
5391
/// metadata tag from the metadata model.
5393
public string ExpirationDate
5397
return GetTagText("ExpirationDate");
5401
SetTagValue("ExpirationDate", value);
5406
/// Gets or sets the value of the IPTC/NAA tag Expiration Time.
5409
/// <b>Handling of null values</b><para/>
5410
/// A null value indicates, that the corresponding metadata tag is not
5411
/// present in the metadata model.
5412
/// Setting this property's value to a non-null reference creates the
5413
/// metadata tag if necessary.
5414
/// Setting this property's value to a null reference deletes the
5415
/// metadata tag from the metadata model.
5417
public string ExpirationTime
5421
return GetTagText("ExpirationTime");
5425
SetTagValue("ExpirationTime", value);
5430
/// Gets or sets the value of the IPTC/NAA tag Special Instructions.
5433
/// <b>Handling of null values</b><para/>
5434
/// A null value indicates, that the corresponding metadata tag is not
5435
/// present in the metadata model.
5436
/// Setting this property's value to a non-null reference creates the
5437
/// metadata tag if necessary.
5438
/// Setting this property's value to a null reference deletes the
5439
/// metadata tag from the metadata model.
5441
public string SpecialInstructions
5445
return GetTagText("SpecialInstructions");
5449
SetTagValue("SpecialInstructions", value);
5454
/// Gets or sets the value of the IPTC/NAA tag Action Advised.
5457
/// <b>Handling of null values</b><para/>
5458
/// A null value indicates, that the corresponding metadata tag is not
5459
/// present in the metadata model.
5460
/// Setting this property's value to a non-null reference creates the
5461
/// metadata tag if necessary.
5462
/// Setting this property's value to a null reference deletes the
5463
/// metadata tag from the metadata model.
5465
public string ActionAdvised
5469
return GetTagText("ActionAdvised");
5473
SetTagValue("ActionAdvised", value);
5478
/// Gets or sets the value of the IPTC/NAA tag Reference Service.
5481
/// <b>Handling of null values</b><para/>
5482
/// A null value indicates, that the corresponding metadata tag is not
5483
/// present in the metadata model.
5484
/// Setting this property's value to a non-null reference creates the
5485
/// metadata tag if necessary.
5486
/// Setting this property's value to a null reference deletes the
5487
/// metadata tag from the metadata model.
5489
public string ReferenceService
5493
return GetTagText("ReferenceService");
5497
SetTagValue("ReferenceService", value);
5502
/// Gets or sets the value of the IPTC/NAA tag Reference Date.
5505
/// <b>Handling of null values</b><para/>
5506
/// A null value indicates, that the corresponding metadata tag is not
5507
/// present in the metadata model.
5508
/// Setting this property's value to a non-null reference creates the
5509
/// metadata tag if necessary.
5510
/// Setting this property's value to a null reference deletes the
5511
/// metadata tag from the metadata model.
5513
public string ReferenceDate
5517
return GetTagText("ReferenceDate");
5521
SetTagValue("ReferenceDate", value);
5526
/// Gets or sets the value of the IPTC/NAA tag Reference Number.
5529
/// <b>Handling of null values</b><para/>
5530
/// A null value indicates, that the corresponding metadata tag is not
5531
/// present in the metadata model.
5532
/// Setting this property's value to a non-null reference creates the
5533
/// metadata tag if necessary.
5534
/// Setting this property's value to a null reference deletes the
5535
/// metadata tag from the metadata model.
5537
public string ReferenceNumber
5541
return GetTagText("ReferenceNumber");
5545
SetTagValue("ReferenceNumber", value);
5550
/// Gets or sets the value of the IPTC/NAA tag Date Created.
5553
/// <b>Handling of null values</b><para/>
5554
/// A null value indicates, that the corresponding metadata tag is not
5555
/// present in the metadata model.
5556
/// Setting this property's value to a non-null reference creates the
5557
/// metadata tag if necessary.
5558
/// Setting this property's value to a null reference deletes the
5559
/// metadata tag from the metadata model.
5561
public string DateCreated
5565
return GetTagText("DateCreated");
5569
SetTagValue("DateCreated", value);
5574
/// Gets or sets the value of the IPTC/NAA tag Time Created.
5577
/// <b>Handling of null values</b><para/>
5578
/// A null value indicates, that the corresponding metadata tag is not
5579
/// present in the metadata model.
5580
/// Setting this property's value to a non-null reference creates the
5581
/// metadata tag if necessary.
5582
/// Setting this property's value to a null reference deletes the
5583
/// metadata tag from the metadata model.
5585
public string TimeCreated
5589
return GetTagText("TimeCreated");
5593
SetTagValue("TimeCreated", value);
5598
/// Gets or sets the value of the IPTC/NAA tag Digital Creation Date.
5601
/// <b>Handling of null values</b><para/>
5602
/// A null value indicates, that the corresponding metadata tag is not
5603
/// present in the metadata model.
5604
/// Setting this property's value to a non-null reference creates the
5605
/// metadata tag if necessary.
5606
/// Setting this property's value to a null reference deletes the
5607
/// metadata tag from the metadata model.
5609
public string DigitalCreationDate
5613
return GetTagText("DigitalCreationDate");
5617
SetTagValue("DigitalCreationDate", value);
5622
/// Gets or sets the value of the IPTC/NAA tag Digital Creation Time.
5625
/// <b>Handling of null values</b><para/>
5626
/// A null value indicates, that the corresponding metadata tag is not
5627
/// present in the metadata model.
5628
/// Setting this property's value to a non-null reference creates the
5629
/// metadata tag if necessary.
5630
/// Setting this property's value to a null reference deletes the
5631
/// metadata tag from the metadata model.
5633
public string DigitalCreationTime
5637
return GetTagText("DigitalCreationTime");
5641
SetTagValue("DigitalCreationTime", value);
5646
/// Gets or sets the value of the IPTC/NAA tag Originating Program.
5649
/// <b>Handling of null values</b><para/>
5650
/// A null value indicates, that the corresponding metadata tag is not
5651
/// present in the metadata model.
5652
/// Setting this property's value to a non-null reference creates the
5653
/// metadata tag if necessary.
5654
/// Setting this property's value to a null reference deletes the
5655
/// metadata tag from the metadata model.
5657
public string OriginatingProgram
5661
return GetTagText("OriginatingProgram");
5665
SetTagValue("OriginatingProgram", value);
5670
/// Gets or sets the value of the IPTC/NAA tag Program Version.
5673
/// <b>Handling of null values</b><para/>
5674
/// A null value indicates, that the corresponding metadata tag is not
5675
/// present in the metadata model.
5676
/// Setting this property's value to a non-null reference creates the
5677
/// metadata tag if necessary.
5678
/// Setting this property's value to a null reference deletes the
5679
/// metadata tag from the metadata model.
5681
public string ProgramVersion
5685
return GetTagText("ProgramVersion");
5689
SetTagValue("ProgramVersion", value);
5694
/// Gets or sets the value of the IPTC/NAA tag Object Cycle.
5697
/// <b>Handling of null values</b><para/>
5698
/// A null value indicates, that the corresponding metadata tag is not
5699
/// present in the metadata model.
5700
/// Setting this property's value to a non-null reference creates the
5701
/// metadata tag if necessary.
5702
/// Setting this property's value to a null reference deletes the
5703
/// metadata tag from the metadata model.
5705
public string ObjectCycle
5709
return GetTagText("ObjectCycle");
5713
SetTagValue("ObjectCycle", value);
5718
/// Gets or sets the value of the IPTC/NAA tag By Line.
5719
/// This is the author's name.
5722
/// <b>Handling of null values</b><para/>
5723
/// A null value indicates, that the corresponding metadata tag is not
5724
/// present in the metadata model.
5725
/// Setting this property's value to a non-null reference creates the
5726
/// metadata tag if necessary.
5727
/// Setting this property's value to a null reference deletes the
5728
/// metadata tag from the metadata model.
5730
public string ByLine
5734
return GetTagText("By-line");
5738
SetTagValue("By-line", value);
5743
/// Gets or sets the value of the IPTC/NAA tag By Line Title.
5744
/// This is the author's position.
5747
/// <b>Handling of null values</b><para/>
5748
/// A null value indicates, that the corresponding metadata tag is not
5749
/// present in the metadata model.
5750
/// Setting this property's value to a non-null reference creates the
5751
/// metadata tag if necessary.
5752
/// Setting this property's value to a null reference deletes the
5753
/// metadata tag from the metadata model.
5755
public string ByLineTitle
5759
return GetTagText("By-lineTitle");
5763
SetTagValue("By-lineTitle", value);
5768
/// Gets or sets the value of the IPTC/NAA tag City.
5771
/// <b>Handling of null values</b><para/>
5772
/// A null value indicates, that the corresponding metadata tag is not
5773
/// present in the metadata model.
5774
/// Setting this property's value to a non-null reference creates the
5775
/// metadata tag if necessary.
5776
/// Setting this property's value to a null reference deletes the
5777
/// metadata tag from the metadata model.
5783
return GetTagText("City");
5787
SetTagValue("City", value);
5792
/// Gets or sets the value of the IPTC/NAA tag Sub Location.
5795
/// <b>Handling of null values</b><para/>
5796
/// A null value indicates, that the corresponding metadata tag is not
5797
/// present in the metadata model.
5798
/// Setting this property's value to a non-null reference creates the
5799
/// metadata tag if necessary.
5800
/// Setting this property's value to a null reference deletes the
5801
/// metadata tag from the metadata model.
5803
public string SubLocation
5807
return GetTagText("SubLocation");
5811
SetTagValue("SubLocation", value);
5816
/// Gets or sets the value of the IPTC/NAA tag Province State.
5819
/// <b>Handling of null values</b><para/>
5820
/// A null value indicates, that the corresponding metadata tag is not
5821
/// present in the metadata model.
5822
/// Setting this property's value to a non-null reference creates the
5823
/// metadata tag if necessary.
5824
/// Setting this property's value to a null reference deletes the
5825
/// metadata tag from the metadata model.
5827
public string ProvinceState
5831
return GetTagText("ProvinceState");
5835
SetTagValue("ProvinceState", value);
5840
/// Gets or sets the value of the IPTC/NAA tag Country Primary Location Code.
5843
/// <b>Handling of null values</b><para/>
5844
/// A null value indicates, that the corresponding metadata tag is not
5845
/// present in the metadata model.
5846
/// Setting this property's value to a non-null reference creates the
5847
/// metadata tag if necessary.
5848
/// Setting this property's value to a null reference deletes the
5849
/// metadata tag from the metadata model.
5851
public string CountryPrimaryLocationCode
5855
return GetTagText("Country-PrimaryLocationCode");
5859
SetTagValue("Country-PrimaryLocationCode", value);
5864
/// Gets or sets the value of the IPTC/NAA tag Country Primary Location Name.
5867
/// <b>Handling of null values</b><para/>
5868
/// A null value indicates, that the corresponding metadata tag is not
5869
/// present in the metadata model.
5870
/// Setting this property's value to a non-null reference creates the
5871
/// metadata tag if necessary.
5872
/// Setting this property's value to a null reference deletes the
5873
/// metadata tag from the metadata model.
5875
public string CountryPrimaryLocationName
5879
return GetTagText("Country-PrimaryLocationName");
5883
SetTagValue("Country-PrimaryLocationName", value);
5888
/// Gets or sets the value of the IPTC/NAA tag Original Transmission Reference.
5891
/// <b>Handling of null values</b><para/>
5892
/// A null value indicates, that the corresponding metadata tag is not
5893
/// present in the metadata model.
5894
/// Setting this property's value to a non-null reference creates the
5895
/// metadata tag if necessary.
5896
/// Setting this property's value to a null reference deletes the
5897
/// metadata tag from the metadata model.
5899
public string OriginalTransmissionReference
5903
return GetTagText("OriginalTransmissionReference");
5907
SetTagValue("OriginalTransmissionReference", value);
5912
/// Gets or sets the value of the IPTC/NAA tag Headline.
5915
/// <b>Handling of null values</b><para/>
5916
/// A null value indicates, that the corresponding metadata tag is not
5917
/// present in the metadata model.
5918
/// Setting this property's value to a non-null reference creates the
5919
/// metadata tag if necessary.
5920
/// Setting this property's value to a null reference deletes the
5921
/// metadata tag from the metadata model.
5923
public string Headline
5927
return GetTagText("Headline");
5931
SetTagValue("Headline", value);
5936
/// Gets or sets the value of the IPTC/NAA tag Credit.
5939
/// <b>Handling of null values</b><para/>
5940
/// A null value indicates, that the corresponding metadata tag is not
5941
/// present in the metadata model.
5942
/// Setting this property's value to a non-null reference creates the
5943
/// metadata tag if necessary.
5944
/// Setting this property's value to a null reference deletes the
5945
/// metadata tag from the metadata model.
5947
public string Credit
5951
return GetTagText("Credit");
5955
SetTagValue("Credit", value);
5960
/// Gets or sets the value of the IPTC/NAA tag Source.
5963
/// <b>Handling of null values</b><para/>
5964
/// A null value indicates, that the corresponding metadata tag is not
5965
/// present in the metadata model.
5966
/// Setting this property's value to a non-null reference creates the
5967
/// metadata tag if necessary.
5968
/// Setting this property's value to a null reference deletes the
5969
/// metadata tag from the metadata model.
5971
public string Source
5975
return GetTagText("Source");
5979
SetTagValue("Source", value);
5984
/// Gets or sets the value of the IPTC/NAA tag Copyright Notice.
5987
/// <b>Handling of null values</b><para/>
5988
/// A null value indicates, that the corresponding metadata tag is not
5989
/// present in the metadata model.
5990
/// Setting this property's value to a non-null reference creates the
5991
/// metadata tag if necessary.
5992
/// Setting this property's value to a null reference deletes the
5993
/// metadata tag from the metadata model.
5995
public string CopyrightNotice
5999
return GetTagText("CopyrightNotice");
6003
SetTagValue("CopyrightNotice", value);
6008
/// Gets or sets the value of the IPTC/NAA tag Contact.
6011
/// <b>Handling of null values</b><para/>
6012
/// A null value indicates, that the corresponding metadata tag is not
6013
/// present in the metadata model.
6014
/// Setting this property's value to a non-null reference creates the
6015
/// metadata tag if necessary.
6016
/// Setting this property's value to a null reference deletes the
6017
/// metadata tag from the metadata model.
6019
public string Contact
6023
return GetTagText("Contact");
6027
SetTagValue("Contact", value);
6032
/// Gets or sets the value of the IPTC/NAA tag Caption Abstract.
6035
/// <b>Handling of null values</b><para/>
6036
/// A null value indicates, that the corresponding metadata tag is not
6037
/// present in the metadata model.
6038
/// Setting this property's value to a non-null reference creates the
6039
/// metadata tag if necessary.
6040
/// Setting this property's value to a null reference deletes the
6041
/// metadata tag from the metadata model.
6043
public string CaptionAbstract
6047
return GetTagText("CaptionAbstract");
6051
SetTagValue("CaptionAbstract", value);
6056
/// Gets or sets the value of the IPTC/NAA tag Writer Editor.
6057
/// This is also referred to as Caption Writer.
6060
/// <b>Handling of null values</b><para/>
6061
/// A null value indicates, that the corresponding metadata tag is not
6062
/// present in the metadata model.
6063
/// Setting this property's value to a non-null reference creates the
6064
/// metadata tag if necessary.
6065
/// Setting this property's value to a null reference deletes the
6066
/// metadata tag from the metadata model.
6068
public string WriterEditor
6072
return GetTagText("WriterEditor");
6076
SetTagValue("WriterEditor", value);
6081
/// Gets or sets the value of the IPTC/NAA tag Rasterized Caption.
6084
/// <b>Handling of null values</b><para/>
6085
/// A null value indicates, that the corresponding metadata tag is not
6086
/// present in the metadata model.
6087
/// Setting this property's value to a non-null reference creates the
6088
/// metadata tag if necessary.
6089
/// Setting this property's value to a null reference deletes the
6090
/// metadata tag from the metadata model.
6092
public string RasterizedCaption
6096
return GetTagText("RasterizedCaption");
6100
SetTagValue("RasterizedCaption", value);
6105
/// Gets or sets the value of the IPTC/NAA tag Image Type.
6108
/// <b>Handling of null values</b><para/>
6109
/// A null value indicates, that the corresponding metadata tag is not
6110
/// present in the metadata model.
6111
/// Setting this property's value to a non-null reference creates the
6112
/// metadata tag if necessary.
6113
/// Setting this property's value to a null reference deletes the
6114
/// metadata tag from the metadata model.
6116
public string ImageType
6120
return GetTagText("ImageType");
6124
SetTagValue("ImageType", value);
6129
/// Gets or sets the value of the IPTC/NAA tag Image Orientation.
6132
/// <b>Handling of null values</b><para/>
6133
/// A null value indicates, that the corresponding metadata tag is not
6134
/// present in the metadata model.
6135
/// Setting this property's value to a non-null reference creates the
6136
/// metadata tag if necessary.
6137
/// Setting this property's value to a null reference deletes the
6138
/// metadata tag from the metadata model.
6140
public string ImageOrientation
6144
return GetTagText("ImageOrientation");
6148
SetTagValue("ImageOrientation", value);
6153
/// Gets or sets the value of the IPTC/NAA tag Language Identifier.
6156
/// <b>Handling of null values</b><para/>
6157
/// A null value indicates, that the corresponding metadata tag is not
6158
/// present in the metadata model.
6159
/// Setting this property's value to a non-null reference creates the
6160
/// metadata tag if necessary.
6161
/// Setting this property's value to a null reference deletes the
6162
/// metadata tag from the metadata model.
6164
public string LanguageIdentifier
6168
return GetTagText("LanguageIdentifier");
6172
SetTagValue("LanguageIdentifier", value);
6177
/// Gets or sets the value of the IPTC/NAA tag Audio Type.
6180
/// <b>Handling of null values</b><para/>
6181
/// A null value indicates, that the corresponding metadata tag is not
6182
/// present in the metadata model.
6183
/// Setting this property's value to a non-null reference creates the
6184
/// metadata tag if necessary.
6185
/// Setting this property's value to a null reference deletes the
6186
/// metadata tag from the metadata model.
6188
public string AudioType
6192
return GetTagText("AudioType");
6196
SetTagValue("AudioType", value);
6201
/// Gets or sets the value of the IPTC/NAA tag Audio Sampling Rate.
6204
/// <b>Handling of null values</b><para/>
6205
/// A null value indicates, that the corresponding metadata tag is not
6206
/// present in the metadata model.
6207
/// Setting this property's value to a non-null reference creates the
6208
/// metadata tag if necessary.
6209
/// Setting this property's value to a null reference deletes the
6210
/// metadata tag from the metadata model.
6212
public string AudioSamplingRate
6216
return GetTagText("AudioSamplingRate");
6220
SetTagValue("AudioSamplingRate", value);
6225
/// Gets or sets the value of the IPTC/NAA tag Audio Sampling Resolution.
6228
/// <b>Handling of null values</b><para/>
6229
/// A null value indicates, that the corresponding metadata tag is not
6230
/// present in the metadata model.
6231
/// Setting this property's value to a non-null reference creates the
6232
/// metadata tag if necessary.
6233
/// Setting this property's value to a null reference deletes the
6234
/// metadata tag from the metadata model.
6236
public string AudioSamplingResolution
6240
return GetTagText("AudioSamplingResolution");
6244
SetTagValue("AudioSamplingResolution", value);
6249
/// Gets or sets the value of the IPTC/NAA tag Audio Duration.
6252
/// <b>Handling of null values</b><para/>
6253
/// A null value indicates, that the corresponding metadata tag is not
6254
/// present in the metadata model.
6255
/// Setting this property's value to a non-null reference creates the
6256
/// metadata tag if necessary.
6257
/// Setting this property's value to a null reference deletes the
6258
/// metadata tag from the metadata model.
6260
public string AudioDuration
6264
return GetTagText("AudioDuration");
6268
SetTagValue("AudioDuration", value);
6273
/// Gets or sets the value of the IPTC/NAA tag Audio Outcue.
6276
/// <b>Handling of null values</b><para/>
6277
/// A null value indicates, that the corresponding metadata tag is not
6278
/// present in the metadata model.
6279
/// Setting this property's value to a non-null reference creates the
6280
/// metadata tag if necessary.
6281
/// Setting this property's value to a null reference deletes the
6282
/// metadata tag from the metadata model.
6284
public string AudioOutcue
6288
return GetTagText("AudioOutcue");
6292
SetTagValue("AudioOutcue", value);
6297
/// Gets or sets the value of the IPTC/NAA tag Job I D.
6300
/// <b>Handling of null values</b><para/>
6301
/// A null value indicates, that the corresponding metadata tag is not
6302
/// present in the metadata model.
6303
/// Setting this property's value to a non-null reference creates the
6304
/// metadata tag if necessary.
6305
/// Setting this property's value to a null reference deletes the
6306
/// metadata tag from the metadata model.
6312
return GetTagText("JobID");
6316
SetTagValue("JobID", value);
6321
/// Gets or sets the value of the IPTC/NAA tag Master Document I D.
6324
/// <b>Handling of null values</b><para/>
6325
/// A null value indicates, that the corresponding metadata tag is not
6326
/// present in the metadata model.
6327
/// Setting this property's value to a non-null reference creates the
6328
/// metadata tag if necessary.
6329
/// Setting this property's value to a null reference deletes the
6330
/// metadata tag from the metadata model.
6332
public string MasterDocumentID
6336
return GetTagText("MasterDocumentID");
6340
SetTagValue("MasterDocumentID", value);
6345
/// Gets or sets the value of the IPTC/NAA tag Short Document I D.
6348
/// <b>Handling of null values</b><para/>
6349
/// A null value indicates, that the corresponding metadata tag is not
6350
/// present in the metadata model.
6351
/// Setting this property's value to a non-null reference creates the
6352
/// metadata tag if necessary.
6353
/// Setting this property's value to a null reference deletes the
6354
/// metadata tag from the metadata model.
6356
public string ShortDocumentID
6360
return GetTagText("ShortDocumentID");
6364
SetTagValue("ShortDocumentID", value);
6369
/// Gets or sets the value of the IPTC/NAA tag Unique Document I D.
6372
/// <b>Handling of null values</b><para/>
6373
/// A null value indicates, that the corresponding metadata tag is not
6374
/// present in the metadata model.
6375
/// Setting this property's value to a non-null reference creates the
6376
/// metadata tag if necessary.
6377
/// Setting this property's value to a null reference deletes the
6378
/// metadata tag from the metadata model.
6380
public string UniqueDocumentID
6384
return GetTagText("UniqueDocumentID");
6388
SetTagValue("UniqueDocumentID", value);
6393
/// Gets or sets the value of the IPTC/NAA tag Owner I D.
6396
/// <b>Handling of null values</b><para/>
6397
/// A null value indicates, that the corresponding metadata tag is not
6398
/// present in the metadata model.
6399
/// Setting this property's value to a non-null reference creates the
6400
/// metadata tag if necessary.
6401
/// Setting this property's value to a null reference deletes the
6402
/// metadata tag from the metadata model.
6404
public string OwnerID
6408
return GetTagText("OwnerID");
6412
SetTagValue("OwnerID", value);
6417
/// Gets or sets the value of the IPTC/NAA tag Object Preview File Format.
6420
/// <b>Handling of null values</b><para/>
6421
/// A null value indicates, that the corresponding metadata tag is not
6422
/// present in the metadata model.
6423
/// Setting this property's value to a non-null reference creates the
6424
/// metadata tag if necessary.
6425
/// Setting this property's value to a null reference deletes the
6426
/// metadata tag from the metadata model.
6428
public string ObjectPreviewFileFormat
6432
return GetTagText("ObjectPreviewFileFormat");
6436
SetTagValue("ObjectPreviewFileFormat", value);
6441
/// Gets or sets the value of the IPTC/NAA tag Object Preview File Version.
6444
/// <b>Handling of null values</b><para/>
6445
/// A null value indicates, that the corresponding metadata tag is not
6446
/// present in the metadata model.
6447
/// Setting this property's value to a non-null reference creates the
6448
/// metadata tag if necessary.
6449
/// Setting this property's value to a null reference deletes the
6450
/// metadata tag from the metadata model.
6452
public string ObjectPreviewFileVersion
6456
return GetTagText("ObjectPreviewFileVersion");
6460
SetTagValue("ObjectPreviewFileVersion", value);
6465
/// Gets or sets the value of the IPTC/NAA tag Object Preview Data.
6466
/// This is also referred to as Audio Outcue.
6469
/// <b>Handling of null values</b><para/>
6470
/// A null value indicates, that the corresponding metadata tag is not
6471
/// present in the metadata model.
6472
/// Setting this property's value to a non-null reference creates the
6473
/// metadata tag if necessary.
6474
/// Setting this property's value to a null reference deletes the
6475
/// metadata tag from the metadata model.
6477
public string ObjectPreviewData
6481
return GetTagText("ObjectPreviewData");
6485
SetTagValue("ObjectPreviewData", value);
6490
/// Gets or sets the value of the IPTC/NAA tag Prefs.
6491
/// This is also referred to as photo-mechanic preferences.
6494
/// <b>Handling of null values</b><para/>
6495
/// A null value indicates, that the corresponding metadata tag is not
6496
/// present in the metadata model.
6497
/// Setting this property's value to a non-null reference creates the
6498
/// metadata tag if necessary.
6499
/// Setting this property's value to a null reference deletes the
6500
/// metadata tag from the metadata model.
6506
return GetTagText("Prefs");
6510
SetTagValue("Prefs", value);
6515
/// Gets or sets the value of the IPTC/NAA tag Classify State.
6518
/// <b>Handling of null values</b><para/>
6519
/// A null value indicates, that the corresponding metadata tag is not
6520
/// present in the metadata model.
6521
/// Setting this property's value to a non-null reference creates the
6522
/// metadata tag if necessary.
6523
/// Setting this property's value to a null reference deletes the
6524
/// metadata tag from the metadata model.
6526
public string ClassifyState
6530
return GetTagText("ClassifyState");
6534
SetTagValue("ClassifyState", value);
6539
/// Gets or sets the value of the IPTC/NAA tag Similarity Index.
6542
/// <b>Handling of null values</b><para/>
6543
/// A null value indicates, that the corresponding metadata tag is not
6544
/// present in the metadata model.
6545
/// Setting this property's value to a non-null reference creates the
6546
/// metadata tag if necessary.
6547
/// Setting this property's value to a null reference deletes the
6548
/// metadata tag from the metadata model.
6550
public string SimilarityIndex
6554
return GetTagText("SimilarityIndex");
6558
SetTagValue("SimilarityIndex", value);
6563
/// Gets or sets the value of the IPTC/NAA tag Document Notes.
6566
/// <b>Handling of null values</b><para/>
6567
/// A null value indicates, that the corresponding metadata tag is not
6568
/// present in the metadata model.
6569
/// Setting this property's value to a non-null reference creates the
6570
/// metadata tag if necessary.
6571
/// Setting this property's value to a null reference deletes the
6572
/// metadata tag from the metadata model.
6574
public string DocumentNotes
6578
return GetTagText("DocumentNotes");
6582
SetTagValue("DocumentNotes", value);
6587
/// Gets or sets the value of the IPTC/NAA tag Document History.
6590
/// <b>Handling of null values</b><para/>
6591
/// A null value indicates, that the corresponding metadata tag is not
6592
/// present in the metadata model.
6593
/// Setting this property's value to a non-null reference creates the
6594
/// metadata tag if necessary.
6595
/// Setting this property's value to a null reference deletes the
6596
/// metadata tag from the metadata model.
6598
public string DocumentHistory
6602
return GetTagText("DocumentHistory");
6606
SetTagValue("DocumentHistory", value);
6611
/// Gets or sets the value of the IPTC/NAA tag Exif Camera Info.
6614
/// <b>Handling of null values</b><para/>
6615
/// A null value indicates, that the corresponding metadata tag is not
6616
/// present in the metadata model.
6617
/// Setting this property's value to a non-null reference creates the
6618
/// metadata tag if necessary.
6619
/// Setting this property's value to a null reference deletes the
6620
/// metadata tag from the metadata model.
6622
public string ExifCameraInfo
6626
return GetTagText("ExifCameraInfo");
6630
SetTagValue("ExifCameraInfo", value);
6636
/// Represents a collection of all tags contained in the metadata model
6637
/// <see cref="FREE_IMAGE_MDMODEL.FIMD_NODATA"/>.
6639
public class MDM_NODATA : MetadataModel
6642
/// Initializes a new instance of this class.
6644
/// <param name="dib">Handle to a FreeImage bitmap.</param>
6645
public MDM_NODATA(FIBITMAP dib) : base(dib) { }
6648
/// Retrieves the datamodel that this instance represents.
6650
public override FREE_IMAGE_MDMODEL Model
6652
get { return FREE_IMAGE_MDMODEL.FIMD_NODATA; }
6657
/// Represents a collection of all tags contained in the metadata model
6658
/// <see cref="FREE_IMAGE_MDMODEL.FIMD_XMP"/>.
6660
public class MDM_XMP : MetadataModel
6663
/// Initializes a new instance of this class.
6665
/// <param name="dib">Handle to a FreeImage bitmap.</param>
6666
public MDM_XMP(FIBITMAP dib) : base(dib) { }
6669
/// Retrieves the datamodel that this instance represents.
6671
public override FREE_IMAGE_MDMODEL Model
6673
get { return FREE_IMAGE_MDMODEL.FIMD_XMP; }
6677
/// Gets or sets the XMP XML content.
6680
/// <b>Handling of null values</b><para/>
6681
/// A null value indicates, that the corresponding metadata tag is not
6682
/// present in the metadata model.
6683
/// Setting this property's value to a non-null reference creates the
6684
/// metadata tag if necessary.
6685
/// Setting this property's value to a null reference deletes the
6686
/// metadata tag from the metadata model.
6692
return GetTagText("XMLPacket");
6696
SetTagValue("XMLPacket", value);
6701
/// Gets an <see cref="XmlReader"/> initialized to read the XMP XML content.
6702
/// Returns null, if the metadata tag <i>XMLPacket</i> is not present in
6705
public XmlReader XmlReader
6709
string xmlString = Xml;
6710
if (xmlString == null)
6716
MemoryStream stream = new MemoryStream();
6717
StreamWriter writer = new StreamWriter(stream);
6718
writer.Write(xmlString);
6719
return XmlReader.Create(stream);
b'\\ No newline at end of file'