/** * Literal value set/get methods * @throws XmpException */ private static void CoverLiteralProperties() { writeMajorLabel("Test SetProperty... and getProperty... methods " + "(set/get with literal values)"); var meta = XmpMetaFactory.ParseFromString(TestData.DATETIME_RDF); var dateValue = XmpDateTimeFactory.Create(2000, 1, 2, 3, 4, 5, 0); meta.SetPropertyBoolean(TestData.NS1, "Bool0", false); meta.SetPropertyBoolean(TestData.NS1, "Bool1", true); meta.SetPropertyInteger(TestData.NS1, "Int", 42); meta.SetPropertyDouble(TestData.NS1, "Double", 4.2); meta.SetPropertyDate(TestData.NS1, "Date10", dateValue); /* * TODO reinstate this code * * int offset = (/* hour #1# 06 * 3600 * 1000 + /* minute #1# 07 * 60 * 1000) * /* sign #1# 1; * dateValue.SetTimeZone(new SimpleTimeZone(offset, "test")); * meta.SetPropertyDate (NS1, "Date11", dateValue); * offset *= -1; * dateValue.SetTimeZone(new SimpleTimeZone(offset, "test")); * meta.SetPropertyDate (NS1, "Date12", dateValue); * dateValue.SetNanosecond(9); * meta.SetPropertyDate (NS1, "Date13", dateValue); */ printXmpMeta(meta, "A few basic binary Set... calls"); log.WriteLine(); bool b = meta.GetPropertyBoolean(TestData.NS1, "Bool0"); log.WriteLine("getPropertyBoolean ns1:Bool0 = " + b); b = meta.GetPropertyBoolean(TestData.NS1, "Bool1"); log.WriteLine("getPropertyBoolean ns1:Bool1 = " + b); int integer = meta.GetPropertyInteger(TestData.NS1, "Int"); log.WriteLine("getPropertyBoolean ns1:Int = " + integer); double d = meta.GetPropertyDouble(TestData.NS1, "Double"); log.WriteLine("getPropertyBoolean ns1:Int = " + d); log.WriteLine(); for (int i = 1; i <= 13; i++) { var dateName = "Date" + i; var dt = meta.GetPropertyDate(TestData.NS1, dateName); log.WriteLine("getPropertyDate (" + i + ") = " + dt); meta.SetPropertyDate(TestData.NS2, dateName, dateValue); } printXmpMeta(meta, "Get and re-set the dates in NS2"); }
/// <summary> /// Converts the node value to string, apply special conversions for defined /// types in XMP. /// </summary> /// <param name="value">the node value to set</param> /// <returns>Returns the String representation of the node value.</returns> private static string SerializeNodeValue(object value) { if (value == null) { return(null); } if (value is bool) { return(XmpCore.XmpUtils.ConvertFromBoolean((bool)value)); } if (value is int) { return(XmpCore.XmpUtils.ConvertFromInteger((int)value)); } if (value is long) { return(XmpCore.XmpUtils.ConvertFromLong((long)value)); } if (value is double) { return(XmpCore.XmpUtils.ConvertFromDouble((double)value)); } string strValue; var dateTime = value as IXmpDateTime; if (dateTime != null) { strValue = XmpCore.XmpUtils.ConvertFromDate(dateTime); } else { var calendar = value as GregorianCalendar; if (calendar != null) { var dt = XmpDateTimeFactory.CreateFromCalendar(calendar); strValue = XmpCore.XmpUtils.ConvertFromDate(dt); } else { var sbytes = value as byte[]; strValue = sbytes != null?XmpCore.XmpUtils.EncodeBase64(sbytes) : value.ToString(); } } return(strValue != null?Utils.RemoveControlChars(strValue) : null); }
internal static IXmpMeta Get(ImageDetails details) { var xmp = XmpMetaFactory.Create(); var idNs = "https://id.parliament.uk/"; var schemaNs = $"{idNs}schema/"; XmpMetaFactory.SchemaRegistry.RegisterNamespace(idNs, "id"); XmpMetaFactory.SchemaRegistry.RegisterNamespace(schemaNs, "schema"); xmp.SetProperty(XmpConstants.NsIptccore, "CiAdrCity", "London"); xmp.SetProperty(XmpConstants.NsIptccore, "CiAdrCtry", "UK"); xmp.SetProperty(XmpConstants.NsIptccore, "CiAdrRegion", "London"); xmp.SetProperty(XmpConstants.NsIptccore, "CiEmailWork", "*****@*****.**"); xmp.SetProperty(XmpConstants.NsIptccore, "CiTelWork", "+447740424810"); xmp.SetProperty(XmpConstants.NsIptccore, "CiUrlWork", "http://www.mcandrewphoto.co.uk"); xmp.SetProperty(XmpConstants.NsPhotoshop, "Source", "Chris McAndrew / UK Parliament"); xmp.SetProperty(XmpConstants.NsPhotoshop, "Credit", "Chris McAndrew / UK Parliament (Attribution 3.0 Unported (CC BY 3.0))"); xmp.SetPropertyDate(XmpConstants.NsPhotoshop, "DateCreated", XmpDateTimeFactory.Create(2017, 6, 17, 11, 30, 41, 0)); xmp.SetProperty(XmpConstants.NsDC, "rights", "Attribution 3.0 Unported (CC BY 3.0)"); xmp.SetProperty(XmpConstants.NsDC, "title", $"{details.GivenName} {details.FamilyName}"); xmp.SetProperty(XmpConstants.NsDC, "description", $"{details.GivenName} {details.FamilyName} - UK Parliament official portraits 2017"); xmp.SetProperty(XmpConstants.NsDC, "creator", "Chris McAndrew / UK Parliament"); // <rdf:Description rdf:about="http://id.parliament.uk/IMAGE1" /> xmp.SetObjectName($"{idNs}{details.Id}"); // id:IMAGE1 a schema:Image xmp.SetProperty(XmpConstants.NsRdf, "type", $"{schemaNs}Image", new PropertyOptions { IsUri = true }); // id:IMAGE1 schema:parlHasSubject id:PERSON1 xmp.SetProperty(schemaNs, "imageHasSubject", details.MemberUri, new PropertyOptions { IsUri = true }); // id:PERSON1 a schema:Person xmp.SetQualifier(schemaNs, "imageHasSubject", XmpConstants.NsRdf, "type", $"{schemaNs}Person", new PropertyOptions { IsUri = true }); return(xmp); }
/// <summary> /// Converts the node value to string, apply special conversions for defined /// types in XMP. /// </summary> /// <param name="value">the node value to set</param> /// <returns>Returns the String representation of the node value.</returns> private static string SerializeNodeValue(object value) { switch (value) { case null: return(null); case bool b: return(XmpCore.XmpUtils.ConvertFromBoolean(b)); case int i: return(XmpCore.XmpUtils.ConvertFromInteger(i)); case long l: return(XmpCore.XmpUtils.ConvertFromLong(l)); case double d: return(XmpCore.XmpUtils.ConvertFromDouble(d)); } string strValue; switch (value) { case IXmpDateTime dateTime: strValue = XmpCore.XmpUtils.ConvertFromDate(dateTime); break; case GregorianCalendar calendar: var dt = XmpDateTimeFactory.CreateFromCalendar(calendar); strValue = XmpCore.XmpUtils.ConvertFromDate(dt); break; default: strValue = value is byte[] sbytes?XmpCore.XmpUtils.EncodeBase64(sbytes) : value.ToString(); break; } return(strValue != null?Utils.RemoveControlChars(strValue) : null); }
/** * Date/Time utilities */ private static void CoverDateTime() { writeMajorLabel("Test date/time utilities and special values"); var date1 = XmpDateTimeFactory.Create(2000, 1, 31, 12, 34, 56, -1); date1.TimeZone = TimeZoneInfo.FindSystemTimeZoneById("PST"); var date2 = XmpDateTimeFactory.Create(0, 0, 0, 0, 0, 0, 0); GregorianCalendar cal = new GregorianCalendar(2007, 1, 28); var date3 = XmpDateTimeFactory.CreateFromCalendar(cal); var currentDateTime = XmpDateTimeFactory.GetCurrentDateTime(); log.WriteLine("Print date 2000 Jan 31 12:34:56 PST = {0}", date1); log.WriteLine("Print zero date = {0}", date2); log.WriteLine("Print date created by a calendar = {0}", date3); log.WriteLine("Print current date = {0}", currentDateTime); log.WriteLine(); }