-
Notifications
You must be signed in to change notification settings - Fork 281
/
properties.cpp
2849 lines (2714 loc) · 339 KB
/
properties.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
// ***************************************************************** -*- C++ -*-
/*
* Copyright (C) 2004-2018 Exiv2 authors
* This program is part of the Exiv2 distribution.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA.
*/
/*
File: properties.cpp
Author(s): Andreas Huggel (ahu) <ahuggel@gmx.net>
Gilles Caulier (cgilles) <caulier dot gilles at gmail dot com>
History: 13-July-07, ahu: created
*/
// *****************************************************************************
// included header files
#include "properties.hpp"
#include <cctype>
#include <cstdlib>
#include <cstring>
#include <iomanip>
#include <iostream>
#include <sstream>
#include <utility>
#include "error.hpp"
#include "i18n.h" // NLS support.
#include "metadatum.hpp"
#include "tags_int.hpp"
#include "types.hpp"
#include "value.hpp"
#include "xmp_exiv2.hpp"
// *****************************************************************************
namespace {
//! Struct used in the lookup table for pretty print functions
struct XmpPrintInfo {
//! Comparison operator for key
bool operator==(const std::string& key) const
{
return 0 == strcmp(key_, key.c_str());
}
const char* key_; //!< XMP key
Exiv2::PrintFct printFct_; //!< Print function
};
} // namespace
// *****************************************************************************
// class member definitions
namespace Exiv2 {
using namespace Internal;
//! @cond IGNORE
extern const XmpPropertyInfo xmpDcInfo[];
extern const XmpPropertyInfo xmpDigikamInfo[];
extern const XmpPropertyInfo xmpKipiInfo[];
extern const XmpPropertyInfo xmpXmpInfo[];
extern const XmpPropertyInfo xmpXmpRightsInfo[];
extern const XmpPropertyInfo xmpXmpMMInfo[];
extern const XmpPropertyInfo xmpXmpBJInfo[];
extern const XmpPropertyInfo xmpXmpTPgInfo[];
extern const XmpPropertyInfo xmpXmpDMInfo[];
extern const XmpPropertyInfo xmpMicrosoftInfo[];
extern const XmpPropertyInfo xmpPdfInfo[];
extern const XmpPropertyInfo xmpPhotoshopInfo[];
extern const XmpPropertyInfo xmpCrsInfo[];
extern const XmpPropertyInfo xmpCrssInfo[];
extern const XmpPropertyInfo xmpTiffInfo[];
extern const XmpPropertyInfo xmpExifInfo[];
extern const XmpPropertyInfo xmpExifEXInfo[];
extern const XmpPropertyInfo xmpAuxInfo[];
extern const XmpPropertyInfo xmpIptcInfo[];
extern const XmpPropertyInfo xmpIptcExtInfo[];
extern const XmpPropertyInfo xmpPlusInfo[];
extern const XmpPropertyInfo xmpMediaProInfo[];
extern const XmpPropertyInfo xmpExpressionMediaInfo[];
extern const XmpPropertyInfo xmpMicrosoftPhotoInfo[];
extern const XmpPropertyInfo xmpMicrosoftPhotoRegionInfoInfo[];
extern const XmpPropertyInfo xmpMicrosoftPhotoRegionInfo[];
extern const XmpPropertyInfo xmpMWGRegionsInfo[];
extern const XmpPropertyInfo xmpMWGKeywordInfo[];
extern const XmpPropertyInfo xmpVideoInfo[];
extern const XmpPropertyInfo xmpAudioInfo[];
extern const XmpPropertyInfo xmpDwCInfo[];
extern const XmpPropertyInfo xmpDctermsInfo[];
extern const XmpPropertyInfo xmpLrInfo[];
extern const XmpPropertyInfo xmpAcdseeInfo[];
extern const XmpPropertyInfo xmpGPanoInfo[];
constexpr XmpNsInfo xmpNsInfo[] = {
// Schemas - NOTE: Schemas which the XMP-SDK doesn't know must be registered in XmpParser::initialize - Todo: Automate this
{ "http://purl.org/dc/elements/1.1/", "dc", xmpDcInfo, N_("Dublin Core schema") },
{ "http://www.digikam.org/ns/1.0/", "digiKam", xmpDigikamInfo, N_("digiKam Photo Management schema") },
{ "http://www.digikam.org/ns/kipi/1.0/", "kipi", xmpKipiInfo, N_("KDE Image Program Interface schema") },
{ "http://ns.adobe.com/xap/1.0/", "xmp", xmpXmpInfo, N_("XMP Basic schema") },
{ "http://ns.adobe.com/xap/1.0/rights/", "xmpRights", xmpXmpRightsInfo, N_("XMP Rights Management schema") },
{ "http://ns.adobe.com/xap/1.0/mm/", "xmpMM", xmpXmpMMInfo, N_("XMP Media Management schema") },
{ "http://ns.adobe.com/xap/1.0/bj/", "xmpBJ", xmpXmpBJInfo, N_("XMP Basic Job Ticket schema") },
{ "http://ns.adobe.com/xap/1.0/t/pg/", "xmpTPg", xmpXmpTPgInfo, N_("XMP Paged-Text schema") },
{ "http://ns.adobe.com/xmp/1.0/DynamicMedia/", "xmpDM", xmpXmpDMInfo, N_("XMP Dynamic Media schema") },
{ "http://ns.microsoft.com/photo/1.0/", "MicrosoftPhoto", xmpMicrosoftInfo, N_("Microsoft Photo schema") },
{ "http://ns.adobe.com/lightroom/1.0/", "lr", xmpLrInfo, N_("Adobe Lightroom schema") },
{ "http://ns.adobe.com/pdf/1.3/", "pdf", xmpPdfInfo, N_("Adobe PDF schema") },
{ "http://ns.adobe.com/photoshop/1.0/", "photoshop", xmpPhotoshopInfo, N_("Adobe photoshop schema") },
{ "http://ns.adobe.com/camera-raw-settings/1.0/", "crs", xmpCrsInfo, N_("Camera Raw schema") },
{ "http://ns.adobe.com/camera-raw-saved-settings/1.0/", "crss", xmpCrssInfo, N_("Camera Raw Saved Settings") },
{ "http://ns.adobe.com/tiff/1.0/", "tiff", xmpTiffInfo, N_("Exif Schema for TIFF Properties") },
{ "http://ns.adobe.com/exif/1.0/", "exif", xmpExifInfo, N_("Exif schema for Exif-specific Properties") },
{ "http://cipa.jp/exif/1.0/", "exifEX", xmpExifEXInfo, N_("Exif 2.3 metadata for XMP") },
{ "http://ns.adobe.com/exif/1.0/aux/", "aux", xmpAuxInfo, N_("Exif schema for Additional Exif Properties")},
{ "http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/", "iptc", xmpIptcInfo, N_("IPTC Core schema") }, // NOTE: 'Iptc4xmpCore' is just too long, so make 'iptc'
{ "http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/", "Iptc4xmpCore", xmpIptcInfo, N_("IPTC Core schema") }, // the default prefix. But provide the official one too.
{ "http://iptc.org/std/Iptc4xmpExt/2008-02-29/", "iptcExt", xmpIptcExtInfo, N_("IPTC Extension schema") }, // NOTE: It really should be 'Iptc4xmpExt' but following
{ "http://iptc.org/std/Iptc4xmpExt/2008-02-29/", "Iptc4xmpExt", xmpIptcExtInfo, N_("IPTC Extension schema") }, // example above, 'iptcExt' is the default, Iptc4xmpExt works too.
{ "http://ns.useplus.org/ldf/xmp/1.0/", "plus", xmpPlusInfo, N_("PLUS License Data Format schema") },
{ "http://ns.iview-multimedia.com/mediapro/1.0/", "mediapro", xmpMediaProInfo, N_("iView Media Pro schema") },
{ "http://ns.microsoft.com/expressionmedia/1.0/", "expressionmedia", xmpExpressionMediaInfo, N_("Expression Media schema") },
{ "http://ns.microsoft.com/photo/1.2/", "MP", xmpMicrosoftPhotoInfo, N_("Microsoft Photo 1.2 schema") },
{ "http://ns.microsoft.com/photo/1.2/t/RegionInfo#", "MPRI", xmpMicrosoftPhotoRegionInfoInfo, N_("Microsoft Photo RegionInfo schema") },
{ "http://ns.microsoft.com/photo/1.2/t/Region#", "MPReg", xmpMicrosoftPhotoRegionInfo, N_("Microsoft Photo Region schema") },
{ "http://www.metadataworkinggroup.com/schemas/regions/", "mwg-rs", xmpMWGRegionsInfo, N_("Metadata Working Group Regions schema") },
{ "http://www.metadataworkinggroup.com/schemas/keywords/","mwg-kw", xmpMWGKeywordInfo, N_("Metadata Working Group Keywords schema") },
{ "http://www.video/", "video", xmpVideoInfo, N_("XMP Extended Video schema") },
{ "http://www.audio/", "audio", xmpAudioInfo, N_("XMP Extended Audio schema") },
{ "http://rs.tdwg.org/dwc/index.htm", "dwc", xmpDwCInfo, N_("XMP Darwin Core schema") },
{ "http://purl.org/dc/terms/", "dcterms", xmpDctermsInfo, N_("Qualified Dublin Core schema") }, // Note: used as properties under dwc:record
{ "http://ns.acdsee.com/iptc/1.0/", "acdsee", xmpAcdseeInfo, N_("ACDSee XMP schema") },
{ "http://ns.google.com/photos/1.0/panorama/", "GPano", xmpGPanoInfo, N_("Google Photo Sphere XMP schema") },
// Structures
{ "http://ns.adobe.com/xap/1.0/g/", "xmpG", nullptr, N_("Colorant structure") },
{ "http://ns.adobe.com/xap/1.0/g/img/", "xmpGImg", nullptr, N_("Thumbnail structure") },
{ "http://ns.adobe.com/xap/1.0/sType/Dimensions#", "stDim", nullptr, N_("Dimensions structure") },
{ "http://ns.adobe.com/xap/1.0/sType/Font#", "stFnt", nullptr, N_("Font structure") },
{ "http://ns.adobe.com/xap/1.0/sType/ResourceEvent#", "stEvt", nullptr, N_("Resource Event structure") },
{ "http://ns.adobe.com/xap/1.0/sType/ResourceRef#", "stRef", nullptr, N_("ResourceRef structure") },
{ "http://ns.adobe.com/xap/1.0/sType/Version#", "stVer", nullptr, N_("Version structure") },
{ "http://ns.adobe.com/xap/1.0/sType/Job#", "stJob", nullptr, N_("Basic Job/Workflow structure") },
{ "http://ns.adobe.com/xmp/sType/Area#", "stArea", nullptr, N_("Area structure") },
// Qualifiers
{ "http://ns.adobe.com/xmp/Identifier/qual/1.0/", "xmpidq", nullptr, N_("Qualifier for xmp:Identifier") }
};
extern const XmpPropertyInfo xmpDcInfo[] = {
{ "contributor", N_("Contributor"), "bag ProperName", xmpBag, xmpExternal, N_("Contributors to the resource (other than the authors).") },
{ "coverage", N_("Coverage"), "Text", xmpText, xmpExternal, N_("The spatial or temporal topic of the resource, the spatial applicability of the "
"resource, or the jurisdiction under which the resource is relevant.") },
{ "creator", N_("Creator"), "seq ProperName", xmpSeq, xmpExternal, N_("The authors of the resource (listed in order of precedence, if significant).") },
{ "date", N_("Date"), "seq Date", xmpSeq, xmpExternal, N_("Date(s) that something interesting happened to the resource.") },
{ "description", N_("Description"), "Lang Alt", langAlt, xmpExternal, N_("A textual description of the content of the resource. Multiple values may be "
"present for different languages.") },
{ "format", N_("Format"), "MIMEType", xmpText, xmpInternal, N_("The file format used when saving the resource. Tools and applications should set "
"this property to the save format of the data. It may include appropriate qualifiers.") },
{ "identifier", N_("Identifier"), "Text", xmpText, xmpExternal, N_("Unique identifier of the resource. Recommended best practice is to identify the "
"resource by means of a string conforming to a formal identification system.") },
{ "language", N_("Language"), "bag Locale", xmpBag, xmpInternal, N_("An unordered array specifying the languages used in the resource.") },
{ "publisher", N_("Publisher"), "bag ProperName", xmpBag, xmpExternal, N_("An entity responsible for making the resource available. Examples of a Publisher "
"include a person, an organization, or a service. Typically, the name of a Publisher "
"should be used to indicate the entity.") },
{ "relation", N_("Relation"), "bag Text", xmpBag, xmpInternal, N_("Relationships to other documents. Recommended best practice is to identify the "
"related resource by means of a string conforming to a formal identification system.") },
{ "rights", N_("Rights"), "Lang Alt", langAlt, xmpExternal, N_("Informal rights statement, selected by language. Typically, rights information "
"includes a statement about various property rights associated with the resource, "
"including intellectual property rights.") },
{ "source", N_("Source"), "Text", xmpText, xmpExternal, N_("Unique identifier of the work from which this resource was derived.") },
{ "subject", N_("Subject"), "bag Text", xmpBag, xmpExternal, N_("An unordered array of descriptive phrases or keywords that specify the topic of the "
"content of the resource.") },
{ "title", N_("Title"), "Lang Alt", langAlt, xmpExternal, N_("The title of the document, or the name given to the resource. Typically, it will be "
"a name by which the resource is formally known.") },
{ "type", N_("Type"), "bag open Choice", xmpBag, xmpExternal, N_("A document type; for example, novel, poem, or working paper.") },
// End of list marker
{ nullptr, nullptr, nullptr, invalidTypeId, xmpInternal, nullptr }
};
extern const XmpPropertyInfo xmpDigikamInfo[] = {
{ "TagsList", N_("Tags List"), "seq Text", xmpSeq, xmpExternal, N_("The list of complete tags path as string. The path hierarchy is separated by '/' character (ex.: \"City/Paris/Monument/Eiffel Tower\".") },
{ "CaptionsAuthorNames", N_("Captions Author Names"), "Lang Alt", langAlt, xmpExternal, N_("The list of all captions author names for each language alternative captions set in standard XMP tags.") },
{ "CaptionsDateTimeStamps", N_("Captions Date Time Stamps"), "Lang Alt", langAlt, xmpExternal, N_("The list of all captions date time stamps for each language alternative captions set in standard XMP tags.") },
{ "ImageHistory", N_("Image History"), "Text", xmpText, xmpExternal, N_("An XML based content to list all action processed on this image with image editor (as crop, rotate, color corrections, adjustments, etc.).") },
{ "LensCorrectionSettings", N_("Lens Correction Settings"), "Text", xmpText, xmpExternal, N_("The list of Lens Correction tools settings used to fix lens distortion. This include Batch Queue Manager and Image editor tools based on LensFun library.") },
{ "ColorLabel", N_("Color Label"), "Text", xmpText, xmpExternal, N_("The color label assigned to this item. Possible values are \"0\": no label; \"1\": Red; \"2\": Orange; \"3\": Yellow; \"4\": Green; \"5\": Blue; \"6\": Magenta; \"7\": Gray; \"8\": Black; \"9\": White.") },
{ "PickLabel", N_("Pick Label"), "Text", xmpText, xmpExternal, N_("The pick label assigned to this item. Possible values are \"0\": no label; \"1\": item rejected; \"2\": item in pending validation; \"3\": item accepted.") },
{ "Preview", N_("JPEG preview"), "Text", xmpText, xmpExternal, N_("Reduced size JPEG preview image encoded as base64 for a fast screen rendering.") },
// End of list marker
{ nullptr, nullptr, nullptr, invalidTypeId, xmpInternal, nullptr }
};
extern const XmpPropertyInfo xmpKipiInfo[] = {
{ "PanoramaInputFiles", N_("Panorama Input Files"), "Text", xmpText, xmpExternal, N_("The list of files processed with Hugin program through Panorama tool.") },
{ "EnfuseInputFiles", N_("Enfuse Input Files"), "Text", xmpText, xmpExternal, N_("The list of files processed with Enfuse program through ExpoBlending tool.") },
{ "EnfuseSettings", N_("Enfuse Settings"), "Text", xmpText, xmpExternal, N_("The list of Enfuse settings used to blend image stack with ExpoBlending tool.") },
{ "picasawebGPhotoId", N_("PicasaWeb Item ID"), "Text", xmpText, xmpExternal, N_("Item ID from PicasaWeb web service.") },
{ "yandexGPhotoId", N_("Yandex Fotki Item ID"), "Text", xmpText, xmpExternal, N_("Item ID from Yandex Fotki web service.") },
// End of list marker
{ nullptr, nullptr, nullptr, invalidTypeId, xmpInternal, nullptr }
};
extern const XmpPropertyInfo xmpXmpInfo[] = {
{ "Advisory", N_("Advisory"), "bag XPath", xmpBag, xmpExternal, N_("An unordered array specifying properties that were edited outside the authoring "
"application. Each item should contain a single namespace and XPath separated by "
"one ASCII space (U+0020).") },
{ "BaseURL", N_("Base URL"), "URL", xmpText, xmpInternal, N_("The base URL for relative URLs in the document content. If this document contains "
"Internet links, and those links are relative, they are relative to this base URL. "
"This property provides a standard way for embedded relative URLs to be interpreted "
"by tools. Web authoring tools should set the value based on their notion of where "
"URLs will be interpreted.") },
{ "CreateDate", N_("Create Date"), "Date", xmpText, xmpExternal, N_("The date and time the resource was originally created.") },
{ "CreatorTool", N_("Creator Tool"), "AgentName", xmpText, xmpInternal, N_("The name of the first known tool used to create the resource. If history is "
"present in the metadata, this value should be equivalent to that of "
"xmpMM:History's softwareAgent property.") },
{ "Identifier", N_("Identifier"), "bag Text", xmpBag, xmpExternal, N_("An unordered array of text strings that unambiguously identify the resource within "
"a given context. An array item may be qualified with xmpidq:Scheme to denote the "
"formal identification system to which that identifier conforms. Note: The "
"dc:identifier property is not used because it lacks a defined scheme qualifier and "
"has been defined in the XMP Specification as a simple (single-valued) property.") },
{ "Label", N_("Label"), "Text", xmpText, xmpExternal, N_("A word or short phrase that identifies a document as a member of a user-defined "
"collection. Used to organize documents in a file browser.") },
{ "MetadataDate", N_("Metadata Date"), "Date", xmpText, xmpInternal, N_("The date and time that any metadata for this resource was last changed. It should "
"be the same as or more recent than xmp:ModifyDate.") },
{ "ModifyDate", N_("Modify Date"), "Date", xmpText, xmpInternal, N_("The date and time the resource was last modified. Note: The value of this property "
"is not necessarily the same as the file's system modification date because it is "
"set before the file is saved.") },
{ "Nickname", N_("Nickname"), "Text", xmpText, xmpExternal, N_("A short informal name for the resource.") },
{ "Rating", N_("Rating"), "Closed Choice of Integer", xmpText, xmpExternal, N_("A number that indicates a document's status relative to other documents, "
"used to organize documents in a file browser. Values are user-defined within an "
"application-defined range.") },
{ "Thumbnails", N_("Thumbnails"), "alt Thumbnail", xmpText, xmpInternal, N_("An alternative array of thumbnail images for a file, which can differ in "
"characteristics such as size or image encoding.") },
// End of list marker
{ nullptr, nullptr, nullptr, invalidTypeId, xmpInternal, nullptr }
};
extern const XmpPropertyInfo xmpXmpRightsInfo[] = {
{ "Certificate", N_("Certificate"), "URL", xmpText, xmpExternal, N_("Online rights management certificate.") },
{ "Marked", N_("Marked"), "Boolean", xmpText, xmpExternal, N_("Indicates that this is a rights-managed resource.") },
{ "Owner", N_("Owner"), "bag ProperName", xmpBag, xmpExternal, N_("An unordered array specifying the legal owner(s) of a resource.") },
{ "UsageTerms", N_("Usage Terms"), "Lang Alt", langAlt, xmpExternal, N_("Text instructions on how a resource can be legally used.") },
{ "WebStatement", N_("Web Statement"), "URL", xmpText, xmpExternal, N_("The location of a web page describing the owner and/or rights statement for this resource.") },
// End of list marker
{ nullptr, nullptr, nullptr, invalidTypeId, xmpInternal, nullptr }
};
extern const XmpPropertyInfo xmpXmpMMInfo[] = {
{ "DerivedFrom", N_("Derived From"), "ResourceRef", xmpText, xmpInternal, N_("A reference to the original document from which this one is derived. It is a "
"minimal reference; missing components can be assumed to be unchanged. For example, "
"a new version might only need to specify the instance ID and version number of the "
"previous version, or a rendition might only need to specify the instance ID and "
"rendition class of the original.") },
{ "DocumentID", N_("Document ID"), "URI", xmpText, xmpInternal, N_("The common identifier for all versions and renditions of a document. It should be "
"based on a UUID; see Document and Instance IDs below.") },
{ "History", N_("History"), "seq ResourceEvent", xmpSeq, xmpInternal, N_("An ordered array of high-level user actions that resulted in this resource. It is "
"intended to give human readers a general indication of the steps taken to make the "
"changes from the previous version to this one. The list should be at an abstract "
"level; it is not intended to be an exhaustive keystroke or other detailed history.") },
{ "Ingredients", N_("Ingredients"), "bag ResourceRef", xmpBag, xmpInternal, N_("References to resources that were incorporated, byinclusion or reference, into this resource.") },
{ "InstanceID", N_("Instance ID"), "URI", xmpText, xmpInternal, N_("An identifier for a specific incarnation of a document, updated each time a file "
"is saved. It should be based on a UUID; see Document and Instance IDs below.") },
{ "ManagedFrom", N_("Managed From"), "ResourceRef", xmpText, xmpInternal, N_("A reference to the document as it was prior to becoming managed. It is set when a "
"managed document is introduced to an asset management system that does not "
"currently own it. It may or may not include references to different management systems.") },
{ "Manager", N_("Manager"), "AgentName", xmpText, xmpInternal, N_("The name of the asset management system that manages this resource. Along with "
"xmpMM: ManagerVariant, it tells applications which asset management system to "
"contact concerning this document.") },
{ "ManageTo", N_("Manage To"), "URI", xmpText, xmpInternal, N_("A URI identifying the managed resource to the asset management system; the presence "
"of this property is the formal indication that this resource is managed. The form "
"and content of this URI is private to the asset management system.") },
{ "ManageUI", N_("Manage UI"), "URI", xmpText, xmpInternal, N_("A URI that can be used to access information about the managed resource through a "
"web browser. It might require a custom browser plug-in.") },
{ "ManagerVariant", N_("Manager Variant"), "Text", xmpText, xmpInternal, N_("Specifies a particular variant of the asset management system. The format of this "
"property is private to the specific asset management system.") },
{ "OriginalDocumentID", N_("Original Document ID"), "URI", xmpText, xmpInternal, N_("Refer to Part 1, Data Model, Serialization, and Core "
"Properties, for definition.") },
{ "Pantry", N_("Pantry"), "bag struct", xmpText, xmpInternal, N_("Each array item has a structure value with a potentially "
"unique set of fields, containing extracted XMP from a "
"component. Each field is a property from the XMP of a "
"contained resource component, with all substructure "
"preserved. "
"Each pantry entry shall contain an xmpMM:InstanceID. "
"Only one copy of the pantry entry for any given "
"xmpMM:InstanceID shall be retained in the pantry. "
"Nested pantry items shall be removed from the individual "
"pantry item and promoted to the top level of the pantry.") },
{ "RenditionClass", N_("Rendition Class"), "RenditionClass", xmpText, xmpInternal, N_("The rendition class name for this resource. This property should be absent or set "
"to default for a document version that is not a derived rendition.") },
{ "RenditionParams", N_("Rendition Params"), "Text", xmpText, xmpInternal, N_("Can be used to provide additional rendition parameters that are too complex or "
"verbose to encode in xmpMM: RenditionClass.") },
{ "VersionID", N_("Version ID"), "Text", xmpText, xmpInternal, N_("The document version identifier for this resource. Each version of a document gets "
"a new identifier, usually simply by incrementing integers 1, 2, 3 . . . and so on. "
"Media management systems can have other conventions or support branching which "
"requires a more complex scheme.") },
{ "Versions", N_("Versions"), "seq Version", xmpText, xmpInternal, N_("The version history associated with this resource. Entry [1] is the oldest known "
"version for this document, entry [last()] is the most recent version. Typically, a "
"media management system would fill in the version information in the metadata on "
"check-in. It is not guaranteed that a complete history versions from the first to "
"this one will be present in the xmpMM:Versions property. Interior version information "
"can be compressed or eliminated and the version history can be truncated at some point.") },
{ "LastURL", N_("Last URL"), "URL", xmpText, xmpInternal, N_("Deprecated for privacy protection.") },
{ "RenditionOf", N_("Rendition Of"), "ResourceRef", xmpText, xmpInternal, N_("Deprecated in favor of xmpMM:DerivedFrom. A reference to the document of which this is "
"a rendition.") },
{ "SaveID", N_("Save ID"), "Integer", xmpText, xmpInternal, N_("Deprecated. Previously used only to support the xmpMM:LastURL property.") },
// End of list marker
{ nullptr, nullptr, nullptr, invalidTypeId, xmpInternal, nullptr }
};
extern const XmpPropertyInfo xmpXmpBJInfo[] = {
{ "JobRef", N_("Job Reference"), "bag Job", xmpText, xmpExternal, N_("References an external job management file for a job process in which the document is being used. Use of job "
"names is under user control. Typical use would be to identify all documents that are part of a particular job or contract. "
"There are multiple values because there can be more than one job using a particular document at any time, and it can "
"also be useful to keep historical information about what jobs a document was part of previously.") },
// End of list marker
{ nullptr, nullptr, nullptr, invalidTypeId, xmpInternal, nullptr }
};
extern const XmpPropertyInfo xmpXmpTPgInfo[] = {
{ "MaxPageSize", N_("Maximum Page Size"), "Dimensions", xmpText, xmpInternal, N_("The size of the largest page in the document (including any in contained documents).") },
{ "NPages", N_("Number of Pages"), "Integer", xmpText, xmpInternal, N_("The number of pages in the document (including any in contained documents).") },
{ "Fonts", N_("Fonts"), "bag Font", xmpText, xmpInternal, N_("An unordered array of fonts that are used in the document (including any in contained documents).") },
{ "Colorants", N_("Colorants"), "seq Colorant", xmpText, xmpInternal, N_("An ordered array of colorants (swatches) that are used in the document (including any in contained documents).") },
{ "PlateNames", N_("Plate Names"), "seq Text", xmpSeq, xmpInternal, N_("An ordered array of plate names that are needed to print the document (including any in contained documents).") },
// End of list marker
{ nullptr, nullptr, nullptr, invalidTypeId, xmpInternal, nullptr }
};
extern const XmpPropertyInfo xmpXmpDMInfo[] = {
{ "absPeakAudioFilePath", N_("Absolute Peak Audio File Path"), "URI", xmpText, xmpInternal, N_("The absolute path to the file's peak audio file. If empty, no peak file exists.") },
{ "album", N_("Album"), "Text", xmpText, xmpExternal, N_("The name of the album.") },
{ "altTapeName", N_("Alternative Tape Name"), "Text", xmpText, xmpExternal, N_("An alternative tape name, set via the project window or timecode dialog in Premiere. "
"If an alternative name has been set and has not been reverted, that name is displayed.") },
{ "altTimecode", N_("Alternative Time code"), "Timecode", xmpText, xmpExternal, N_("A timecode set by the user. When specified, it is used instead of the startTimecode.") },
{ "artist", N_("Artist"), "Text", xmpText, xmpExternal, N_("The name of the artist or artists.") },
{ "audioModDate", N_("Audio Modified Date"), "Date", xmpText, xmpInternal, N_("(deprecated) The date and time when the audio was last modified.") },
{ "audioChannelType", N_("Audio Channel Type"), "closed Choice of Text", xmpText, xmpInternal, N_("The audio channel type. One of: Mono, Stereo, 5.1, 7.1, 16 Channel, Other.") },
{ "audioCompressor", N_("Audio Compressor"), "Text", xmpText, xmpInternal, N_("The audio compression used. For example, MP3.") },
{ "audioSampleRate", N_("Audio Sample Rate"), "Integer", xmpText, xmpInternal, N_("The audio sample rate. Can be any value, but commonly 32000, 44100, or 48000.") },
{ "audioSampleType", N_("Audio Sample Type"), "closed Choice of Text", xmpText, xmpInternal, N_("The audio sample type. One of: 8Int, 16Int, 24Int, 32Int, 32Float, Compressed, Packed, Other.") },
{ "beatSpliceParams", N_("Beat Splice Parameters"), "beatSpliceStretch", xmpText, xmpInternal, N_("Additional parameters for Beat Splice stretch mode.") },
{ "cameraAngle", N_("Camera Angle"), "open Choice of Text", xmpText, xmpExternal, N_("The orientation of the camera to the subject in a static shot, from a fixed set of industry standard terminology. Predefined values include:Low Angle, Eye Level, High Angle, Overhead Shot, Birds Eye Shot, Dutch Angle, POV, Over the Shoulder, Reaction Shot.") },
{ "cameraLabel", N_("Camera Label"), "Text", xmpText, xmpExternal, N_("A description of the camera used for a shoot. Can be any string, but is usually simply a number, for example \"1\", \"2\", or more explicitly \"Camera 1\".") },
{ "cameraModel", N_("Camera Model"), "Text", xmpText, xmpExternal, N_("The make and model of the camera used for a shoot.") },
{ "cameraMove", N_("Camera Move"), "open Choice of Text", xmpText, xmpExternal, N_("The movement of the camera during the shot, from a fixed set of industry standard terminology. Predefined values include: Aerial, Boom Up, Boom Down, Crane Up, Crane Down, Dolly In, Dolly Out, Pan Left, Pan Right, Pedestal Up, Pedestal Down, Tilt Up, Tilt Down, Tracking, Truck Left, Truck Right, Zoom In, Zoom Out.") },
{ "client", N_("Client"), "Text", xmpText, xmpExternal, N_("The client for the job of which this shot or take is a part.") },
{ "comment", N_("Comment"), "Text", xmpText, xmpExternal, N_("A user's comments.") },
{ "composer", N_("Composer"), "Text", xmpText, xmpExternal, N_("The composer's name.") },
{ "contributedMedia", N_("Contributed Media"), "bag Media", xmpBag, xmpInternal, N_("An unordered list of all media used to create this media.") },
{ "copyright", N_("Copyright"), "Text", xmpText, xmpExternal, N_("(Deprecated in favour of dc:rights.) The copyright information.") },
{ "director", N_("Director"), "Text", xmpText, xmpExternal, N_("The director of the scene.") },
{ "directorPhotography", N_("Director Photography"), "Text", xmpText, xmpExternal, N_("The director of photography for the scene.") },
{ "duration", N_("Duration"), "Time", xmpText, xmpInternal, N_("The duration of the media file.") },
{ "engineer", N_("Engineer"), "Text", xmpText, xmpExternal, N_("The engineer's name.") },
{ "fileDataRate", N_("File Data Rate"), "Rational", xmpText, xmpInternal, N_("The file data rate in megabytes per second. For example: \"36/10\" = 3.6 MB/sec") },
{ "genre", N_("Genre"), "Text", xmpText, xmpExternal, N_("The name of the genre.") },
{ "good", N_("Good"), "Boolean", xmpText, xmpExternal, N_("A checkbox for tracking whether a shot is a keeper.") },
{ "instrument", N_("Instrument"), "Text", xmpText, xmpExternal, N_("The musical instrument.") },
{ "introTime", N_("Intro Time"), "Time", xmpText, xmpInternal, N_("The duration of lead time for queuing music.") },
{ "key", N_("Key"), "closed Choice of Text", xmpText, xmpInternal, N_("The audio's musical key. One of: C, C#, D, D#, E, F, F#, G, G#, A, A#, B.") },
{ "logComment", N_("Log Comment"), "Text", xmpText, xmpExternal, N_("User's log comments.") },
{ "loop", N_("Loop"), "Boolean", xmpText, xmpInternal, N_("When true, the clip can be looped seamlessly.") },
{ "numberOfBeats", N_("Number Of Beats"), "Real", xmpText, xmpInternal, N_("The number of beats.") },
{ "markers", N_("Markers"), "seq Marker", xmpSeq, xmpInternal, N_("An ordered list of markers") },
{ "metadataModDate", N_("Metadata Modified Date"), "Date", xmpText, xmpInternal, N_("(deprecated) The date and time when the metadata was last modified.") },
{ "outCue", N_("Out Cue"), "Time", xmpText, xmpInternal, N_("The time at which to fade out.") },
{ "projectName", N_("Project Name"), "Text", xmpText, xmpExternal, N_("The name of the project of which this file is a part.") },
{ "projectRef", N_("Project Reference"), "ProjectLink", xmpText, xmpInternal, N_("A reference to the project that created this file.") },
{ "pullDown", N_("Pull Down"), "closed Choice of Text", xmpText, xmpInternal, N_("The sampling phase of film to be converted to video (pull-down). One of: "
"WSSWW, SSWWW, SWWWS, WWWSS, WWSSW, WSSWW_24p, SSWWW_24p, SWWWS_24p, WWWSS_24p, WWSSW_24p.") },
{ "relativePeakAudioFilePath", N_("Relative Peak Audio File Path"), "URI", xmpText, xmpInternal, N_("The relative path to the file's peak audio file. If empty, no peak file exists.") },
{ "relativeTimestamp", N_("Relative Timestamp"), "Time", xmpText, xmpInternal, N_("The start time of the media inside the audio project.") },
{ "releaseDate", N_("Release Date"), "Date", xmpText, xmpExternal, N_("The date the title was released.") },
{ "resampleParams", N_("Resample Parameters"), "resampleStretch", xmpText, xmpInternal, N_("Additional parameters for Resample stretch mode.") },
{ "scaleType", N_("Scale Type"), "closed Choice of Text", xmpText, xmpInternal, N_("The musical scale used in the music. One of: Major, Minor, Both, Neither.") },
{ "scene", N_("Scene"), "Text", xmpText, xmpExternal, N_("The name of the scene.") },
{ "shotDate", N_("Shot Date"), "Date", xmpText, xmpExternal, N_("The date and time when the video was shot.") },
{ "shotDay", N_("Shot Day"), "Text", xmpText, xmpExternal, N_("The day in a multiday shoot. For example: \"Day 2\", \"Friday\".") },
{ "shotLocation", N_("Shot Location"), "Text", xmpText, xmpExternal, N_("The name of the location where the video was shot. For example: \"Oktoberfest, Munich Germany\" "
"For more accurate positioning, use the EXIF GPS values.") },
{ "shotName", N_("Shot Name"), "Text", xmpText, xmpExternal, N_("The name of the shot or take.") },
{ "shotNumber", N_("Shot Number"), "Text", xmpText, xmpExternal, N_("The position of the shot in a script or production, relative to other shots. For example: 1, 2, 1a, 1b, 1.1, 1.2.") },
{ "shotSize", N_("Shot Size"), "open Choice of Text", xmpText, xmpExternal, N_("The size or scale of the shot framing, from a fixed set of industry standard terminology. Predefined values include: "
"ECU --extreme close-up, MCU -- medium close-up. CU -- close-up, MS -- medium shot, "
"WS -- wide shot, MWS -- medium wide shot, EWS -- extreme wide shot.") },
{ "speakerPlacement", N_("Speaker Placement"), "Text", xmpText, xmpExternal, N_("A description of the speaker angles from center front in degrees. For example: "
"\"Left = -30, Right = 30, Center = 0, LFE = 45, Left Surround = -110, Right Surround = 110\"") },
{ "startTimecode", N_("Start Time Code"), "Timecode", xmpText, xmpInternal, N_("The timecode of the first frame of video in the file, as obtained from the device control.") },
{ "stretchMode", N_("Stretch Mode"), "closed Choice of Text", xmpText, xmpInternal, N_("The audio stretch mode. One of: Fixed length, Time-Scale, Resample, Beat Splice, Hybrid.") },
{ "takeNumber", N_("Take Number"), "Integer", xmpText, xmpExternal, N_("A numeric value indicating the absolute number of a take.") },
{ "tapeName", N_("Tape Name"), "Text", xmpText, xmpExternal, N_("The name of the tape from which the clip was captured, as set during the capture process.") },
{ "tempo", N_("Tempo"), "Real", xmpText, xmpInternal, N_("The audio's tempo.") },
{ "timeScaleParams", N_("Time Scale Parameters"), "timeScaleStretch", xmpText, xmpInternal, N_("Additional parameters for Time-Scale stretch mode.") },
{ "timeSignature", N_("Time Signature"), "closed Choice of Text", xmpText, xmpInternal, N_("The time signature of the music. One of: 2/4, 3/4, 4/4, 5/4, 7/4, 6/8, 9/8, 12/8, other.") },
{ "trackNumber", N_("Track Number"), "Integer", xmpText, xmpExternal, N_("A numeric value indicating the order of the audio file within its original recording.") },
{ "tracks", N_("Tracks"), "bag Track", xmpBag, xmpInternal, N_("An unordered list of tracks. A track is a named set of markers, which can specify a frame rate for all markers in the set. See also xmpDM:markers.") },
{ "videoAlphaMode", N_("Video Alpha Mode"), "closed Choice of Text", xmpText, xmpExternal, N_("The alpha mode. One of: straight, pre-multiplied.") },
{ "videoAlphaPremultipleColor", N_("Video Alpha Premultiple Color"), "Colorant", xmpText, xmpExternal, N_("A color in CMYK or RGB to be used as the pre-multiple color when "
"alpha mode is pre-multiplied.") },
{ "videoAlphaUnityIsTransparent", N_("Video Alpha Unity Is Transparent"), "Boolean", xmpText, xmpInternal, N_("When true, unity is clear, when false, it is opaque.") },
{ "videoColorSpace", N_("Video Color Space"), "closed Choice of Text", xmpText, xmpInternal, N_("The color space. One of: sRGB (used by Photoshop), CCIR-601 (used for NTSC), "
"CCIR-709 (used for HD).") },
{ "videoCompressor", N_("Video Compressor"), "Text", xmpText, xmpInternal, N_("Video compression used. For example, jpeg.") },
{ "videoFieldOrder", N_("Video Field Order"), "closed Choice of Text", xmpText, xmpInternal, N_("The field order for video. One of: Upper, Lower, Progressive.") },
{ "videoFrameRate", N_("Video Frame Rate"), "open Choice of Text", xmpText, xmpInternal, N_("The video frame rate. One of: 24, NTSC, PAL.") },
{ "videoFrameSize", N_("Video Frame Size"), "Dimensions", xmpText, xmpInternal, N_("The frame size. For example: w:720, h: 480, unit:pixels") },
{ "videoModDate", N_("Video Modified Date"), "Date", xmpText, xmpInternal, N_("(deprecated)The date and time when the video was last modified.") },
{ "videoPixelDepth", N_("Video Pixel Depth"), "closed Choice of Text", xmpText, xmpInternal, N_("The size in bits of each color component of a pixel. Standard Windows 32-bit "
"pixels have 8 bits per component. One of: 8Int, 16Int, 32Int, 32Float.") },
{ "videoPixelAspectRatio", N_("Video Pixel Aspect Ratio"), "Rational", xmpText, xmpInternal, N_("The aspect ratio, expressed as ht/wd. For example: \"648/720\" = 0.9") },
{ "partOfCompilation", N_("Part Of Compilation"), "Boolean", xmpText, xmpExternal, N_("Part of compilation.") },
{ "lyrics", N_("Lyrics"), "Text", xmpText, xmpExternal, N_("Lyrics text. No association with timecode.") },
{ "discNumber", N_("Disc Number"), "Text", xmpText, xmpExternal, N_("If in a multi-disc set, might contain total number of discs. For example: 2/3.") },
// End of list marker
{ nullptr, nullptr, nullptr, invalidTypeId, xmpInternal, nullptr }
};
extern const XmpPropertyInfo xmpMicrosoftInfo[] = {
{ "CameraSerialNumber", N_("Camera Serial Number"), "Text", xmpText, xmpExternal, N_("Camera Serial Number.") },
{ "DateAcquired", N_("Date Acquired"), "Date", xmpText, xmpExternal, N_("Date Acquired.") },
{ "FlashManufacturer", N_("Flash Manufacturer"), "Text", xmpText, xmpExternal, N_("Flash Manufacturer.") },
{ "FlashModel", N_("Flash Model"), "Text", xmpText, xmpExternal, N_("Flash Model.") },
{ "LastKeywordIPTC", N_("Last Keyword IPTC"), "bag Text", xmpBag, xmpExternal, N_("Last Keyword IPTC.") },
{ "LastKeywordXMP", N_("Last Keyword XMP"), "bag Text", xmpBag, xmpExternal, N_("Last Keyword XMP.") },
{ "LensManufacturer", N_("Lens Manufacturer"), "Text", xmpText, xmpExternal, N_("Lens Manufacturer.") },
{ "LensModel", N_("Lens Model"), "Text", xmpText, xmpExternal, N_("Lens Model.") },
{ "Rating", N_("Rating Percent"), "Text", xmpText, xmpExternal, N_("Rating Percent.") },
// End of list marker
{ nullptr, nullptr, nullptr, invalidTypeId, xmpInternal, nullptr }
};
extern const XmpPropertyInfo xmpLrInfo[] = {
{ "hierarchicalSubject", N_("Hierarchical Subject"), "bag Text", xmpBag, xmpExternal, N_("Adobe Lightroom hierarchical keywords.") },
{ "privateRTKInfo", N_("Private RTK Info"), "Text", xmpText, xmpExternal, N_("Adobe Lightroom private RTK info.") },
// End of list marker
{ nullptr, nullptr, nullptr, invalidTypeId, xmpInternal, nullptr }
};
extern const XmpPropertyInfo xmpPdfInfo[] = {
{ "Keywords", N_("Keywords"), "Text", xmpText, xmpExternal, N_("Keywords.") },
{ "PDFVersion", N_("PDF Version"), "Text", xmpText, xmpInternal, N_("The PDF file version (for example: 1.0, 1.3, and so on).") },
{ "Producer", N_("Producer"), "AgentName", xmpText, xmpInternal, N_("The name of the tool that created the PDF document.") },
{ "Trapped", N_("Trapped"), "Boolean", xmpText, xmpExternal, N_("True when the document has been trapped.") },
// End of list marker
{ nullptr, nullptr, nullptr, invalidTypeId, xmpInternal, nullptr }
};
extern const XmpPropertyInfo xmpPhotoshopInfo[] = {
{ "DateCreated", N_("Date Created"), "Date", xmpText, xmpExternal, N_("The date the intellectual content of the document was created (rather than the creation "
"date of the physical representation), following IIM conventions. For example, a photo "
"taken during the American Civil War would have a creation date during that epoch "
"(1861-1865) rather than the date the photo was digitized for archiving.") },
{ "Headline", N_("Headline"), "Text", xmpText, xmpExternal, N_("Headline.") },
{ "Country", N_("Country"), "Text", xmpText, xmpExternal, N_("Country/primary location.") },
{ "State", N_("State"), "Text", xmpText, xmpExternal, N_("Province/state.") },
{ "City", N_("City"), "Text", xmpText, xmpExternal, N_("City.") },
{ "Credit", N_("Credit"), "Text", xmpText, xmpExternal, N_("Credit.") },
{ "AuthorsPosition", N_("Authors Position"), "Text", xmpText, xmpExternal, N_("By-line title.") },
{ "CaptionWriter", N_("Caption Writer"), "ProperName", xmpText, xmpExternal, N_("Writer/editor.") },
{ "Category", N_("Category"), "Text", xmpText, xmpExternal, N_("Category. Limited to 3 7-bit ASCII characters.") },
{ "Instructions", N_("Instructions"), "Text", xmpText, xmpExternal, N_("Special instructions.") },
{ "Source", N_("Source"), "Text", xmpText, xmpExternal, N_("Source.") },
{ "SupplementalCategories", N_("Supplemental Categories"), "bag Text", xmpBag, xmpExternal, N_("Supplemental category.") },
{ "TransmissionReference", N_("Transmission Reference"), "Text", xmpText, xmpExternal, N_("Original transmission reference.") },
{ "Urgency", N_("Urgency"), "Integer", xmpText, xmpExternal, N_("Urgency. Valid range is 1-8.") },
{ "ICCProfile", N_("ICC Profile"), "Text", xmpText, xmpInternal, N_("The colour profile, such as AppleRGB, AdobeRGB1998.") },
{ "ColorMode", N_("Color Mode"), "Closed Choice of Integer", xmpText, xmpInternal, N_("The colour mode. One of: 0 = Bitmap, 1 = Grayscale, 2 = Indexed, 3 = RGB, 4 = CMYK, 7 = Multichannel, 8 = Duotone, 9 = Lab.") },
{ "AncestorID", N_("Ancestor ID"), "URI", xmpText, xmpExternal, N_("The unique identifier of a document.") },
{ "DocumentAncestors", N_("Document Ancestors"), "bag Ancestor", xmpBag, xmpExternal, N_("If the source document for a copy-and-paste or place operation has a document ID, that ID is added to this list in the destination document's XMP.") },
{ "History", N_("History"), "Text", xmpText, xmpExternal, N_("The history that appears in the FileInfo panel, if activated in the application preferences.") },
{ "TextLayers", N_("Text Layers"), "seq Layer", xmpSeq, xmpExternal, N_("If a document has text layers, this property caches the text for each layer.") },
{ "LayerName", N_("Layer Name"), "Text", xmpText, xmpExternal, N_("The identifying name of the text layer.") },
{ "LayerText", N_("Layer Text"), "Text", xmpText, xmpExternal, N_("The text content of the text layer.") },
{ "EmbeddedXMPDigest", N_("Embedded XMP Digest"), "Text", xmpText, xmpExternal, N_("Embedded XMP Digest.") },
{ "LegacyIPTCDigest", N_("Legacy IPTC Digest"), "Text", xmpText, xmpExternal, N_("Legacy IPTC Digest.") },
{ "SidecarForExtension", N_("Sidecar F or Extension"), "Text", xmpText, xmpExternal, N_("Filename extension of associated image file.") },
// End of list marker
{ nullptr, nullptr, nullptr, invalidTypeId, xmpInternal, nullptr }
};
//! XMP crs:CropUnits
extern const TagDetails crsCropUnits[] = {
{ 0, N_("pixels") },
{ 1, N_("inches") },
{ 2, N_("cm") }
};
extern const XmpPropertyInfo xmpCrssInfo[] = {
{ "SavedSettings", N_("Saved Settings"), "SavedSettings", xmpText, xmpInternal, N_("*Main structure* Camera Raw Saved Settings.") },
{ "Name", N_("Name"), "Text", xmpText, xmpExternal, N_("Camera Raw Saved Settings Name.") },
{ "Type", N_("Type"), "Text", xmpText, xmpExternal, N_("Camera Raw Saved Settings Type.") },
{ "Parameters", N_("Parameters"), "Parameters", xmpText, xmpInternal, N_("*Main structure* Camera Raw Saved Settings Parameters.") },
// End of list marker
{ nullptr, nullptr, nullptr, invalidTypeId, xmpInternal, nullptr }
};
extern const XmpPropertyInfo xmpCrsInfo[] = {
{ "AutoBrightness", N_("Auto Brightness"), "Boolean", xmpText, xmpInternal, N_("When true, \"Brightness\" is automatically adjusted.") },
{ "AutoContrast", N_("Auto Contrast"), "Boolean", xmpText, xmpInternal, N_("When true, \"Contrast\" is automatically adjusted.") },
{ "AutoExposure", N_("Auto Exposure"), "Boolean", xmpText, xmpInternal, N_("When true, \"Exposure\" is automatically adjusted.") },
{ "AutoShadows", N_("Auto Shadows"), "Boolean", xmpText, xmpInternal, N_("When true,\"Shadows\" is automatically adjusted.") },
{ "BlueHue", N_("Blue Hue"), "Integer", xmpText, xmpInternal, N_("\"Blue Hue\" setting. Range -100 to 100.") },
{ "BlueSaturation", N_("Blue Saturation"), "Integer", xmpText, xmpInternal, N_("\"Blue Saturation\" setting. Range -100 to +100.") },
{ "Brightness", N_("Brightness"), "Integer", xmpText, xmpInternal, N_("\"Brightness\" setting. Range 0 to +150.") },
{ "CameraProfile", N_("Camera Profile"), "Text", xmpText, xmpInternal, N_("\"Camera Profile\" setting.") },
{ "ChromaticAberrationB", N_("Chromatic Aberration Blue"), "Integer", xmpText, xmpInternal, N_("\"Chromatic Aberration, Fix Blue/Yellow Fringe\" setting. Range -100 to +100.") },
{ "ChromaticAberrationR", N_("Chromatic Aberration Red"), "Integer", xmpText, xmpInternal, N_("\"Chromatic Aberration, Fix Red/Cyan Fringe\" setting. Range -100 to +100.") },
{ "ColorNoiseReduction", N_("Color Noise Reduction"), "Integer", xmpText, xmpInternal, N_("\"Color Noise Reduction\" setting. Range 0 to +100.") },
{ "Contrast", N_("Contrast"), "Integer", xmpText, xmpInternal, N_("\"Contrast\" setting. Range -50 to +100.") },
{ "CropTop", N_("Crop Top"), "Real", xmpText, xmpInternal, N_("When \"Has Crop\" is true, top of crop rectangle") },
{ "CropLeft", N_("Crop Left"), "Real", xmpText, xmpInternal, N_("When \"Has Crop\" is true, left of crop rectangle.") },
{ "CropBottom", N_("Crop Bottom"), "Real", xmpText, xmpInternal, N_("When \"Has Crop\" is true, bottom of crop rectangle.") },
{ "CropRight", N_("Crop Right"), "Real", xmpText, xmpInternal, N_("When \"Has Crop\" is true, right of crop rectangle.") },
{ "CropAngle", N_("Crop Angle"), "Real", xmpText, xmpInternal, N_("When \"Has Crop\" is true, angle of crop rectangle.") },
{ "CropWidth", N_("Crop Width"), "Real", xmpText, xmpInternal, N_("Width of resulting cropped image in CropUnits units.") },
{ "CropHeight", N_("Crop Height"), "Real", xmpText, xmpInternal, N_("Height of resulting cropped image in CropUnits units.") },
{ "CropUnits", N_("Crop Units"), "Integer", xmpText, xmpInternal, N_("Units for CropWidth and CropHeight. 0=pixels, 1=inches, 2=cm") },
{ "Exposure", N_("Exposure"), "Real", xmpText, xmpInternal, N_("\"Exposure\" setting. Range -4.0 to +4.0.") },
{ "GreenHue", N_("Green Hue"), "Integer", xmpText, xmpInternal, N_("\"Green Hue\" setting. Range -100 to +100.") },
{ "GreenSaturation", N_("Green Saturation"), "Integer", xmpText, xmpInternal, N_("\"Green Saturation\" setting. Range -100 to +100.") },
{ "HasCrop", N_("Has Crop"), "Boolean", xmpText, xmpInternal, N_("When true, image has a cropping rectangle.") },
{ "HasSettings", N_("Has Settings"), "Boolean", xmpText, xmpInternal, N_("When true, non-default camera raw settings.") },
{ "LuminanceSmoothing", N_("Luminance Smoothing"), "Integer", xmpText, xmpInternal, N_("\"Luminance Smoothing\" setting. Range 0 to +100.") },
{ "RawFileName", N_("Raw File Name"), "Text", xmpText, xmpInternal, N_("File name of raw file (not a complete path).") },
{ "RedHue", N_("Red Hue"), "Integer", xmpText, xmpInternal, N_("\"Red Hue\" setting. Range -100 to +100.") },
{ "RedSaturation", N_("Red Saturation"), "Integer", xmpText, xmpInternal, N_("\"Red Saturation\" setting. Range -100 to +100.") },
{ "Saturation", N_("Saturation"), "Integer", xmpText, xmpInternal, N_("\"Saturation\" setting. Range -100 to +100.") },
{ "Shadows", N_("Shadows"), "Integer", xmpText, xmpInternal, N_("\"Shadows\" setting. Range 0 to +100.") },
{ "ShadowTint", N_("Shadow Tint"), "Integer", xmpText, xmpInternal, N_("\"Shadow Tint\" setting. Range -100 to +100.") },
{ "Sharpness", N_("Sharpness"), "Integer", xmpText, xmpInternal, N_("\"Sharpness\" setting. Range 0 to +100.") },
{ "Temperature", N_("Temperature"), "Integer", xmpText, xmpInternal, N_("\"Temperature\" setting. Range 2000 to 50000.") },
{ "Tint", N_("Tint"), "Integer", xmpText, xmpInternal, N_("\"Tint\" setting. Range -150 to +150.") },
{ "ToneCurve", N_("Tone Curve"), "Seq of points (Integer, Integer)", xmpText, xmpInternal, N_("Array of points (Integer, Integer) defining a \"Tone Curve\".") },
{ "ToneCurveName", N_("Tone Curve Name"), "Choice Text", xmpText, xmpInternal, N_("The name of the Tone Curve described by ToneCurve. One of: Linear, Medium Contrast, "
"Strong Contrast, Custom or a user-defined preset name.") },
{ "Version", N_("Version"), "Text", xmpText, xmpInternal, N_("Version of Camera Raw plugin.") },
{ "VignetteAmount", N_("Vignette Amount"), "Integer", xmpText, xmpInternal, N_("\"Vignetting Amount\" setting. Range -100 to +100.") },
{ "VignetteMidpoint", N_("Vignette Midpoint"), "Integer", xmpText, xmpInternal, N_("\"Vignetting Midpoint\" setting. Range 0 to +100.") },
{ "WhiteBalance", N_("White Balance"), "Closed Choice Text", xmpText, xmpInternal, N_("\"White Balance\" setting. One of: As Shot, Auto, Daylight, Cloudy, Shade, Tungsten, "
"Fluorescent, Flash, Custom") },
// The following properties are not in the XMP specification. They are found in sample files from Adobe applications and in exiftool.
{ "AlreadyApplied", N_("Already Applied"), "Boolean", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "Converter", N_("Converter"), "Text", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "MoireFilter", N_("Moire Filter"), "Text", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "Smoothness", N_("Smoothness"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "CameraProfileDigest", N_("Camera Profile Digest"), "Text", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "Clarity", N_("Clarity"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "ConvertToGrayscale", N_("Convert To Grayscale"), "Boolean", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "Defringe", N_("Defringe"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "FillLight", N_("Fill Light"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "HighlightRecovery", N_("Highlight Recovery"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "HueAdjustmentAqua", N_("Hue Adjustment Aqua"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "HueAdjustmentBlue", N_("Hue Adjustment Blue"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "HueAdjustmentGreen", N_("Hue Adjustment Green"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "HueAdjustmentMagenta", N_("Hue Adjustment Magenta"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "HueAdjustmentOrange", N_("Hue Adjustment Orange"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "HueAdjustmentPurple", N_("Hue Adjustment Purple"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "HueAdjustmentRed", N_("Hue Adjustment Red"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "HueAdjustmentYellow", N_("Hue Adjustment Yellow"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "IncrementalTemperature", N_("Incremental Temperature"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "IncrementalTint", N_("Incremental Tint"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "LuminanceAdjustmentAqua", N_("Luminance Adjustment Aqua"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "LuminanceAdjustmentBlue", N_("Luminance Adjustment Blue"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "LuminanceAdjustmentGreen", N_("Luminance Adjustment Green"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "LuminanceAdjustmentMagenta", N_("Luminance Adjustment Magenta"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "LuminanceAdjustmentOrange", N_("Luminance Adjustment Orange"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "LuminanceAdjustmentPurple", N_("Luminance Adjustment Purple"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "LuminanceAdjustmentRed", N_("Luminance Adjustment Red"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "LuminanceAdjustmentYellow", N_("Luminance Adjustment Yellow"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "ParametricDarks", N_("Parametric Darks"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "ParametricHighlights", N_("Parametric Highlights"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "ParametricHighlightSplit", N_("Parametric Highlight Split"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "ParametricLights", N_("Parametric Lights"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "ParametricMidtoneSplit", N_("Parametric Midtone Split"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "ParametricShadows", N_("Parametric Shadows"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "ParametricShadowSplit", N_("Parametric Shadow Split"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "SaturationAdjustmentAqua", N_("Saturation Adjustment Aqua"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "SaturationAdjustmentBlue", N_("Saturation Adjustment Blue"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "SaturationAdjustmentGreen", N_("Saturation Adjustment Green"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "SaturationAdjustmentMagenta", N_("Saturation Adjustment Magenta"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "SaturationAdjustmentOrange", N_("Saturation Adjustment Orange"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "SaturationAdjustmentPurple", N_("Saturation Adjustment Purple"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "SaturationAdjustmentRed", N_("Saturation Adjustment Red"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "SaturationAdjustmentYellow", N_("Saturation Adjustment Yellow"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "SharpenDetail", N_("Sharpen Detail"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "SharpenEdgeMasking", N_("Sharpen Edge Masking"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "SharpenRadius", N_("Sharpen Radius"), "Real", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "SplitToningBalance", N_("Split Toning Balance"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "SplitToningHighlightHue", N_("Split Toning Highlight Hue"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "SplitToningHighlightSaturation", N_("Split Toning Highlight Saturation"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "SplitToningShadowHue", N_("Split Toning Shadow Hue"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "SplitToningShadowSaturation", N_("Split Toning Shadow Saturation"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "Vibrance", N_("Vibrance"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "GrayMixerRed", N_("Gray Mixer Red"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "GrayMixerOrange", N_("Gray Mixer Orange"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "GrayMixerYellow", N_("Gray Mixer Yellow"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "GrayMixerGreen", N_("Gray Mixer Green"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "GrayMixerAqua", N_("Gray Mixer Aqua"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "GrayMixerBlue", N_("Gray Mixer Blue"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "GrayMixerPurple", N_("Gray Mixer Purple"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "GrayMixerMagenta", N_("Gray Mixer Magenta"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "RetouchInfo", N_("Retouch Info"), "bag Text", xmpBag, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "RedEyeInfo", N_("Red Eye Info"), "bag Text", xmpBag, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "CropUnit", N_("Crop Unit"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "PostCropVignetteAmount", N_("Post Crop Vignette Amount"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "PostCropVignetteMidpoint", N_("Post Crop Vignette Midpoint"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "PostCropVignetteFeather", N_("Post Crop Vignette Feather"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "PostCropVignetteRoundness", N_("Post Crop Vignette Roundness"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "PostCropVignetteStyle", N_("Post Crop Vignette Style"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "ProcessVersion", N_("Process Version"), "Text", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "LensProfileEnable", N_("Lens Profile Enable"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "LensProfileSetup", N_("Lens Profile Setup"), "Text", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "LensProfileName", N_("Lens Profile Name"), "Text", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "LensProfileFilename", N_("Lens Profile Filename"), "Text", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "LensProfileDigest", N_("Lens Profile Digest"), "Text", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "LensProfileDistortionScale", N_("Lens Profile Distortion Scale"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "LensProfileChromaticAberrationScale", N_("Lens Profile Chromatic Aberration Scale"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "LensProfileVignettingScale", N_("Lens Profile Vignetting Scale"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "LensManualDistortionAmount", N_("Lens Manual Distortion Amount"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "PerspectiveVertical", N_("Perspective Vertical"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "PerspectiveHorizontal", N_("Perspective Horizontal"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "PerspectiveRotate", N_("Perspective Rotate"), "Real", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "PerspectiveScale", N_("Perspective Scale"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "CropConstrainToWarp", N_("Crop Constrain To Warp"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "LuminanceNoiseReductionDetail", N_("Luminance Noise Reduction Detail"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "LuminanceNoiseReductionContrast", N_("Luminance Noise Reduction Contrast"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "ColorNoiseReductionDetail", N_("Color Noise Reduction Detail"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "GrainAmount", N_("Grain Amount"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "GrainSize", N_("Grain Size"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "GrainFrequency", N_("GrainFrequency"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "AutoLateralCA", N_("Auto Lateral CA"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "Exposure2012", N_("Exposure 2012"), "Real", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "Contrast2012", N_("Contrast 2012"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "Highlights2012", N_("Highlights 2012"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "Shadows2012", N_("Shadows 2012"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "Whites2012", N_("Whites 2012"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "Blacks2012", N_("Blacks 2012"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "Clarity2012", N_("Clarity 2012"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "PostCropVignetteHighlightContrast", N_("Post Crop Vignette Highlight Contrast"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "ToneCurveName2012", N_("Tone Curve Name 2012"), "Text", xmpText, xmpInternal, N_("Values: Linear, Medium Contrast, Strong Contrast, Custom. Not in XMP Specification. Found in sample files.") },
{ "ToneCurveRed", N_("Tone Curve Red"), "Seq of points (Integer, Integer)", xmpText, xmpInternal, N_("Array of points (Integer, Integer) defining a \"Tone Curve\".") },
{ "ToneCurveGreen", N_("Tone Curve Green"), "Seq of points (Integer, Integer)", xmpText, xmpInternal, N_("Array of points (Integer, Integer) defining a \"Tone Curve\".") },
{ "ToneCurveBlue", N_("Tone Curve Blue"), "Seq of points (Integer, Integer)", xmpText, xmpInternal, N_("Array of points (Integer, Integer) defining a \"Tone Curve\".") },
{ "ToneCurvePV2012", N_("Tone Curve PV 2012"), "Seq of points (Integer, Integer)", xmpText, xmpInternal, N_("Array of points (Integer, Integer) defining a \"Tone Curve\".") },
{ "ToneCurvePV2012Red", N_("Tone Curve PV 2012 Red"), "Seq of points (Integer, Integer)", xmpText, xmpInternal, N_("Array of points (Integer, Integer) defining a \"Tone Curve\".") },
{ "ToneCurvePV2012Green", N_("Tone Curve PV 2012 Green"), "Seq of points (Integer, Integer)", xmpText, xmpInternal, N_("Array of points (Integer, Integer) defining a \"Tone Curve\".") },
{ "ToneCurvePV2012Blue", N_("Tone Curve PV 2012 Blue"), "Seq of points (Integer, Integer)", xmpText, xmpInternal, N_("Array of points (Integer, Integer) defining a \"Tone Curve\".") },
{ "DefringePurpleAmount", N_("Defringe Purple Amount"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "DefringePurpleHueLo", N_("Defringe Purple Hue Lo"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "DefringePurpleHueHi", N_("Defringe Purple Hue Hi"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "DefringeGreenAmount", N_("Defringe Green Amount"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "DefringeGreenHueLo", N_("Defringe Green Hue Lo"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "DefringeGreenHueHi", N_("Defringe Green Hue Hi"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "AutoWhiteVersion", N_("Defringe Green Hue Hi"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "ColorNoiseReductionSmoothness", N_("Color Noise Reduction Smoothness"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "PerspectiveAspect", N_("Perspective Aspect"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "PerspectiveUpright", N_("Perspective Upright"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "UprightVersion", N_("Upright Version"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "UprightCenterMode", N_("Upright Center Mode"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "UprightCenterNormX", N_("Upright Center Norm X"), "Real", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "UprightCenterNormY", N_("Upright Center Norm Y"), "Real", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "UprightFocalMode", N_("Upright Focal Mode"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "UprightFocalLength35mm", N_("Upright Focal Length 35mm"), "Real", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "UprightPreview", N_("Upright Preview"), "Boolean", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "UprightTransformCount", N_("Upright TransformCount"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "UprightDependentDigest", N_("Upright DependentDigest"), "Text", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "UprightTransform_0", N_("Upright Transform_0"), "Text", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "UprightTransform_1", N_("Upright Transform_1"), "Text", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "UprightTransform_2", N_("Upright Transform_2"), "Text", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "UprightTransform_3", N_("Upright Transform_3"), "Text", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "UprightTransform_4", N_("Upright Transform_4"), "Text", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "LensProfileMatchKeyExifMake", N_("Lens Profile Match Key Exif Make"), "Text", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "LensProfileMatchKeyExifModel", N_("Lens Profile Match Key Exif Model"), "Text", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "LensProfileMatchKeyCameraModelName", N_("Lens Profile Match Key Camera Model Name"), "Text", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "LensProfileMatchKeyLensInfo", N_("Lens Profile Match Key Lens Info"), "Text", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "LensProfileMatchKeyLensID", N_("Lens Profile Match Key Lens ID"), "Text", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "LensProfileMatchKeyLensName", N_("Lens Profile Match Key Lens Name"), "Text", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "LensProfileMatchKeyIsRaw", N_("Lens Profile Match Key Is Raw"), "Boolean", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "LensProfileMatchKeySensorFormatFactor", N_("Lens Profile Match Key Sensor Format Factor"), "Real", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "DefaultAutoTone", N_("Default Auto Tone"), "Boolean", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "DefaultAutoGray", N_("DefaultAuto Gray"), "Boolean", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "DefaultsSpecificToSerial", N_("Defaults Specific To Serial"), "Boolean", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "DefaultsSpecificToISO", N_("Defaults Specific To ISO"), "Boolean", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "DNGIgnoreSidecars", N_("DNG IgnoreSidecars"), "Boolean", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "NegativeCachePath", N_("Negative Cache Path"), "Text", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "NegativeCacheMaximumSize", N_("Negative Cache Maximum Size"), "Real", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "NegativeCacheLargePreviewSize", N_("Negative Cache Large Preview Size"), "Integer", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "JPEGHandling", N_("JPEG Handling"), "Text", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
{ "TIFFHandling", N_("TIFF Handling"), "Text", xmpText, xmpInternal, N_("Not in XMP Specification. Found in sample files.") },
// Corrections root structure properties
{ "CircularGradientBasedCorrections", N_("CircularGradientBasedCorrections"), "CircularGradientBasedCorrections", xmpText, xmpInternal, N_("*Root structure* ") },
{ "PaintBasedCorrections", N_("PaintBasedCorrections"), "PaintBasedCorrections", xmpText, xmpInternal, N_("*Root structure* ") },
{ "CorrectionMasks", N_("CorrectionMasks"), "CorrectionMasks", xmpText, xmpInternal, N_("*sub Root structure* ") },
// Corrections child properties
{ "What", N_("What"), "Text", xmpText, xmpExternal, N_("Not in XMP Specification. Found in sample files.") },
{ "MaskValue", N_("Mask Value"), "Real", xmpText, xmpExternal, N_("Not in XMP Specification. Found in sample files.") },
{ "Radius", N_("Radius"), "Real", xmpText, xmpExternal, N_("Not in XMP Specification. Found in sample files.") },
{ "Flow", N_("Flow"), "Real", xmpText, xmpExternal, N_("Not in XMP Specification. Found in sample files.") },
{ "CenterWeight", N_("Center Weight"), "Real", xmpText, xmpExternal, N_("Not in XMP Specification. Found in sample files.") },
{ "Dabs", N_("Dabs"), "Seq of points (Integer, Integer)", xmpText, xmpInternal, N_("Array of points (Integer, Integer).") },
{ "ZeroX", N_("Zero X"), "Real", xmpText, xmpExternal, N_("Not in XMP Specification. Found in sample files.") },
{ "ZeroY", N_("Zero Y"), "Real", xmpText, xmpExternal, N_("Not in XMP Specification. Found in sample files.") },
{ "FullX", N_("Full X"), "Real", xmpText, xmpExternal, N_("Not in XMP Specification. Found in sample files.") },
{ "FullY", N_("Full Y"), "Real", xmpText, xmpExternal, N_("Not in XMP Specification. Found in sample files.") },
{ "Top", N_("Top"), "Real", xmpText, xmpExternal, N_("Not in XMP Specification. Found in sample files.") },
{ "Left", N_("Left"), "Real", xmpText, xmpExternal, N_("Not in XMP Specification. Found in sample files.") },
{ "Bottom", N_("Bottom"), "Real", xmpText, xmpExternal, N_("Not in XMP Specification. Found in sample files.") },
{ "Right", N_("Right"), "Real", xmpText, xmpExternal, N_("Not in XMP Specification. Found in sample files.") },
{ "Angle", N_("Angle"), "Real", xmpText, xmpExternal, N_("Not in XMP Specification. Found in sample files.") },
{ "Midpoint", N_("Midpoint"), "Real", xmpText, xmpExternal, N_("Not in XMP Specification. Found in sample files.") },
{ "Roundness", N_("Roundness"), "Real", xmpText, xmpExternal, N_("Not in XMP Specification. Found in sample files.") },
{ "Feather", N_("Feather"), "Real", xmpText, xmpExternal, N_("Not in XMP Specification. Found in sample files.") },
{ "Flipped", N_("Flipped"), "Boolean", xmpText, xmpExternal, N_("Not in XMP Specification. Found in sample files.") },
{ "Version", N_("Version"), "Integer", xmpText, xmpExternal, N_("Not in XMP Specification. Found in sample files.") },
{ "SizeX", N_("Size X"), "Real", xmpText, xmpExternal, N_("Not in XMP Specification. Found in sample files.") },
{ "SizeY", N_("Size Y"), "Real", xmpText, xmpExternal, N_("Not in XMP Specification. Found in sample files.") },
{ "X", N_("X"), "Real", xmpText, xmpExternal, N_("Not in XMP Specification. Found in sample files.") },
{ "Y", N_("Y"), "Real", xmpText, xmpExternal, N_("Not in XMP Specification. Found in sample files.") },
{ "Alpha", N_("Alpha"), "Real", xmpText, xmpExternal, N_("Not in XMP Specification. Found in sample files.") },
{ "CenterValue", N_("Center Value"), "Real", xmpText, xmpExternal, N_("Not in XMP Specification. Found in sample files.") },
{ "PerimeterValue", N_("Perimeter Value"), "Real", xmpText, xmpExternal, N_("Not in XMP Specification. Found in sample files.") },
// Retouch root structure properties
{ "RetouchAreas", N_("RetouchAreas"), "RetouchAreas", xmpText, xmpInternal, N_("*Root structure* ") },
// Retouch child properties
{ "SpotType", N_("Spot Type"), "Text", xmpText, xmpExternal, N_("Not in XMP Specification. Found in sample files.") },
{ "SourceState", N_("Source State"), "Text", xmpText, xmpExternal, N_("Not in XMP Specification. Found in sample files.") },
{ "Method", N_("Method"), "Text", xmpText, xmpExternal, N_("Not in XMP Specification. Found in sample files.") },
{ "SourceX", N_("Source X"), "Real", xmpText, xmpExternal, N_("Not in XMP Specification. Found in sample files.") },
{ "OffsetY", N_("Offset Y"), "Real", xmpText, xmpExternal, N_("Not in XMP Specification. Found in sample files.") },
{ "Opacity", N_("Opacity"), "Real", xmpText, xmpExternal, N_("Not in XMP Specification. Found in sample files.") },
{ "Feather", N_("Feather"), "Real", xmpText, xmpExternal, N_("Not in XMP Specification. Found in sample files.") },
{ "Seed", N_("Seed"), "Integer", xmpText, xmpExternal, N_("Not in XMP Specification. Found in sample files.") },
// End of list marker
{ nullptr, nullptr, nullptr, invalidTypeId, xmpInternal, nullptr }
};
extern const XmpPropertyInfo xmpTiffInfo[] = {
{ "ImageWidth", N_("Image Width"), "Integer", xmpText, xmpInternal, N_("TIFF tag 256, 0x100. Image width in pixels.") },
{ "ImageLength", N_("Image Length"), "Integer", xmpText, xmpInternal, N_("TIFF tag 257, 0x101. Image height in pixels.") },
{ "BitsPerSample", N_("Bits Per Sample"), "seq Integer", xmpSeq, xmpInternal, N_("TIFF tag 258, 0x102. Number of bits per component in each channel.") },
{ "Compression", N_("Compression"), "Closed Choice of Integer", xmpText, xmpInternal, N_("TIFF tag 259, 0x103. Compression scheme: 1 = uncompressed; 6 = JPEG.") },
{ "PhotometricInterpretation", N_("Photometric Interpretation"), "Closed Choice of Integer", xmpText, xmpInternal, N_("TIFF tag 262, 0x106. Pixel Composition: 2 = RGB; 6 = YCbCr.") },
{ "Orientation", N_("Orientation"), "Closed Choice of Integer", xmpText, xmpInternal, N_("TIFF tag 274, 0x112. Orientation:"
"1 = 0th row at top, 0th column at left "
"2 = 0th row at top, 0th column at right "
"3 = 0th row at bottom, 0th column at right "
"4 = 0th row at bottom, 0th column at left "
"5 = 0th row at left, 0th column at top "
"6 = 0th row at right, 0th column at top "
"7 = 0th row at right, 0th column at bottom "
"8 = 0th row at left, 0th column at bottom") },
{ "SamplesPerPixel", N_("Samples Per Pixel"), "Integer", xmpText, xmpInternal, N_("TIFF tag 277, 0x115. Number of components per pixel.") },
{ "PlanarConfiguration", N_("Planar Configuration"), "Closed Choice of Integer", xmpText, xmpInternal, N_("TIFF tag 284, 0x11C. Data layout:1 = chunky; 2 = planar.") },
{ "YCbCrSubSampling", N_("YCbCr Sub Sampling"), "Closed Choice of seq Integer", xmpSeq, xmpInternal, N_("TIFF tag 530, 0x212. Sampling ratio of chrominance "
"components: [2, 1] = YCbCr4:2:2; [2, 2] = YCbCr4:2:0") },
{ "YCbCrPositioning", N_("YCbCr Positioning"), "Closed Choice of Integer", xmpText, xmpInternal, N_("TIFF tag 531, 0x213. Position of chrominance vs. "
"luminance components: 1 = centered; 2 = co-sited.") },
{ "XResolution", N_("X Resolution"), "Rational", xmpText, xmpInternal, N_("TIFF tag 282, 0x11A. Horizontal resolution in pixels per unit.") },
{ "YResolution", N_("Y Resolution"), "Rational", xmpText, xmpInternal, N_("TIFF tag 283, 0x11B. Vertical resolution in pixels per unit.") },
{ "ResolutionUnit", N_("Resolution Unit"), "Closed Choice of Integer", xmpText, xmpInternal, N_("TIFF tag 296, 0x128. Unit used for XResolution and "
"YResolution. Value is one of: 2 = inches; 3 = centimeters.") },
{ "TransferFunction", N_("Transfer Function"), "seq Integer", xmpSeq, xmpInternal, N_("TIFF tag 301, 0x12D. Transfer function for image "
"described in tabular style with 3 * 256 entries.") },
{ "WhitePoint", N_("White Point"), "seq Rational", xmpSeq, xmpInternal, N_("TIFF tag 318, 0x13E. Chromaticity of white point.") },
{ "PrimaryChromaticities", N_("Primary Chromaticities"), "seq Rational", xmpSeq, xmpInternal, N_("TIFF tag 319, 0x13F. Chromaticity of the three primary colors.") },
{ "YCbCrCoefficients", N_("YCbCr Coefficients"), "seq Rational", xmpSeq, xmpInternal, N_("TIFF tag 529, 0x211. Matrix coefficients for RGB to YCbCr transformation.") },
{ "ReferenceBlackWhite", N_("Reference Black White"), "seq Rational", xmpSeq, xmpInternal, N_("TIFF tag 532, 0x214. Reference black and white point values.") },
{ "DateTime", N_("Date and Time"), "Date", xmpText, xmpInternal, N_("TIFF tag 306, 0x132 (primary) and EXIF tag 37520, "
"0x9290 (subseconds). Date and time of image creation "
"(no time zone in EXIF), stored in ISO 8601 format, not "
"the original EXIF format. This property includes the "
"value for the EXIF SubSecTime attribute. "
"NOTE: This property is stored in XMP as xmp:ModifyDate.") },
{ "ImageDescription", N_("Image Description"), "Lang Alt", langAlt, xmpExternal, N_("TIFF tag 270, 0x10E. Description of the image. Note: This property is stored in XMP as dc:description.") },
{ "Make", N_("Make"), "ProperName", xmpText, xmpInternal, N_("TIFF tag 271, 0x10F. Manufacturer of recording equipment.") },
{ "Model", N_("Model"), "ProperName", xmpText, xmpInternal, N_("TIFF tag 272, 0x110. Model name or number of equipment.") },
{ "Software", N_("Software"), "AgentName", xmpText, xmpInternal, N_("TIFF tag 305, 0x131. Software or firmware used to generate image. "
"Note: This property is stored in XMP as xmp:CreatorTool.") },
{ "Artist", N_("Artist"), "ProperName", xmpText, xmpExternal, N_("TIFF tag 315, 0x13B. Camera owner, photographer or image creator. "
"Note: This property is stored in XMP as the first item in the dc:creator array.") },
{ "Copyright", N_("Copyright"), "Lang Alt", langAlt, xmpExternal, N_("TIFF tag 33432, 0x8298. Copyright information. "
"Note: This property is stored in XMP as dc:rights.") },
// End of list marker
{ nullptr, nullptr, nullptr, invalidTypeId, xmpInternal, nullptr }
};
extern const XmpPropertyInfo xmpExifInfo[] = {
{ "ExifVersion", N_("Exif Version"), "Closed Choice of Text", xmpText, xmpInternal, N_("EXIF tag 36864, 0x9000. EXIF version number.") },
{ "FlashpixVersion", N_("Flashpix Version"), "Closed Choice of Text", xmpText, xmpInternal, N_("EXIF tag 40960, 0xA000. Version of FlashPix.") },
{ "ColorSpace", N_("Color Space"), "Closed Choice of Integer", xmpText, xmpInternal, N_("EXIF tag 40961, 0xA001. Color space information") },
{ "ComponentsConfiguration", N_("Components Configuration"), "Closed Choice of seq Integer", xmpSeq, xmpInternal, N_("EXIF tag 37121, 0x9101. Configuration of components in data: 4 5 6 0 (if RGB compressed data), "
"1 2 3 0 (other cases).") },
{ "CompressedBitsPerPixel", N_("Compressed Bits Per Pixel"), "Rational", xmpText, xmpInternal, N_("EXIF tag 37122, 0x9102. Compression mode used for a compressed image is indicated "
"in unit bits per pixel.") },
{ "PixelXDimension", N_("Pixel X Dimension"), "Integer", xmpText, xmpInternal, N_("EXIF tag 40962, 0xA002. Valid image width, in pixels.") },
{ "PixelYDimension", N_("Pixel Y Dimension"), "Integer", xmpText, xmpInternal, N_("EXIF tag 40963, 0xA003. Valid image height, in pixels.") },
{ "UserComment", N_("User Comment"), "Lang Alt", langAlt, xmpExternal, N_("EXIF tag 37510, 0x9286. Comments from user.") },
{ "RelatedSoundFile", N_("Related Sound File"), "Text", xmpText, xmpInternal, N_("EXIF tag 40964, 0xA004. An \"8.3\" file name for the related sound file.") },
{ "DateTimeOriginal", N_("Date and Time Original"), "Date", xmpText, xmpInternal, N_("EXIF tags 36867, 0x9003 (primary) and 37521, 0x9291 (subseconds). "
"Date and time when original image was generated, in ISO 8601 format. "
"Includes the EXIF SubSecTimeOriginal data.") },
{ "DateTimeDigitized", N_("Date and Time Digitized"), "Date", xmpText, xmpInternal, N_("EXIF tag 36868, 0x9004 (primary) and 37522, 0x9292 (subseconds). Date and time when "
"image was stored as digital data, can be the same as DateTimeOriginal if originally "
"stored in digital form. Stored in ISO 8601 format. Includes the EXIF "
"SubSecTimeDigitized data.") },
{ "ExposureTime", N_("Exposure Time"), "Rational", xmpText, xmpInternal, N_("EXIF tag 33434, 0x829A. Exposure time in seconds.") },
{ "FNumber", N_("F Number"), "Rational", xmpText, xmpInternal, N_("EXIF tag 33437, 0x829D. F number.") },
{ "ExposureProgram", N_("Exposure Program"), "Closed Choice of Integer", xmpText, xmpInternal, N_("EXIF tag 34850, 0x8822. Class of program used for exposure.") },
{ "SpectralSensitivity", N_("Spectral Sensitivity"), "Text", xmpText, xmpInternal, N_("EXIF tag 34852, 0x8824. Spectral sensitivity of each channel.") },
{ "ISOSpeedRatings", N_("ISOSpeedRatings"), "seq Integer", xmpSeq, xmpInternal, N_("EXIF tag 34855, 0x8827. ISO Speed and ISO Latitude of the input device as "
"specified in ISO 12232.") },
{ "OECF", N_("OECF"), "OECF/SFR", xmpText, xmpInternal, N_("EXIF tag 34856, 0x8828. Opto-Electoric Conversion Function as specified in ISO 14524.") },
{ "ShutterSpeedValue", N_("Shutter Speed Value"), "Rational", xmpText, xmpInternal, N_("EXIF tag 37377, 0x9201. Shutter speed, unit is APEX. See Annex C of the EXIF specification.") },
{ "ApertureValue", N_("Aperture Value"), "Rational", xmpText, xmpInternal, N_("EXIF tag 37378, 0x9202. Lens aperture, unit is APEX.") },
{ "BrightnessValue", N_("Brightness Value"), "Rational", xmpText, xmpInternal, N_("EXIF tag 37379, 0x9203. Brightness, unit is APEX.") },
{ "ExposureBiasValue", N_("Exposure Bias Value"), "Rational", xmpText, xmpInternal, N_("EXIF tag 37380, 0x9204. Exposure bias, unit is APEX.") },
{ "MaxApertureValue", N_("Maximum Aperture Value"), "Rational", xmpText, xmpInternal, N_("EXIF tag 37381, 0x9205. Smallest F number of lens, in APEX.") },
{ "SubjectDistance", N_("Subject Distance"), "Rational", xmpText, xmpInternal, N_("EXIF tag 37382, 0x9206. Distance to subject, in meters.") },
{ "MeteringMode", N_("Metering Mode"), "Closed Choice of Integer", xmpText, xmpInternal, N_("EXIF tag 37383, 0x9207. Metering mode.") },
{ "LightSource", N_("Light Source"), "Closed Choice of Integer", xmpText, xmpInternal, N_("EXIF tag 37384, 0x9208. Light source.") },
{ "Flash", N_("Flash"), "Flash", xmpText, xmpInternal, N_("EXIF tag 37385, 0x9209. Strobe light (flash) source data.") },
{ "FocalLength", N_("Focal Length"), "Rational", xmpText, xmpInternal, N_("EXIF tag 37386, 0x920A. Focal length of the lens, in millimeters.") },
{ "SubjectArea", N_("Subject Area"), "seq Integer", xmpSeq, xmpInternal, N_("EXIF tag 37396, 0x9214. The location and area of the main subject in the overall scene.") },
{ "FlashEnergy", N_("Flash Energy"), "Rational", xmpText, xmpInternal, N_("EXIF tag 41483, 0xA20B. Strobe energy during image capture.") },
{ "SpatialFrequencyResponse", N_("Spatial Frequency Response"), "OECF/SFR", xmpText, xmpInternal, N_("EXIF tag 41484, 0xA20C. Input device spatial frequency table and SFR values as "
"specified in ISO 12233.") },
{ "FocalPlaneXResolution", N_("Focal Plane X Resolution"), "Rational", xmpText, xmpInternal, N_("EXIF tag 41486, 0xA20E. Horizontal focal resolution, measured pixels per unit.") },
{ "FocalPlaneYResolution", N_("Focal Plane Y Resolution"), "Rational", xmpText, xmpInternal, N_("EXIF tag 41487, 0xA20F. Vertical focal resolution, measured in pixels per unit.") },
{ "FocalPlaneResolutionUnit", N_("Focal Plane Resolution Unit"), "Closed Choice of Integer", xmpText, xmpInternal, N_("EXIF tag 41488, 0xA210. Unit used for FocalPlaneXResolution and FocalPlaneYResolution.") },
{ "SubjectLocation", N_("Subject Location"), "seq Integer", xmpSeq, xmpInternal, N_("EXIF tag 41492, 0xA214. Location of the main subject of the scene. The first value is the "
"horizontal pixel and the second value is the vertical pixel at which the "
"main subject appears.") },
{ "ExposureIndex", N_("Exposure Index"), "Rational", xmpText, xmpInternal, N_("EXIF tag 41493, 0xA215. Exposure index of input device.") },
{ "SensingMethod", N_("Sensing Method"), "Closed Choice of Integer", xmpText, xmpInternal, N_("EXIF tag 41495, 0xA217. Image sensor type on input device.") },
{ "FileSource", N_("File Source"), "Closed Choice of Integer", xmpText, xmpInternal, N_("EXIF tag 41728, 0xA300. Indicates image source.") },
{ "SceneType", N_("Scene Type"), "Closed Choice of Integer", xmpText, xmpInternal, N_("EXIF tag 41729, 0xA301. Indicates the type of scene.") },
{ "CFAPattern", N_("CFA Pattern"), "CFAPattern", xmpText, xmpInternal, N_("EXIF tag 41730, 0xA302. Color filter array geometric pattern of the image sense.") },
{ "CustomRendered", N_("Custom Rendered"), "Closed Choice of Integer", xmpText, xmpInternal, N_("EXIF tag 41985, 0xA401. Indicates the use of special processing on image data.") },
{ "ExposureMode", N_("Exposure Mode"), "Closed Choice of Integer", xmpText, xmpInternal, N_("EXIF tag 41986, 0xA402. Indicates the exposure mode set when the image was shot.") },
{ "WhiteBalance", N_("White Balance"), "Closed Choice of Integer", xmpText, xmpInternal, N_("EXIF tag 41987, 0xA403. Indicates the white balance mode set when the image was shot.") },
{ "DigitalZoomRatio", N_("Digital Zoom Ratio"), "Rational", xmpText, xmpInternal, N_("EXIF tag 41988, 0xA404. Indicates the digital zoom ratio when the image was shot.") },
{ "FocalLengthIn35mmFilm", N_("Focal Length In 35mm Film"), "Integer", xmpText, xmpInternal, N_("EXIF tag 41989, 0xA405. Indicates the equivalent focal length assuming a 35mm film "
"camera, in mm. A value of 0 means the focal length is unknown. Note that this tag "
"differs from the FocalLength tag.") },
{ "SceneCaptureType", N_("Scene Capture Type"), "Closed Choice of Integer", xmpText, xmpInternal, N_("EXIF tag 41990, 0xA406. Indicates the type of scene that was shot.") },
{ "GainControl", N_("Gain Control"), "Closed Choice of Integer", xmpText, xmpInternal, N_("EXIF tag 41991, 0xA407. Indicates the degree of overall image gain adjustment.") },
{ "Contrast", N_("Contrast"), "Closed Choice of Integer", xmpText, xmpInternal, N_("EXIF tag 41992, 0xA408. Indicates the direction of contrast processing applied by the camera.") },
{ "Saturation", N_("Saturation"), "Closed Choice of Integer", xmpText, xmpInternal, N_("EXIF tag 41993, 0xA409. Indicates the direction of saturation processing applied by the camera.") },
{ "Sharpness", N_("Sharpness"), "Closed Choice of Integer", xmpText, xmpInternal, N_("EXIF tag 41994, 0xA40A. Indicates the direction of sharpness processing applied by the camera.") },
{ "DeviceSettingDescription", N_("Device Setting Description"), "DeviceSettings", xmpText, xmpInternal, N_("EXIF tag 41995, 0xA40B. Indicates information on the picture-taking conditions of a particular camera model.") },
{ "SubjectDistanceRange", N_("Subject Distance Range"), "Closed Choice of Integer", xmpText, xmpInternal, N_("EXIF tag 41996, 0xA40C. Indicates the distance to the subject.") },
{ "ImageUniqueID", N_("Image Unique ID"), "Text", xmpText, xmpInternal, N_("EXIF tag 42016, 0xA420. An identifier assigned uniquely to each image. It is recorded as a 32 "
"character ASCII string, equivalent to hexadecimal notation and 128-bit fixed length.") },
{ "GPSVersionID", N_("GPS Version ID"), "Text", xmpText, xmpInternal, N_("GPS tag 0, 0x00. A decimal encoding of each of the four EXIF bytes with period separators. "
"The current value is \"2.0.0.0\".") },
{ "GPSLatitude", N_("GPS Latitude"), "GPSCoordinate", xmpText, xmpInternal, N_("GPS tag 2, 0x02 (position) and 1, 0x01 (North/South). Indicates latitude.") },
{ "GPSLongitude", N_("GPS Longitude"), "GPSCoordinate", xmpText, xmpInternal, N_("GPS tag 4, 0x04 (position) and 3, 0x03 (East/West). Indicates longitude.") },
{ "GPSAltitudeRef", N_("GPS Altitude Reference"), "Closed Choice of Integer", xmpText, xmpInternal, N_("GPS tag 5, 0x05. Indicates whether the altitude is above or below sea level.") },
{ "GPSAltitude", N_("GPS Altitude"), "Rational", xmpText, xmpInternal, N_("GPS tag 6, 0x06. Indicates altitude in meters.") },
{ "GPSTimeStamp", N_("GPS Time Stamp"), "Date", xmpText, xmpInternal, N_("GPS tag 29 (date), 0x1D, and, and GPS tag 7 (time), 0x07. Time stamp of GPS data, "
"in Coordinated Universal Time. Note: The GPSDateStamp tag is new in EXIF 2.2. "
"The GPS timestamp in EXIF 2.1 does not include a date. If not present, "
"the date component for the XMP should be taken from exif:DateTimeOriginal, or if that is "
"also lacking from exif:DateTimeDigitized. If no date is available, do not write "
"exif:GPSTimeStamp to XMP.") },
{ "GPSSatellites", N_("GPS Satellites"), "Text", xmpText, xmpInternal, N_("GPS tag 8, 0x08. Satellite information, format is unspecified.") },
{ "GPSStatus", N_("GPS Status"), "Closed Choice of Text", xmpText, xmpInternal, N_("GPS tag 9, 0x09. Status of GPS receiver at image creation time.") },
{ "GPSMeasureMode", N_("GPS Measure Mode"), "Text", xmpText, xmpInternal, N_("GPS tag 10, 0x0A. GPS measurement mode, Text type.") },
{ "GPSDOP", N_("GPS DOP"), "Rational", xmpText, xmpInternal, N_("GPS tag 11, 0x0B. Degree of precision for GPS data.") },
{ "GPSSpeedRef", N_("GPS Speed Reference"), "Closed Choice of Text", xmpText, xmpInternal, N_("GPS tag 12, 0x0C. Units used to speed measurement.") },
{ "GPSSpeed", N_("GPS Speed"), "Rational", xmpText, xmpInternal, N_("GPS tag 13, 0x0D. Speed of GPS receiver movement.") },
{ "GPSTrackRef", N_("GPS Track Reference"), "Closed Choice of Text", xmpText, xmpInternal, N_("GPS tag 14, 0x0E. Reference for movement direction.") },
{ "GPSTrack", N_("GPS Track"), "Rational", xmpText, xmpInternal, N_("GPS tag 15, 0x0F. Direction of GPS movement, values range from 0 to 359.99.") },
{ "GPSImgDirectionRef", N_("GPS Image Direction Reference"), "Closed Choice of Text", xmpText, xmpInternal, N_("GPS tag 16, 0x10. Reference for image direction.") },
{ "GPSImgDirection", N_("GPS Image Direction"), "Rational", xmpText, xmpInternal, N_("GPS tag 17, 0x11. Direction of image when captured, values range from 0 to 359.99.") },
{ "GPSMapDatum", N_("GPS Map Datum"), "Text", xmpText, xmpInternal, N_("GPS tag 18, 0x12. Geodetic survey data.") },
{ "GPSDestLatitude", N_("GPS Destination Latitude"), "GPSCoordinate", xmpText, xmpInternal, N_("GPS tag 20, 0x14 (position) and 19, 0x13 (North/South). Indicates destination latitude.") },
{ "GPSDestLongitude", N_("GPS Destination Longitude"), "GPSCoordinate", xmpText, xmpInternal, N_("GPS tag 22, 0x16 (position) and 21, 0x15 (East/West). Indicates destination longitude.") },
{ "GPSDestBearingRef", N_("GPS Destination Bearing Reference"), "Closed Choice of Text", xmpText, xmpInternal, N_("GPS tag 23, 0x17. Reference for movement direction.") },
{ "GPSDestBearing", N_("GPS Destination Bearing"), "Rational", xmpText, xmpInternal, N_("GPS tag 24, 0x18. Destination bearing, values from 0 to 359.99.") },
{ "GPSDestDistanceRef", N_("GPS Destination Distance Reference"), "Closed Choice of Text", xmpText, xmpInternal, N_("GPS tag 25, 0x19. Units used for speed measurement.") },
{ "GPSDestDistance", N_("GPS Destination Distance"), "Rational", xmpText, xmpInternal, N_("GPS tag 26, 0x1A. Distance to destination.") },
{ "GPSProcessingMethod", N_("GPS Processing Method"), "Text", xmpText, xmpInternal, N_("GPS tag 27, 0x1B. A character string recording the name of the method used for location finding.") },
{ "GPSAreaInformation", N_("GPS Area Information"), "Text", xmpText, xmpInternal, N_("GPS tag 28, 0x1C. A character string recording the name of the GPS area.") },
{ "GPSDifferential", N_("GPS Differential"), "Closed Choice of Integer", xmpText, xmpInternal, N_("GPS tag 30, 0x1E. Indicates whether differential correction is applied to the GPS receiver.") },
// End of list marker
{ nullptr, nullptr, nullptr, invalidTypeId, xmpInternal, nullptr }
};
extern const XmpPropertyInfo xmpExifEXInfo[] = {
{ "Gamma", N_("Gamma"), "Rational", xmpText, xmpInternal, N_("EXIF tag 42240, 0xA500. Indicates the value of coefficient gamma.") },
{ "PhotographicSensitivity", N_("Photographic Sensitivity"), "Integer", xmpText, xmpInternal, N_("EXIF tag 34855, 0x8827. Indicates the sensitivity of the camera or input device when the image was shot up to the value of 65535 with one of the following parameters that are defined in ISO 12232: standard output sensitivity (SOS), recommended exposure index (REI), or ISO speed.") },
{ "SensitivityType", N_("Sensitivity Type"), "Closed Choice of Integer", xmpText, xmpInternal, N_("EXIF tag 34864, 0x8830. Indicates which one of the parameters of ISO12232 is used for PhotographicSensitivity:0 = Unknown "
"1 = Standard output sensitivity (SOS) "
"2 = Recommended exposure index (REI) "
"3 = ISO speed "
"4 = Standard output sensitivity (SOS) and recommended exposure index (REI) "
"5 = Standard output sensitivity (SOS) and ISO speed "
"6 = Recommended exposure index (REI) and ISO speed "
"7 = Standard output sensitivity (SOS) and recommended exposure index (REI) and ISO speed") },
{ "StandardOutput-Sensitivity", N_("Standard Output Sensitivity"), "Integer", xmpText, xmpInternal, N_("EXIF tag 34865, 0x8831. Indicates the standard output sensitivity value of a camera or input device defined in ISO 12232.") },
{ "RecommendedExposureIndex", N_("Recommended Exposure Index"), "Integer", xmpText, xmpInternal, N_("EXIF tag 34866, 0x8832. Indicates the recommended exposure index value of a camera or input device defined in ISO 12232.") },
{ "ISOSpeed", N_("ISO Speed"), "Integer", xmpText, xmpInternal, N_("EXIF tag 34867, 0x8833. Indicates the ISO speed value of a camera or input device defined in ISO 12232.") },
{ "ISOSpeedLatitudeyyy", N_("ISO Speed Latitude yyy"), "Integer", xmpText, xmpInternal, N_("EXIF tag 34868, 0x8834. Indicates the ISO speed latitude yyy value of a camera or input device defined in ISO 12232.") },
{ "ISOSpeedLatitudezzz", N_("ISO Speed Latitude zzz"), "Integer", xmpText, xmpInternal, N_("EXIF tag 34869, 0x8835. Indicates the ISO speed latitude zzz value of a camera or input device defined in ISO 12232.") },
{ "CameraOwnerName", N_("Camera Owner Name"), "Proper-Name", xmpText, xmpInternal, N_("EXIF tag 42032, 0xA430. This tag records the owner of a camera used in photography as an ASCII string.") },
{ "BodySerialNumber", N_("Body Serial Number"), "Text", xmpText, xmpInternal, N_("EXIF tag 42033, 0xA431. The serial number of the camera or camera body used to take the photograph.") },
{ "LensSpecification", N_("Lens Specification"), "Ordered array of Rational", xmpText, xmpInternal, N_("EXIF tag 42034, 0xA432. notes minimum focal length, maximum focal length, minimum F number in the minimum focal length, and minimum F number in the maximum focal length, which are specification information for the lens that was used in photography.") },
{ "LensMake", N_("Lens Make"), "Proper-Name", xmpText, xmpInternal, N_("EXIF tag 42035, 0xA433. Records the lens manufacturer as an ASCII string.") },
{ "LensModel", N_("Lens Model"), "Text", xmpText, xmpInternal, N_("EXIF tag 42036, 0xA434. Records the lens's model name and model number as an ASCII string.") },
{ "LensSerialNumber", N_("Lens Serial Number"), "Text", xmpText, xmpInternal, N_("EXIF tag 42037, 0xA435. This tag records the serial number of the interchangeable lens that was used in photography as an ASCII string.") },
{ "InteroperabilityIndex", N_("Interoperability Index"), "Closed Choice of Text", xmpText, xmpInternal, N_("EXIF tag 1, 0x0001. Indicates the identification of the Interoperability rule. "
"R98 = Indicates a file conforming to R98 file specification of Recommended Exif Interoperability Rules (Exif R 98) or to DCF basic file stipulated by Design Rule for Camera File System (DCF). "
"THM = Indicates a file conforming to DCF thumbnail file stipulated by Design rule for Camera File System. "
"R03 = Indicates a file conforming to DCF Option File stipulated by Design rule for Camera File System.") },
// End of list marker
{ nullptr, nullptr, nullptr, invalidTypeId, xmpInternal, nullptr }
};
extern const XmpPropertyInfo xmpAuxInfo[] = {
{ "Lens", N_("Lens"), "Text", xmpText, xmpInternal, N_("A description of the lens used to take the photograph. For example, \"70-200 mm f/2.8-4.0\".") },
{ "SerialNumber", N_("Serial Number"), "Text", xmpText, xmpInternal, N_("The serial number of the camera or camera body used to take the photograph.") },
// End of list marker
{ nullptr, nullptr, nullptr, invalidTypeId, xmpInternal, nullptr }
};
extern const XmpPropertyInfo xmpIptcInfo[] = {
{ "CreatorContactInfo", N_("Creator's Contact Info"), "ContactInfo", xmpText, xmpExternal, N_("The creator's contact information provides all necessary information to get in contact "
"with the creator of this news object and comprises a set of sub-properties for proper addressing.") },
{ "CiAdrExtadr", N_("Contact Info-Address"), "Text", xmpText, xmpExternal, N_("sub-key Creator Contact Info: address. Comprises an optional company name and all required "
"information to locate the building or postbox to which mail should be sent.") },
{ "CiAdrCity", N_("Contact Info-City"), "Text", xmpText, xmpExternal, N_("sub-key Creator Contact Info: city.") },
{ "CiAdrRegion", N_("Contact Info-State/Province"), "Text", xmpText, xmpExternal, N_("sub-key Creator Contact Info: state or province.") },
{ "CiAdrPcode", N_("Contact Info-Postal Code"), "Text", xmpText, xmpExternal, N_("sub-key Creator Contact Info: local postal code.") },
{ "CiAdrCtry", N_("Contact Info-Country"), "Text", xmpText, xmpExternal, N_("sub-key Creator Contact Info: country.") },
{ "CiEmailWork", N_("Contact Info-Email"), "Text", xmpText, xmpExternal, N_("sub-key Creator Contact Info: email address.") },
{ "CiTelWork", N_("Contact Info-Phone"), "Text", xmpText, xmpExternal, N_("sub-key Creator Contact Info: phone number.") },
{ "CiUrlWork", N_("Contact Info-Web URL"), "Text", xmpText, xmpExternal, N_("sub-key Creator Contact Info: web address.") },
{ "IntellectualGenre", N_("Intellectual Genre"), "Text", xmpText, xmpExternal, N_("Describes the nature, intellectual or journalistic characteristic of a news object, not "
"specifically its content.") },
{ "Scene", N_("IPTC Scene"), "bag closed Choice of Text", xmpBag, xmpExternal, N_("Describes the scene of a photo content. Specifies one or more terms from the IPTC "
"\"Scene-NewsCodes\". Each Scene is represented as a string of 6 digits in an unordered list.") },
{ "SubjectCode", N_("IPTC Subject Code"), "bag closed Choice of Text", xmpBag, xmpExternal, N_("Specifies one or more Subjects from the IPTC \"Subject-NewsCodes\" taxonomy to "
"categorize the content. Each Subject is represented as a string of 8 digits in an unordered list.") },
{ "Location", N_("Location"), "Text", xmpText, xmpExternal, N_("(legacy) Name of a location the content is focussing on -- either the location shown in visual "
"media or referenced by text or audio media. This location name could either be the name "
"of a sublocation to a city or the name of a well known location or (natural) monument "
"outside a city. In the sense of a sublocation to a city this element is at the fourth "
"level of a top-down geographical hierarchy.") },
{ "CountryCode", N_("Country Code"), "closed Choice of Text", xmpText, xmpExternal, N_("(legacy) Code of the country the content is focussing on -- either the country shown in visual "
"media or referenced in text or audio media. This element is at the top/first level of "
"a top-down geographical hierarchy. The code should be taken from ISO 3166 two or three "
"letter code. The full name of a country should go to the \"Country\" element.") },
// End of list marker
{ nullptr, nullptr, nullptr, invalidTypeId, xmpInternal, nullptr }
};
extern const XmpPropertyInfo xmpIptcExtInfo[] = {
{ "AddlModelInfo", N_("Additional model info"), "Text", xmpText, xmpExternal, N_("Information about the ethnicity and other facts of the model(s) in a model-released image.") },
{ "OrganisationInImageCode", N_("Code of featured Organisation"), "bag Text", xmpBag, xmpExternal, N_("Code from controlled vocabulary for identifying the organisation or company which is featured in the image.") },
{ "CVterm", N_("Controlled Vocabulary Term"), "bag URI", xmpBag, xmpExternal, N_("A term to describe the content of the image by a value from a Controlled Vocabulary.") },
{ "ModelAge", N_("Model age"), "bag Integer", xmpBag, xmpExternal, N_("Age of the human model(s) at the time this image was taken in a model released image.") },
{ "OrganisationInImageName", N_("Name of featured Organisation"), "bag Text", xmpBag, xmpExternal, N_("Name of the organisation or company which is featured in the image.") },
{ "PersonInImage", N_("Person shown"), "bag Text", xmpBag, xmpExternal, N_("Name of a person shown in the image.") },
{ "DigImageGUID", N_("Digital Image Identifier"), "Text", xmpText, xmpExternal, N_("Globally unique identifier for this digital image. It is created and applied by the creator of the digital image at the time of its creation. this value shall not be changed after that time.") },
{ "DigitalSourcefileType", N_("Physical type of original photo"), "URI", xmpText, xmpExternal, N_("The type of the source digital file.") },
{ "Event", N_("Event"), "Lang Alt", langAlt, xmpExternal, N_("Names or describes the specific event at which the photo was taken.") },
{ "MaxAvailHeight", N_("Maximum available height"), "Integer", xmpText, xmpExternal, N_("The maximum available height in pixels of the original photo from which this photo has been derived by downsizing.") },
{ "MaxAvailWidth", N_("Maximum available width"), "Integer", xmpText, xmpExternal, N_("The maximum available width in pixels of the original photo from which this photo has been derived by downsizing.") },
{ "RegistryId", N_("Registry Entry"), "bag RegistryEntryDetails", xmpBag, xmpExternal, N_("Both a Registry Item Id and a Registry Organisation Id to record any registration of this digital image with a registry.") },
{ "RegItemId", N_("Registry Entry-Item Identifier"), "Text", xmpText, xmpExternal, N_("A unique identifier created by a registry and applied by the creator of the digital image. This value shall not be changed after being applied. This identifier is linked to a corresponding Registry Organisation Identifier.") },
{ "RegOrgId", N_("Registry Entry-Organisation Identifier"), "Text", xmpText, xmpExternal, N_("An identifier for the registry which issued the corresponding Registry Image Id.") },
{ "IptcLastEdited", N_("IPTC Fields Last Edited"), "Date", xmpText, xmpExternal, N_("The date and optionally time when any of the IPTC photo metadata fields has been last edited.") },
{ "LocationShown", N_("Location shown"), "bag LocationDetails", xmpBag, xmpExternal, N_("A location shown in the image.") },
{ "LocationCreated", N_("Location Created"), "bag LocationDetails", xmpBag, xmpExternal, N_("The location the photo was taken.") },
{ "City", N_("Location-City"), "Text", xmpText, xmpExternal, N_("Name of the city of a location.") },
{ "CountryCode", N_("Location-Country ISO-Code"), "Text", xmpText, xmpExternal, N_("The ISO code of a country of a location.") },
{ "CountryName", N_("Location-Country Name"), "Text", xmpText, xmpExternal, N_("The name of a country of a location.") },
{ "ProvinceState", N_("Location-Province/State"), "Text", xmpText, xmpExternal, N_("The name of a subregion of a country - a province or state - of a location.") },
{ "Sublocation", N_("Location-Sublocation"), "Text", xmpText, xmpExternal, N_("Name of a sublocation. This sublocation name could either be the name of a sublocation to a city or the name of a well known location or (natural) monument outside a city.") },
{ "WorldRegion", N_("Location-World Region"), "Text", xmpText, xmpExternal, N_("The name of a world region of a location.") },
{ "ArtworkOrObject", N_("Artwork or object in the image"), "bag ArtworkOrObjectDetails", xmpBag, xmpExternal, N_("A set of metadata about artwork or an object in the image.") },
{ "AOCopyrightNotice", N_("Artwork or object-Copyright notice"), "Text", xmpText, xmpExternal, N_("Contains any necessary copyright notice for claiming the intellectual property for artwork or an object in the image and should identify the current owner of the copyright of this work with associated intellectual property rights.") },
{ "AOCreator", N_("Artwork or object-Creator"), "seq ProperName", xmpSeq, xmpExternal, N_("Contains the name of the artist who has created artwork or an object in the image. In cases where the artist could or should not be identified the name of a company or organisation may be appropriate.") },