diff options
author | Hubert Figuière <hub@figuiere.net> | 2015-03-06 11:11:01 +0100 |
---|---|---|
committer | Hubert Figuière <hub@figuiere.net> | 2015-03-06 11:11:01 +0100 |
commit | 606a7df73750084a36fe69651e7b672333a76412 (patch) | |
tree | e337e53680715d69be570ccfcf8757ca898ea124 /samples | |
parent | 4652015fe779e12fb06ff8fa56bf70e373cd3894 (diff) |
Update to XMP SDK CC 2014.12
Diffstat (limited to 'samples')
34 files changed, 508 insertions, 241 deletions
diff --git a/samples/build/GenerateSamples_win.bat b/samples/build/GenerateSamples_win.bat index 99ff6d8..3eaae46 100755 --- a/samples/build/GenerateSamples_win.bat +++ b/samples/build/GenerateSamples_win.bat @@ -19,8 +19,8 @@ exit /B 0) ECHO Enter your choice: ECHO 1. Clean -ECHO 2. VC2010, 32 Bit Project -ECHO 3. VC2010, 64 Bit Project +ECHO 2. VC2011, 32 Bit Project +ECHO 3. VC2011, 64 Bit Project ECHO 4. Build All @@ -28,9 +28,9 @@ ECHO set /P choice=Enter your choice: IF "%choice%"=="1" GOTO CleanCMake -IF "%choice%"=="2" GOTO 32VC2010 -IF "%choice%"=="3" GOTO 64VC2010 -IF "%choice%"=="4" GOTO 32VC2010 +IF "%choice%"=="2" GOTO 32VC2011 +IF "%choice%"=="3" GOTO 64VC2011 +IF "%choice%"=="4" GOTO 32VC2011 ECHO Invalid Choice, Exiting @@ -60,7 +60,7 @@ if exist cmake\XMPFilesCoverage\build rmdir /S /Q cmake\XMPFilesCoverage\build if exist cmake\XMPIterations\build_x64 rmdir /S /Q cmake\XMPIterations\build_x64 if exist cmake\XMPIterations\build rmdir /S /Q cmake\XMPIterations\build -if exist vc10 rmdir /S /Q vc10 +if exist vc11 rmdir /S /Q vc11 if exist ..\target\windows rmdir /S /Q ..\target\windows if exist ..\target\windows_x64 rmdir /S /Q ..\target\windows_x64 @@ -69,15 +69,15 @@ pause exit /B 0 -:32VC2010 -set GENERATOR=Visual Studio 10 -set DIR=vc10\windows +:32VC2011 +set GENERATOR=Visual Studio 11 +set DIR=vc11\windows set bit64=0 GOTO GenerateNow -:64VC2010 -set GENERATOR=Visual Studio 10 Win64 -set DIR=vc10\windows_x64 +:64VC2011 +set GENERATOR=Visual Studio 11 Win64 +set DIR=vc11\windows_x64 set bit64=1 GOTO GenerateNow @@ -95,7 +95,7 @@ if errorlevel 1 ( cd ..\..\ goto error) IF "%choice%"=="4" ( set choice="0" cd ..\..\ -goto 64VC2010 +goto 64VC2011 ) goto ok diff --git a/samples/build/cmake/CMakeLists.txt b/samples/build/cmake/CMakeLists.txt index ed138cb..89f783b 100644 --- a/samples/build/cmake/CMakeLists.txt +++ b/samples/build/cmake/CMakeLists.txt @@ -9,57 +9,17 @@ # define minimum cmake version cmake_minimum_required(VERSION 2.8.6) - -SET(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "Configurations" FORCE) #This projects relative path to XMP Root set ( XMP_THIS_PROJECT_RELATIVEPATH "../../../") +#setting the root for XMP SDK +if(NOT DEFINED XMP_ROOT) + set(XMP_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/${XMP_THIS_PROJECT_RELATIVEPATH}) +endif() -# Set the project name according to target -if(CMAKE_CL_64) - set(IS64BIT "TRUE") - set (POSTFIX "_x64") - project(XMP_Samples_64) - message (INFO ":64 Target is chosen") -else(CMAKE_CL_64) - set(IS64BIT "FALSE") - project(XMP_Samples) - message (INFO ":32 bit target is chosen") -endif(CMAKE_CL_64) - -set(TESTXMP_VERSION 1.0) - -#setting static flag for correct compiler flag through shared config -set (XMP_BUILD_STATIC 1) -# ============================================================================== -# load shared config -# ============================================================================== -include(SharedConfig.cmake) - -# common path defines -# setup project specific paths -set( PROJECT_ROOT ${PROJECT_SOURCE_DIR}) -set( SAMPLE_SOURCE_ROOT ${PROJECT_ROOT}/../../source/) -set( XMP_SDK_ROOT ${PROJECT_ROOT}/../../.. ) -set( PUBLIC_INCLUDE ${XMP_SDK_ROOT}/public/include) - -# Output of test executables -set(OUTPUT_DIR ${SAMPLE_SOURCE_ROOT}/target/${PLATFORM_FOLDER}/) - -# Add the Samples to the project - message (INFO ":Add CustomSchema sample") - add_subdirectory(${PROJECT_ROOT}/CustomSchema ${PROJECT_ROOT}/CustomSchema/build${POSTFIX}) - add_subdirectory(${PROJECT_ROOT}/DumpFile ${PROJECT_ROOT}/DumpFile/build${POSTFIX}) - add_subdirectory(${PROJECT_ROOT}/DumpMainXMP ${PROJECT_ROOT}/DumpMainXMP/build${POSTFIX}) - add_subdirectory(${PROJECT_ROOT}/DumpScannedXMP ${PROJECT_ROOT}/DumpScannedXMP/build${POSTFIX}) - add_subdirectory(${PROJECT_ROOT}/ModifyingXMP ${PROJECT_ROOT}/ModifyingXMP/build${POSTFIX}) - add_subdirectory(${PROJECT_ROOT}/ReadingXMP ${PROJECT_ROOT}/ReadingXMP/build${POSTFIX}) - add_subdirectory(${PROJECT_ROOT}/XMPCommand ${PROJECT_ROOT}/XMPCommand/build${POSTFIX}) - add_subdirectory(${PROJECT_ROOT}/XMPCoreCoverage ${PROJECT_ROOT}/XMPCoreCoverage/build${POSTFIX}) - add_subdirectory(${PROJECT_ROOT}/XMPFilesCoverage ${PROJECT_ROOT}/XMPFilesCoverage/build${POSTFIX}) - add_subdirectory(${PROJECT_ROOT}/XMPIterations ${PROJECT_ROOT}/XMPIterations/build${POSTFIX}) - -message (STATUS "===========================================================================") -message (STATUS " ${PROJECT_NAME} ") -message (STATUS "===========================================================================") +if(NOT DEFINED COMMON_BUILD_SHARED_DIR) + set(COMMON_BUILD_SHARED_DIR ${XMP_ROOT}/build/shared) +endif() +set(USE_BUILDMODE_LIBNAME 0) +include(CMakeListsCommon.txt)
\ No newline at end of file diff --git a/samples/build/cmake/CMakeListsCommon.txt b/samples/build/cmake/CMakeListsCommon.txt new file mode 100644 index 0000000..0a07bab --- /dev/null +++ b/samples/build/cmake/CMakeListsCommon.txt @@ -0,0 +1,64 @@ +# ================================================================================================= +# ADOBE SYSTEMS INCORPORATED +# Copyright 2013 Adobe Systems Incorporated +# 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. +# ================================================================================================= + +# define minimum cmake version +cmake_minimum_required(VERSION 2.8.6) + +SET(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "Configurations" FORCE) +#This projects relative path to XMP Root + +# Set the project name according to target +if(CMAKE_CL_64) + set(IS64BIT "TRUE") + set (POSTFIX "_x64") + project(XMP_Samples_64) + message (INFO ":64 Target is chosen") +else(CMAKE_CL_64) + set(IS64BIT "FALSE") + project(XMP_Samples) + message (INFO ":32 bit target is chosen") +endif(CMAKE_CL_64) + +set(TESTXMP_VERSION 1.0) + +#setting static flag for correct compiler flag through shared config +set (XMP_BUILD_STATIC 1) +# ============================================================================== +# load shared config +# ============================================================================== +include(SharedConfig.cmake) + +# common path defines +# setup project specific paths +set( PROJECT_ROOT ${PROJECT_SOURCE_DIR}) +set( SAMPLE_SOURCE_ROOT ${PROJECT_ROOT}/../../source/) +set( XMP_ROOT ${PROJECT_ROOT}/../../.. ) +set( PUBLIC_INCLUDE ${XMP_ROOT}/public/include) + +# Output of test executables +set(OUTPUT_DIR ${SAMPLE_SOURCE_ROOT}/target/${PLATFORM_FOLDER}/) + +# Add the Samples to the project + message (INFO ":Add CustomSchema sample") + add_subdirectory(${PROJECT_ROOT}/CustomSchema ${PROJECT_ROOT}/CustomSchema/build${POSTFIX}) + add_subdirectory(${PROJECT_ROOT}/DumpFile ${PROJECT_ROOT}/DumpFile/build${POSTFIX}) + add_subdirectory(${PROJECT_ROOT}/DumpMainXMP ${PROJECT_ROOT}/DumpMainXMP/build${POSTFIX}) + add_subdirectory(${PROJECT_ROOT}/DumpScannedXMP ${PROJECT_ROOT}/DumpScannedXMP/build${POSTFIX}) + add_subdirectory(${PROJECT_ROOT}/ModifyingXMP ${PROJECT_ROOT}/ModifyingXMP/build${POSTFIX}) + add_subdirectory(${PROJECT_ROOT}/ReadingXMP ${PROJECT_ROOT}/ReadingXMP/build${POSTFIX}) + add_subdirectory(${PROJECT_ROOT}/XMPCommand ${PROJECT_ROOT}/XMPCommand/build${POSTFIX}) + add_subdirectory(${PROJECT_ROOT}/XMPCoreCoverage ${PROJECT_ROOT}/XMPCoreCoverage/build${POSTFIX}) + add_subdirectory(${PROJECT_ROOT}/XMPFilesCoverage ${PROJECT_ROOT}/XMPFilesCoverage/build${POSTFIX}) + add_subdirectory(${PROJECT_ROOT}/XMPIterations ${PROJECT_ROOT}/XMPIterations/build${POSTFIX}) + +message (STATUS "===========================================================================") +message (STATUS " ${PROJECT_NAME} ") +message (STATUS "===========================================================================") + + diff --git a/samples/build/cmake/CustomSchema/CMakeLists.txt b/samples/build/cmake/CustomSchema/CMakeLists.txt index 5a1d5ce..5f3c8d5 100644 --- a/samples/build/cmake/CustomSchema/CMakeLists.txt +++ b/samples/build/cmake/CustomSchema/CMakeLists.txt @@ -17,29 +17,33 @@ project (CustomSchema) # ============================================================================== file (GLOB SOURCE_FILES ${SAMPLE_SOURCE_ROOT}/CustomSchema.cpp ) -source_group(source FILES ${SOURCE_FILES}) -include_directories( ${XMP_SDK_ROOT} ) +source_group("Source Files" FILES ${SOURCE_FILES}) +include_directories( ${XMP_ROOT} ) include_directories( ${PUBLIC_INCLUDE} ) add_executable(${PROJECT_NAME} ${SOURCE_FILES}) #setting up XMP_BUILDMODE_DIR variable SetupInternalBuildDirectory() +set (BUILD_MODE_LIBNAME "") +if (USE_BUILDMODE_LIBNAME ) + set(BUILD_MODE_LIBNAME ${XMP_BUILDMODE_DIR}) +endif() #addding XMP libs and setting output path ADD_FRAMEWORK(Cocoa ${PROJECT_NAME}) if(UNIX) if(APPLE) #For Mac - target_link_libraries(${PROJECT_NAME} ${XMP_SDK_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/lib${XMPCORE_LIB}${LIB_EXT} ${XMP_SDK_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/lib${XMPFILES_LIB}${LIB_EXT} ) + target_link_libraries(${PROJECT_NAME} ${XMP_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/lib${XMPCORE_LIB}${BUILD_MODE_LIBNAME}${LIB_EXT} ${XMP_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/lib${XMPFILES_LIB}${BUILD_MODE_LIBNAME}${LIB_EXT} ) set(OUTPUT_DIR ${SAMPLE_SOURCE_ROOT}/../target/${PLATFORM_FOLDER}/ ) set(EXECUTABLE_OUTPUT_PATH ${OUTPUT_DIR}) else(APPLE) #For Linux - SetPlatformLinkFlags(${PROJECT_NAME} "" "" ) - target_link_libraries(${PROJECT_NAME} ${XMP_SDK_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPCORE_LIB}${LIB_EXT} ${XMP_SDK_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPFILES_LIB}${LIB_EXT} ) + SetPlatformLinkFlags(${PROJECT_NAME} "" "") + target_link_libraries(${PROJECT_NAME} ${XMP_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPCORE_LIB}${LIB_EXT} ${XMP_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPFILES_LIB}${LIB_EXT} ) set(OUTPUT_DIR ${SAMPLE_SOURCE_ROOT}/../target/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR} ) set(EXECUTABLE_OUTPUT_PATH ${OUTPUT_DIR}) endif(APPLE) else(UNIX) #For Windows - target_link_libraries(${PROJECT_NAME} ${XMP_SDK_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPCORE_LIB}${LIB_EXT} ${XMP_SDK_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPFILES_LIB}${LIB_EXT}) + target_link_libraries(${PROJECT_NAME} ${XMP_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPCORE_LIB}${BUILD_MODE_LIBNAME}${LIB_EXT} ${XMP_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPFILES_LIB}${BUILD_MODE_LIBNAME}${LIB_EXT} Rpcrt4.lib) set(OUTPUT_DIR ${SAMPLE_SOURCE_ROOT}/../target/${PLATFORM_FOLDER}/ ) set(EXECUTABLE_OUTPUT_PATH ${OUTPUT_DIR}) endif(UNIX) diff --git a/samples/build/cmake/DumpFile/CMakeLists.txt b/samples/build/cmake/DumpFile/CMakeLists.txt index cd60716..692187f 100644 --- a/samples/build/cmake/DumpFile/CMakeLists.txt +++ b/samples/build/cmake/DumpFile/CMakeLists.txt @@ -20,34 +20,8 @@ file (GLOB SOURCE_FILES ${SAMPLE_SOURCE_ROOT}/common/DumpFile.cpp ${SAMPLE_SOURC file (GLOB COMMON_FILES ${SAMPLE_SOURCE_ROOT}/common/*.cpp ) list(REMOVE_ITEM COMMON_FILES ${SAMPLE_SOURCE_ROOT}/common/DumpFile.cpp ) -source_group(DumpFile FILES ${SOURCE_FILES}) -source_group(CommonFiles FILES ${COMMON_FILES}) -include_directories( ${XMP_SDK_ROOT} ) -include_directories( ${PUBLIC_INCLUDE} ) - -add_executable(${PROJECT_NAME} ${SOURCE_FILES} ${COMMON_FILES}) - -#setting up XMP_BUILDMODE_DIR variable -SetupInternalBuildDirectory() -#addding XMP libs and setting output path -if(UNIX) - if(APPLE) #For Mac - target_link_libraries(${PROJECT_NAME} ${XMP_SDK_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/lib${XMPCORE_LIB}${LIB_EXT} ${XMP_SDK_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/lib${XMPFILES_LIB}${LIB_EXT} ) - set(OUTPUT_DIR ${SAMPLE_SOURCE_ROOT}/../target/${PLATFORM_FOLDER}/ ) - set(EXECUTABLE_OUTPUT_PATH ${OUTPUT_DIR}) - else(APPLE) #For Linux - SetPlatformLinkFlags(${PROJECT_NAME} "" "") - target_link_libraries(${PROJECT_NAME} ${XMP_SDK_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPCORE_LIB}${LIB_EXT} ${XMP_SDK_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPFILES_LIB}${LIB_EXT} ) - set(OUTPUT_DIR ${SAMPLE_SOURCE_ROOT}/../target/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR} ) - set(EXECUTABLE_OUTPUT_PATH ${OUTPUT_DIR}) - endif(APPLE) -else(UNIX) #For Windows - target_link_libraries(${PROJECT_NAME} ${XMP_SDK_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPCORE_LIB}${LIB_EXT} ${XMP_SDK_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPFILES_LIB}${LIB_EXT}) - set(OUTPUT_DIR ${SAMPLE_SOURCE_ROOT}/../target/${PLATFORM_FOLDER}/) - set(EXECUTABLE_OUTPUT_PATH ${OUTPUT_DIR}) -endif(UNIX) - -#adding Cocoa for Mac -ADD_FRAMEWORK(Cocoa ${PROJECT_NAME}) + +include(CMakeListsCommon.txt) + diff --git a/samples/build/cmake/DumpFile/CMakeListsCommon.txt b/samples/build/cmake/DumpFile/CMakeListsCommon.txt new file mode 100644 index 0000000..2d37956 --- /dev/null +++ b/samples/build/cmake/DumpFile/CMakeListsCommon.txt @@ -0,0 +1,48 @@ +# ================================================================================================= +# ADOBE SYSTEMS INCORPORATED +# Copyright 2013 Adobe Systems Incorporated +# 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. +# ================================================================================================= + +# define minimum cmake version +cmake_minimum_required(VERSION 2.8.6) + + +source_group("Source Files" FILES ${SOURCE_FILES}) +source_group("Common Files" FILES ${COMMON_FILES}) +include_directories( ${XMP_ROOT} ) +include_directories( ${PUBLIC_INCLUDE} ) + +add_executable(${PROJECT_NAME} ${SOURCE_FILES} ${COMMON_FILES}) + +#setting up XMP_BUILDMODE_DIR variable +SetupInternalBuildDirectory() +set (BUILD_MODE_LIBNAME "") +if (USE_BUILDMODE_LIBNAME ) + set(BUILD_MODE_LIBNAME ${XMP_BUILDMODE_DIR}) +endif() +#addding XMP libs and setting output path +if(UNIX) + if(APPLE) #For Mac + target_link_libraries(${PROJECT_NAME} ${XMP_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/lib${XMPCORE_LIB}${BUILD_MODE_LIBNAME}${LIB_EXT} ${XMP_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/lib${XMPFILES_LIB}${BUILD_MODE_LIBNAME}${LIB_EXT} ) + set(OUTPUT_DIR ${SAMPLE_SOURCE_ROOT}/../target/${PLATFORM_FOLDER}/ ) + set(EXECUTABLE_OUTPUT_PATH ${OUTPUT_DIR}) + else(APPLE) #For Linux + SetPlatformLinkFlags(${PROJECT_NAME} "" "") + target_link_libraries(${PROJECT_NAME} ${XMP_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPCORE_LIB}${LIB_EXT} ${XMP_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPFILES_LIB}${LIB_EXT} ) + set(OUTPUT_DIR ${SAMPLE_SOURCE_ROOT}/../target/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR} ) + set(EXECUTABLE_OUTPUT_PATH ${OUTPUT_DIR}) + endif(APPLE) +else(UNIX) #For Windows + target_link_libraries(${PROJECT_NAME} ${XMP_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPCORE_LIB}${BUILD_MODE_LIBNAME}${LIB_EXT} ${XMP_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPFILES_LIB}${BUILD_MODE_LIBNAME}${LIB_EXT} Rpcrt4.lib) + set(OUTPUT_DIR ${SAMPLE_SOURCE_ROOT}/../target/${PLATFORM_FOLDER}/ ) + set(EXECUTABLE_OUTPUT_PATH ${OUTPUT_DIR}) +endif(UNIX) + +#adding Cocoa for Mac +ADD_FRAMEWORK(Cocoa ${PROJECT_NAME}) + + diff --git a/samples/build/cmake/DumpMainXMP/CMakeLists.txt b/samples/build/cmake/DumpMainXMP/CMakeLists.txt index c8a1603..e3fefe2 100644 --- a/samples/build/cmake/DumpMainXMP/CMakeLists.txt +++ b/samples/build/cmake/DumpMainXMP/CMakeLists.txt @@ -19,30 +19,34 @@ project ( DumpMainXMP ) file (GLOB SOURCE_FILES ${SAMPLE_SOURCE_ROOT}/DumpMainXMP.cpp ) -source_group(DumpFile FILES ${SOURCE_FILES}) -source_group(CommonFiles FILES ${COMMON_FILES}) -include_directories( ${XMP_SDK_ROOT} ) +source_group("Source Files" FILES ${SOURCE_FILES}) +source_group("Common Files" FILES ${COMMON_FILES}) +include_directories( ${XMP_ROOT} ) include_directories( ${PUBLIC_INCLUDE} ) add_executable(${PROJECT_NAME} ${SOURCE_FILES}) #setting up XMP_BUILDMODE_DIR variable SetupInternalBuildDirectory() +set (BUILD_MODE_LIBNAME "") +if (USE_BUILDMODE_LIBNAME ) + set(BUILD_MODE_LIBNAME ${XMP_BUILDMODE_DIR}) +endif() #addding XMP libs and setting output path if(UNIX) if(APPLE) #For Mac - target_link_libraries(${PROJECT_NAME} ${XMP_SDK_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/lib${XMPCORE_LIB}${LIB_EXT} ${XMP_SDK_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/lib${XMPFILES_LIB}${LIB_EXT} ) + target_link_libraries(${PROJECT_NAME} ${XMP_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/lib${XMPCORE_LIB}${BUILD_MODE_LIBNAME}${LIB_EXT} ${XMP_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/lib${XMPFILES_LIB}${BUILD_MODE_LIBNAME}${LIB_EXT} ) set(OUTPUT_DIR ${SAMPLE_SOURCE_ROOT}/../target/${PLATFORM_FOLDER}/ ) set(EXECUTABLE_OUTPUT_PATH ${OUTPUT_DIR}) else(APPLE) #For Linux SetPlatformLinkFlags(${PROJECT_NAME} "" "") - target_link_libraries(${PROJECT_NAME} ${XMP_SDK_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPCORE_LIB}${LIB_EXT} ${XMP_SDK_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPFILES_LIB}${LIB_EXT} ) + target_link_libraries(${PROJECT_NAME} ${XMP_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPCORE_LIB}${LIB_EXT} ${XMP_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPFILES_LIB}${LIB_EXT} ) set(OUTPUT_DIR ${SAMPLE_SOURCE_ROOT}/../target/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR} ) set(EXECUTABLE_OUTPUT_PATH ${OUTPUT_DIR}) endif(APPLE) else(UNIX) #For Windows - target_link_libraries(${PROJECT_NAME} ${XMP_SDK_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPCORE_LIB}${LIB_EXT} ${XMP_SDK_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPFILES_LIB}${LIB_EXT}) - set(OUTPUT_DIR ${SAMPLE_SOURCE_ROOT}/../target/${PLATFORM_FOLDER}/) + target_link_libraries(${PROJECT_NAME} ${XMP_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPCORE_LIB}${BUILD_MODE_LIBNAME}${LIB_EXT} ${XMP_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPFILES_LIB}${BUILD_MODE_LIBNAME}${LIB_EXT} Rpcrt4.lib) + set(OUTPUT_DIR ${SAMPLE_SOURCE_ROOT}/../target/${PLATFORM_FOLDER}/ ) set(EXECUTABLE_OUTPUT_PATH ${OUTPUT_DIR}) endif(UNIX) diff --git a/samples/build/cmake/DumpScannedXMP/CMakeLists.txt b/samples/build/cmake/DumpScannedXMP/CMakeLists.txt index 59775de..ee25ef1 100644 --- a/samples/build/cmake/DumpScannedXMP/CMakeLists.txt +++ b/samples/build/cmake/DumpScannedXMP/CMakeLists.txt @@ -19,35 +19,39 @@ project (DumpScannedXMP) file (GLOB SOURCE_FILES ${SAMPLE_SOURCE_ROOT}/DumpScannedXMP.cpp) -source_group(DumpFile FILES ${SOURCE_FILES}) -source_group(CommonFiles FILES ${COMMON_FILES}) -include_directories( ${XMP_SDK_ROOT} ) +source_group("Source Files" FILES ${SOURCE_FILES}) +source_group("Common Files" FILES ${COMMON_FILES}) +include_directories( ${XMP_ROOT} ) include_directories( ${PUBLIC_INCLUDE} ) add_executable(${PROJECT_NAME} ${SOURCE_FILES} ) #setting up XMP_BUILDMODE_DIR variable SetupInternalBuildDirectory() +set (BUILD_MODE_LIBNAME "") +if (USE_BUILDMODE_LIBNAME ) + set(BUILD_MODE_LIBNAME ${XMP_BUILDMODE_DIR}) +endif() #addding XMP libs and setting output path +ADD_FRAMEWORK(Cocoa ${PROJECT_NAME}) if(UNIX) if(APPLE) #For Mac - target_link_libraries(${PROJECT_NAME} ${XMP_SDK_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/lib${XMPCORE_LIB}${LIB_EXT} ${XMP_SDK_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/lib${XMPFILES_LIB}${LIB_EXT} ) + target_link_libraries(${PROJECT_NAME} ${XMP_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/lib${XMPCORE_LIB}${BUILD_MODE_LIBNAME}${LIB_EXT} ${XMP_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/lib${XMPFILES_LIB}${BUILD_MODE_LIBNAME}${LIB_EXT} ) set(OUTPUT_DIR ${SAMPLE_SOURCE_ROOT}/../target/${PLATFORM_FOLDER}/ ) set(EXECUTABLE_OUTPUT_PATH ${OUTPUT_DIR}) else(APPLE) #For Linux SetPlatformLinkFlags(${PROJECT_NAME} "" "") - target_link_libraries(${PROJECT_NAME} ${XMP_SDK_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPCORE_LIB}${LIB_EXT} ${XMP_SDK_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPFILES_LIB}${LIB_EXT} ) + target_link_libraries(${PROJECT_NAME} ${XMP_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPCORE_LIB}${LIB_EXT} ${XMP_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPFILES_LIB}${LIB_EXT} ) set(OUTPUT_DIR ${SAMPLE_SOURCE_ROOT}/../target/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR} ) set(EXECUTABLE_OUTPUT_PATH ${OUTPUT_DIR}) endif(APPLE) else(UNIX) #For Windows - target_link_libraries(${PROJECT_NAME} ${XMP_SDK_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPCORE_LIB}${LIB_EXT} ${XMP_SDK_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPFILES_LIB}${LIB_EXT}) - set(OUTPUT_DIR ${SAMPLE_SOURCE_ROOT}/../target/${PLATFORM_FOLDER}/) + target_link_libraries(${PROJECT_NAME} ${XMP_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPCORE_LIB}${BUILD_MODE_LIBNAME}${LIB_EXT} ${XMP_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPFILES_LIB}${BUILD_MODE_LIBNAME}${LIB_EXT} Rpcrt4.lib) + set(OUTPUT_DIR ${SAMPLE_SOURCE_ROOT}/../target/${PLATFORM_FOLDER}/ ) set(EXECUTABLE_OUTPUT_PATH ${OUTPUT_DIR}) endif(UNIX) -#adding Cocoa for Mac -ADD_FRAMEWORK(Cocoa ${PROJECT_NAME}) + diff --git a/samples/build/cmake/ModifyingXMP/CMakeLists.txt b/samples/build/cmake/ModifyingXMP/CMakeLists.txt index 3e96c37..aa92f14 100644 --- a/samples/build/cmake/ModifyingXMP/CMakeLists.txt +++ b/samples/build/cmake/ModifyingXMP/CMakeLists.txt @@ -19,29 +19,33 @@ project (ModifyingXMP) file (GLOB SOURCE_FILES ${SAMPLE_SOURCE_ROOT}/ModifyingXMP.cpp) -source_group(DumpFile FILES ${SOURCE_FILES}) -source_group(CommonFiles FILES ${COMMON_FILES}) -include_directories( ${XMP_SDK_ROOT} ) +source_group("Source Files" FILES ${SOURCE_FILES}) +source_group("Common Files" FILES ${COMMON_FILES}) +include_directories( ${XMP_ROOT} ) include_directories( ${PUBLIC_INCLUDE} ) add_executable(${PROJECT_NAME} ${SOURCE_FILES} ) #setting up XMP_BUILDMODE_DIR variable SetupInternalBuildDirectory() +set (BUILD_MODE_LIBNAME "") +if (USE_BUILDMODE_LIBNAME ) + set(BUILD_MODE_LIBNAME ${XMP_BUILDMODE_DIR}) +endif() #addding XMP libs and setting output path if(UNIX) if(APPLE) #For Mac - target_link_libraries(${PROJECT_NAME} ${XMP_SDK_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/lib${XMPCORE_LIB}${LIB_EXT} ${XMP_SDK_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/lib${XMPFILES_LIB}${LIB_EXT} ) - set(OUTPUT_DIR ${SAMPLE_SOURCE_ROOT}/../target/${PLATFORM_FOLDER}/) - set(EXECUTABLE_OUTPUT_PATH ${OUTPUT_DIR}) + target_link_libraries(${PROJECT_NAME} ${XMP_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/lib${XMPCORE_LIB}${BUILD_MODE_LIBNAME}${LIB_EXT} ${XMP_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/lib${XMPFILES_LIB}${BUILD_MODE_LIBNAME}${LIB_EXT} ) + set(OUTPUT_DIR ${SAMPLE_SOURCE_ROOT}/../target/${PLATFORM_FOLDER}/ ) + set(EXECUTABLE_OUTPUT_PATH ${OUTPUT_DIR}) else(APPLE) #For Linux SetPlatformLinkFlags(${PROJECT_NAME} "" "") - target_link_libraries(${PROJECT_NAME} ${XMP_SDK_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPCORE_LIB}${LIB_EXT} ${XMP_SDK_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPFILES_LIB}${LIB_EXT} ) + target_link_libraries(${PROJECT_NAME} ${XMP_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPCORE_LIB}${LIB_EXT} ${XMP_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPFILES_LIB}${LIB_EXT} ) set(OUTPUT_DIR ${SAMPLE_SOURCE_ROOT}/../target/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR} ) set(EXECUTABLE_OUTPUT_PATH ${OUTPUT_DIR}) endif(APPLE) else(UNIX) #For Windows - target_link_libraries(${PROJECT_NAME} ${XMP_SDK_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPCORE_LIB}${LIB_EXT} ${XMP_SDK_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPFILES_LIB}${LIB_EXT}) + target_link_libraries(${PROJECT_NAME} ${XMP_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPCORE_LIB}${BUILD_MODE_LIBNAME}${LIB_EXT} ${XMP_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPFILES_LIB}${BUILD_MODE_LIBNAME}${LIB_EXT} Rpcrt4.lib) set(OUTPUT_DIR ${SAMPLE_SOURCE_ROOT}/../target/${PLATFORM_FOLDER}/ ) set(EXECUTABLE_OUTPUT_PATH ${OUTPUT_DIR}) endif(UNIX) diff --git a/samples/build/cmake/ReadingXMP/CMakeLists.txt b/samples/build/cmake/ReadingXMP/CMakeLists.txt index 95338a9..a79c8e4 100644 --- a/samples/build/cmake/ReadingXMP/CMakeLists.txt +++ b/samples/build/cmake/ReadingXMP/CMakeLists.txt @@ -19,30 +19,34 @@ project (ReadingXMP) file (GLOB SOURCE_FILES ${SAMPLE_SOURCE_ROOT}/ReadingXMP.cpp) -source_group(DumpFile FILES ${SOURCE_FILES}) -source_group(CommonFiles FILES ${COMMON_FILES}) -include_directories( ${XMP_SDK_ROOT} ) +source_group("Source Files" FILES ${SOURCE_FILES}) +source_group("Common Files" FILES ${COMMON_FILES}) +include_directories( ${XMP_ROOT} ) include_directories( ${PUBLIC_INCLUDE} ) add_executable(${PROJECT_NAME} ${SOURCE_FILES} ) #setting up XMP_BUILDMODE_DIR variable SetupInternalBuildDirectory() +set (BUILD_MODE_LIBNAME "") +if (USE_BUILDMODE_LIBNAME ) + set(BUILD_MODE_LIBNAME ${XMP_BUILDMODE_DIR}) +endif() #addding XMP libs and setting output path if(UNIX) if(APPLE) #For Mac - target_link_libraries(${PROJECT_NAME} ${XMP_SDK_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/lib${XMPCORE_LIB}${LIB_EXT} ${XMP_SDK_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/lib${XMPFILES_LIB}${LIB_EXT} ) + target_link_libraries(${PROJECT_NAME} ${XMP_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/lib${XMPCORE_LIB}${BUILD_MODE_LIBNAME}${LIB_EXT} ${XMP_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/lib${XMPFILES_LIB}${BUILD_MODE_LIBNAME}${LIB_EXT} ) set(OUTPUT_DIR ${SAMPLE_SOURCE_ROOT}/../target/${PLATFORM_FOLDER}/ ) set(EXECUTABLE_OUTPUT_PATH ${OUTPUT_DIR}) else(APPLE) #For Linux SetPlatformLinkFlags(${PROJECT_NAME} "" "") - target_link_libraries(${PROJECT_NAME} ${XMP_SDK_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPCORE_LIB}${LIB_EXT} ${XMP_SDK_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPFILES_LIB}${LIB_EXT} ) + target_link_libraries(${PROJECT_NAME} ${XMP_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPCORE_LIB}${LIB_EXT} ${XMP_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPFILES_LIB}${LIB_EXT} ) set(OUTPUT_DIR ${SAMPLE_SOURCE_ROOT}/../target/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR} ) set(EXECUTABLE_OUTPUT_PATH ${OUTPUT_DIR}) endif(APPLE) else(UNIX) #For Windows - target_link_libraries(${PROJECT_NAME} ${XMP_SDK_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPCORE_LIB}${LIB_EXT} ${XMP_SDK_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPFILES_LIB}${LIB_EXT}) - set(OUTPUT_DIR ${SAMPLE_SOURCE_ROOT}/../target/${PLATFORM_FOLDER}/) + target_link_libraries(${PROJECT_NAME} ${XMP_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPCORE_LIB}${BUILD_MODE_LIBNAME}${LIB_EXT} ${XMP_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPFILES_LIB}${BUILD_MODE_LIBNAME}${LIB_EXT} Rpcrt4.lib) + set(OUTPUT_DIR ${SAMPLE_SOURCE_ROOT}/../target/${PLATFORM_FOLDER}/ ) set(EXECUTABLE_OUTPUT_PATH ${OUTPUT_DIR}) endif(UNIX) diff --git a/samples/build/cmake/SharedConfig.cmake b/samples/build/cmake/SharedConfig.cmake index 8701b39..d28184f 100644 --- a/samples/build/cmake/SharedConfig.cmake +++ b/samples/build/cmake/SharedConfig.cmake @@ -15,15 +15,7 @@ cmake_minimum_required(VERSION 2.8.6) # Shared config for XMP Samples # ============================================================================== -#setting the root for XMP SDK -if(NOT DEFINED XMP_ROOT) - set(XMP_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/${XMP_THIS_PROJECT_RELATIVEPATH}) - #message (STATUS "XMP_ROOT is set to ---> ${XMP_ROOT}" ) -endif() -if(NOT DEFINED COMMON_BUILD_SHARED_DIR) - set(COMMON_BUILD_SHARED_DIR ${XMP_ROOT}/build/shared) -endif() # Platform specific config if(UNIX) if(APPLE) @@ -66,8 +58,6 @@ if(UNIX) set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG=1") set(CMAKE_C_FLAGS "") - #include mac specific macros - include(${COMMON_BUILD_SHARED_DIR}/../XMP_Mac.cmake) else(APPLE) # Linux ------------------------------------------- @@ -88,14 +78,12 @@ if(UNIX) set(CMAKE_CXX_FLAGS "${CXX_FLAGS} -Wno-ctor-dtor-privacy -fPIC -funsigned-char -fexceptions -Wno-multichar -Wno-implicit") set(CMAKE_CXX_FLAGS_DEBUG "-O0 -DDEBUG=1 -D_DEBUG=1") set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG=1") - #add linux specific macros - include(${COMMON_BUILD_SHARED_DIR}/../XMP_Linux.cmake) endif(APPLE) else(UNIX) if(WIN32) # Windows ------------------------------------------- - set(BUILD_FOLDER "vc10") + set(BUILD_FOLDER "vc11") set(XMPCORE_LIB "XMPCoreStatic") set(XMPFILES_LIB "XMPFilesStatic") set(LIB_EXT ".lib") @@ -109,15 +97,14 @@ else(UNIX) # config independend preprocessor defines add_definitions(-DWIN_ENV=1 -DWIN32=1 -D_CONSOLE -DUNICODE -D_UNICODE -D_CRT_SECURE_NO_WARNINGS=1 -D_SCL_SECURE_NO_WARNINGS=1 -DXMP_StaticBuild=1) - #add win specific macros - include(${COMMON_BUILD_SHARED_DIR}/../XMP_Win.cmake) + else(WIN32) # unknown platform MESSAGE(ERROR ": Unknown Platform") endif(WIN32) endif(UNIX) - +include(${XMP_ROOT}/build/ProductConfig.cmake) #including the shared configs set (COMPONENT XMP) include(${COMMON_BUILD_SHARED_DIR}/SharedConfig.cmake) diff --git a/samples/build/cmake/XMPCommand/CMakeLists.txt b/samples/build/cmake/XMPCommand/CMakeLists.txt index 1620f3f..9b5cfcc 100644 --- a/samples/build/cmake/XMPCommand/CMakeLists.txt +++ b/samples/build/cmake/XMPCommand/CMakeLists.txt @@ -10,44 +10,9 @@ # define minimum cmake version cmake_minimum_required(VERSION 2.8.6) -# ============================================================================== -# Adding Project Name -# ============================================================================== -project (XMPCommand) # ============================================================================== file (GLOB SOURCE_FILES ${SAMPLE_SOURCE_ROOT}/xmpcommand/*.cpp ) -file (GLOB COMMON_FILES ${SAMPLE_SOURCE_ROOT}/common/Log.cpp ${SAMPLE_SOURCE_ROOT}/common/LargeFileAccess.cpp ${XMP_SDK_ROOT}/source/UnicodeConversions.cpp) - -source_group(DumpFile FILES ${SOURCE_FILES}) -source_group(CommonFiles FILES ${COMMON_FILES}) -include_directories( ${XMP_SDK_ROOT} ) -include_directories( ${PUBLIC_INCLUDE} ) - -add_executable(${PROJECT_NAME} ${SOURCE_FILES} ${COMMON_FILES}) - -#setting up XMP_BUILDMODE_DIR variable -SetupInternalBuildDirectory() -#addding XMP libs and setting output path -if(UNIX) - if(APPLE) #For Mac - target_link_libraries(${PROJECT_NAME} ${XMP_SDK_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/lib${XMPCORE_LIB}${LIB_EXT} ${XMP_SDK_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/lib${XMPFILES_LIB}${LIB_EXT} ) - set(OUTPUT_DIR ${SAMPLE_SOURCE_ROOT}/../target/${PLATFORM_FOLDER}/ ) - set(EXECUTABLE_OUTPUT_PATH ${OUTPUT_DIR}) - else(APPLE) #For Linux - SetPlatformLinkFlags(${PROJECT_NAME} "" "") - target_link_libraries(${PROJECT_NAME} ${XMP_SDK_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPCORE_LIB}${LIB_EXT} ${XMP_SDK_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPFILES_LIB}${LIB_EXT} ) - set(OUTPUT_DIR ${SAMPLE_SOURCE_ROOT}/../target/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR} ) - set(EXECUTABLE_OUTPUT_PATH ${OUTPUT_DIR}) - endif(APPLE) -else(UNIX) #For Windows - target_link_libraries(${PROJECT_NAME} ${XMP_SDK_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPCORE_LIB}${LIB_EXT} ${XMP_SDK_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPFILES_LIB}${LIB_EXT}) - set(OUTPUT_DIR ${SAMPLE_SOURCE_ROOT}/../target/${PLATFORM_FOLDER}/ ) - set(EXECUTABLE_OUTPUT_PATH ${OUTPUT_DIR}) -endif(UNIX) - -#adding Cocoa for Mac -ADD_FRAMEWORK(Cocoa ${PROJECT_NAME}) - - +file (GLOB COMMON_FILES ${SAMPLE_SOURCE_ROOT}/common/Log.cpp ${SAMPLE_SOURCE_ROOT}/common/LargeFileAccess.cpp ${XMP_ROOT}/source/UnicodeConversions.cpp) +include(CMakeListsCommon.txt) diff --git a/samples/build/cmake/XMPCommand/CMakeListsCommon.txt b/samples/build/cmake/XMPCommand/CMakeListsCommon.txt new file mode 100644 index 0000000..8eec4fd --- /dev/null +++ b/samples/build/cmake/XMPCommand/CMakeListsCommon.txt @@ -0,0 +1,54 @@ +# ================================================================================================= +# ADOBE SYSTEMS INCORPORATED +# Copyright 2013 Adobe Systems Incorporated +# 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. +# ================================================================================================= + +# define minimum cmake version +cmake_minimum_required(VERSION 2.8.6) + +# ============================================================================== +# Adding Project Name +# ============================================================================== +project (XMPCommand) + + +source_group("Source Files" FILES ${SOURCE_FILES}) +source_group("Common Files" FILES ${COMMON_FILES}) +include_directories( ${XMP_ROOT} ) +include_directories( ${PUBLIC_INCLUDE} ) + +add_executable(${PROJECT_NAME} ${SOURCE_FILES} ${COMMON_FILES}) + +#setting up XMP_BUILDMODE_DIR variable +SetupInternalBuildDirectory() +set (BUILD_MODE_LIBNAME "") +if (USE_BUILDMODE_LIBNAME ) + set(BUILD_MODE_LIBNAME ${XMP_BUILDMODE_DIR}) +endif() +#addding XMP libs and setting output path +if(UNIX) + if(APPLE) #For Mac + target_link_libraries(${PROJECT_NAME} ${XMP_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/lib${XMPCORE_LIB}${BUILD_MODE_LIBNAME}${LIB_EXT} ${XMP_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/lib${XMPFILES_LIB}${BUILD_MODE_LIBNAME}${LIB_EXT} ) + set(OUTPUT_DIR ${SAMPLE_SOURCE_ROOT}/../target/${PLATFORM_FOLDER}/ ) + set(EXECUTABLE_OUTPUT_PATH ${OUTPUT_DIR}) + else(APPLE) #For Linux + SetPlatformLinkFlags(${PROJECT_NAME} "" "") + target_link_libraries(${PROJECT_NAME} ${XMP_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPCORE_LIB}${LIB_EXT} ${XMP_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPFILES_LIB}${LIB_EXT} ) + set(OUTPUT_DIR ${SAMPLE_SOURCE_ROOT}/../target/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR} ) + set(EXECUTABLE_OUTPUT_PATH ${OUTPUT_DIR}) + endif(APPLE) +else(UNIX) #For Windows + target_link_libraries(${PROJECT_NAME} ${XMP_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPCORE_LIB}${BUILD_MODE_LIBNAME}${LIB_EXT} ${XMP_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPFILES_LIB}${BUILD_MODE_LIBNAME}${LIB_EXT} Rpcrt4.lib) + set(OUTPUT_DIR ${SAMPLE_SOURCE_ROOT}/../target/${PLATFORM_FOLDER}/ ) + set(EXECUTABLE_OUTPUT_PATH ${OUTPUT_DIR}) +endif(UNIX) + +#adding Cocoa for Mac +ADD_FRAMEWORK(Cocoa ${PROJECT_NAME}) + + + diff --git a/samples/build/cmake/XMPCoreCoverage/CMakeLists.txt b/samples/build/cmake/XMPCoreCoverage/CMakeLists.txt index 2735157..17957fd 100644 --- a/samples/build/cmake/XMPCoreCoverage/CMakeLists.txt +++ b/samples/build/cmake/XMPCoreCoverage/CMakeLists.txt @@ -19,29 +19,33 @@ project (XMPCoreCoverage) file (GLOB SOURCE_FILES ${SAMPLE_SOURCE_ROOT}/XMPCoreCoverage.cpp) -source_group(DumpFile FILES ${SOURCE_FILES}) -source_group(CommonFiles FILES ${COMMON_FILES}) -include_directories( ${XMP_SDK_ROOT} ) +source_group("Source Files" FILES ${SOURCE_FILES}) +source_group("Common Files" FILES ${COMMON_FILES}) +include_directories( ${XMP_ROOT} ) include_directories( ${PUBLIC_INCLUDE} ) add_executable(${PROJECT_NAME} ${SOURCE_FILES} ) #setting up XMP_BUILDMODE_DIR variable SetupInternalBuildDirectory() +set (BUILD_MODE_LIBNAME "") +if (USE_BUILDMODE_LIBNAME ) + set(BUILD_MODE_LIBNAME ${XMP_BUILDMODE_DIR}) +endif() #addding XMP libs and setting output path if(UNIX) if(APPLE) #For Mac - target_link_libraries(${PROJECT_NAME} ${XMP_SDK_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/lib${XMPCORE_LIB}${LIB_EXT} ${XMP_SDK_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/lib${XMPFILES_LIB}${LIB_EXT} ) + target_link_libraries(${PROJECT_NAME} ${XMP_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/lib${XMPCORE_LIB}${BUILD_MODE_LIBNAME}${LIB_EXT} ${XMP_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/lib${XMPFILES_LIB}${BUILD_MODE_LIBNAME}${LIB_EXT} ) set(OUTPUT_DIR ${SAMPLE_SOURCE_ROOT}/../target/${PLATFORM_FOLDER}/ ) set(EXECUTABLE_OUTPUT_PATH ${OUTPUT_DIR}) else(APPLE) #For Linux SetPlatformLinkFlags(${PROJECT_NAME} "" "") - target_link_libraries(${PROJECT_NAME} ${XMP_SDK_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPCORE_LIB}${LIB_EXT} ${XMP_SDK_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPFILES_LIB}${LIB_EXT} ) + target_link_libraries(${PROJECT_NAME} ${XMP_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPCORE_LIB}${LIB_EXT} ${XMP_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPFILES_LIB}${LIB_EXT} ) set(OUTPUT_DIR ${SAMPLE_SOURCE_ROOT}/../target/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR} ) set(EXECUTABLE_OUTPUT_PATH ${OUTPUT_DIR}) endif(APPLE) else(UNIX) #For Windows - target_link_libraries(${PROJECT_NAME} ${XMP_SDK_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPCORE_LIB}${LIB_EXT} ${XMP_SDK_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPFILES_LIB}${LIB_EXT}) + target_link_libraries(${PROJECT_NAME} ${XMP_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPCORE_LIB}${BUILD_MODE_LIBNAME}${LIB_EXT} ${XMP_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPFILES_LIB}${BUILD_MODE_LIBNAME}${LIB_EXT} Rpcrt4.lib) set(OUTPUT_DIR ${SAMPLE_SOURCE_ROOT}/../target/${PLATFORM_FOLDER}/ ) set(EXECUTABLE_OUTPUT_PATH ${OUTPUT_DIR}) endif(UNIX) diff --git a/samples/build/cmake/XMPFilesCoverage/CMakeLists.txt b/samples/build/cmake/XMPFilesCoverage/CMakeLists.txt index 772ff20..11e0145 100644 --- a/samples/build/cmake/XMPFilesCoverage/CMakeLists.txt +++ b/samples/build/cmake/XMPFilesCoverage/CMakeLists.txt @@ -19,29 +19,33 @@ project (XMPFilesCoverage) file (GLOB SOURCE_FILES ${SAMPLE_SOURCE_ROOT}/XMPFilesCoverage.cpp) -source_group(DumpFile FILES ${SOURCE_FILES}) -source_group(CommonFiles FILES ${COMMON_FILES}) -include_directories( ${XMP_SDK_ROOT} ) +source_group("Source Files" FILES ${SOURCE_FILES}) +source_group("Common Files" FILES ${COMMON_FILES}) +include_directories( ${XMP_ROOT} ) include_directories( ${PUBLIC_INCLUDE} ) add_executable(${PROJECT_NAME} ${SOURCE_FILES} ) #setting up XMP_BUILDMODE_DIR variable SetupInternalBuildDirectory() +set (BUILD_MODE_LIBNAME "") +if (USE_BUILDMODE_LIBNAME ) + set(BUILD_MODE_LIBNAME ${XMP_BUILDMODE_DIR}) +endif() #addding XMP libs and setting output path if(UNIX) if(APPLE) #For Mac - target_link_libraries(${PROJECT_NAME} ${XMP_SDK_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/lib${XMPCORE_LIB}${LIB_EXT} ${XMP_SDK_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/lib${XMPFILES_LIB}${LIB_EXT} ) + target_link_libraries(${PROJECT_NAME} ${XMP_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/lib${XMPCORE_LIB}${BUILD_MODE_LIBNAME}${LIB_EXT} ${XMP_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/lib${XMPFILES_LIB}${BUILD_MODE_LIBNAME}${LIB_EXT} ) set(OUTPUT_DIR ${SAMPLE_SOURCE_ROOT}/../target/${PLATFORM_FOLDER}/ ) set(EXECUTABLE_OUTPUT_PATH ${OUTPUT_DIR}) else(APPLE) #For Linux SetPlatformLinkFlags(${PROJECT_NAME} "" "") - target_link_libraries(${PROJECT_NAME} ${XMP_SDK_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPCORE_LIB}${LIB_EXT} ${XMP_SDK_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPFILES_LIB}${LIB_EXT} ) + target_link_libraries(${PROJECT_NAME} ${XMP_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPCORE_LIB}${LIB_EXT} ${XMP_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPFILES_LIB}${LIB_EXT} ) set(OUTPUT_DIR ${SAMPLE_SOURCE_ROOT}/../target/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR} ) set(EXECUTABLE_OUTPUT_PATH ${OUTPUT_DIR}) endif(APPLE) else(UNIX) #For Windows - target_link_libraries(${PROJECT_NAME} ${XMP_SDK_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPCORE_LIB}${LIB_EXT} ${XMP_SDK_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPFILES_LIB}${LIB_EXT}) + target_link_libraries(${PROJECT_NAME} ${XMP_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPCORE_LIB}${BUILD_MODE_LIBNAME}${LIB_EXT} ${XMP_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPFILES_LIB}${BUILD_MODE_LIBNAME}${LIB_EXT} Rpcrt4.lib) set(OUTPUT_DIR ${SAMPLE_SOURCE_ROOT}/../target/${PLATFORM_FOLDER}/ ) set(EXECUTABLE_OUTPUT_PATH ${OUTPUT_DIR}) endif(UNIX) diff --git a/samples/build/cmake/XMPIterations/CMakeLists.txt b/samples/build/cmake/XMPIterations/CMakeLists.txt index 0798f68..52002f8 100644 --- a/samples/build/cmake/XMPIterations/CMakeLists.txt +++ b/samples/build/cmake/XMPIterations/CMakeLists.txt @@ -19,29 +19,33 @@ project (XMPIterations) file (GLOB SOURCE_FILES ${SAMPLE_SOURCE_ROOT}/XMPIterations.cpp) -source_group(DumpFile FILES ${SOURCE_FILES}) -source_group(CommonFiles FILES ${COMMON_FILES}) -include_directories( ${XMP_SDK_ROOT} ) +source_group("Source Files" FILES ${SOURCE_FILES}) +source_group("Common Files" FILES ${COMMON_FILES}) +include_directories( ${XMP_ROOT} ) include_directories( ${PUBLIC_INCLUDE} ) add_executable(${PROJECT_NAME} ${SOURCE_FILES} ) #setting up XMP_BUILDMODE_DIR variable SetupInternalBuildDirectory() +set (BUILD_MODE_LIBNAME "") +if (USE_BUILDMODE_LIBNAME ) + set(BUILD_MODE_LIBNAME ${XMP_BUILDMODE_DIR}) +endif() #addding XMP libs and setting output path if(UNIX) if(APPLE) #For Mac - target_link_libraries(${PROJECT_NAME} ${XMP_SDK_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/lib${XMPCORE_LIB}${LIB_EXT} ${XMP_SDK_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/lib${XMPFILES_LIB}${LIB_EXT} ) + target_link_libraries(${PROJECT_NAME} ${XMP_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/lib${XMPCORE_LIB}${BUILD_MODE_LIBNAME}${LIB_EXT} ${XMP_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/lib${XMPFILES_LIB}${BUILD_MODE_LIBNAME}${LIB_EXT} ) set(OUTPUT_DIR ${SAMPLE_SOURCE_ROOT}/../target/${PLATFORM_FOLDER}/ ) set(EXECUTABLE_OUTPUT_PATH ${OUTPUT_DIR}) else(APPLE) #For Linux SetPlatformLinkFlags(${PROJECT_NAME} "" "") - target_link_libraries(${PROJECT_NAME} ${XMP_SDK_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPCORE_LIB}${LIB_EXT} ${XMP_SDK_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPFILES_LIB}${LIB_EXT} ) + target_link_libraries(${PROJECT_NAME} ${XMP_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPCORE_LIB}${LIB_EXT} ${XMP_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPFILES_LIB}${LIB_EXT} ) set(OUTPUT_DIR ${SAMPLE_SOURCE_ROOT}/../target/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR} ) set(EXECUTABLE_OUTPUT_PATH ${OUTPUT_DIR}) endif(APPLE) else(UNIX) #For Windows - target_link_libraries(${PROJECT_NAME} ${XMP_SDK_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPCORE_LIB}${LIB_EXT} ${XMP_SDK_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPFILES_LIB}${LIB_EXT}) + target_link_libraries(${PROJECT_NAME} ${XMP_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPCORE_LIB}${BUILD_MODE_LIBNAME}${LIB_EXT} ${XMP_ROOT}/public/libraries/${PLATFORM_FOLDER}/${XMP_BUILDMODE_DIR}/${XMPFILES_LIB}${BUILD_MODE_LIBNAME}${LIB_EXT} Rpcrt4.lib) set(OUTPUT_DIR ${SAMPLE_SOURCE_ROOT}/../target/${PLATFORM_FOLDER}/ ) set(EXECUTABLE_OUTPUT_PATH ${OUTPUT_DIR}) endif(UNIX) diff --git a/samples/build/readme.txt b/samples/build/readme.txt index 204bc2b..0a77041 100644 --- a/samples/build/readme.txt +++ b/samples/build/readme.txt @@ -4,7 +4,7 @@ Windows: 1. Double Click "GenerateSamples_win.bat" or run it through command prompt.
2. Enter the type of project to create
-3. The project files will be created in vc10\windows or vc10\windows_x64 folder
+3. The project files will be created in vc11\windows or vc11\windows_x64 folder
Mac:
diff --git a/samples/source/common/DumpFile.cpp b/samples/source/common/DumpFile.cpp index c651aca..32dd253 100644 --- a/samples/source/common/DumpFile.cpp +++ b/samples/source/common/DumpFile.cpp @@ -291,9 +291,17 @@ static XMP_Uns64 GetUns64LE ( const void * addr ); // ================================================================================================= // ahead declarations +struct JpegMarker { + XMP_Uns8 * jpegMarkerPtr; + XMP_Uns16 jpegMarkerLen; +}; +typedef std::vector<JpegMarker> JpegMarkers; + static void DumpTIFF ( XMP_Uns8 * tiffContent, XMP_Uns32 tiffLen, XMP_Uns32 fileOffset, const char * label, std::string path ); +static void DumpTIFF ( const JpegMarkers& psirMarkers, XMP_Uns8 * dataStart, const char * label, std::string path ); static void DumpIPTC ( XMP_Uns8 * iptcOrigin, XMP_Uns32 iptcLen, XMP_Uns32 fileOffset, const char * label ); static void DumpImageResources ( XMP_Uns8 * psirOrigin, XMP_Uns32 psirLen, XMP_Uns32 fileOffset, const char * label ); +static void DumpImageResources ( const JpegMarkers& psirMarkers, XMP_Uns8 * dataStart, const char * label ); static void DumpIFDChain ( XMP_Uns8 * startPtr, XMP_Uns8 * endPtr, XMP_Uns8 * tiffContent, XMP_Uns32 fileOffset, const char * label, std::string path ); // ================================================================================================= @@ -1208,6 +1216,136 @@ DumpIPTC (XMP_Uns8 * iptcOrigin, XMP_Uns32 iptcLen, XMP_Uns32 fileOffset, const } // DumpIPTC // ================================================================================================= + +static void +DumpImageResources ( const JpegMarkers& psirMarkers, XMP_Uns8 * dataStart, const char * label ) +{ + + XMP_Uns32 i = 0, size = psirMarkers.size(); + std::string combinedPSIRData; + for ( i = 0; i < size; i++ ) { + combinedPSIRData.append( (const char *) psirMarkers[i].jpegMarkerPtr, psirMarkers[i].jpegMarkerLen ); + } + + + XMP_Uns8 * psirPtr = (XMP_Uns8 *) combinedPSIRData.data(); + XMP_Uns8 * psirEnd = psirPtr + combinedPSIRData.size(); + + XMP_Uns8 * irPtr; + XMP_Uns32 irLen, irOffset; //irType replaced by irTypeStr below + + XMP_Uns8 * iptcPtr = 0; + XMP_Uns8 * xmpPtr = 0; + XMP_Uns8 * exif1Ptr = 0; + XMP_Uns8 * exif3Ptr = 0; + XMP_Uns32 iptcLen, xmpLen, exif1Len, exif3Len; + XMP_Int32 lastIndexUsed = -1; + while (psirPtr < psirEnd) { + // calculate fileOffset and psirOrigin + size_t currentOffset = (const char *) psirPtr - combinedPSIRData.data(); + XMP_Uns32 length = 0; + for (i = 0; i < size; i++ ) { + length += psirMarkers[i].jpegMarkerLen; + if ( currentOffset <= length ) + break; + } + if ( lastIndexUsed != i ) { + if ( lastIndexUsed != -1 ) + tree->popNode(); + // time to push a new node + tree->pushNode("Photoshop Image Resources %d", i + 1 ); + XMP_Uns32 fileOffset = psirMarkers[i].jpegMarkerPtr - dataStart; + tree->addComment("from %s, offset %d (0x%X), size %d", + label, fileOffset, fileOffset, psirMarkers[i].jpegMarkerLen); + lastIndexUsed = i; + } + XMP_Uns32 fileOffset = psirMarkers[i].jpegMarkerPtr - dataStart; + XMP_Uns8 * psirOrigin = psirMarkers[i].jpegMarkerPtr; + + std::string irTypeStr = convert8Bit(psirPtr,false,4); //get in an endian neutral way + XMP_Uns16 irID = GetUns16BE ( psirPtr+4 ); // The image resource ID. + + const char* irName = (XMP_StringPtr)psirPtr+6; // A Pascal string. + irOffset = 6 + ((*irName + 2) & 0xFFFFFFFE); // Offset to the image resource data length. + irLen = GetUns32BE (psirPtr+irOffset); + irPtr = psirPtr + irOffset + 4; + + irOffset = fileOffset + ((psirPtr - (XMP_Uns8 *) combinedPSIRData.data()) - ( length - psirMarkers[i].jpegMarkerLen ) ); + + if ( irTypeStr != "8BIM" ) { + tree->setKeyValue( fromArgs("PSIR:%s:#%u",irTypeStr.c_str(),irID),"" ); + tree->comment("(non-8BIM encountered and tolerated, see bug 1454756)"); + } else if ( irID == kPSIR_IPTC ) { //**************** + tree->setKeyValue("PSIR:IPTC",""); + iptcPtr = irPtr; + iptcLen = irLen; + if (iptcPtr != 0) { + XMP_Uns32 offset = fileOffset + ((iptcPtr - (XMP_Uns8 *) combinedPSIRData.data()) - ( length - psirMarkers[i].jpegMarkerLen ) ); + DumpIPTC (iptcPtr, iptcLen, offset, "PSIR #1028"); + } + } else if (irID == kPSIR_XMP) { //**************** + tree->setKeyValue("PSIR:XMP",""); + xmpPtr = irPtr; + xmpLen = irLen; + if (xmpPtr != 0) { + XMP_Uns32 offset = fileOffset + ((xmpPtr - (XMP_Uns8 *) combinedPSIRData.data()) - ( length - psirMarkers[i].jpegMarkerLen ) ); + DumpXMP (xmpPtr, xmpLen, offset, "PSIR #1060"); + } + } else if (irID == kPSIR_Exif_1) { //**************** + tree->setKeyValue("PSIR:Exif-1",""); + exif1Ptr = irPtr; + exif1Len = irLen; + XMP_Uns32 offset = fileOffset + ((exif1Ptr - (XMP_Uns8 *) combinedPSIRData.data()) - ( length - psirMarkers[i].jpegMarkerLen ) ); + DumpTIFF (exif1Ptr, exif1Len, offset, "PSIR #1058 (Exif 1)", "PSIR:Exif-1"); + } else if (irID == kPSIR_Exif_3) { //**************** + tree->setKeyValue("PSIR:Exif-3",""); + exif3Ptr = irPtr; + exif3Len = irLen; + XMP_Uns32 offset = fileOffset + ((exif3Ptr - (XMP_Uns8 *) combinedPSIRData.data()) - ( length - psirMarkers[i].jpegMarkerLen ) ); + if (exif3Ptr != 0) DumpTIFF (exif3Ptr, exif3Len, offset, "PSIR #1059 (Exif 3)", "PSIR:Exif-3"); + } else if (irID == kPSIR_IPTC_Digest) { + tree->setKeyValue("PSIR:IPTC digest", + fromArgs("%.8X-%.8X-%.8X-%.8X", + GetUns32BE(irPtr), + GetUns32BE(irPtr+4), + GetUns32BE(irPtr+8), + GetUns32BE(irPtr+12) ) + ); + } else if (irID == kPSIR_CopyrightFlag) { + bool copyrighted = (*irPtr != 0); + tree->setKeyValue("PSIR:copyrighted",(copyrighted ? "yes" : "no")); + } else if (irID == kPSIR_CopyrightURL) { + tree->setKeyValue("PSIR:copyright URL",convert8Bit(irPtr,true,irLen)); + } else if (irID == kPSIR_OldCaption) { + tree->setKeyValue("PSIR:old caption",convert8Bit(irPtr,true,irLen)); + } else if (irID == kPSIR_PrintCaption) { + tree->comment("** obsolete print caption **"); + } else { + tree->setKeyValue( + fromArgs("PSIR:%s:#%d",irTypeStr.c_str(),irID), + "" + ); + } + if ( irOffset + irLen > (psirMarkers[i].jpegMarkerPtr - dataStart) + psirMarkers[i].jpegMarkerLen ) { + //merged from two markers + tree->addComment("offset %d (0x%X), size %d - split in multiple markers", irOffset, irOffset, irLen); + } else { + tree->addComment("offset %d (0x%X), size %d", irOffset, irOffset, irLen); + } + if (*irName != 0) tree->addComment("\"%.*s\"", (int)(*irName), (irName+1)); + psirPtr = irPtr + ((irLen + 1) & 0xFFFFFFFE); // Round the length to be even. + } //while-loop + + if (psirPtr != psirEnd) { + tree->addComment("** Unexpected end of image resources, delta %d", (long)(psirPtr - psirEnd)); + } + + //NB: dump routines moved up into if-else's + tree->popNode(); +} // DumpImageResources + +// ================================================================================================= + static void DumpImageResources (XMP_Uns8 * psirOrigin, XMP_Uns32 psirLen, XMP_Uns32 fileOffset, const char * label) { @@ -1621,6 +1759,7 @@ DumpIFDChain (XMP_Uns8 * startPtr, XMP_Uns8 * endPtr, static void DumpTIFF (XMP_Uns8 * tiffContent, XMP_Uns32 tiffLen, XMP_Uns32 fileOffset, const char * label, std::string path) { + tree->pushNode("TIFF content from %s", label); // ! TIFF can be nested because of the Photoshop 6 weiredness. Save and restore the procs. GetUns16_Proc save_GetUns16 = TIFF_GetUns16; GetUns32_Proc save_GetUns32 = TIFF_GetUns32; @@ -1652,6 +1791,28 @@ DumpTIFF (XMP_Uns8 * tiffContent, XMP_Uns32 tiffLen, XMP_Uns32 fileOffset, const TIFF_GetUns32 = save_GetUns32; TIFF_GetUns64 = save_GetUns64; + tree->popNode(); +} // DumpTIFF + + +// ================================================================================================= + +static void DumpTIFF ( const JpegMarkers& exifMarkers, XMP_Uns8 * dataStart, const char * label, std::string path ) +{ + XMP_Uns32 i = 0, size = exifMarkers.size(); + std::string combinedExifData; + tree->pushNode( "Combined EXIF Markers from %s", path.c_str() ); + for ( i = 0; i < size; i++ ) { + tree->pushNode( "EXIF Marker %d", i + 1 ); + tree->addComment("offset %d (0x%X), size %d", exifMarkers[i].jpegMarkerPtr - dataStart, + exifMarkers[i].jpegMarkerPtr - dataStart, exifMarkers[i].jpegMarkerLen ); + combinedExifData.append( (const char *) exifMarkers[i].jpegMarkerPtr, exifMarkers[i].jpegMarkerLen ); + tree->popNode(); + } + + DumpTIFF( (XMP_Uns8 *) combinedExifData.data(), combinedExifData.length(), exifMarkers[0].jpegMarkerPtr - dataStart, label, path ); + + tree->popNode(); } // DumpTIFF // ================================================================================================= @@ -1680,11 +1841,9 @@ DumpJPEG (XMP_Uns8 * jpegContent, XMP_Uns32 jpegLen) XMP_Uns32 segOffset; XMP_Uns8 * xmpPtr = 0; - XMP_Uns8 * psirPtr = 0; - XMP_Uns8 * exifPtr = 0; XMP_Uns16 xmpLen = 0; - XMP_Uns16 psirLen = 0; - XMP_Uns16 exifLen = 0; + + JpegMarkers psirMarkers, exifMarkers; while (segPtr < endPtr) { // ---------------------------------------------------------------- @@ -1740,13 +1899,17 @@ DumpJPEG (XMP_Uns8 * jpegContent, XMP_Uns32 jpegLen) ((memcmp(segName,"Exif\0\0",6) == 0) || (memcmp(segName,"Exif\0\xFF",6) == 0))) { tree->addComment("EXIF"); tree->changeValue("EXIF"); - exifPtr = segPtr + 4 + 6; - exifLen = segLen - 2 - 6; + JpegMarker exifMarker; + exifMarker.jpegMarkerPtr = segPtr + 4 + 6; + exifMarker.jpegMarkerLen = segLen - 2 - 6; + exifMarkers.push_back(exifMarker); } else if ((minorKind == 13) && (strcmp(segName,"Photoshop 3.0") == 0)) { tree->addComment("PSIR"); tree->changeValue("PSIR"); - psirPtr = segPtr + 4 + strlen(segName) + 1; - psirLen = (XMP_Uns16)(segLen - 2 - strlen(segName) - 1); + JpegMarker psirMarker; + psirMarker.jpegMarkerPtr = segPtr + 4 + strlen(segName) + 1; + psirMarker.jpegMarkerLen = (XMP_Uns16)(segLen - 2 - strlen(segName) - 1); + psirMarkers.push_back(psirMarker); } else if ((minorKind == 1) && (strcmp(segName,"http://ns.adobe.com/xap/1.0/") == 0)) { tree->addComment("XMP"); tree->changeValue("XMP"); @@ -1834,16 +1997,20 @@ DumpJPEG (XMP_Uns8 * jpegContent, XMP_Uns32 jpegLen) )); } - if (exifPtr != 0) DumpTIFF (exifPtr, exifLen, (exifPtr - jpegContent), "JPEG Exif APP1", "JPEG:APP1"); - if (psirPtr != 0) DumpImageResources (psirPtr, psirLen, (psirPtr - jpegContent), "JPEG Photoshop APP13"); + if (exifMarkers.size() > 0) DumpTIFF (exifMarkers, jpegContent, "JPEG Exif APP1", "JPEG:APP1"); + if (psirMarkers.size() > 0) DumpImageResources (psirMarkers, jpegContent, "JPEG Photoshop APP13"); if (xmpPtr != 0) DumpXMP (xmpPtr, xmpLen, (xmpPtr - jpegContent), "JPEG XMP APP1"); } // DumpJPEG // ================================================================================================= - +//#if !IOS_ENV static const XMP_Uns8 kUUID_XMP[16] = { 0xBE, 0x7A, 0xCF, 0xCB, 0x97, 0xA9, 0x42, 0xE8, 0x9C, 0x71, 0x99, 0x94, 0x91, 0xE3, 0xAF, 0xAC }; +/*#else +static const XMP_Uns8 kUUID_XMP[16] = +{ 0xFFFFFFBE, 0x0000007A, 0xFFFFFFCF, 0xFFFFFFCB, 0xFFFFFF97, 0xFFFFFFA9, 0x00000042, 0xFFFFFFE8, 0xFFFFFF9C, 0x00000071, 0xFFFFFF99, 0xFFFFFF94, 0xFFFFFF91, 0xFFFFFFE3, 0xFFFFFFAF, 0xFFFFFFAC }; +#endif */ static const XMP_Uns8 kUUID_Exif[16] = { 0x05, 0x37, 0xCD, 0xAB, 0x9D, 0x0C, 0x44, 0x31, 0xA7, 0x2A, 0xFA, 0x56, 0x1F, 0x2A, 0x11, 0x3E }; static const XMP_Uns8 kUUID_IPTC[16] = @@ -1877,13 +2044,8 @@ digestInternationalTextSequence ( LFA_FileRef file, std::string isoPath, XMP_Int tree->digest16u(file,isoPath+"language code",true,true); (*remainingSize) -= 4; if ( (*remainingSize) != miniBoxStringSize ) - { tree->addComment("WARNING: boxSize and miniBoxSize differ!"); - } - else - { - tree->digestString( file, isoPath+"value", miniBoxStringSize, false ); - } + tree->digestString( file, isoPath+"value", miniBoxStringSize, false ); } /** @@ -1948,13 +2110,17 @@ DumpISOBoxes ( LFA_FileRef file, XMP_Uns32 maxBoxLen, std::string _isoPath ) std::string boxString( fromArgs( "%.4s" , &tempBoxType) ); // substitute mac-copyright signs with an easier-to-handle "(c)" - if ( boxString.at(0) == 0xA9 ) - boxString = std::string("(c)") + boxString.substr(1); +#if !IOS_ENV + if ( boxString.at(0) == 0xa9 ) +#else + if ( boxString.at(0) == 0xffffffa9 ) +#endif + boxString = std::string("(c)") + boxString.substr(1); isoPath = origIsoPath + boxString + "/"; // TEMP // Log::info("pushing %s, endOfThisLevel: 0x%X", isoPath.c_str(), endOfThisLevel ); - + // printf ("%s \n", isoPath.c_str()); tree->pushNode( isoPath ); tree->addComment("offset 0x%I64X, size 0x%I64X", boxPos , boxSize); @@ -2255,23 +2421,7 @@ DumpISOBoxes ( LFA_FileRef file, XMP_Uns32 maxBoxLen, std::string _isoPath ) // (c)-style quicktime boxes and boxes of no interest: default: - if ( 0 == isoPath.compare( 0 , 20, "moov/udta/meta/ilst/")) - { // => iTunes metadata (hunt for data childs) - // a container box, hunt for 'data' atom by recursion: - bool ok; - XMP_Int64 keep = LFA_Tell( file ); - DumpISOBoxes( file, remainingSize, isoPath ); - LFA_Seek( file, keep, SEEK_SET, &ok ); - assertMsg( "seek failed", ok ); - } - else if ( 0 == isoPath.compare( 0 , 10, "moov/udta/" )) - { // => Quicktime metadata "international text sequence" ( size, language code, value ) - digestInternationalTextSequence( file, isoPath, &remainingSize ); - } else - { - tree->addComment("WARNING: unknown flavor of (c)*** boxes, neither QT nor iTunes"); - } - break; + break; } bool ok; @@ -3223,6 +3373,10 @@ DumpRIFFChunk ( LFA_FileRef file, XMP_Int64 parentEnd, std::string origChunkPath ( ( origChunkPath == "RIFF:WAVE" || origChunkPath == "RIFF:AVI ") && idString == "bext" ); + bool isIXMLChunk = + ( ( origChunkPath == "RIFF:WAVE" ) + && idString == "iXML" ); + bool isXMPchunk = false; //assume beforehand if ( idString == "_PMX" ) { // detour first, to detect xmp in wrong places @@ -3333,6 +3487,25 @@ DumpRIFFChunk ( LFA_FileRef file, XMP_Int64 parentEnd, std::string origChunkPath tree->addComment("packet end: 0x%llX", LFA_Tell( file ) ); tree->popNode(); + } else if ( isIXMLChunk ) { + tree->pushNode("iXML packet"); + + tree->addOffset( file ); + tree->addComment("packet size: 0x%llX", chunkSize - 8 ); + //Skip( file, chunkSize - 8 ); + + size_t sizeofIXMLValue = chunkSize-8; + char* descriptionBuffer = new char[ sizeofIXMLValue + 2 ]; + LFA_Read( file, descriptionBuffer, sizeofIXMLValue, true ); + descriptionBuffer[sizeofIXMLValue]='\0'; // tack on, in case not contained + // parse till first \0 + std::string description( descriptionBuffer ); + + delete[] descriptionBuffer; + tree->addComment("packet end: 0x%llX", LFA_Tell( file ) ); + + tree->popNode(); + } else { diff --git a/samples/source/common/TagTree.cpp b/samples/source/common/TagTree.cpp index 713998a..aa8ca12 100644 --- a/samples/source/common/TagTree.cpp +++ b/samples/source/common/TagTree.cpp @@ -139,9 +139,8 @@ void TagTree::digest(LFA_FileRef file,const std::string key /*=NULL*/, // require all == false => leave the throwing to this routine if (numOfBytes != LFA_Read ( file, value, numOfBytes, false)) // saying 1,4 guarantes read as ordered (4,1 would not) Log::error("could not read %d number of files (End of File reached?)",numOfBytes); - +#if !IOS_ENV char* out=new char[2 + numOfBytes*3 + 5]; //'0x12 34 45 78 ' length formula: 2 ("0x") + numOfBytes x 3 + 5 (padding) - if (!key.empty()) { snprintf(out,3,"0x"); XMP_Int64 i; // *) @@ -150,8 +149,19 @@ void TagTree::digest(LFA_FileRef file,const std::string key /*=NULL*/, snprintf(&out[2+i*3],1,"%c",'\0'); // *) using i one more time (needed while bug 1613297 regarding snprintf not fixed) setKeyValue(key,out); } +#else + char* out=new char[2 + numOfBytes*9 + 5]; //'0x12 34 45 78 ' length formula: 2 ("0x") + numOfBytes x 3 + 5 (padding) + if (!key.empty()) { + snprintf(out,3,"0x"); + XMP_Int64 i; // *) + for (i=0; i < numOfBytes; i++) + snprintf(&out[2+i*9],10,"%.8X ",value[i]); //always must allow that extra 0-byte on mac (overwritten again and again) + snprintf(&out[2+i*9],1,"%c",'\0'); // *) using i one more time (needed while bug 1613297 regarding snprintf not fixed) + setKeyValue(key,out); + } - delete out; +#endif + delete out; if (!returnValue) delete value; //if we own it, we delete it } diff --git a/samples/source/common/globals.h b/samples/source/common/globals.h index 164b519..8b0d09c 100644 --- a/samples/source/common/globals.h +++ b/samples/source/common/globals.h @@ -77,7 +77,7 @@ const std::string AEOEUE_MAC_MOJIBAKE_BUGINESE("<C6 92 C3 B7 E2 80 B9>"); const std::string AEOEUE_LATIN1_MOJIBAKE_BUGINESE("<C2 80 C2 85 C2 86>"); - #if MAC_ENV + #if MAC_ENV || IOS_ENV const std::string AEOEUE_LOCAL = std::string(AEOEUE_MAC_LOCAL_CSTRING); const std::string AEOEUE_WIN_LOCAL_TO_UTF8 = AEOEUE_MAC_MOJIBAKE_BUGINESE; const std::string AEOEUE_MAC_LOCAL_TO_UTF8 = AEOEUE_UTF8_BUGINESE; diff --git a/samples/testfiles/BlueSquare.ai b/samples/testfiles/BlueSquare.ai Binary files differindex 2391f02..2391f02 100644..100755 --- a/samples/testfiles/BlueSquare.ai +++ b/samples/testfiles/BlueSquare.ai diff --git a/samples/testfiles/BlueSquare.avi b/samples/testfiles/BlueSquare.avi Binary files differindex f29de6d..f29de6d 100644..100755 --- a/samples/testfiles/BlueSquare.avi +++ b/samples/testfiles/BlueSquare.avi diff --git a/samples/testfiles/BlueSquare.eps b/samples/testfiles/BlueSquare.eps index ea4f79c..ea4f79c 100644..100755 --- a/samples/testfiles/BlueSquare.eps +++ b/samples/testfiles/BlueSquare.eps diff --git a/samples/testfiles/BlueSquare.indd b/samples/testfiles/BlueSquare.indd Binary files differindex c8b9680..c8b9680 100644..100755 --- a/samples/testfiles/BlueSquare.indd +++ b/samples/testfiles/BlueSquare.indd diff --git a/samples/testfiles/BlueSquare.jpg b/samples/testfiles/BlueSquare.jpg Binary files differindex 81b8a22..81b8a22 100644..100755 --- a/samples/testfiles/BlueSquare.jpg +++ b/samples/testfiles/BlueSquare.jpg diff --git a/samples/testfiles/BlueSquare.mov b/samples/testfiles/BlueSquare.mov Binary files differindex 2ee3885..2ee3885 100644..100755 --- a/samples/testfiles/BlueSquare.mov +++ b/samples/testfiles/BlueSquare.mov diff --git a/samples/testfiles/BlueSquare.mp3 b/samples/testfiles/BlueSquare.mp3 Binary files differindex 0b275b2..0b275b2 100644..100755 --- a/samples/testfiles/BlueSquare.mp3 +++ b/samples/testfiles/BlueSquare.mp3 diff --git a/samples/testfiles/BlueSquare.pdf b/samples/testfiles/BlueSquare.pdf Binary files differindex 2498719..2498719 100644..100755 --- a/samples/testfiles/BlueSquare.pdf +++ b/samples/testfiles/BlueSquare.pdf diff --git a/samples/testfiles/BlueSquare.png b/samples/testfiles/BlueSquare.png Binary files differindex 91589cd..91589cd 100644..100755 --- a/samples/testfiles/BlueSquare.png +++ b/samples/testfiles/BlueSquare.png diff --git a/samples/testfiles/BlueSquare.psd b/samples/testfiles/BlueSquare.psd Binary files differindex 1850b8f..1850b8f 100644..100755 --- a/samples/testfiles/BlueSquare.psd +++ b/samples/testfiles/BlueSquare.psd diff --git a/samples/testfiles/BlueSquare.tif b/samples/testfiles/BlueSquare.tif Binary files differindex 3ae7b02..3ae7b02 100644..100755 --- a/samples/testfiles/BlueSquare.tif +++ b/samples/testfiles/BlueSquare.tif diff --git a/samples/testfiles/BlueSquare.wav b/samples/testfiles/BlueSquare.wav Binary files differindex c9983ff..c9983ff 100644..100755 --- a/samples/testfiles/BlueSquare.wav +++ b/samples/testfiles/BlueSquare.wav diff --git a/samples/testfiles/Image1.jpg b/samples/testfiles/Image1.jpg Binary files differindex 0da199f..0da199f 100644..100755 --- a/samples/testfiles/Image1.jpg +++ b/samples/testfiles/Image1.jpg diff --git a/samples/testfiles/Image2.jpg b/samples/testfiles/Image2.jpg Binary files differindex 17862cc..17862cc 100644..100755 --- a/samples/testfiles/Image2.jpg +++ b/samples/testfiles/Image2.jpg |