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;
+}