diff --git a/msvc/exiv2.sln b/msvc/exiv2.sln index 9abb63f6..d3e105fa 100644 --- a/msvc/exiv2.sln +++ b/msvc/exiv2.sln @@ -4,26 +4,20 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "exifprint", "exifprint\exif {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} EndProjectSection EndProject - Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "key-test", "key-test\key-test.vcproj", "{8391174F-52D5-4111-A0FE-E87135301CFB}" ProjectSection(ProjectDependencies) = postProject - {A11EF580-92C8-4CA8-B0CE-3D906280A54D} = {A11EF580-92C8-4CA8-B0CE-3D906280A54D} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "path-test", "path-test\path-test.vcproj", "{8391174F-52D5-4111-A0FE-E87135301CFB}" ProjectSection(ProjectDependencies) = postProject - {A21EF580-92C8-4CA8-B0CE-3D906280A54D} = {A21EF580-92C8-4CA8-B0CE-3D906280A54D} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "werror-test", "werror-test\werror-test.vcproj", "{8391174F-52D5-4111-A0FE-E87135301CFB}" ProjectSection(ProjectDependencies) = postProject - {A31EF580-92C8-4CA8-B0CE-3D906280A54D} = {A31EF580-92C8-4CA8-B0CE-3D906280A54D} EndProjectSection EndProject - Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "easyaccess-test", "easyaccess-test\easyaccess-test.vcproj", "{8391174F-52D5-4111-A0FE-E87135301CFB}" ProjectSection(ProjectDependencies) = postProject - {FF1EF580-92C8-4CA8-B0CE-3D906280A54D} = {FF1EF580-92C8-4CA8-B0CE-3D906280A54D} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "exiv2lib", "exiv2lib\exiv2lib.vcproj", "{831EF580-92C8-4CA8-B0CE-3D906280A54D}" @@ -153,6 +147,10 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tiff-test", "tiff-test\tiff {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} EndProjectSection EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "geotag", "geotag\geotag.vcproj", "{7E0025E8-CFBE-4941-BEB7-825F14A87EE1}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject Global GlobalSection(SolutionConfiguration) = preSolution Debug = Debug @@ -161,6 +159,38 @@ Global ReleaseDLL = ReleaseDLL EndGlobalSection GlobalSection(ProjectConfiguration) = postSolution + {8391174F-52D5-4111-A0FE-E87135301CFB}.Debug.ActiveCfg = Debug|Win32 + {8391174F-52D5-4111-A0FE-E87135301CFB}.Debug.Build.0 = Debug|Win32 + {8391174F-52D5-4111-A0FE-E87135301CFB}.DebugDLL.ActiveCfg = DebugDLL|Win32 + {8391174F-52D5-4111-A0FE-E87135301CFB}.DebugDLL.Build.0 = DebugDLL|Win32 + {8391174F-52D5-4111-A0FE-E87135301CFB}.Release.ActiveCfg = Release|Win32 + {8391174F-52D5-4111-A0FE-E87135301CFB}.Release.Build.0 = Release|Win32 + {8391174F-52D5-4111-A0FE-E87135301CFB}.ReleaseDLL.ActiveCfg = ReleaseDLL|Win32 + {8391174F-52D5-4111-A0FE-E87135301CFB}.ReleaseDLL.Build.0 = ReleaseDLL|Win32 + {8391174F-52D5-4111-A0FE-E87135301CFB}.Debug.ActiveCfg = Debug|Win32 + {8391174F-52D5-4111-A0FE-E87135301CFB}.Debug.Build.0 = Debug|Win32 + {8391174F-52D5-4111-A0FE-E87135301CFB}.DebugDLL.ActiveCfg = DebugDLL|Win32 + {8391174F-52D5-4111-A0FE-E87135301CFB}.DebugDLL.Build.0 = DebugDLL|Win32 + {8391174F-52D5-4111-A0FE-E87135301CFB}.Release.ActiveCfg = Release|Win32 + {8391174F-52D5-4111-A0FE-E87135301CFB}.Release.Build.0 = Release|Win32 + {8391174F-52D5-4111-A0FE-E87135301CFB}.ReleaseDLL.ActiveCfg = ReleaseDLL|Win32 + {8391174F-52D5-4111-A0FE-E87135301CFB}.ReleaseDLL.Build.0 = ReleaseDLL|Win32 + {8391174F-52D5-4111-A0FE-E87135301CFB}.Debug.ActiveCfg = Debug|Win32 + {8391174F-52D5-4111-A0FE-E87135301CFB}.Debug.Build.0 = Debug|Win32 + {8391174F-52D5-4111-A0FE-E87135301CFB}.DebugDLL.ActiveCfg = DebugDLL|Win32 + {8391174F-52D5-4111-A0FE-E87135301CFB}.DebugDLL.Build.0 = DebugDLL|Win32 + {8391174F-52D5-4111-A0FE-E87135301CFB}.Release.ActiveCfg = Release|Win32 + {8391174F-52D5-4111-A0FE-E87135301CFB}.Release.Build.0 = Release|Win32 + {8391174F-52D5-4111-A0FE-E87135301CFB}.ReleaseDLL.ActiveCfg = ReleaseDLL|Win32 + {8391174F-52D5-4111-A0FE-E87135301CFB}.ReleaseDLL.Build.0 = ReleaseDLL|Win32 + {8391174F-52D5-4111-A0FE-E87135301CFB}.Debug.ActiveCfg = Debug|Win32 + {8391174F-52D5-4111-A0FE-E87135301CFB}.Debug.Build.0 = Debug|Win32 + {8391174F-52D5-4111-A0FE-E87135301CFB}.DebugDLL.ActiveCfg = DebugDLL|Win32 + {8391174F-52D5-4111-A0FE-E87135301CFB}.DebugDLL.Build.0 = DebugDLL|Win32 + {8391174F-52D5-4111-A0FE-E87135301CFB}.Release.ActiveCfg = Release|Win32 + {8391174F-52D5-4111-A0FE-E87135301CFB}.Release.Build.0 = Release|Win32 + {8391174F-52D5-4111-A0FE-E87135301CFB}.ReleaseDLL.ActiveCfg = ReleaseDLL|Win32 + {8391174F-52D5-4111-A0FE-E87135301CFB}.ReleaseDLL.Build.0 = ReleaseDLL|Win32 {8391174F-52D5-4111-A0FE-E87135301CFB}.Debug.ActiveCfg = Debug|Win32 {8391174F-52D5-4111-A0FE-E87135301CFB}.Debug.Build.0 = Debug|Win32 {8391174F-52D5-4111-A0FE-E87135301CFB}.DebugDLL.ActiveCfg = DebugDLL|Win32 @@ -369,6 +399,14 @@ Global {2F4235D0-B5F5-4C59-981D-BA006734B56E}.Release.Build.0 = Release|Win32 {2F4235D0-B5F5-4C59-981D-BA006734B56E}.ReleaseDLL.ActiveCfg = ReleaseDLL|Win32 {2F4235D0-B5F5-4C59-981D-BA006734B56E}.ReleaseDLL.Build.0 = ReleaseDLL|Win32 + {7E0025E8-CFBE-4941-BEB7-825F14A87EE1}.Debug.ActiveCfg = Debug|Win32 + {7E0025E8-CFBE-4941-BEB7-825F14A87EE1}.Debug.Build.0 = Debug|Win32 + {7E0025E8-CFBE-4941-BEB7-825F14A87EE1}.DebugDLL.ActiveCfg = DebugDLL|Win32 + {7E0025E8-CFBE-4941-BEB7-825F14A87EE1}.DebugDLL.Build.0 = DebugDLL|Win32 + {7E0025E8-CFBE-4941-BEB7-825F14A87EE1}.Release.ActiveCfg = Release|Win32 + {7E0025E8-CFBE-4941-BEB7-825F14A87EE1}.Release.Build.0 = Release|Win32 + {7E0025E8-CFBE-4941-BEB7-825F14A87EE1}.ReleaseDLL.ActiveCfg = ReleaseDLL|Win32 + {7E0025E8-CFBE-4941-BEB7-825F14A87EE1}.ReleaseDLL.Build.0 = ReleaseDLL|Win32 EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution EndGlobalSection diff --git a/msvc/geotag/geotag.vcproj b/msvc/geotag/geotag.vcproj new file mode 100644 index 00000000..9e0a3562 --- /dev/null +++ b/msvc/geotag/geotag.vcproj @@ -0,0 +1,2 @@ + + diff --git a/msvc64/exiv2.sln b/msvc64/exiv2.sln index 381448c0..76cc0742 100644 --- a/msvc64/exiv2.sln +++ b/msvc64/exiv2.sln @@ -80,6 +80,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "utiltest", "utiltest\utilte {831EF580-92C8-4CA8-B0CE-3D906280A54D} = {831EF580-92C8-4CA8-B0CE-3D906280A54D} EndProjectSection EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "geotag", "geotag\geotag.vcproj", "{E3073076-4837-4DDB-89E5-5AC297C7481D}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 @@ -588,6 +590,22 @@ Global {495BC686-DF50-4250-B469-9C6B7B33A4B8}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 {495BC686-DF50-4250-B469-9C6B7B33A4B8}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 {495BC686-DF50-4250-B469-9C6B7B33A4B8}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 + {E3073076-4837-4DDB-89E5-5AC297C7481D}.Debug|Win32.ActiveCfg = Debug|Win32 + {E3073076-4837-4DDB-89E5-5AC297C7481D}.Debug|Win32.Build.0 = Debug|Win32 + {E3073076-4837-4DDB-89E5-5AC297C7481D}.Debug|x64.ActiveCfg = Debug|x64 + {E3073076-4837-4DDB-89E5-5AC297C7481D}.Debug|x64.Build.0 = Debug|x64 + {E3073076-4837-4DDB-89E5-5AC297C7481D}.DebugDLL|Win32.ActiveCfg = DebugDLL|Win32 + {E3073076-4837-4DDB-89E5-5AC297C7481D}.DebugDLL|Win32.Build.0 = DebugDLL|Win32 + {E3073076-4837-4DDB-89E5-5AC297C7481D}.DebugDLL|x64.ActiveCfg = DebugDLL|x64 + {E3073076-4837-4DDB-89E5-5AC297C7481D}.DebugDLL|x64.Build.0 = DebugDLL|x64 + {E3073076-4837-4DDB-89E5-5AC297C7481D}.Release|Win32.ActiveCfg = Release|Win32 + {E3073076-4837-4DDB-89E5-5AC297C7481D}.Release|Win32.Build.0 = Release|Win32 + {E3073076-4837-4DDB-89E5-5AC297C7481D}.Release|x64.ActiveCfg = Release|x64 + {E3073076-4837-4DDB-89E5-5AC297C7481D}.Release|x64.Build.0 = Release|x64 + {E3073076-4837-4DDB-89E5-5AC297C7481D}.ReleaseDLL|Win32.ActiveCfg = ReleaseDLL|Win32 + {E3073076-4837-4DDB-89E5-5AC297C7481D}.ReleaseDLL|Win32.Build.0 = ReleaseDLL|Win32 + {E3073076-4837-4DDB-89E5-5AC297C7481D}.ReleaseDLL|x64.ActiveCfg = ReleaseDLL|x64 + {E3073076-4837-4DDB-89E5-5AC297C7481D}.ReleaseDLL|x64.Build.0 = ReleaseDLL|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/msvc64/geotag/geotag.vcproj b/msvc64/geotag/geotag.vcproj new file mode 100644 index 00000000..8a5bf95f --- /dev/null +++ b/msvc64/geotag/geotag.vcproj @@ -0,0 +1,789 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/CMakeLists.txt b/samples/CMakeLists.txt index 92831688..f1a5e364 100644 --- a/samples/CMakeLists.txt +++ b/samples/CMakeLists.txt @@ -21,6 +21,7 @@ SET( SAMPLES addmoddel.cpp exifcomment.cpp exifdata-test.cpp exifprint.cpp + geotag.cpp iotest.cpp iptceasy.cpp iptcprint.cpp diff --git a/samples/Makefile b/samples/Makefile index 00e2642a..cb29942a 100644 --- a/samples/Makefile +++ b/samples/Makefile @@ -60,6 +60,7 @@ BINSRC = addmoddel.cpp \ exifcomment.cpp \ exifdata-test.cpp \ exifprint.cpp \ + geotag.cpp \ iotest.cpp \ iptceasy.cpp \ iptcprint.cpp \ diff --git a/src/geotag.cpp b/src/geotag.cpp new file mode 100644 index 00000000..a063a2b2 --- /dev/null +++ b/src/geotag.cpp @@ -0,0 +1,53 @@ +// ***************************************************************** -*- C++ -*- +// geotag.cpp, $Rev: 2286 $ +// Sample program to read gpx files and update the images with GPS tags +// This is a placeholder for now (a copy of exifprint.cpp) + +#include + +#include +#include +#include + +int main(int argc, char* const argv[]) +try { + + if (argc != 2) { + std::cout << "Usage: " << argv[0] << " file\n"; + return 1; + } + + Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(argv[1]); + assert(image.get() != 0); + image->readMetadata(); + + Exiv2::ExifData &exifData = image->exifData(); + if (exifData.empty()) { + std::string error(argv[1]); + error += ": No Exif data found in the file"; + throw Exiv2::Error(1, error); + } + Exiv2::ExifData::const_iterator end = exifData.end(); + for (Exiv2::ExifData::const_iterator i = exifData.begin(); i != end; ++i) { + const char* tn = i->typeName(); + std::cout << std::setw(44) << std::setfill(' ') << std::left + << i->key() << " " + << "0x" << std::setw(4) << std::setfill('0') << std::right + << std::hex << i->tag() << " " + << std::setw(9) << std::setfill(' ') << std::left + << (tn ? tn : "Unknown") << " " + << std::dec << std::setw(3) + << std::setfill(' ') << std::right + << i->count() << " " + << std::dec << i->value() + << "\n"; + } + + return 0; +} +//catch (std::exception& e) { +//catch (Exiv2::AnyError& e) { +catch (Exiv2::Error& e) { + std::cout << "Caught Exiv2 exception '" << e.what() << "'\n"; + return -1; +}