|
Packit |
01d647 |
// =================================================================================================
|
|
Packit |
01d647 |
// Copyright 2002-2008 Adobe Systems Incorporated
|
|
Packit |
01d647 |
// All Rights Reserved.
|
|
Packit |
01d647 |
//
|
|
Packit |
01d647 |
// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms
|
|
Packit |
01d647 |
// of the Adobe license agreement accompanying it.
|
|
Packit |
01d647 |
// =================================================================================================
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
// *** Should change "type * inParam" to "type & inParam"
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
#include "XMP_Environment.h" // ! This must be the first include!
|
|
Packit |
01d647 |
#include "XMPCore_Impl.hpp"
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
#include "XMPUtils.hpp"
|
|
Packit |
01d647 |
#include "client-glue/WXMPUtils.hpp"
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
#if XMP_WinBuild
|
|
Packit |
01d647 |
#ifdef _MSC_VER
|
|
Packit |
01d647 |
#pragma warning ( disable : 4101 ) // unreferenced local variable
|
|
Packit |
01d647 |
#pragma warning ( disable : 4189 ) // local variable is initialized but not referenced
|
|
Packit |
01d647 |
#pragma warning ( disable : 4800 ) // forcing value to bool 'true' or 'false' (performance warning)
|
|
Packit |
01d647 |
#if XMP_DebugBuild
|
|
Packit |
01d647 |
#pragma warning ( disable : 4297 ) // function assumed not to throw an exception but does
|
|
Packit |
01d647 |
#endif
|
|
Packit |
01d647 |
#endif
|
|
Packit |
01d647 |
#endif
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
#if __cplusplus
|
|
Packit |
01d647 |
extern "C" {
|
|
Packit |
01d647 |
#endif
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
// =================================================================================================
|
|
Packit |
01d647 |
// Class Static Wrappers
|
|
Packit |
01d647 |
// =====================
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
void
|
|
Packit |
01d647 |
WXMPUtils_Unlock_1 ( XMP_OptionBits options )
|
|
Packit |
01d647 |
{
|
|
Packit |
01d647 |
WXMP_Result * wResult = &void_wResult; // ! Needed to "fool" the EnterWrapper macro.
|
|
Packit |
01d647 |
XMP_ENTER_WRAPPER_NO_LOCK ( "WXMPUtils_Unlock_1" )
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
XMPUtils::Unlock ( options );
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
XMP_EXIT_WRAPPER_NO_THROW
|
|
Packit |
01d647 |
}
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
// =================================================================================================
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
void
|
|
Packit |
01d647 |
WXMPUtils_ComposeArrayItemPath_1 ( XMP_StringPtr schemaNS,
|
|
Packit |
01d647 |
XMP_StringPtr arrayName,
|
|
Packit |
01d647 |
XMP_Index itemIndex,
|
|
Packit |
01d647 |
XMP_StringPtr * fullPath,
|
|
Packit |
01d647 |
XMP_StringLen * pathSize,
|
|
Packit |
01d647 |
WXMP_Result * wResult )
|
|
Packit |
01d647 |
{
|
|
Packit |
01d647 |
XMP_ENTER_WRAPPER ( "WXMPUtils_ComposeArrayItemPath_1" )
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema );
|
|
Packit |
01d647 |
if ( (arrayName == 0) || (*arrayName == 0) ) XMP_Throw ( "Empty array name", kXMPErr_BadXPath );
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
if ( fullPath == 0 ) fullPath = &voidStringPtr;
|
|
Packit |
01d647 |
if ( pathSize == 0 ) pathSize = &voidStringLen;
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
XMPUtils::ComposeArrayItemPath ( schemaNS, arrayName, itemIndex, fullPath, pathSize );
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
XMP_EXIT_WRAPPER_KEEP_LOCK ( true )
|
|
Packit |
01d647 |
}
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
// -------------------------------------------------------------------------------------------------
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
void
|
|
Packit |
01d647 |
WXMPUtils_ComposeStructFieldPath_1 ( XMP_StringPtr schemaNS,
|
|
Packit |
01d647 |
XMP_StringPtr structName,
|
|
Packit |
01d647 |
XMP_StringPtr fieldNS,
|
|
Packit |
01d647 |
XMP_StringPtr fieldName,
|
|
Packit |
01d647 |
XMP_StringPtr * fullPath,
|
|
Packit |
01d647 |
XMP_StringLen * pathSize,
|
|
Packit |
01d647 |
WXMP_Result * wResult )
|
|
Packit |
01d647 |
{
|
|
Packit |
01d647 |
XMP_ENTER_WRAPPER ( "WXMPUtils_ComposeStructFieldPath_1" )
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema );
|
|
Packit |
01d647 |
if ( (structName == 0) || (*structName == 0) ) XMP_Throw ( "Empty struct name", kXMPErr_BadXPath );
|
|
Packit |
01d647 |
if ( (fieldNS == 0) || (*fieldNS == 0) ) XMP_Throw ( "Empty field namespace URI", kXMPErr_BadSchema );
|
|
Packit |
01d647 |
if ( (fieldName == 0) || (*fieldName == 0) ) XMP_Throw ( "Empty field name", kXMPErr_BadXPath );
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
if ( fullPath == 0 ) fullPath = &voidStringPtr;
|
|
Packit |
01d647 |
if ( pathSize == 0 ) pathSize = &voidStringLen;
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
XMPUtils::ComposeStructFieldPath ( schemaNS, structName, fieldNS, fieldName, fullPath, pathSize );
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
XMP_EXIT_WRAPPER_KEEP_LOCK ( true )
|
|
Packit |
01d647 |
}
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
// -------------------------------------------------------------------------------------------------
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
void
|
|
Packit |
01d647 |
WXMPUtils_ComposeQualifierPath_1 ( XMP_StringPtr schemaNS,
|
|
Packit |
01d647 |
XMP_StringPtr propName,
|
|
Packit |
01d647 |
XMP_StringPtr qualNS,
|
|
Packit |
01d647 |
XMP_StringPtr qualName,
|
|
Packit |
01d647 |
XMP_StringPtr * fullPath,
|
|
Packit |
01d647 |
XMP_StringLen * pathSize,
|
|
Packit |
01d647 |
WXMP_Result * wResult )
|
|
Packit |
01d647 |
{
|
|
Packit |
01d647 |
XMP_ENTER_WRAPPER ( "WXMPUtils_ComposeQualifierPath_1" )
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema );
|
|
Packit |
01d647 |
if ( (propName == 0) || (*propName == 0) ) XMP_Throw ( "Empty property name", kXMPErr_BadXPath );
|
|
Packit |
01d647 |
if ( (qualNS == 0) || (*qualNS == 0) ) XMP_Throw ( "Empty qualifier namespace URI", kXMPErr_BadSchema );
|
|
Packit |
01d647 |
if ( (qualName == 0) || (*qualName == 0) ) XMP_Throw ( "Empty qualifier name", kXMPErr_BadXPath );
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
if ( fullPath == 0 ) fullPath = &voidStringPtr;
|
|
Packit |
01d647 |
if ( pathSize == 0 ) pathSize = &voidStringLen;
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
XMPUtils::ComposeQualifierPath ( schemaNS, propName, qualNS, qualName, fullPath, pathSize );
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
XMP_EXIT_WRAPPER_KEEP_LOCK ( true )
|
|
Packit |
01d647 |
}
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
// -------------------------------------------------------------------------------------------------
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
void
|
|
Packit |
01d647 |
WXMPUtils_ComposeLangSelector_1 ( XMP_StringPtr schemaNS,
|
|
Packit |
01d647 |
XMP_StringPtr arrayName,
|
|
Packit |
01d647 |
XMP_StringPtr langName,
|
|
Packit |
01d647 |
XMP_StringPtr * fullPath,
|
|
Packit |
01d647 |
XMP_StringLen * pathSize,
|
|
Packit |
01d647 |
WXMP_Result * wResult )
|
|
Packit |
01d647 |
{
|
|
Packit |
01d647 |
XMP_ENTER_WRAPPER ( "WXMPUtils_ComposeLangSelector_1" )
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema );
|
|
Packit |
01d647 |
if ( (arrayName == 0) || (*arrayName == 0) ) XMP_Throw ( "Empty array name", kXMPErr_BadXPath );
|
|
Packit |
01d647 |
if ( (langName == 0) || (*langName == 0) ) XMP_Throw ( "Empty language name", kXMPErr_BadParam );
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
if ( fullPath == 0 ) fullPath = &voidStringPtr;
|
|
Packit |
01d647 |
if ( pathSize == 0 ) pathSize = &voidStringLen;
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
XMPUtils::ComposeLangSelector ( schemaNS, arrayName, langName, fullPath, pathSize );
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
XMP_EXIT_WRAPPER_KEEP_LOCK ( true )
|
|
Packit |
01d647 |
}
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
// -------------------------------------------------------------------------------------------------
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
void
|
|
Packit |
01d647 |
WXMPUtils_ComposeFieldSelector_1 ( XMP_StringPtr schemaNS,
|
|
Packit |
01d647 |
XMP_StringPtr arrayName,
|
|
Packit |
01d647 |
XMP_StringPtr fieldNS,
|
|
Packit |
01d647 |
XMP_StringPtr fieldName,
|
|
Packit |
01d647 |
XMP_StringPtr fieldValue,
|
|
Packit |
01d647 |
XMP_StringPtr * fullPath,
|
|
Packit |
01d647 |
XMP_StringLen * pathSize,
|
|
Packit |
01d647 |
WXMP_Result * wResult )
|
|
Packit |
01d647 |
{
|
|
Packit |
01d647 |
XMP_ENTER_WRAPPER ( "WXMPUtils_ComposeFieldSelector_1" )
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema );
|
|
Packit |
01d647 |
if ( (arrayName == 0) || (*arrayName == 0) ) XMP_Throw ( "Empty array name", kXMPErr_BadXPath );
|
|
Packit |
01d647 |
if ( (fieldNS == 0) || (*fieldNS == 0) ) XMP_Throw ( "Empty field namespace URI", kXMPErr_BadSchema );
|
|
Packit |
01d647 |
if ( (fieldName == 0) || (*fieldName == 0) ) XMP_Throw ( "Empty field name", kXMPErr_BadXPath );
|
|
Packit |
01d647 |
if ( fieldValue == 0 ) fieldValue = "";
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
if ( fullPath == 0 ) fullPath = &voidStringPtr;
|
|
Packit |
01d647 |
if ( pathSize == 0 ) pathSize = &voidStringLen;
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
XMPUtils::ComposeFieldSelector ( schemaNS, arrayName, fieldNS, fieldName, fieldValue, fullPath, pathSize );
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
XMP_EXIT_WRAPPER_KEEP_LOCK ( true )
|
|
Packit |
01d647 |
}
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
// =================================================================================================
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
void
|
|
Packit |
01d647 |
WXMPUtils_ConvertFromBool_1 ( XMP_Bool binValue,
|
|
Packit |
01d647 |
XMP_StringPtr * strValue,
|
|
Packit |
01d647 |
XMP_StringLen * strSize,
|
|
Packit |
01d647 |
WXMP_Result * wResult )
|
|
Packit |
01d647 |
{
|
|
Packit |
01d647 |
XMP_ENTER_WRAPPER ( "WXMPUtils_ConvertFromBool_1" )
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
if ( strValue == 0 ) strValue = &voidStringPtr;
|
|
Packit |
01d647 |
if ( strSize == 0 ) strSize = &voidStringLen;
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
XMPUtils::ConvertFromBool ( binValue, strValue, strSize );
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
XMP_EXIT_WRAPPER_KEEP_LOCK ( true )
|
|
Packit |
01d647 |
}
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
// -------------------------------------------------------------------------------------------------
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
void
|
|
Packit |
01d647 |
WXMPUtils_ConvertFromInt_1 ( XMP_Int32 binValue,
|
|
Packit |
01d647 |
XMP_StringPtr format,
|
|
Packit |
01d647 |
XMP_StringPtr * strValue,
|
|
Packit |
01d647 |
XMP_StringLen * strSize,
|
|
Packit |
01d647 |
WXMP_Result * wResult )
|
|
Packit |
01d647 |
{
|
|
Packit |
01d647 |
XMP_ENTER_WRAPPER ( "WXMPUtils_ConvertFromInt_1" )
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
if ( format == 0 ) format = "";
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
if ( strValue == 0 ) strValue = &voidStringPtr;
|
|
Packit |
01d647 |
if ( strSize == 0 ) strSize = &voidStringLen;
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
XMPUtils::ConvertFromInt ( binValue, format, strValue, strSize );
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
XMP_EXIT_WRAPPER_KEEP_LOCK ( true )
|
|
Packit |
01d647 |
}
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
// -------------------------------------------------------------------------------------------------
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
void
|
|
Packit |
01d647 |
WXMPUtils_ConvertFromInt64_1 ( XMP_Int64 binValue,
|
|
Packit |
01d647 |
XMP_StringPtr format,
|
|
Packit |
01d647 |
XMP_StringPtr * strValue,
|
|
Packit |
01d647 |
XMP_StringLen * strSize,
|
|
Packit |
01d647 |
WXMP_Result * wResult )
|
|
Packit |
01d647 |
{
|
|
Packit |
01d647 |
XMP_ENTER_WRAPPER ( "WXMPUtils_ConvertFromInt64_1" )
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
if ( format == 0 ) format = "";
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
if ( strValue == 0 ) strValue = &voidStringPtr;
|
|
Packit |
01d647 |
if ( strSize == 0 ) strSize = &voidStringLen;
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
XMPUtils::ConvertFromInt64 ( binValue, format, strValue, strSize );
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
XMP_EXIT_WRAPPER_KEEP_LOCK ( true )
|
|
Packit |
01d647 |
}
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
// -------------------------------------------------------------------------------------------------
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
void
|
|
Packit |
01d647 |
WXMPUtils_ConvertFromFloat_1 ( double binValue,
|
|
Packit |
01d647 |
XMP_StringPtr format,
|
|
Packit |
01d647 |
XMP_StringPtr * strValue,
|
|
Packit |
01d647 |
XMP_StringLen * strSize,
|
|
Packit |
01d647 |
WXMP_Result * wResult )
|
|
Packit |
01d647 |
{
|
|
Packit |
01d647 |
XMP_ENTER_WRAPPER ( "WXMPUtils_ConvertFromFloat_1" )
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
if ( format == 0 ) format = "";
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
if ( strValue == 0 ) strValue = &voidStringPtr;
|
|
Packit |
01d647 |
if ( strSize == 0 ) strSize = &voidStringLen;
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
XMPUtils::ConvertFromFloat ( binValue, format, strValue, strSize );
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
XMP_EXIT_WRAPPER_KEEP_LOCK ( true )
|
|
Packit |
01d647 |
}
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
// -------------------------------------------------------------------------------------------------
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
void
|
|
Packit |
01d647 |
WXMPUtils_ConvertFromDate_1 ( const XMP_DateTime & binValue,
|
|
Packit |
01d647 |
XMP_StringPtr * strValue,
|
|
Packit |
01d647 |
XMP_StringLen * strSize,
|
|
Packit |
01d647 |
WXMP_Result * wResult )
|
|
Packit |
01d647 |
{
|
|
Packit |
01d647 |
XMP_ENTER_WRAPPER ( "WXMPUtils_ConvertFromDate_1" )
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
if ( strValue == 0 ) strValue = &voidStringPtr;
|
|
Packit |
01d647 |
if ( strSize == 0 ) strSize = &voidStringLen;
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
XMPUtils::ConvertFromDate( binValue, strValue, strSize );
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
XMP_EXIT_WRAPPER_KEEP_LOCK ( true )
|
|
Packit |
01d647 |
}
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
// =================================================================================================
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
void
|
|
Packit |
01d647 |
WXMPUtils_ConvertToBool_1 ( XMP_StringPtr strValue,
|
|
Packit |
01d647 |
WXMP_Result * wResult )
|
|
Packit |
01d647 |
{
|
|
Packit |
01d647 |
XMP_ENTER_WRAPPER_NO_LOCK ( "WXMPUtils_ConvertToBool_1" )
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
if ( (strValue == 0) || (*strValue == 0) ) XMP_Throw ( "Empty string value", kXMPErr_BadParam);
|
|
Packit |
01d647 |
XMP_Bool result = XMPUtils::ConvertToBool ( strValue );
|
|
Packit |
01d647 |
wResult->int32Result = result;
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
XMP_EXIT_WRAPPER
|
|
Packit |
01d647 |
}
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
// -------------------------------------------------------------------------------------------------
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
void
|
|
Packit |
01d647 |
WXMPUtils_ConvertToInt_1 ( XMP_StringPtr strValue,
|
|
Packit |
01d647 |
WXMP_Result * wResult )
|
|
Packit |
01d647 |
{
|
|
Packit |
01d647 |
XMP_ENTER_WRAPPER_NO_LOCK ( "WXMPUtils_ConvertToInt_1" )
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
if ( (strValue == 0) || (*strValue == 0) ) XMP_Throw ( "Empty string value", kXMPErr_BadParam);
|
|
Packit |
01d647 |
XMP_Int32 result = XMPUtils::ConvertToInt ( strValue );
|
|
Packit |
01d647 |
wResult->int32Result = result;
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
XMP_EXIT_WRAPPER
|
|
Packit |
01d647 |
}
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
// -------------------------------------------------------------------------------------------------
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
void
|
|
Packit |
01d647 |
WXMPUtils_ConvertToInt64_1 ( XMP_StringPtr strValue,
|
|
Packit |
01d647 |
WXMP_Result * wResult )
|
|
Packit |
01d647 |
{
|
|
Packit |
01d647 |
XMP_ENTER_WRAPPER_NO_LOCK ( "WXMPUtils_ConvertToInt64_1" )
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
if ( (strValue == 0) || (*strValue == 0) ) XMP_Throw ( "Empty string value", kXMPErr_BadParam);
|
|
Packit |
01d647 |
XMP_Int64 result = XMPUtils::ConvertToInt64 ( strValue );
|
|
Packit |
01d647 |
wResult->int64Result = result;
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
XMP_EXIT_WRAPPER
|
|
Packit |
01d647 |
}
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
// -------------------------------------------------------------------------------------------------
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
void
|
|
Packit |
01d647 |
WXMPUtils_ConvertToFloat_1 ( XMP_StringPtr strValue,
|
|
Packit |
01d647 |
WXMP_Result * wResult )
|
|
Packit |
01d647 |
{
|
|
Packit |
01d647 |
XMP_ENTER_WRAPPER_NO_LOCK ( "WXMPUtils_ConvertToFloat_1")
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
if ( (strValue == 0) || (*strValue == 0) ) XMP_Throw ( "Empty string value", kXMPErr_BadParam);
|
|
Packit |
01d647 |
double result = XMPUtils::ConvertToFloat ( strValue );
|
|
Packit |
01d647 |
wResult->floatResult = result;
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
XMP_EXIT_WRAPPER
|
|
Packit |
01d647 |
}
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
// -------------------------------------------------------------------------------------------------
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
void
|
|
Packit |
01d647 |
WXMPUtils_ConvertToDate_1 ( XMP_StringPtr strValue,
|
|
Packit |
01d647 |
XMP_DateTime * binValue,
|
|
Packit |
01d647 |
WXMP_Result * wResult )
|
|
Packit |
01d647 |
{
|
|
Packit |
01d647 |
XMP_ENTER_WRAPPER_NO_LOCK ( "WXMPUtils_ConvertToDate_1" )
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
if ( binValue == 0 ) XMP_Throw ( "Null output date", kXMPErr_BadParam); // ! Pointer is from the client.
|
|
Packit |
01d647 |
XMPUtils::ConvertToDate ( strValue, binValue );
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
XMP_EXIT_WRAPPER
|
|
Packit |
01d647 |
}
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
// =================================================================================================
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
void
|
|
Packit |
01d647 |
WXMPUtils_CurrentDateTime_1 ( XMP_DateTime * time,
|
|
Packit |
01d647 |
WXMP_Result * wResult )
|
|
Packit |
01d647 |
{
|
|
Packit |
01d647 |
XMP_ENTER_WRAPPER_NO_LOCK ( "WXMPUtils_CurrentDateTime_1" )
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
if ( time == 0 ) XMP_Throw ( "Null output date", kXMPErr_BadParam);
|
|
Packit |
01d647 |
XMPUtils::CurrentDateTime ( time );
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
XMP_EXIT_WRAPPER
|
|
Packit |
01d647 |
}
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
// -------------------------------------------------------------------------------------------------
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
void
|
|
Packit |
01d647 |
WXMPUtils_SetTimeZone_1 ( XMP_DateTime * time,
|
|
Packit |
01d647 |
WXMP_Result * wResult )
|
|
Packit |
01d647 |
{
|
|
Packit |
01d647 |
XMP_ENTER_WRAPPER_NO_LOCK ( "WXMPUtils_SetTimeZone_1" )
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
if ( time == 0 ) XMP_Throw ( "Null output date", kXMPErr_BadParam);
|
|
Packit |
01d647 |
XMPUtils::SetTimeZone ( time );
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
XMP_EXIT_WRAPPER
|
|
Packit |
01d647 |
}
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
// -------------------------------------------------------------------------------------------------
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
void
|
|
Packit |
01d647 |
WXMPUtils_ConvertToUTCTime_1 ( XMP_DateTime * time,
|
|
Packit |
01d647 |
WXMP_Result * wResult )
|
|
Packit |
01d647 |
{
|
|
Packit |
01d647 |
XMP_ENTER_WRAPPER_NO_LOCK ( "WXMPUtils_ConvertToUTCTime_1" )
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
if ( time == 0 ) XMP_Throw ( "Null output date", kXMPErr_BadParam);
|
|
Packit |
01d647 |
XMPUtils::ConvertToUTCTime ( time );
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
XMP_EXIT_WRAPPER
|
|
Packit |
01d647 |
}
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
// -------------------------------------------------------------------------------------------------
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
void
|
|
Packit |
01d647 |
WXMPUtils_ConvertToLocalTime_1 ( XMP_DateTime * time,
|
|
Packit |
01d647 |
WXMP_Result * wResult )
|
|
Packit |
01d647 |
{
|
|
Packit |
01d647 |
XMP_ENTER_WRAPPER_NO_LOCK ( "WXMPUtils_ConvertToLocalTime_1" )
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
if ( time == 0 ) XMP_Throw ( "Null output date", kXMPErr_BadParam);
|
|
Packit |
01d647 |
XMPUtils::ConvertToLocalTime ( time );
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
XMP_EXIT_WRAPPER
|
|
Packit |
01d647 |
}
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
// -------------------------------------------------------------------------------------------------
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
void
|
|
Packit |
01d647 |
WXMPUtils_CompareDateTime_1 ( const XMP_DateTime & left,
|
|
Packit |
01d647 |
const XMP_DateTime & right,
|
|
Packit |
01d647 |
WXMP_Result * wResult )
|
|
Packit |
01d647 |
{
|
|
Packit |
01d647 |
XMP_ENTER_WRAPPER_NO_LOCK ( "WXMPUtils_CompareDateTime_1" )
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
int result = XMPUtils::CompareDateTime ( left, right );
|
|
Packit |
01d647 |
wResult->int32Result = result;
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
XMP_EXIT_WRAPPER
|
|
Packit |
01d647 |
}
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
// =================================================================================================
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
void
|
|
Packit |
01d647 |
WXMPUtils_EncodeToBase64_1 ( XMP_StringPtr rawStr,
|
|
Packit |
01d647 |
XMP_StringLen rawLen,
|
|
Packit |
01d647 |
XMP_StringPtr * encodedStr,
|
|
Packit |
01d647 |
XMP_StringLen * encodedLen,
|
|
Packit |
01d647 |
WXMP_Result * wResult )
|
|
Packit |
01d647 |
{
|
|
Packit |
01d647 |
XMP_ENTER_WRAPPER ( "WXMPUtils_EncodeToBase64_1" )
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
if ( encodedStr == 0 ) encodedStr = &voidStringPtr;
|
|
Packit |
01d647 |
if ( encodedLen == 0 ) encodedLen = &voidStringLen;
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
XMPUtils::EncodeToBase64 ( rawStr, rawLen, encodedStr, encodedLen );
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
XMP_EXIT_WRAPPER_KEEP_LOCK ( true )
|
|
Packit |
01d647 |
}
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
// -------------------------------------------------------------------------------------------------
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
void
|
|
Packit |
01d647 |
WXMPUtils_DecodeFromBase64_1 ( XMP_StringPtr encodedStr,
|
|
Packit |
01d647 |
XMP_StringLen encodedLen,
|
|
Packit |
01d647 |
XMP_StringPtr * rawStr,
|
|
Packit |
01d647 |
XMP_StringLen * rawLen,
|
|
Packit |
01d647 |
WXMP_Result * wResult )
|
|
Packit |
01d647 |
{
|
|
Packit |
01d647 |
XMP_ENTER_WRAPPER ( "WXMPUtils_DecodeFromBase64_1" )
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
if ( rawStr == 0 ) rawStr = &voidStringPtr;
|
|
Packit |
01d647 |
if ( rawLen == 0 ) rawLen = &voidStringLen;
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
XMPUtils::DecodeFromBase64 ( encodedStr, encodedLen, rawStr, rawLen );
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
XMP_EXIT_WRAPPER_KEEP_LOCK ( true )
|
|
Packit |
01d647 |
}
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
// =================================================================================================
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
void
|
|
Packit |
01d647 |
WXMPUtils_PackageForJPEG_1 ( XMPMetaRef wxmpObj,
|
|
Packit |
01d647 |
XMP_StringPtr * stdStr,
|
|
Packit |
01d647 |
XMP_StringLen * stdLen,
|
|
Packit |
01d647 |
XMP_StringPtr * extStr,
|
|
Packit |
01d647 |
XMP_StringLen * extLen,
|
|
Packit |
01d647 |
XMP_StringPtr * digestStr,
|
|
Packit |
01d647 |
XMP_StringLen * digestLen,
|
|
Packit |
01d647 |
WXMP_Result * wResult )
|
|
Packit |
01d647 |
{
|
|
Packit |
01d647 |
XMP_ENTER_WRAPPER ( "WXMPUtils_PackageForJPEG_1" )
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
if ( stdStr == 0 ) stdStr = &voidStringPtr;
|
|
Packit |
01d647 |
if ( stdLen == 0 ) stdLen = &voidStringLen;
|
|
Packit |
01d647 |
if ( extStr == 0 ) extStr = &voidStringPtr;
|
|
Packit |
01d647 |
if ( extLen == 0 ) extLen = &voidStringLen;
|
|
Packit |
01d647 |
if ( digestStr == 0 ) digestStr = &voidStringPtr;
|
|
Packit |
01d647 |
if ( digestLen == 0 ) digestLen = &voidStringLen;
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
const XMPMeta & xmpObj = WtoXMPMeta_Ref ( wxmpObj );
|
|
Packit |
01d647 |
XMPUtils::PackageForJPEG ( xmpObj, stdStr, stdLen, extStr, extLen, digestStr, digestLen );
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
XMP_EXIT_WRAPPER_KEEP_LOCK ( true )
|
|
Packit |
01d647 |
}
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
// -------------------------------------------------------------------------------------------------
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
void
|
|
Packit |
01d647 |
WXMPUtils_MergeFromJPEG_1 ( XMPMetaRef wfullXMP,
|
|
Packit |
01d647 |
XMPMetaRef wextendedXMP,
|
|
Packit |
01d647 |
WXMP_Result * wResult )
|
|
Packit |
01d647 |
{
|
|
Packit |
01d647 |
XMP_ENTER_WRAPPER ( "WXMPUtils_MergeFromJPEG_1" )
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
if ( wfullXMP == 0 ) XMP_Throw ( "Output XMP pointer is null", kXMPErr_BadParam );
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
XMPMeta * fullXMP = WtoXMPMeta_Ptr ( wfullXMP );
|
|
Packit |
01d647 |
const XMPMeta & extendedXMP = WtoXMPMeta_Ref ( wextendedXMP );
|
|
Packit |
01d647 |
XMPUtils::MergeFromJPEG ( fullXMP, extendedXMP );
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
XMP_EXIT_WRAPPER
|
|
Packit |
01d647 |
}
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
// =================================================================================================
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
void
|
|
Packit |
01d647 |
WXMPUtils_CatenateArrayItems_1 ( XMPMetaRef wxmpObj,
|
|
Packit |
01d647 |
XMP_StringPtr schemaNS,
|
|
Packit |
01d647 |
XMP_StringPtr arrayName,
|
|
Packit |
01d647 |
XMP_StringPtr separator,
|
|
Packit |
01d647 |
XMP_StringPtr quotes,
|
|
Packit |
01d647 |
XMP_OptionBits options,
|
|
Packit |
01d647 |
XMP_StringPtr * catedStr,
|
|
Packit |
01d647 |
XMP_StringLen * catedLen,
|
|
Packit |
01d647 |
WXMP_Result * wResult )
|
|
Packit |
01d647 |
{
|
|
Packit |
01d647 |
XMP_ENTER_WRAPPER ( "WXMPUtils_CatenateArrayItems_1" )
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema );
|
|
Packit |
01d647 |
if ( (arrayName == 0) || (*arrayName == 0) ) XMP_Throw ( "Empty array name", kXMPErr_BadXPath );
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
if ( separator == 0 ) separator = "; ";
|
|
Packit |
01d647 |
if ( quotes == 0 ) quotes = "\"";
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
if ( catedStr == 0 ) catedStr = &voidStringPtr;
|
|
Packit |
01d647 |
if ( catedLen == 0 ) catedLen = &voidStringLen;
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
const XMPMeta & xmpObj = WtoXMPMeta_Ref ( wxmpObj );
|
|
Packit |
01d647 |
XMPUtils::CatenateArrayItems ( xmpObj, schemaNS, arrayName, separator, quotes, options, catedStr, catedLen );
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
XMP_EXIT_WRAPPER_KEEP_LOCK ( true )
|
|
Packit |
01d647 |
}
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
// -------------------------------------------------------------------------------------------------
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
void
|
|
Packit |
01d647 |
WXMPUtils_SeparateArrayItems_1 ( XMPMetaRef wxmpObj,
|
|
Packit |
01d647 |
XMP_StringPtr schemaNS,
|
|
Packit |
01d647 |
XMP_StringPtr arrayName,
|
|
Packit |
01d647 |
XMP_OptionBits options,
|
|
Packit |
01d647 |
XMP_StringPtr catedStr,
|
|
Packit |
01d647 |
WXMP_Result * wResult )
|
|
Packit |
01d647 |
{
|
|
Packit |
01d647 |
XMP_ENTER_WRAPPER ( "WXMPUtils_SeparateArrayItems_1" )
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
if ( wxmpObj == 0 ) XMP_Throw ( "Output XMP pointer is null", kXMPErr_BadParam );
|
|
Packit |
01d647 |
if ( (schemaNS == 0) || (*schemaNS == 0) ) XMP_Throw ( "Empty schema namespace URI", kXMPErr_BadSchema );
|
|
Packit |
01d647 |
if ( (arrayName == 0) || (*arrayName == 0) ) XMP_Throw ( "Empty array name", kXMPErr_BadXPath );
|
|
Packit |
01d647 |
if ( catedStr == 0 ) catedStr = "";
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
XMPMeta * xmpObj = WtoXMPMeta_Ptr ( wxmpObj );
|
|
Packit |
01d647 |
XMPUtils::SeparateArrayItems ( xmpObj, schemaNS, arrayName, options, catedStr );
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
XMP_EXIT_WRAPPER
|
|
Packit |
01d647 |
}
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
// -------------------------------------------------------------------------------------------------
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
void
|
|
Packit |
01d647 |
WXMPUtils_RemoveProperties_1 ( XMPMetaRef wxmpObj,
|
|
Packit |
01d647 |
XMP_StringPtr schemaNS,
|
|
Packit |
01d647 |
XMP_StringPtr propName,
|
|
Packit |
01d647 |
XMP_OptionBits options,
|
|
Packit |
01d647 |
WXMP_Result * wResult )
|
|
Packit |
01d647 |
{
|
|
Packit |
01d647 |
XMP_ENTER_WRAPPER ( "WXMPUtils_RemoveProperties_1" )
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
if ( wxmpObj == 0 ) XMP_Throw ( "Output XMP pointer is null", kXMPErr_BadParam );
|
|
Packit |
01d647 |
if ( schemaNS == 0 ) schemaNS = "";
|
|
Packit |
01d647 |
if ( propName == 0 ) propName = "";
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
XMPMeta * xmpObj = WtoXMPMeta_Ptr ( wxmpObj );
|
|
Packit |
01d647 |
XMPUtils::RemoveProperties ( xmpObj, schemaNS, propName, options );
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
XMP_EXIT_WRAPPER
|
|
Packit |
01d647 |
}
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
// -------------------------------------------------------------------------------------------------
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
void
|
|
Packit |
01d647 |
WXMPUtils_AppendProperties_1 ( XMPMetaRef wSource,
|
|
Packit |
01d647 |
XMPMetaRef wDest,
|
|
Packit |
01d647 |
XMP_OptionBits options,
|
|
Packit |
01d647 |
WXMP_Result * wResult )
|
|
Packit |
01d647 |
{
|
|
Packit |
01d647 |
XMP_ENTER_WRAPPER ( "WXMPUtils_AppendProperties_1" )
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
if ( wDest == 0 ) XMP_Throw ( "Output XMP pointer is null", kXMPErr_BadParam );
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
const XMPMeta & source = WtoXMPMeta_Ref ( wSource );
|
|
Packit |
01d647 |
XMPMeta * dest = WtoXMPMeta_Ptr ( wDest );
|
|
Packit |
01d647 |
XMPUtils::AppendProperties ( source, dest, options );
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
XMP_EXIT_WRAPPER
|
|
Packit |
01d647 |
}
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
// -------------------------------------------------------------------------------------------------
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
void
|
|
Packit |
01d647 |
WXMPUtils_DuplicateSubtree_1 ( XMPMetaRef wSource,
|
|
Packit |
01d647 |
XMPMetaRef wDest,
|
|
Packit |
01d647 |
XMP_StringPtr sourceNS,
|
|
Packit |
01d647 |
XMP_StringPtr sourceRoot,
|
|
Packit |
01d647 |
XMP_StringPtr destNS,
|
|
Packit |
01d647 |
XMP_StringPtr destRoot,
|
|
Packit |
01d647 |
XMP_OptionBits options,
|
|
Packit |
01d647 |
WXMP_Result * wResult )
|
|
Packit |
01d647 |
{
|
|
Packit |
01d647 |
XMP_ENTER_WRAPPER ( "WXMPUtils_DuplicateSubtree_1" )
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
if ( wDest == 0 ) XMP_Throw ( "Output XMP pointer is null", kXMPErr_BadParam );
|
|
Packit |
01d647 |
if ( (sourceNS == 0) || (*sourceNS == 0) ) XMP_Throw ( "Empty source schema URI", kXMPErr_BadSchema );
|
|
Packit |
01d647 |
if ( (sourceRoot == 0) || (*sourceRoot == 0) ) XMP_Throw ( "Empty source root name", kXMPErr_BadXPath );
|
|
Packit |
01d647 |
if ( destNS == 0 ) destNS = sourceNS;
|
|
Packit |
01d647 |
if ( destRoot == 0 ) destRoot = sourceRoot;
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
const XMPMeta & source = WtoXMPMeta_Ref ( wSource );
|
|
Packit |
01d647 |
XMPMeta * dest = WtoXMPMeta_Ptr ( wDest );
|
|
Packit |
01d647 |
XMPUtils::DuplicateSubtree ( source, dest, sourceNS, sourceRoot, destNS, destRoot, options );
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
XMP_EXIT_WRAPPER
|
|
Packit |
01d647 |
}
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
// =================================================================================================
|
|
Packit |
01d647 |
|
|
Packit |
01d647 |
#if __cplusplus
|
|
Packit |
01d647 |
} /* extern "C" */
|
|
Packit |
01d647 |
#endif
|