diff --git a/doc/ChangeLog b/doc/ChangeLog
index 0daef8a7..eff5fbf1 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -6,6 +6,9 @@ Changes from version 0.21.1 to 0.22
- Added version hex number to the output of "exiv2 -V".
* Exiv2 library
+ - 0000798: Added people/photo region tagging schemas
+ MS Photo 1.2 RegionInfo and MWG Regions
+ (Benjamin Henne)
- 0000785: Exif version 2.3 missing tag codes. (Patch by Jens Mueller)
- 0000782: Tamron 18-270mm lens. (Patch by Jens Mueller)
- 0000781: Exif 2.3 & DNG 1.2/1.3 tags. (Patch by Jens Mueller)
diff --git a/doc/templates/Makefile b/doc/templates/Makefile
index 4808cb0d..c638b130 100644
--- a/doc/templates/Makefile
+++ b/doc/templates/Makefile
@@ -130,7 +130,11 @@ SCHEMA = xmp_dc \
xmp_iptcExt \
xmp_plus \
xmp_mediapro \
- xmp_expressionmedia
+ xmp_expressionmedia \
+ xmp_MP \
+ xmp_MPRI \
+ xmp_MPReg \
+ xmp_mwg-rs
TAGLIST = ../../src/taglist
diff --git a/doc/templates/__index2__ b/doc/templates/__index2__
index 15ccb355..e9e80b4f 100644
--- a/doc/templates/__index2__
+++ b/doc/templates/__index2__
@@ -43,6 +43,10 @@
MicrosoftPhoto
mediapro
expressionmedia
+ MP
+ MPRI
+ MPReg
+ mwg-rs
diff --git a/src/doxygen.hpp.in b/src/doxygen.hpp.in
index 3db75279..bcf3a6b2 100644
--- a/src/doxygen.hpp.in
+++ b/src/doxygen.hpp.in
@@ -78,6 +78,10 @@
- MicrosoftPhoto schema
- iView Media Pro schema
- Microsoft Expression Media schema
+ - Microsoft Photo 1.2 schema
+ - Microsoft Photo RegionInfo schema
+ - Microsoft Photo Region schema
+ - Metadata Working Group Regions schema
@section formats File Formats
diff --git a/src/properties.cpp b/src/properties.cpp
index 66a90eaf..9f919f9b 100644
--- a/src/properties.cpp
+++ b/src/properties.cpp
@@ -92,6 +92,10 @@ namespace Exiv2 {
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 XmpNsInfo xmpNsInfo[] = {
// Schemas - NOTE: Schemas which the XMP-SDK doesn't know must be registered in XmpParser::initialize - Todo: Automate this
@@ -118,6 +122,10 @@ namespace Exiv2 {
{ "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") },
// Structures
{ "http://ns.adobe.com/xap/1.0/g/", "xapG", 0, N_("Colorant structure") },
@@ -128,6 +136,7 @@ namespace Exiv2 {
{ "http://ns.adobe.com/xap/1.0/sType/ResourceRef#", "stRef", 0, N_("ResourceRef structure") },
{ "http://ns.adobe.com/xap/1.0/sType/Version#", "stVer", 0, N_("Version structure") },
{ "http://ns.adobe.com/xap/1.0/sType/Job#", "stJob", 0, N_("Basic Job/Workflow structure") },
+ { "http://ns.adobe.com/xmp/sType/Area#", "stArea", 0, N_("Area structure") },
// Qualifiers
{ "http://ns.adobe.com/xmp/Identifier/qual/1.0/", "xmpidq", 0, N_("Qualifier for xmp:Identifier") }
@@ -938,6 +947,43 @@ namespace Exiv2 {
{ 0, 0, 0, invalidTypeId, xmpInternal, 0 }
};
+ extern const XmpPropertyInfo xmpMicrosoftPhotoInfo[] = {
+ { "RegionInfo", N_("RegionInfo"), "RegionInfo", xmpText, xmpInternal, N_("Microsoft Photo people-tagging metadata root") },
+ // End of list marker
+ { 0, 0, 0, invalidTypeId, xmpInternal, 0 }
+ };
+
+ extern const XmpPropertyInfo xmpMicrosoftPhotoRegionInfoInfo[] = {
+ { "DateRegionsValid", N_("DateRegionsValid"), "Date", xmpText, xmpExternal, N_("Date the last region was created") },
+ { "Regions", N_("Regions"), "bag Region", xmpBag, xmpExternal, N_("Contains Regions/person tags") },
+ // End of list marker
+ { 0, 0, 0, invalidTypeId, xmpInternal, 0 }
+ };
+
+ extern const XmpPropertyInfo xmpMicrosoftPhotoRegionInfo[] = {
+ { "PersonDisplayName", N_("PersonDisplayName"), "Text", xmpText, xmpExternal, N_("Name of the person (in the given rectangle)") },
+ { "Rectangle", N_("Rectangle"), "Text", xmpText, xmpExternal, N_("Rectangle that identifies the person within the photo") },
+ { "PersonEmailDigest", N_("PersonEmailDigest"), "Text", xmpText, xmpExternal, N_("SHA-1 encrypted message hash of the person's Windows Live e-mail address"), },
+ { "PersonLiveCID", N_("PersonLiveCID"), "Text", xmpText, xmpExternal, N_("Signed decimal representation of the person's Windows Live CID") },
+ // End of list marker
+ { 0, 0, 0, invalidTypeId, xmpInternal, 0 }
+ };
+
+ extern const XmpPropertyInfo xmpMWGRegionsInfo[] = {
+ { "Regions", N_("Regions"), "RegionInfo", xmpText, xmpInternal, N_("Main structure containing region based information") },
+ { "AppliedToDimensions", N_("AppliedToDimensions"), "Dimensions", xmpText, xmpExternal, N_("Width and height of image when storing region data") },
+ { "RegionList", N_("RegionList"), "bag RegionStruct", xmpBag, xmpExternal, N_("List of Region structures") },
+ { "Area", N_("Area"), "Area", xmpText, xmpExternal, N_("Descriptive markers of catalog items by content") },
+ { "Type", N_("Type"), "closed Choice of Text", xmpText, xmpExternal, N_("Type purpose of region (Face|Pet|Focus|BarCode)") },
+ { "Name", N_("Name"), "Text", xmpText, xmpExternal, N_("Name/ short description of content in image region") },
+ { "Description", N_("Description"), "Text", xmpText, xmpExternal, N_("Usage scenario for a given focus area (EvaluatedUsed|EvaluatedNotUsed|NotEvaluatedNotUsed)") },
+ { "FocusUsage", N_("FocusUsage"), "closed Choice of Text", xmpText, xmpExternal, N_("Descriptive markers of catalog items by content") },
+ { "BarCodeValue", N_("BarCodeValue"), "Text", xmpText, xmpExternal, N_("Decoded BarCode value string") },
+ { "Extensions", N_("Extensions"), "Text", undefined, xmpInternal, N_("Any top level XMP property to describe the region content") },
+ // End of list marker
+ { 0, 0, 0, invalidTypeId, xmpInternal, 0 }
+ };
+
extern const XmpPrintInfo xmpPrintInfo[] = {
{"Xmp.crs.CropUnits", EXV_PRINT_TAG(crsCropUnits) },
{"Xmp.exif.ApertureValue", print0x9202 },
diff --git a/src/xmp.cpp b/src/xmp.cpp
index e58894ea..22927e8e 100644
--- a/src/xmp.cpp
+++ b/src/xmp.cpp
@@ -410,6 +410,11 @@ namespace Exiv2 {
SXMPMeta::RegisterNamespace("http://ns.useplus.org/ldf/xmp/1.0/", "plus");
SXMPMeta::RegisterNamespace("http://ns.iview-multimedia.com/mediapro/1.0/", "mediapro");
SXMPMeta::RegisterNamespace("http://ns.microsoft.com/expressionmedia/1.0/", "expressionmedia");
+ SXMPMeta::RegisterNamespace("http://ns.microsoft.com/photo/1.2/", "MP");
+ SXMPMeta::RegisterNamespace("http://ns.microsoft.com/photo/1.2/t/RegionInfo#", "MPRI");
+ SXMPMeta::RegisterNamespace("http://ns.microsoft.com/photo/1.2/t/Region#", "MPReg");
+ SXMPMeta::RegisterNamespace("http://www.metadataworkinggroup.com/schemas/regions/", "mwg-rs");
+ SXMPMeta::RegisterNamespace("http://ns.adobe.com/xmp/sType/Area#", "stArea");
#else
initialized_ = true;
#endif