Commit 022c5ded authored by Hubert Figuiere's avatar Hubert Figuiere
Browse files

Issue #22 - Update SDK to v2021.08

#22

Merge branch 'adobe-sdk' into integration
parents 8db317ec 77a3fe70
The BSD License
Copyright (c) 1999 - 2016, Adobe Systems Incorporated
All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, are permitted provided that the following
conditions are met:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the name of Adobe Systems Incorporated, nor the names of its
contributors may be used to endorse or promote products derived from this
software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
# Adobe Code of Conduct
## Our Pledge
In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to making participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, gender identity and expression, level of experience,
nationality, personal appearance, race, religion, or sexual identity and
orientation.
## Our Standards
Examples of behavior that contributes to creating a positive environment
include:
* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
* The use of sexualized language or imagery and unwelcome sexual attention or
advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic
address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
## Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or
reject comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct, or to ban temporarily or
permanently any contributor for other behaviors that they deem inappropriate,
threatening, offensive, or harmful.
## Scope
This Code of Conduct applies both within project spaces and in public spaces
when an individual is representing the project or its community. Examples of
representing a project or community include using an official project e-mail
address, posting via an official social media account, or acting as an appointed
representative at an online or offline event. Representation of a project may be
further defined and clarified by project maintainers.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team at Grp-opensourceoffice@adobe.com. All
complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident.
Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good
faith may face temporary or permanent repercussions as determined by other
members of the project's leadership.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
available at [http://contributor-covenant.org/version/1/4][version]
[homepage]: http://contributor-covenant.org
[version]: http://contributor-covenant.org/version/1/4/
# Contributing
Thanks for choosing to contribute!
The following are a set of guidelines to follow when contributing to this project.
## Code Of Conduct
This project adheres to the Adobe [code of conduct](https://github.com/adobe/XMP-Toolkit-SDK/blob/master/CODE_OF_CONDUCT.md). By participating,
you are expected to uphold this code. Please report unacceptable behavior to
[Grp-opensourceoffice@adobe.com](mailto:Grp-opensourceoffice@adobe.com).
## Have A Question?
Start by filing an issue. The existing committers on this project work to reach
consensus around project direction and issue solutions within issue threads
(when appropriate).
## Contributor License Agreement
All third-party contributions to this project must be accompanied by a signed contributor
license agreement. This gives Adobe permission to redistribute your contributions
as part of the project. [Sign our CLA](http://opensource.adobe.com/cla.html) <NEEDS REVIEW>. You
only need to submit an Adobe CLA one time, so if you have submitted one previously,
you are good to go!
## Code Reviews
All submissions should come in the form of pull requests and need to be reviewed
by project committers. Read [GitHub's pull request documentation](https://help.github.com/articles/about-pull-requests/)
for more information on sending pull requests.
Lastly, please follow the pull request template when
submitting a pull request!
## From Contributor To Committer
We love contributions from our community! If you'd like to go a step beyond contributor
and become a committer with full write access and a say in the project, you must
be invited to the project. The existing committers employ an internal nomination
process that must reach lazy consensus (silence is approval) before invitations
are issued. If you feel you are qualified and want to get more deeply involved,
feel free to reach out to existing committers to have a conversation about that.
## Security Issues
Security issues shouldn't be reported on this issue tracker. Instead, [file an issue to our security experts](https://helpx.adobe.com/security/alertus.html)
BSD 3-Clause License
Copyright (c) 2020, Adobe
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2.6.0 -
- Update XMPCore to Adobe XMP SDK v2021.08
(issue https://gitlab.freedesktop.org/libopenraw/exempi/-/issues/22)
- Changes in v2021.08
- Security Fixes
- Fixes syntax errors like semicolons in the codebase
- Copyright note changes across the codebase
- Fixes broken license link in Read.md
- Fully implements kXMPFiles_OpenOnlyXMP flag for MPEG4
- Changes in v2021.07
- Security Fixes
- Write Exif 2.3.1 Time Zone Metadata - XMPFiles Should Read/Write
- Removal of words Master/Slave/Blacklist/Whitelist from codebase
- cmake scripts use --version instead of -dumpversion to get complete
gcc version string
- Updating ReadMe.txt
- Changes in v2020.1
- iOS project generation issue
- iOS compilation issue with libc++
- Android support with cmake version 3.6
- CMake upgrade to version 3.15 (except for android)
- Add XCode 10.2 support
- Add VS2017 support
- Some fixes previously done in Exempi are now upstream.
2.5.2 - 2020/06/24
- Bug #18: Remove an unnecessary message to stdout in the exempi tool.
......
# XMP-Toolkit-SDK
The XMP Toolkit allows you to integrate XMP functionality into your product or solution. It supports Macintosh, Windows, as well as UNIX and comes with samples, documentation, source code and scripts to generate project files. The XMP Toolkit is available under the BSD license. The specification is provided under the [XMP Specification Public Patent License](https://wwwimages2.adobe.com/content/dam/acom/en/devnet/xmp/pdfs/cs6/xmp_public_patent_license.pdf)
## SDK components
The XMP Toolkit SDK contains two libraries, XMPCore and XMPFiles. XMPCore and XMPFiles are provided as C++ implementations.
### XMPCore
This library supplies an API for parsing, manipulating, and serializing metadata, according to the XMP data model and regardless of the file format of the data it describes.
### XMPFiles
This library supplies an API for locating, adding, or updating the XMP metadata in a file. The API allows you to retrieve the entire XMP Packet, which you can then pass to the XMPCore component in order to manipulate the individual XMP properties.
*It also includes a plug-in SDK that allows you to create an XMPFiles Plug-in that handles metadata for additional file formats, or replaces built-in format handlers with custom ones.*
## XMP Toolkit SDK Contents
This git repo contains the following folders under the root folder:
Directory | Details
------------ | -------------
/ | At the root level, the license agreement (BSD_License.txt) and this overview (XMP-Toolkit-SDK-Overview.pdf).
build/ | Contains Batch file, shell scripts, Makefile and CMake scripts to be used to create XMP Toolkit SDK project files on the supported platforms. Follow the instructions in README.txt to create the projects.
docs/ | The three-part XMP Specification, the XMP Toolkit SDK Programmer’s Guide, the API reference documentation (API/index.html) and the XMPFiles plug-in SDK documentation.
public/include/ | The header files and glue code that clients of the XMP Toolkit SDK must include.
samples/ | Sample source code and CMake scripts for building sample projects, with the necessary resources to run the sample code. See ‘‘Sample code and tools’’ below.
source/ | The common source code that is used by both components of the XMP Toolkit SDK.
XMPCore/ | The source code for XMPCore library.
XMPFiles/ | The source code for XMPFiles library.
third-party/ <br>&nbsp;&nbsp;&nbsp;expat/<br>&nbsp;&nbsp;&nbsp;zlib/<br>&nbsp;&nbsp;&nbsp;zuid/ | Placeholders for third party source files which are needed for the XMP Toolkit SDK, including ReadMe.txt files with information on how to obtain and install the tools. MD5 source code, needed by both components for MD5 hash computation, is included.
tools/ | Placeholder for downloading and placing CMake tool
XMPFilesPlugins/| The header files and glue code of the XMPFiles plug-in SDK and a sample plug-in.
## How to Build and Use
XMP Toolkit SDK provides build script to ease the process. This repository contains everything needed to build SDK libraries on Mac OS®, Windows®, UNIX®/Linux®, iOS and Android. For detailed build steps , refer the [Programmer's Guide](https://github.com/adobe/XMP-Toolkit-SDK/blob/master/docs/XMPProgrammersGuide.pdf)
## Documentation
See extensive [API documentation](https://github.com/adobe/XMP-Toolkit-SDK/blob/master/docs/XMPProgrammersGuide.pdf) where a complete API Reference is available.
The XMP Specification, available from [Adobe Developer Center (XMP)](http://adobe.com/devnet/xmp/), provides a complete formal
specification for XMP. Before working with the XMP Toolkit SDK, you must be familiar with, at a minimum,
the XMP Data Model.
The specification has three parts:
- Part 1, Data Model, Serialization, and Core Properties covers the basic metadata representation model
that is the foundation of the XMP standard format. The Data Model prescribes how XMP metadata can
be organized; it is independent of file format or specific usage. The Serialization Model prescribes how
the Data Model is represented in XML, specifically RDF.
This document provides all the details a programmer would need to implement a metadata
manipulation system such as the XMP Toolkit SDK (which is available from Adobe).
- Part 2, Additional Properties, provides detailed property lists and descriptions for standard XMP
metadata schemas; these include general-purpose schemas such as Dublin Core, and special-purpose
schemas for Adobe applications such as Photoshop®. It also provides information on extending
existing schemas and creating new schemas.
- Part 3, Storage in Files, provides information about how serialized XMP metadata is packaged into XMP
Packets and embedded in different file formats. It includes information about how XMP relates to and
incorporates other metadata formats, and how to reconcile values that are represented in multiple
metadata formats.
## Contributing
Contributions are welcomed! Read the [Contributing Guide](https://github.com/adobe/XMP-Toolkit-SDK/blob/master/CONTRIBUTING.md) for more information.
## Licensing
This project is BSD licensed. See [LICENSE](https://github.com/adobe/XMP-Toolkit-SDK/blob/main/LICENSE) for more information.
## Report Issues/Bugs
You can report the issues in the issues section of the github repo.
......@@ -2,11 +2,11 @@
#define MemoryManagedObject_h__ 1
// =================================================================================================
// Copyright 2014 Adobe Systems Incorporated
// Copyright 2014 Adobe
// All Rights Reserved.
//
// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms
// of the Adobe license agreement accompanying it.
// of the Adobe license agreement accompanying it.
// =================================================================================================
#include "XMPCommon/XMPCommonDefines_I.h"
......
......@@ -2,12 +2,12 @@
#define __TSingletonImpl_h__ 1
// =================================================================================================
// ADOBE SYSTEMS INCORPORATED
// Copyright 2014 Adobe Systems Incorporated
// Copyright Adobe
// Copyright 2014 Adobe
// All Rights Reserved
//
// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms
// of the Adobe license agreement accompanying it.
// of the Adobe license agreement accompanying it.
// =================================================================================================
#include "XMPCommon/XMPCommonDefines_I.h"
......
......@@ -2,12 +2,12 @@
#define ConfigurableImpl_h__ 1
// =================================================================================================
// ADOBE SYSTEMS INCORPORATED
// Copyright 2014 Adobe Systems Incorporated
// Copyright Adobe
// Copyright 2014 Adobe
// All Rights Reserved
//
// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms
// of the Adobe license agreement accompanying it.
// of the Adobe license agreement accompanying it.
// =================================================================================================
#if !(IMPLEMENTATION_HEADERS_CAN_BE_INCLUDED)
......@@ -45,13 +45,16 @@ namespace XMP_COMPONENT_INT_NAMESPACE {
virtual std::vector< uint64 > APICALL GetAllParameters() const;
virtual sizet APICALL Size() const __NOTHROW__;
virtual eDataType APICALL GetDataType( const uint64 & key ) const;
virtual eConfigurableErrorCode APICALL ValidateValue( const uint64 & key, eDataType type, CombinedDataValue value ) const;
virtual eConfigurableErrorCode APICALL ValidateValue( const uint64 & key, eDataType type, const CombinedDataValue & value ) const;
virtual void APICALL TreatKeyAsCaseInsensitive( bool flag = true );
virtual void APICALL AllowDifferentValueTypesForExistingEntries( bool flag = true );
void APICALL SetAllowedKeys( uint64 * keysTable, sizet sizeOfTable );
void APICALL SetAllowedValueTypesForKeys( KeyValueTypePair * keyValueTypePairTable, sizet sizeOfTable );
virtual ~ConfigurableImpl() __NOTHROW__;
......
......@@ -2,12 +2,12 @@
#define ConfigurationManagerImpl_h__ 1
// =================================================================================================
// ADOBE SYSTEMS INCORPORATED
// Copyright 2014 Adobe Systems Incorporated
// Copyright Adobe
// Copyright 2014 Adobe
// All Rights Reserved
//
// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms
// of the Adobe license agreement accompanying it.
// of the Adobe license agreement accompanying it.
// =================================================================================================
#if !(IMPLEMENTATION_HEADERS_CAN_BE_INCLUDED)
......
......@@ -2,12 +2,12 @@
#define DefaultErrorNotifierImpl_h__ 1
// =================================================================================================
// ADOBE SYSTEMS INCORPORATED
// Copyright 2014 Adobe Systems Incorporated
// Copyright Adobe
// Copyright 2014 Adobe
// All Rights Reserved
//
// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms
// of the Adobe license agreement accompanying it.
// of the Adobe license agreement accompanying it.
// =================================================================================================
#include "XMPCommon/Interfaces/IErrorNotifier_I.h"
......
......@@ -2,12 +2,12 @@
#define ErrorImpl_h__ 1
// =================================================================================================
// ADOBE SYSTEMS INCORPORATED
// Copyright 2014 Adobe Systems Incorporated
// Copyright Adobe
// Copyright 2014 Adobe
// All Rights Reserved
//
// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms
// of the Adobe license agreement accompanying it.
// of the Adobe license agreement accompanying it.
// =================================================================================================
#if !(IMPLEMENTATION_HEADERS_CAN_BE_INCLUDED)
......
......@@ -2,12 +2,12 @@
#define ErrorNotifierWrapperImpl_h__ 1
// =================================================================================================
// ADOBE SYSTEMS INCORPORATED
// Copyright 2014 Adobe Systems Incorporated
// Copyright Adobe
// Copyright 2014 Adobe
// All Rights Reserved
//
// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms
// of the Adobe license agreement accompanying it.
// of the Adobe license agreement accompanying it.
// =================================================================================================
#if !(IMPLEMENTATION_HEADERS_CAN_BE_INCLUDED)
......
......@@ -2,12 +2,12 @@
#define MemoryAllocatorWrapperImpl_h__ 1
// =================================================================================================
// ADOBE SYSTEMS INCORPORATED
// Copyright 2015 Adobe Systems Incorporated
// Copyright Adobe
// Copyright 2015 Adobe
// All Rights Reserved
//
// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms
// of the Adobe license agreement accompanying it.
// of the Adobe license agreement accompanying it.
// =================================================================================================
#include "XMPCommon/Interfaces/IMemoryAllocator.h"
......
......@@ -2,12 +2,12 @@
#define __SharedMutexImpl_h__ 1
// =================================================================================================
// ADOBE SYSTEMS INCORPORATED
// Copyright 2014 Adobe Systems Incorporated
// Copyright Adobe
// Copyright 2014 Adobe
// All Rights Reserved
//
// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms
// of the Adobe license agreement accompanying it.
// of the Adobe license agreement accompanying it.
// =================================================================================================
#if !(IMPLEMENTATION_HEADERS_CAN_BE_INCLUDED)
......
......@@ -2,12 +2,12 @@
#define __SharedObjectImpl_h__ 1
// =================================================================================================
// ADOBE SYSTEMS INCORPORATED
// Copyright 2014 Adobe Systems Incorporated
// Copyright Adobe
// Copyright 2014 Adobe
// All Rights Reserved
//
// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms
// of the Adobe license agreement accompanying it.
// of the Adobe license agreement accompanying it.
// =================================================================================================
#include "XMPCommon/Interfaces/BaseInterfaces/ISharedObject.h"
......
// =================================================================================================
// ADOBE SYSTEMS INCORPORATED
// Copyright 2015 Adobe Systems Incorporated
// Copyright Adobe
// Copyright 2015 Adobe
// All Rights Reserved
//
// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms
// of the Adobe license agreement accompanying it.
// of the Adobe license agreement accompanying it.
// =================================================================================================
#if !(IMPLEMENTATION_HEADERS_CAN_BE_INCLUDED)
......@@ -48,4 +48,4 @@ namespace XMP_COMPONENT_INT_NAMESPACE {
#if XMP_WinBuild
#pragma warning( pop )
#endif
\ No newline at end of file
#endif
......@@ -2,12 +2,12 @@
#define __UTF8String_Impl_h__ 1
// =================================================================================================
// ADOBE SYSTEMS INCORPORATED
// Copyright 2014 Adobe Systems Incorporated
// Copyright Adobe
// Copyright 2014 Adobe
// All Rights Reserved
//
// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms
// of the Adobe license agreement accompanying it.
// of the Adobe license agreement accompanying it.
// =================================================================================================
#if !(IMPLEMENTATION_HEADERS_CAN_BE_INCLUDED)
......@@ -32,11 +32,23 @@ namespace XMP_COMPONENT_INT_NAMESPACE {
: public virtual IUTF8String_I
, public virtual SharedObjectImpl
, public virtual MemoryManagedObject
, public virtual enable_shared_from_this< UTF8StringImpl >
, public enable_shared_from_this< UTF8StringImpl >
{
public:
UTF8StringImpl() {}
using IUTF8String_I::append;
using IUTF8String_I::assign;
using IUTF8String_I::insert;
using IUTF8String_I::erase;
using IUTF8String_I::resize;
using IUTF8String_I::replace;
using IUTF8String_I::copy;
using IUTF8String_I::find;
using IUTF8String_I::rfind;
using IUTF8String_I::compare;
using IUTF8String_I::substr;
using IUTF8String_I::empty;
virtual spIUTF8String APICALL append( const char * buf, sizet count );
virtual spIUTF8String APICALL append( const spcIUTF8String & src, sizet srcPos, sizet count );
virtual spIUTF8String APICALL assign( const char * buf, sizet count );
......
......@@ -2,12 +2,12 @@
#define IConfigurable_I_h__ 1
// =================================================================================================
// ADOBE SYSTEMS INCORPORATED
// Copyright 2014 Adobe Systems Incorporated
// Copyright Adobe
// Copyright 2014 Adobe
// All Rights Reserved
//
// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms
// of the Adobe license agreement accompanying it.
// of the Adobe license agreement accompanying it.
// =================================================================================================
#include "XMPCommon/XMPCommonFwdDeclarations_I.h"
......@@ -23,8 +23,8 @@ namespace XMP_COMPONENT_INT_NAMESPACE {
public:
typedef struct std::pair< eDataType, CombinedDataValue > TypeValuePair;
typedef std::pair< uint64, TypeValuePair > KeyValuePair;
typedef std::pair< uint64, eDataType > KeyValueTypePair;
typedef std::pair< const uint64, TypeValuePair > KeyValuePair;
typedef std::pair< const uint64, eDataType > KeyValueTypePair;
//!
//! Function to validate a key.
......@@ -53,9 +53,11 @@ namespace XMP_COMPONENT_INT_NAMESPACE {
//! can hold, it can override this function for such operations. Returns an error code in case
//! of an error condition, otherwise return kCECNone.
//!
virtual eConfigurableErrorCode APICALL ValidateValue( const uint64 & key, eDataType type, const CombinedDataValue & value ) const = 0;
//!
virtual eConfigurableErrorCode APICALL ValidateValue( const uint64 & key, eDataType type, const CombinedDataValue & value ) const=0;
//!
//! Allows keys to be treated as case insensitive.
//! \param[in] flag a boolean value if set to true makes key as case insensitive
//!
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment